250 likes | 332 Vues
Learn essential concepts in software development like build systems, version control, testing tools, and continuous integration. Understand how to set up Ant, SVN, testing automation tools, and Maven for project management.
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