Sumedha Rubasinghe October,2009 Introduction to Programming Tools
Contents Essentials tooling concepts in S/W development – Build system – Version Control System – Testing Tools – Reporting, Project Management – Continuous Integration
Assignment !! The Project assignment – Build a calculator which supports basic arithmetic operations, scientific calculations & accessibility via GUI
Preparation Choosing your team Understanding the assignment – Problem – Goals – Deliverables – Mode of delivery (staged/iterative, one shot) Plan
Ice breaker.. Lot of talking.. no action... Let's get something running first
I want to run it too.. One member develops a prototype using an IDE Another member wants to run it on his machine Problem – Library paths are relative to original author's machine
We need a build system A build system? – A build system will help you to build your project without machine specific dependencies. – This will make it easy for every team member to build the project & see the results
Ant - Introduction Java based build tool from Apache Software Foundation Cross platform Let's install Ant
Installing Ant Download Extract to a folder – Eg: c:\tools\ant\1.7.1 c:\tools\ant\1.6.2 Set ANT_HOME environment variable* Add %ANT_HOME%\bin to PATH variable Open a new command window & type 'ant'
Writing a Ant build script By default looks for 'build.xml' Each contains one or more s. Each can depend on zero or more other s. When running Ant specify the Supports default Driven by user defined tasks.
Similar tools Apache Maven make,gnumake, nmake
I changed the implementation... Now every team member has a running copy of the project Some have found issues in existing implementation & fixed those Some have added new features How to synchronise all of these changes?
Source Code Management (SCM) Also known as, – Revision control – Version control Version Control System (VCS) Management of changes to documents Each change is associated with – revision number – timestamp – User Revision can be compared,restored, merged
Subversion (SVN) Free/Open-source version control system Central repository of files – Records every change done to a file checkout – getting files from server check-in/commit – putting files to server merge – local changes & changes coming from server can be merged conflict – merge failed, over lapping changes
Subversion – demo Installing Subversion – not covered – bean.com/en/1.1/ch01s05.html Client side – Command line client – GUI client Windows File Explorer IDE plug-ins – subclipse (for Eclipse) - – Intellij IDEA plug-in – ankhsvn (for Visual Studio) – Net Beans -
Similar tools git - CVS (Concurrent Version System) – Project home – Installation Guides (Windows) CVSNT (*inx) ming/change_management/unix_cvs/PROGRA MMING_Installing_CVS.shtml
Similar tools (commercial) Rational ClearCase ( 01.ibm.com/software/awdtools/clearcase ) Borland StarTeam ( x.html ) Microsoft Visual SourceSafe ( )
Testing Important to understand what type of testing needs to be done before selecting a tool Testing approaches – Approach of boxes Black box White box Grey box – Integration Testing – Regression Testing – Acceptance Testing – Non Functional Testing – Destructive Testing ng#Testing_methods
Testing automation tools Junit - JMeter - Selenium -
Similar tools xUnit (nUnit,JUnit,DBUnit) Apache Bench
Maven – more than a build tool Apache project - Two generations – Maven 1 (maven) – Maven 2 (mvn) Rich set of plugins – Driven by predefined life cycle stages – /introduction-to-the-lifecycle.htm /introduction-to-the-lifecycle.htm Project Object Model – POM –
Continuous Integration (CI) Developers commit changes to VCS CI Server automatically picks changes & initiate build Faster feedback to your development process preventing bugs from piling up Generate statistics Provides more visibility
Continuous Integration Popular tools – Hudson Demo on installation & configuring a project to build automatically In action : – Bamboo In action : – Cruise Control control control
Summary Build systems Version control systems Testing tools Advance build systems Continuous integration tools
Help If you have any questions on the topics I covered, drop me a bellow address. Please set the following prefix in your subject. – - prefix [cs ] – If your question is useful to everyone, I will try to put an answer in my blog.