Development Tools
description
Transcript of Development Tools
![Page 1: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/1.jpg)
Development ToolsIntegrated Development Environments, Source Control Repositories, Automated Testing Tools,
Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting Sites
Svetlin Nakov, Ivaylo Bratoev
Telerik Software Academyacademy.telerik.com
http://www.nakov.com
http://codecourse.telerik.com/
![Page 2: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/2.jpg)
Development ToolsIntegrated Development Environments, Source
Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project
Hosting Sites
Svetlin Nakov,Ivaylo BratoevTelerik
Corporationwww.telerik.com
![Page 3: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/3.jpg)
Table of Contents Integrated Development Environments (IDEs)
Source Control Systems Code Generation Tools Logging Tools Unit Testing Tools Automated Testing Tools Bug Tracking / Issue Tracking Systems
Code Analysis Tools Code Decompilation Tools
3
![Page 4: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/4.jpg)
Table of Contents (2) Code Obfuscators Code Profilers Refactoring Tools Automated Build Tools Continuous Integration Tools Documentation Generators Project Planning and Management Tools
Project Hosting and Team Collaboration Sites
4
![Page 5: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/5.jpg)
Integrated Development
Environments (IDEs)Visual Studio, Eclipse, IntelliJ IDEA, Netbeans, JDeveloper, Code::Blocks,
Bloodshed Dev-C++
![Page 6: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/6.jpg)
Visual Studio Visual Studio is official .NET development tool from Microsoft Multiple languages: C#, VB.NET, C+
+, … Multiple technologies and
platforms: ASP.NET, WPF, Silverlight, WWF, WCF, Windows Mobile
Very powerful and feature rich Write, compile, model, design GUI,
forms, data, build, execute, debug, test, deploy, refactor, …
Commercial product, has free editions
6
![Page 7: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/7.jpg)
Visual Studio – Screenshot
7
![Page 8: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/8.jpg)
Visual StudioLive Demo
8
![Page 9: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/9.jpg)
Eclipse Eclipse is the #1 Java IDE
Supports multiple languages and platforms: Java, Java EE, C++, PHP, mobile, embedded, …
Very powerful and feature rich Write, compile, build, execute,
debug, test, deploy, refactor, … Thousands of plug-ins Free, open-source product, very big
community9
![Page 10: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/10.jpg)
Eclipse – Screenshot
10
![Page 11: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/11.jpg)
EclipseLive Demo
![Page 12: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/12.jpg)
Other IDEs Other Java IDEs
Netbeans Supports latest Java technologies Nice GUI designer for Swing and JSF
IntelliJ IDEA – very powerful refactoring
JDeveloper – feature rich, supports UML
Other C++ IDEs Code::Blocks Bloodshed Dev-C++
12
![Page 13: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/13.jpg)
Source Control SystemsSubversion (SVN), Team Foundation
Server (TFS), CVS, Git, Mercurial, Perforce, …
![Page 14: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/14.jpg)
What is Source Control System?
Source control systems (version control systems, source control repositories) Hold the source code and project
assets during the development process
Allow simultaneous changes in the source code and conflict resolution
Keep version history of the project assets
Two versioning models: Lock-Modify-Unlock and Copy-
Modify-Merge
14
![Page 15: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/15.jpg)
Lock-Modify-Unlock Model
The lock-modify-unlock model needs locking files before modification One file is modified by at most one
person in any given moment No conflicts, no need of merge Suitable for small teams
When changes almost don't need concurrency
Basic commands: check out, check-in
Implemented in: Visual SourceSafe, (TFS, SVN)
15
![Page 16: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/16.jpg)
Copy-Modify-Merge Model
Copy-modify-merge model does not hold locks during the source code modification The same file could be
simultaneously edited by multiple developers
Sometimes requires conflict resolution
Suitable for large teams and projects High concurrency of source code
modifications Basic commands: update, commit Implemented in: SVN, CVS, Git,
Mercurial, TFS
16
![Page 17: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/17.jpg)
Subversion (SVN) Subversion (SVN)
The most popular and well established system
Free, open-source, very large community
TortoiseSVN – the most popular client
17
![Page 18: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/18.jpg)
SubversionLive Demo
![Page 19: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/19.jpg)
Team Foundation Server
Microsoft Team Foundation Server (TFS) Works best with Visual Studio
Many problems outside of it Commercial license
19
![Page 20: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/20.jpg)
Other Source Control Systems
CVS Was extremely popular in the past
Now it is obsolete Open source, mostly used in UNIX /
Linux Git and Mercurial
Fast, distributed, open source Perforce
Very powerful and scalable (pentabytes of code)
Commercial product (used by SAP)
20
![Page 21: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/21.jpg)
SCM and ALM Systems Software Configuration Management (SCM systems (e.g. Rational ClearCase, StarTeam) Change management for
requirements, documents, source code, etc.
Tools, policies, workflow, etc. Application Lifecycle Management (ALM) systems (e.g. VSTS + TFS, StarTeam, Polarion) Covers the entire development
process Requirements, planning, project
management, architecture, build, QA, test, integration, etc.
21
![Page 22: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/22.jpg)
Application Lifecycle Management
22
![Page 23: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/23.jpg)
Code Generation ToolsVisual Studio T4 Engine, CodeSmith,
AndroMDA
![Page 24: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/24.jpg)
Code Generators – Concepts
Source code generation Template based
Build data access layer by given database schema E.g. Visual Studio Data Designer for LINQ-to-SQL
Build Web application by database schema E.g. Django (Python based Web application platform)
Model based Build entire application by high-level
model
24
![Page 25: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/25.jpg)
Code Generation Tools Microsoft T4 Engine, CodeSmith
Template based code generators Can generate classes, Web pages
and other project assets by set of templates E.g. data access layer based on
database schema AndroMDA
Application generator framework Transforms UML models to Java EE
applications based on Spring, Hibernate and JSF
25
![Page 26: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/26.jpg)
Microsoft T4 Template Engine
Visual Studio T4 Engine T4 == Text Template Transformation
Toolkit Integral part of Visual Studio ASP.NET-like syntax
T4 templates consist of: Processing directives (e.g. include
template) Text blocks (static text) Code blocks (in C#, VB.NET) Compiled to C# and then to .NET
assemblies
26
![Page 27: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/27.jpg)
T4 Template Engine – Architecture
27
![Page 28: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/28.jpg)
Visual Studio T4 Template
EngineLive Demo
![Page 29: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/29.jpg)
Logging ToolsLog4J, Log4Net
![Page 30: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/30.jpg)
Logging Logging is chronological and systematic record of data processing events in a program E.g. the Windows Event Log
Logs can be saved to a persistent medium to be studied at a later time
Use logging in the development phase: Logging can help you debug the
code Use logging in the production environment: Helps you troubleshoot problems
30
![Page 31: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/31.jpg)
Log4J / Log4Net Log4J / Log4Net are a popular logging frameworks for Java / .NET Designed to be reliable, fast and
extensible Simple to understand and to use
API Allows the developer to control
which log statements are output with arbitrary granularity
Fully configurable at runtime using external configuration files 31
![Page 32: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/32.jpg)
Log4j / Log4Net Architecture
Log4j has three main components: loggers, appenders and layouts Loggers
Channels for printing logging information Appenders
Output destinations (e.g. XML file, database, …) Layouts
Formats that appenders use to write their output
32
![Page 33: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/33.jpg)
Hello Log4j Examplepublic class HelloLog4j { private static Logger logger = Logger.getLogger(HelloLog4j.class); public static void main(String[] args) { BasicConfigurator.configure(); logger.debug("In the main method"); logger.info("Hello Log4J!"); logger.error("This is an error message"); }}
Output from HelloLog4j0 [main] DEBUG HelloLog4j - In the main method0 [main] INFO HelloLog4j - Hello Log4J!0 [main] ERROR HelloLog4j - This is an error message 33
![Page 34: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/34.jpg)
Unit Testing ToolsJUnit, NUnit, CppUnit, TestNG, JsUnit, …
![Page 35: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/35.jpg)
Unit Testing Unit test is a program that tests pieces of code Test a single method, class or
component Implement a common use case
scenario Confirm that the code works as
expected Or signal that the code is broken
Unit tests should have high code coverage, e.g. 70-80% Executed in the continuous
integration process Unit tests dramatically decrease the number of defects in the code
35
![Page 36: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/36.jpg)
Unit Test Exampleint sum(int[] array) { int sum = 0; for (int i=0; i<array.length; i++) sum += array[i]; return sum;}
void testSum() { if (sum(new int[]{1,2}) != 3) throw new TestFailedException("1+2 != 3"); if (sum(new int[]{-2}) != -2) throw new TestFailedException("-2 != -2"); if (sum(new int[]{}) != 0) throw new TestFailedException("0 != 0");}
36
![Page 37: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/37.jpg)
Unit Testing Frameworks / Tools
Unit testing frameworks Simplify design, implementation
and execution of unit tests Popular unit testing frameworks
JUnit, TestNG – classical unit testing frameworks for Java
NUnit, MbUnit, Visual Studio Team System tests – for .NET development
cppUnit, UnitTest++ – for C++ developers
jsUnit – for JavaScript37
![Page 38: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/38.jpg)
Code Coverage & Mocking Tools
Code coverage tools Code coverage tools check what
portion of the source code is covered by the unit tests
CodeCover for Eclipse – for Java Visual Studio Team Suite – for C# CoverageMeter – for C++
Mocking Tools Allow testing functionality that is
still not implemented9, e.g. through its interface
Moq, TypeMock, Rhino Mock, JustMock
38
![Page 39: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/39.jpg)
Automated Testing ToolsSelenium, Microsoft UI Automation
Framework, Telerik WebUI Test Studio, IBM Rational Functional Tester,
AutomatedQA TestComplete, JMeter, …
![Page 40: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/40.jpg)
Test Automation Test automation
Replaces manual tests (performed by people) with automated tests (performed by script)
Automatically run test scenarios and compare the actual outcomes to predicted outcomes
Automated testing tools Record and replay test scenarios
Automated testing frameworks Allow programmatically simulate
user activity
40
![Page 41: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/41.jpg)
Functional Testing Tools Functional testing tools
Test whether the product behaves as expected
Selenium, Telerik WebUI Test Studio, IBM Rational Functional Tester, AutomatedQA TestComplete
Functional testing frameworks Microsoft UI Automation Framework
– provides programmatic access to the UI elements
java.awt.Robot – generate native system input events (mouse and keyboard)
41
![Page 42: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/42.jpg)
Performance Testing Tools
Performance testing tools HP Load Runner
Load testing for Web, SOA, Java, .NET, etc.,
Commercial tool OpenSTA
HTTP lead tests – free tool JMeter
Free Java-based tool Load testing for Web, SOA,
databases, JMS42
![Page 43: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/43.jpg)
Automated Testing Suites
HP Quality Center Includes requirements management,
test planning, test execution, bug tracking – commercial tool
Mercury Quick Test Professional (QTP) UI test automation tool – commercial
tool TestLink
Test planning and execution – open-source tool
Visual Studio Test Tools Functional testing and performance
testing
43
![Page 44: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/44.jpg)
Selenium RCLive Demo
![Page 45: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/45.jpg)
Bug Tracking / Issue Tracking
SystemsTRAC, Bugzilla, JIRA, TFS, SourceForge, Google Code, CodePlex, Project Locker
![Page 46: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/46.jpg)
Bug Tracking Systems Bug tracking / issue tracking systems Track bugs / issues related to
software development, called tickets
Tickets consist of: Category: bug / feature request /
task State: new assigned fixed
closed Priority: critical / high / low / etc. Owner / responsible person Summary, description, attachments
46
![Page 47: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/47.jpg)
TRACLive Demo
47
![Page 48: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/48.jpg)
Code Analysis ToolsFxCop, StyleCop, Checkstyle,
devAdvantage, FindBugs, BoundsChecker, …
![Page 49: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/49.jpg)
Code Analysis Tools Code analysis tools
Analyze the source code for bad coding style / unwanted coding practices
Static analysis Examine the source code at
compile-time Could work with the source code or
with the compiled assemblies / JAR archives
Dynamic analysis Analyses the code at runtime
(usually done by code instrumentation)
49
![Page 50: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/50.jpg)
FxCop & StyleCopLive Demo
50
![Page 51: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/51.jpg)
Code Decompilation Tools
.NET Reflector, Java Decompilers
![Page 52: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/52.jpg)
Code Decomplation Code decomplator / code disassembler Reconstructs the source code (to
some extent) from the compiled code
.NET assembly C# / VB.NET source code
JAR archive / .class file Java source code
.EXE file C / C++ / Assembler code Reconstructed code
Is not always 100% compilable Loses private identifier names and
comments
52
![Page 53: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/53.jpg)
Code Decomplation Tools
Code decompilers .NET
.NET Reflector – powerful tool, great usability
Java DJ Java Decompiler JD (JD-Core / JD-GUI / JD-Eclipse)
.EXE file Boomerang Decompiler outputs C
source code IDA Pro – powerful disassembler /
debugger
53
![Page 54: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/54.jpg)
.NET Reflector
54
![Page 55: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/55.jpg)
.NET ReflectorLive Demo
![Page 56: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/56.jpg)
Code ObfuscatorsMaking Reverse Engineering Difficult
![Page 57: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/57.jpg)
Code Obfuscation Code obfuscation
Transform the source code or compiled .NET / Java code into a difficult to understand form
Obfuscated code has the same behavior
Sometimes is a bit slower due to changes and additions in the control logic
Obfuscated code is the opposite of the high-quality code
Obfuscation is a form of security through obscurity
57
![Page 58: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/58.jpg)
Code Obfuscation Techniques
Rewrite for-loops as while-loops followed by a series of cascading if-else statements
Change iteration into recursion Obfuscate programming constructs (e.g. turn if-else statements into ?: operators)
Introduce meaningless identifier names
Remove intermediate variables and literals by repeating them as expressions in the code
Remove literals (e.g. 0 and 1) – use expressions
Randomize code formatting
58
![Page 59: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/59.jpg)
Obfuscation – Example Original source code in C++ – finds
the prime numbers in the interval [1 .. 50]:
59
void primes(int max) { for (int num = 2; num < max; num++) { int composite = 0; for (int div = 2; div * div <= num; div++) composite += !(num % div); if (!composite) printf("%d ", num); }}
void main() { primes(50);}
![Page 60: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/60.jpg)
Obfuscation – Example (2)
Obfuscated source code – does the same but the code is made almost unreadable:
60
void primes(int m, int t, int c) { int i = t / m; int j = t % m; (i <= 1) ? primes(m,t+1,c) : (!j) ? primes(m,t+1,j) : (j == i && !c) ? (printf("%d\t",i), primes(m,t+1,c)) : (j > 1 && j < i) ? primes(m,t+1,c + !(i % j)) : (t < m * m) ? primes(m,t+1,c) : 0;}
void main() { primes(50, 0, 0);}
![Page 61: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/61.jpg)
Obfuscation – Example (3)
Obfuscated source code – does the same but the code is made really horrible:
61
void _(int __,int ___ ,int ____,int _____){((
___/__)<=_____)? _(__,___+_____,____,_____ ):!
(___ % __) ? _(__,___+_____,___ % __, _____):(
(___ % __)==(___ / __) && !____)?(printf("%d "
,(___ / __)),_(__,___+_____,____,_____)):((___
%__)>_____ &&(___ % __) < (___ / __))?_(
__,___+_____,____+!((___ / __)%(___ % __)),
_____):(___ <__*__)?_(__, ___+_____,
____,_____):0;} int main(void){_(50,0,0,1 );}
![Page 62: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/62.jpg)
Obfuscation Tools .NET obfuscators
Eazfuscator.NET – free {smartassembly} – commercial
license, very powerful – assembly obfuscation + compression
Java obfuscators ProGuard – free, open-source yGuard – free, open source
C++ obfuscators Stunnix C++ Obfuscator –
commercial product62
![Page 63: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/63.jpg)
Code ProfilersANTS Profiler for .NET, YourKit Profiler
for .NET, Netbeans Profiler for Java, JProfiler, JProbe
![Page 64: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/64.jpg)
Profilers Profilers are tools for gathering performance data and finding performance bottlenecks Implemented by code
instrumentation or based on built-in platform debugging / profiling APIs
Gather statistics for method calls, uses of classes, objects, data, memory, threads, etc.
CPU profilers Find performance bottlenecks
Memory profilers Find memory allocation problems
64
![Page 65: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/65.jpg)
Netbeans Profiler
65
![Page 66: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/66.jpg)
Netbeans ProfilerLive Demo
66
![Page 67: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/67.jpg)
Refactoring ToolsJustCode, ReSharper, IntelliJ IDEA, Visual Studio, Eclipse, Netbeans,
JDeveloper
![Page 68: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/68.jpg)
Refactoring Refactoring
Improving the design of the existing code without changing its behavior
Typical refactoring patterns Rename variable / class / method /
member Extract method Extract constant Extract interface Encapsulate field 68
![Page 69: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/69.jpg)
Refactoring in Visual Studio
69
![Page 70: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/70.jpg)
Refactoringwith JustCode
Live Demo
70
![Page 71: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/71.jpg)
Automated Build ToolsCMake, Ant, Maven, MSBuild
![Page 72: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/72.jpg)
Software Builds What means to build software?
The process of compiling and assembling the system's modules to obtain the final product
Build activities can also include: Getting the latest version from the
source control repository Linking external resources Executing unit tests Creating installation packages 72
![Page 73: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/73.jpg)
Sample C++ makefile on Linux
CC = ccCFLAGS = -O3 -I /usr/local/lib/sprng/include -I /usr/local/lib/pgplot -gOBJECTS = monte_pi_sprng.o plot.oLIBS = -L/usr/local/lib/sprng/lib -llcg -L/usr/local/lib/pgplot -lcpgplot -lX11 -lftn -lm
# --- build targetsall: monte_pi_sprngmonte_pi_sprng: $(OBJECTS) $(CC) -o monte_pi_sprng $(OBJECTS) $(LIBS)monte_pi_sprng.o: /usr/local/lib/sprng/include/sprng.h /usr/local/lib/pgplot/cpgplot.h monte_pi_sprng.c $(CC) $(CFLAGS) -c monte_pi_sprng.cplot.o: /usr/local/lib/pgplot/cpgplot.h plot.c $(CC) $(CFLAGS) -c plot.c# --- remove binary and executable filesclean: rm -f monte_pi_sprng $(OBJECTS) 73
![Page 74: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/74.jpg)
Sample Ant Build File<project name="MyProject" basedir="."> <property name="src" location="src"/> <property name="build" location="build"/>
<target name="init"> <!-- Create directory structure used by compile --> <mkdir dir="${build}"/> </target>
<target name="compile" depends="init"> <!-- Compile the code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target>
<target name="clean" description="clean up" > <!-- Delete the ${build} directory tree --> <delete dir="${build}"/> </target></project>
74
![Page 75: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/75.jpg)
AntLive Demo
75
![Page 76: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/76.jpg)
Continuous Integration Tools
CruiseControl, CruiseControl.NET, Hudson, Team Foundation Server
![Page 77: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/77.jpg)
Continuous Integration (CI)
Continuous integration (CI) Automating the build and
integration process Build the entire system each time
any new code is checked in the source control repository
Run all the automated tests for each build
What does "continuous" mean? Ideally – build it after every check-in Practically – for larger systems,
every 1-2 hours Or at least a couple of times a day
77
![Page 78: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/78.jpg)
Components of the CI System
Build server – separate machine (or pool)
Source control repository Subversion, Team Foundation
Server (TFS), etc. Automated build system
Ant, NAnt, MSBuild, Cruise Control, TFS, etc.
Status indicators / notifications to make problems visible right away Email notifications / tray build notify
utilities Public build status monitors
78
![Page 79: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/79.jpg)
Continuous Integration Systems
CruiseControl Very popular, powerful, open source
CI tool Extensible, plug-in based, large
community CruiseControl.NET
.NET cloning of CruiseControl Hudson
Powerful Java based CI server, open source
Team Foundation Server (TFS) TFS provides build-in continuous
integration
79
![Page 80: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/80.jpg)
CI Systems Comparison Matrix
Continuous integration systems – comparison: http://confluence.public.thoughtwor
ks.org/display/CC/CI%2BFeature%2BMatrix
80
![Page 81: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/81.jpg)
Continuous Integration with
TFSLive Demo
81
![Page 82: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/82.jpg)
Documentation GeneratorsJavadoc, Sandcastle, Doxygen, JSDoc
![Page 83: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/83.jpg)
Documentation Frameworks
The best source code documentation is the code itself
Special types of comments are used in many platforms Used to document the code classes,
methods, parameters, return types, exceptions, etc.
Javadoc comments in Java XML documentation in .NET Doxygen-style documentation for C,
C++, PHP, Python, Java, C#, etc.83
![Page 84: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/84.jpg)
Documentation Generators
Javadoc Transforms Javadoc comments used in
Java into HTML documentation Sandcastle
Transforms the XML comments used .NET into CHM, HTML, PDF and other formats
Doxygen Transforms Doxygen comments into
HTML JSDoc
Javadoc cloning for JavaScript84
![Page 85: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/85.jpg)
Javadoc Documentation:java.lang.String
Live Demo
85
![Page 86: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/86.jpg)
Project Planning and Management Tools
TRAC, Microsoft Project, JIRA
![Page 87: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/87.jpg)
Project Planning / Management Tools
TRAC Open source tool for project / issue
tracking Highly customizable, lots of plug-ins Large community
Microsoft Project / Project Server Commercial tool
JIRA Very feature-rich and highly usable
tool Commercial product, free for non-
profit project
87
![Page 88: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/88.jpg)
Project Planning / Management Tools
Zoho Projects Online project management
platform Hosted solution, has free and paid
editions dotProject
Open-source online project management tool
Installed on your server (not hosted)
ComindWork Hosted online project management
tool Provides free and paid versions
88
![Page 89: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/89.jpg)
Project Hosting and Team Collaboration
SitesSourceForge, Google Code, CodePlex, Project
Locker
![Page 90: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/90.jpg)
Project Hosting Sites SourceForge – http://www.sourceforge.net Source control (SVN, Git, …), web
hosting, tracker, wiki, blog, mailing lists, file release, statistics, etc.
Free, all projects are public and open source
Google Code – http://code.google.com Source control (SVN), file release, wiki,
issue tracker Very simple, basic functions only, not
feature-rich Free, all projects are public and open
source 1-minute signup, without heavy
approval process
90
![Page 91: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/91.jpg)
Project Hosting Sites (2)
CodePlex – http://www.codeplex.com Microsoft's open source projects site Team Foundation Server (TFS)
infrastructure Source control (TFS), issue tracker,
downloads, discussions, wiki, etc. Free, all projects are public and open
source Project Locker – http://www.projectlocker.com Source control (SVN), TRAC, CI system,
wiki, etc. Private projects (not open source) Free and paid editions
91
![Page 92: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/92.jpg)
Project Hosting Sites (3)
Assembla – http://www.assembla.com Source control (SVN, Git), issue
tracker, wiki, chats, files, messages, time tracking, etc.
Private / public projects, free and paid editions
Bitbucket – http://bitbucket.org Source control (Mercurial), issue
tracker, wiki, management tools Private projects, free and paid
editions Others: Github, Unfuddle, XP-Dev, Beanstalk
92
![Page 93: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/93.jpg)
Google CodeLive Demo
![Page 94: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/94.jpg)
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране, книги – безплатно от Наков
безплатен курс "Качествен програмен код"
алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET
курсове и уроци по програмиране – Телерик академия
курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране
Николай Костов - блог за програмиранеC# курс, програмиране, безплатно
?? ? ?
??? ?
?
? ?
??
?
?
? ?
Questions?
?
Development Tools
http://academy.telerik.com
![Page 95: Development Tools](https://reader031.fdocuments.in/reader031/viewer/2022013012/56816676550346895dda126f/html5/thumbnails/95.jpg)
Free Trainings @ Telerik Academy
“High-Quality Programming Code" course @ Telerik Academy codecourse.telerik.com
Telerik Software Academy academy.telerik.com
Telerik Academy @ Facebook facebook.com/TelerikAcademy
Telerik Software Academy Forums forums.academy.telerik.com