View
231
Download
2
Category
Tags:
Preview:
Citation preview
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
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/cru
ise-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
Recommended