Transcript

Sumedha RubasingheOctober,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/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.

[email protected] - 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