22 FebruaryTournamentSoftware Engineering Elaborated StepsToolsVersion ManagementTop Reasons for Using Version ManagementQuestions AddressedDocumentation that Needs Version ControlBasic FunctionsNeed a BaselineWhen To Start Using Version ControlNo Special Tools NeededBut there are tools …Concurrent Versioning SystemWhat CVS DoesSubversionSourceForgeLots of OthersSlide 19Build System FunctionsTypes of Build SystemsPlatform Specific System: Unix makeOpen Source Systems: Lots of ThemApache Ant: build +++Ant Control Commands (sample)Slide 26Integrated Development EnvironmentHistoryDartmouth Time Sharing System (1964)Today’s IDEsEclipseXMLSlide 33Slide 34Script ExampleSlide 36HTML XMLRelated TechnologiesSlide 39How to Use XML22 FebruaryImplementationTournamentGood conceptImplementation problemsStatus:terminate or find an alternative that does not require fixed time or locationSoftware Engineering Elaborated StepsConceptRequirementsArchitectureDesignImplementationUnit testIntegrationSystem testMaintenanceToolsVersion ManagementBuild SystemsIntegrated Development EnvironmentsVersion ManagementBoth during and after developmentBoth code and documentationUsesMulti-developer change controlReleasesSupport for different environmentsComputersOperating systemsTop Reasons for Using Version ManagementBugs which were fixed reappearLatest versions of code overwritten by old versionsWhich version is the right one? I have so manyI have lost my latest changesQuestions AddressedDevelopment Issues How do we integrate parallel work?How do I know which changes were in the code that was being tested?Who changed this module? When? Why?Multi-version IssuesWhat versions have been made available to people?How do I assure that all versions get the changes that they need?What versions need to be re-released to support changes made?Documentation that Needs Version Control Manuals: need to reflect the variations of the different releasesTest data: what tests have been run and what was the resultBug reportsPlanned changesAny document being edited by multiple peopleBasic FunctionsAbility to add and remove changesAbility to identify differencesRecord of changes madeStorage of different versionsAbility to get access to one or more versionsIdentification of all the components needed to build any versionNeed a BaselineAgreed upon document or code levelin large project, formally reviewed and agreed uponin your project, requires consensus agreementBasis for further development in large project, changed only through formal change control procedureIn your project, changed when the developer is “comfortable”When To Start Using Version Control Should you use it during unit testing?What is unit testing?How much structure does your unit testing require?If unit testing requires significant infrastructure or scaffolding, it makes sense to start using it very earlyNo Special Tools NeededIdentify procedures and data needed toadd and remove changesidentify differencesrecord changes madestore different versionsget access to one or more versionsbuild any versionBut there are tools …CVS: Concurrent Version SystemSubversion (SVN)SourceForgeActually uses CVS and SVN, but a different modelConcurrent Versioning SystemDeveloped in the mid 80sPredecessor RCS (Revision Control System)Vrije University, AmsterdamNow open sourceUntil recently, the most commonly used toolximbiot.com/cvs/wikiWhat CVS DoesSupports hierarchical directoriesmanages changes on a per file basisRemote repository accessimport locally for useSupports parallel developmentmerges changesidentifies, does not resolve, conflictsBasic tasksgetting a working copycommitting changesreverting to prior leveladding or removing a filesynchronizing to the latest codetagging versions of filesSubversionhttp://subversion.tigris.org/improved version of CVSconsistent interfaces except for “compelling reasons”key changeseverything is versioned: directories and file meta-data as well as filesatomic commitsguarantee that all aspects are completed or none arebetter performanceSourceForgeOpen source development environmentFree web-based facilityPurchasable software as wellSourceForge.net supports CVS and SVNCompile farmTrackersWeb siteLots of OthersGoogle code TRACToolsVersion ManagementBuild SystemsIntegrated Development EnvironmentsBuild System FunctionsSystem configurationExecutingpreprocessorscompilerslinkersManage paths and librariesCreate executables and librariesTypes of Build SystemsPlatform specific independentPart of version management systems integrated development environmentsnothing (standalone)Platform Specific System: Unix makeUses a makefileCan build full systems or partsDefines dependenciesSimplest example: object file depends on its source fileExecutes commands for any (and only) pieces that need to be rebuiltOpen Source Systems:Lots of ThemGNU makeBeen around for a whileConsBuilt in PerlSConsPython scriptsCMake cross-platformused in conjunction with the native build environmentJamC and C++See also FT Jam (additional platforms)Apache Ant: build +++http://ant.apache.orgIntroductionWorkflow elementsXML-based configuration files Java basedcontains features specifically for J2EEAnt Control Commands (sample)Ant: Runs Ant on a supplied buildfileAntCall: Runs another target within the same buildfileExec: Executes a system command (can be OS specific)Java: Executes a Java class Parallel: Forks a new thread for another Ant tasksSequential: Grouping of commands Waitfor: Blocks execution until a set of specified conditions become trueToolsVersion ManagementBuild SystemsIntegrated Development EnvironmentsIntegrated Development EnvironmentWhat is an IDE? A programming environment integrated into a software applicationNormally includesSource code editorCompiler and or interpreterGUI development toolsBuild systemMay also includeGraphical tools (e.g., class hierarchy diagram)DebuggerClass browserVersion management systemHistoryEarly programming was not done with IDEsCoding sheets
View Full Document