Introduction to Programming Tools Anjana & Shankar September,2010
Contents Essentials tooling concepts in S/W development Build system Version Control System Testing Tools Continuous Integration Issue Tracking
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
Maven - Introduction Java based build tool from Apache Software Foundation http://maven.apache.org Two generations Maven 1 (maven) Maven 2 (mvn) Cross Platform
Maven - Introduction More than a build tool Software project management and comprehension tool Build, reporting and documentation Rich set of plugins http://maven.apache.org/plugins/index.html Driven by predefined life cycle stages http://maven.apache.org/guides/introduction/int roduction-to-the-lifecycle.html
Installing Maven Download - http://maven.apache.org/download.html Extract to a folder Eg: c:\tools\maven\2.1.0 Set environment variable M2_HOME=c:\tools\maven\2.1.0 Add %M2_HOME%\bin to PATH variable Open a new command window & type mvn -v
Creating a project Archtype http://maven.apache.org/guides/introduction/introductionto-archetypes.html mvn archetype:generate pom.xml http://maven.apache.org/pom.html Repositories Dependencies Plugins
Similar tools Apache Ant make,gnumake, nmake http://en.wikipedia.org/wiki/list_of_build_automation_software
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 http://en.wikipedia.org/wiki/software_testi ng#testing_methods
Testing automation tools Junit - http://www.junit.org/ JMeter - http://jakarta.apache.org/jmeter/ Selenium - http://seleniumhq.org/
Similar tools xunit (nunit,junit,dbunit) Apache Bench http://www.opensourcetesting.org
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? How to track 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 svn://192.248.8.221/bsc10/cs3030/scratch Username your surname Password index number
Subversion (SVN) add/delete mark files for addition/deletion check-in/commit putting files to server update get latest version merge local changes & changes coming from server can be merged conflict merge failed, overlapping changes blame/praise find who made the change diff find the differences
Subversion demo Installing Subversion not covered http://svnbook.red-bean.com/en/1.1/ch01s05.html Client side Command line client GUI client Windows File Explorer - http://tortoisesvn.tigris.org/ IDE plug-ins subclipse (for Eclipse) - http://subclipse.tigris.org Intellij IDEA plug-in ankhsvn (for Visual Studio) - http://ankhsvn.open.collab.net Net Beans - http://subversion.netbeans.org/
Similar tools git - http://git-scm.com CVS (Concurrent Version System) Project home - http://www.cvshome.org/eng/ Installation Guides (Windows) CVSNT (*inx) http://www.idevelopment.info/data/program ming/change_management/unix_cvs/progra MMING_Installing_CVS.shtml
Similar tools (commercial) Rational ClearCase (http://www- 01.ibm.com/software/awdtools/clearcase) Borland StarTeam (http://www.borland.com/us/products/starteam/inde x.html) Microsoft Visual SourceSafe (http://msdn.microsoft.com/en-us/aa740435.aspx)
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 https://hudson.dev.java.net Demo on installation & configuring a project to build automatically In action : http://hudson.zones.apache.org/hudson/ Bamboo http://www.atlassian.com/software/bamboo Cruise Control http://java-source.net/open-source/build-systems/cruise-control
Issue Tracking Systems Jira Bugzilla
JIRA Creating account Creating issues Assigning issues Commenting Worklog Subtask Resolving Dependency Administration
Summary Build systems Version control systems Testing tools Continuous integration tools Issue Tracking
Help If you have any questions on the topics I covered, drop us a mail @ bellow address. anjana@wso2.com shankar@wso2.com