250 likes | 313 Views
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
E N D
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 • http://ant.apache.org/ • Let's install Ant
Installing Ant • Download - http://ant.apache.org/bindownload.cgi • 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 <project> contains one or more <target>s. • Each <target> can depend on zero or more other <target>s. • When running Ant specify the <target> • Supports default <target> • Driven by user defined tasks. • http://ant.apache.org/manual/using.html
Similar tools • Apache Maven • make,gnumake, nmake • http://en.wikipedia.org/wiki/List_of_build_automation_software
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 • 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/Programming/change_management/unix_cvs/PROGRAMMING_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/index.html) • Microsoft Visual SourceSafe (http://msdn.microsoft.com/en-us/aa740435.aspx)
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_testing#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
Maven – more than a build tool • Apache project - http://maven.apache.org • Two generations • Maven 1 (maven) • Maven 2 (mvn) • Rich set of plugins • http://maven.apache.org/plugins/index.html • Driven by predefined life cycle stages • http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.htm • Project Object Model – POM • http://maven.apache.org/pom.html
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 • In action : http://builder.wso2.org • Cruise Control • http://java-source.net/open-source/build-systems/cruise-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 mail @ bellow address. Please set the following prefix in your subject. • sumedha.r@gmail.com - prefix [cs3030-2009] • If your question is useful to everyone, I will try to put an answer in my blog. • http://sumedha.blogspot.com