DonnaAlbino LIS489FinalProject SoftwareConfigurationManagement Thepurposeofsoftwareconfigurationmanagement(SCM)is toestablishand maintaintheintegrityoftheproductsofthesoftwareprojectthroughoutthe project ssoftwarelifecycle. 1 Anysoftwareprojectdevelopedforacustomercan benefitfromusingadependablesystemoftrackingandcontrollingchangesmadein thesoftware,especiallyifthereismorethanonedeveloperormorethanone installationsiteforthesoftware.aprojectleaderinterestedinbestpracticesin managingthetechnicaldevelopmentofasoftwareprojectwillturntoasoftware configurationmanagementproducttostreamlineandautomatetheprocessasmuch aspossible.anscmsystemisusedtoestablisharepositoryoffilesthatareusedto buildthedeliveredproduct,andthentocreatemonitoredaccesstothatrepository. Allchangestothefiles,thenameofthepersonwhomadethechanges,whythey madethechanges,andwhentheymadethechanges,becomepartoftheinformation recordkeptonthesoftwareproject.thefilesaremanagedfromtheinitialbaseline throughthestagesofcreating,integrating,andtestingthesoftware,releasingitto endusers,andmaintainingthesoftwarewithreleasesofpatchesandnew functionality. 1 SoftwareEngineeringInstitute.CapabilityMaturityModelIntegration,Version1.1 CMMIforSystemsEngineeringandSoftwareEngineering(CMMI SE/SW,V1.1) (CMU/SEI 2000 TR 018,ADA388775).Pittsburgh,PA:SoftwareEngineering Institute,CarnegieMellonUniversity,2000.
Configurationmanagementseekstoeliminateconfusionanderrorsthatexistwhen differentversionsofthesoftwarearecreated.changescorrecterrors,refineexisting features,oraddnewfunctionality.withoutaconfigurationmanagementprocess thatenforcesgoodbehavior,developerscanusedifferentversionsofsoftware unintentionallytocreatefaultyendproducts;ortheycancreatenewversionsof fileswithouttheproperauthority.asoftwareconfigurationmanagementtoolcan enforcethenecessarygoodbehaviorthroughcontrolledfileaccess. Theimportanceofacontrolledbaselineofsoftwarefilesgoesbeyondtracking changesastheyaremade.adevelopermayalsoneedtoreversechangesinorderto testanolderversionagainstabugreportinordertoduplicatetheproblemthe customerreported,orbackoutachangethatisnotworkingwell.twodevelopers maybetaskedtoimplementdifferentfunctionsinthesoftwarethataffectafilein common.theyneedtobeabletoworkindependentlyonthatfilewithoutimpacting theother swork,andthechangesmergedinsuchawaythatbothtasksare successfullyimplemented.softwaremayneedtobetrackedagainstalistof submittedbugreports,oralistofdocumentedrequirements.agoodsoftware configurationmanagementsolutionwillofferautomationtoolstohelpwith challengeslikethese. Softwareconfigurationmanagementsystemshavecertaincommonfunctions.The firstoftheseiscreatingabaseline.usuallyonlythesourcecodeisputunder configurationcontrol,andthebuildprocesswillcreatederivedcode,softlinks,and
executablefilesthatarenotcontrolled.therefore,itisimportanttotracktoolsused tocreateandusethesoftwarebuild,suchascompilers,scripts,testtools,and browsers,sothatthederiveditemsarebuiltidenticallyforthecustomerasthey werebuiltduringthedevelopmentandtestprocedures.ifpartofthecontrolled code,suchasthebuildtools,isgoingtobesharedwithanotherproject,aseparate baselineforthatsharedcodecanbecreatedsothatsoftwarecanbeupdatedforone projectwithoutaffectingtheotherproject. Oncethefilesareinacontrolledbaseline,thesoftwareconfigurationmanagement systemsuppliesfunctionalityforaccessingafile.dependingonthesystem,the developermayhaveread onlyaccesstothefullbaselineandwillhavetospecifically checkoutafileformodifications,orthedevelopermayhavewriteaccesstoallthe filesintherepository.thedeveloperwillhaveaccesstothelatestreleasedversion, andallpreviousreleasedversions,ofeachfileintherepository,andcaneasily accessonefile,orthewholesetoffilesthatcreatedaformalrelease.toolsare suppliedtocomparedifferentversionsofthesamefiletoeachother,and summarizethelinesaredifferentbetweentheversions,andtoaccesstherelease notesassociatedwiththebuild. Whenchangesaremade,thedeveloperwilleitherwanttokeepthosechanges,or discardthemandreverttoapreviousversion.thesoftwareconfiguration managementsystemsuppliesfunctionalityforupdatingthefileintherepository,or
revertingtoapreviousversion.changestotherepositorycanbecommittedwithor withoutacommentfromthedeveloperastowhythefilehaschanged. Asoftwareconfigurationmanagementsystemallowsadevelopertoquerythe repositorytoseewhoisworkingontheproject,andwhatfileseachpersonis modifying.thesoftwareconfigurationmanagementsystemalsoallowsthe developertogetindividualfileinformationsuchasitslatestversionandits developmenthistory.thisrecordofchangescanbeveryhelpfulincreating documentationofreleasesforacustomer. Theinitialrepositoryoffilesundersoftwarecontrolcanbethoughtofasthetrunk ofatree.itistaggedwithareleasenumber,typically1.0.whenachangeis requested,anewbranchiscreatedoffthetrunkwhilethedevelopermodifiesthe code.whenthedeveloperhascompletedthechangeandthoroughlytestedit,the codeismergedbackintothetrunk,andisgivenanewtag,orreleasenumber.ifthe changeisconsideredtobeasmallone,thenewtagmaybe1.1,or1.0.1.ifthe changeisconsideredtobeasubstantialone,thenewtagmaybe2.0.nowthetrunk hasawarenessofbothreleases,andthesoftwareconfigurationmanagementsystem canrecreateversion1.0,oritcanrecreatethisnewrelease.sometimesadeveloper mayhaveseveralbranchesopenonthetrunk,toimplementdifferentfunctionality ineachone.abranchcanstartfromanyprevioustaggedrelease,notjustthefirst 1.0baselinenode.Eachbranchismergedbackintothetrunkwhenitiscompleted, orabranchcanbediscardedifthechangeisconsideredtobenolongernecessary.
Ifthereareseveraldevelopersworkingononerepository,thesoftware configurationmanagementsystemkeepsthedevelopersfrominterferingwitheach other sprogress.ifonemergescodeintothetrunk,theotherdevelopersmust performarebaseagainstthosechanges,beforetheywillbeabletomergetheircode intothetrunktoo.thisinvolvespickingupthechangesfromthefirstdeveloper, performingmergesinanycommonfiles,andretesting.thesoftwareconfiguration managementsystemwilltrytoautomatethemergeprocessasmuchasitcan.butif thedeveloperschangedthesamesectionofcodeindifferentways,thesecond developerwillhavetomergethatsectionmanually. Therearemanytoolsavailableinthemarketplaceformanagingsoftware configurationatdifferentpricerangesandimplementedforuseondifferent platforms.aprojectmanagerwhowillselectthesoftwareconfiguration managementsystemusedontheirprojectwillconsideropensourcevs.proprietary systems,howasystemdealswithfilesthatarebeingchangedbyseveralpeopleat thesametime,howithelpsorhindersinmerges,andwhatotherfunctionalitymay beavailablebeyondversioncontrol. Thesoftwareconfigurationmanagementsystemscanbecategorizedaseitherfile lockedsystems,ormergedsystems.ifasystemusesfilelocking,onlyonedeveloper cancheckoutafileforeditingatonetime.ifaseconddevelopertriestocheckout thesamefile,theywillbeunabletodoso.thisforcesdevelopmenttobedoneina
serialmanner,ratherthanaparallelmanner.developersdonoteverhavetodofile merging,whichcanbeprolongedandpainfulifthechangeshavebeenbigand intertwinedwithsomeoneelse schanges.ifdevelopershaveotherworkthatcan keepthembusywhiletheyarewaitingforsomeonetofinishafixbeforethem,this canbeagoodsolution.butifdevelopersareworkingoncopiesofthecodeoutside oftheconfigurationmanagementsystem,tryingtoworkinparalleltokeepona schedule,thenthesystemisnotworkingasintendedandafile lockedsystemisa poorchoice.sometoolsthatuseamergedsystemcanbereconfiguredtousea lockedsystemtomanageabaselineifdesired. Iftheprojectmanagerwantstouseamergingsystemratherthanafilelocking system,itisimportanttolookatthemergingtoolssuppliedandtoconsiderthem carefully.ifthesystemcannotautomateamergebecauseofchangesinthesame areaofthesamefiles,thedeveloperneedstochooseanactionateachmergepoint (usethebaselinecode,ornewcode).inordertodothiscorrectly,thedeveloper needstoseethelinessurroundingthemergepoint.asplit screenmergetoolcanbe veryhelpful,allowingthedevelopertopointandclickonthechangesdesired.a text onlytoolmayonlyshowalittlebitofthecode,andalinenumber,whichmay notbeenoughtohelpthedevelopertorecognizethecontextandknowwhatroutine isbeingmodified,orinwhichportionoftheroutine.incaseslikethat,adeveloper mayendupmakingapoorselectionthatwilleludeimmediatedetection.
Mergesintextfilescanbecomplex;mergesinimagefilescanbeevenmore complex.somesoftwareiscreatedinagraphicalway,likeibm srhapsodysoftware thatcreatesc++orjavacodefromuml(universalmodelinglanguage)diagrams.if aprojectisgoingtobeusingimagefilesratherthantextfilesinitscontrolled repositoryofsourcecode,theprojectleadermustgetassurancesfromthevendorof thesoftwareconfigurationmanagementsystemthatitsmergetoolwillbeableto handletheseimagesinausefulway. Beyondfilelockingvs.mergingsystems,aprojectmanagerselectingasoftware configurationmanagementsystemmustalsoconsidertheadvantagesand disadvantagesofadistributedrevisioncontrolsystemvs.aclient serverrevision controlsystem.inaclient serversystem,thereisasinglecentralrepository(one trunk)andalldevelopersmergeagainstit.inadistributedsystem,eachdeveloper ownsaworkingcopyofthecodebase,andtheyswappatchesamongthemselves. Thedistributedsystemcanbefaster,sincethereisnocommunicationwithacentral server.eachdeveloper sworkingcopyisabackupofthecodebase,whichcanbe helpfulifthere sasystemfailure.butadistributedsystemhasnobaseline,only workingcopies.ifoneofthesecopiesisdesignatedasthebaseline,thenthesystem essentiallybecomesclient serverandtheadvantagesofadistributedsystemare lost. Closerexaminationofthreepopularsystemscanilluminatethesepointstoconsider. AclassicchoiceforversioncontrolisSoftwareCodeControlSystem(SCCS).Itis
bundledwithunixmachinesandisopensource.itwasfirstreleasedinthe1970s andisverystable.checkoutsaredoneonefileatatime,andthuseachfilehasa versionnumberassociatedwithit.thissystemisfilelocked,somergesandparallel developmentarenotsupported.thisisaclient serversystem,supportingonetrunk anddevelopmentfromthattrunk.areleaseisconstructedbycreatingasetoffile versions:forinstance,version1.0ofonefile,version1.3ofanotherfile,version1.7 ofathirdfile,andsoon.eachfilehasitsversionnumberandacommentstring embeddedinit,andanyobjectfilecreatedfromcontrolledsourcewillhavethe versionnumbersembeddedinittoo. Averypopular,opensource,client serverchoiceforversioncontrolissubversion (SVN)byApache.Adeveloperchecksoutacopyofthewholebaseline,ratherthan filebyfilelikesccs.allthefilesgiventothedeveloperatcheckouttimehavewrite access.thedevelopercanmovedirectoriesandfilesaroundwithinthebaseline withoutlosingthehistoryonthefile.thisisavaluableenhancementtohave,as restructuringcodeiscommonasnewfunctionalityorrequirementsareaddedtoa complexsystem.mergingwithimagefileshasdemonstratedproblemswithibm s Rhapsody,butmergingwithtextfilesworkswell. AnexpensivebutpowerfulsystemisIBMRational sclearcase.itisaproprietary client serversystemforversioncontrol.adevelopercreatesaview,whichisacopy withread onlysourceoftheentirebaseline,andthenchecksoutindividualfiles withintheviewtogetwriteaccessonthemformodification.iftherearemultiple
baselinesbeingused,aconfigurationspecificationfilecoordinateswhichbaselines tousewhencompiling.clearcaseintegrateswithclearquest,whichtracksproblem reportsandlinksthemwithadeveloperandatagonthereleasethatfixedthe problem.clearcaseproducesaconfigurationrecord,whichcontainsthebuild procedure,alistofalltheinputfiles,andalistofallthederivedfilesthatarepartof arelease.theadministratorwhowillcreateasoftwarereleaseusesthe configurationrecordtoaidinthatprocess.clearcasecommandscanbeenteredina text onlyenvironment,ortheycanbeenteredinagraphicinterface.thegraphic interfaceisespeciallypowerfulforperformingmanualmerges,andforseeinga graphicrepresentationofthetrunk,branches,andreleasesonfiles.asplit screen mergeshowsthebaselinecodeandthedeveloper scodeateachofthemerge points,andwithaseriesofmouseclicksthedevelopercanselectwhichlinesto select,ortocodeahybridthirdchoiceonthespot.clearcasecanalsobeconfigured toworkasafilelockedsystemifdesired. Therearemanyothertoolsavailableforsoftwareconfigurationmanagement.Each toolhasstrengthsandweaknessesthatneedtobeconsideredagainstthe requirementstheprojecthasforsoftwareconfigurationmanagement,price,and platform.burrowsandwesley 2 provideathoroughcomparisonofcommercially availableconfigurationmanagementtools,andshouldbeconsideredrequired readingforanyonewhoplanstopurchaseasoftwareconfigurationmanagement 2 Burrows,CliveandWesley,Ian.OvumEvaluates:ConfigurationManagement. London,UK:Ovum,Ltd.,2005.
system.thecmcrossroads 3 websiteisanonlineresourcethatoffersarticles,white papers,bookreviews,toolreports,discussionforums,andaccesstothe ConfigurationManagementJournal.Italsolinkstoothersiteswithconfiguration managementinformation. 3 http://www.cmcrossroads.com/,accessednovember21,2014.