Sumedha Rubasinghe October,2009 Introduction to Programming Tools

  • Published on
    27-Dec-2015

  • View
    214

  • Download
    2

Embed Size (px)

Transcript

  • Sumedha RubasingheOctober,2009Introduction to Programming Tools

  • ContentsEssentials tooling concepts in S/W developmentBuild systemVersion Control SystemTesting ToolsReporting, Project ManagementContinuous Integration

  • Assignment !!The Project assignmentBuild a calculator which supports basic arithmetic operations, scientific calculations & accessibility via GUI

  • PreparationChoosing your teamUnderstanding the assignmentProblemGoalsDeliverablesMode 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 IDEAnother member wants to run it on his machineProblemLibrary paths are relative to original author's machine

  • We need a build systemA 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 - IntroductionJava based build tool from Apache Software FoundationCross platformhttp://ant.apache.org/Let's install Ant

  • Installing AntDownload - http://ant.apache.org/bindownload.cgiExtract to a folderEg:c:\tools\ant\1.7.1c:\tools\ant\1.6.2Set ANT_HOME environment variable*Add %ANT_HOME%\bin to PATH variableOpen a new command window & type 'ant'

  • Writing a Ant build scriptBy default looks for 'build.xml'Each contains one or more s.Each can depend on zero or more other s.When running Ant specify the Supports default Driven by user defined tasks.http://ant.apache.org/manual/using.html

  • Similar toolsApache Mavenmake,gnumake, nmakehttp://en.wikipedia.org/wiki/List_of_build_automation_software

  • I changed the implementation...Now every team member has a running copy of the projectSome have found issues in existing implementation & fixed thoseSome have added new featuresHow to synchronise all of these changes?

  • Source Code Management (SCM)Also known as,Revision controlVersion controlVersion Control System (VCS)Management of changes to documentsEach change is associated withrevision numbertimestampUserRevision can be compared,restored, merged

  • Subversion (SVN)Free/Open-source version control systemCentral repository of filesRecords every change done to a filecheckout getting files from servercheck-in/commit putting files to servermerge local changes & changes coming from server can be merged conflict merge failed, over lapping changes

  • Subversion demoInstalling Subversion not coveredhttp://svnbook.red-bean.com/en/1.1/ch01s05.htmlClient sideCommand line clientGUI clientWindows File Explorer - http://tortoisesvn.tigris.org/IDE plug-inssubclipse (for Eclipse) - http://subclipse.tigris.orgIntellij IDEA plug-inankhsvn (for Visual Studio) - http://ankhsvn.open.collab.netNet Beans - http://subversion.netbeans.org/

  • Similar toolsgit - http://git-scm.comCVS (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)

  • TestingImportant to understand what type of testing needs to be done before selecting a toolTesting approachesApproach of boxesBlack box White box Grey box Integration TestingRegression TestingAcceptance TestingNon Functional TestingDestructive Testinghttp://en.wikipedia.org/wiki/Software_testing#Testing_methods

  • Testing automation toolsJunit - http://www.junit.org/JMeter - http://jakarta.apache.org/jmeter/Selenium - http://seleniumhq.org/

  • Similar toolsxUnit (nUnit,JUnit,DBUnit)Apache Benchhttp://www.opensourcetesting.org

  • Maven more than a build toolApache project - http://maven.apache.orgTwo generationsMaven 1 (maven)Maven 2 (mvn)Rich set of pluginshttp://maven.apache.org/plugins/index.htmlDriven by predefined life cycle stageshttp://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.htmProject Object Model POMhttp://maven.apache.org/pom.html

  • Continuous Integration (CI)Developers commit changes to VCSCI Server automatically picks changes & initiate buildFaster feedback to your development processpreventing bugs from piling upGenerate statisticsProvides more visibility

  • Continuous IntegrationPopular toolsHudson https://hudson.dev.java.netDemo on installation & configuring a project to build automaticallyIn action : http://hudson.zones.apache.org/hudson/Bamboohttp://www.atlassian.com/software/bambooIn action : http://builder.wso2.orgCruise Control http://java-source.net/open-source/build-systems/cruise-control

  • SummaryBuild systemsVersion control systemsTesting toolsAdvance build systemsContinuous integration tools

  • HelpIf 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