SoftwareConfigurationManagementPatternsEffectiveTeamworkPracticalIntegrationWord下载.docx
《SoftwareConfigurationManagementPatternsEffectiveTeamworkPracticalIntegrationWord下载.docx》由会员分享,可在线阅读,更多相关《SoftwareConfigurationManagementPatternsEffectiveTeamworkPracticalIntegrationWord下载.docx(43页珍藏版)》请在冰豆网上搜索。
0-201-74117-2
PrintISBN-13:
978-0-201-74117-9
Pages:
256
TheSoftwarePatternsSeries
SeriesEditor:
JohnM.Vlissides
TheSoftwarePatternsSeries(SPS)comprisespatternliteratureoflastingsignificancetosoftwaredevelopers.Softwarepatternsdocumentgeneralsolutionstorecurringproblemsinallsoftware-relatedspheres,fromthetechnologyitself,totheorganizationsthatdevelopanddistributeit,tothepeoplewhouseit.Booksintheseriesdistillexperiencefromoneormoreoftheseareasintoaformthatsoftwareprofessionalscanapplyimmediately.RelevanceandimpactarethetenetsoftheSPS.Relevancemeanseachbookpresentspatternsthatsolverealproblems.Patternsworthyofthenameareintrinsicallyrelevant;
theyareborneofpractitioners'
experiences,nottheoryorspeculation.Patternshaveimpactwhentheychangehowpeopleworkforthebetter.Abookbecomesapartoftheseriesnotjustbecauseitembracesthesetenets,butbecauseithasdemonstrateditfulfillsthemforitsaudience.
Titlesintheseries:
DesignPatternsExplained:
ANewPerspectiveonObject-OrientedDesign,AlanShalloway/JamesR.Trott
DesignPatternsJava™Workbook,StevenJohnMetsker
TheDesignPatternsSmalltalkCompanion,ShermanAlpert/KyleBrown/BobbyWoolf
TheJoyofPatterns:
UsingPatternsforEnterpriseDevelopment,BrandonGoldfedder
TheManagerPool:
PatternsforRadicalLeadership,DonOlson/CarolStimmel
ThePatternAlmanac2000,LindaRising
PatternHatching:
DesignPatternsApplied,JohnVlissides
PatternLanguagesofProgramDesign,editedbyJamesO.Coplien/DouglasC.Schmidt
PatternLanguagesofProgramDesign2,editedbyJohnM.Vlissides/JamesO.Coplien/NormanL.Kerth
PatternLanguagesofProgramDesign3,editedbyRobertMartin/DirkRiehle/FrankBuschmann
PatternLanguagesofProgramDesign4,editedbyNeilHarrison/BrianFoote/HansRohnert
SmallMemorySoftware,JamesNoble/CharlesWeir
SoftwareConfigurationManagementPatterns,StephenP.Berczuk/BradAppleton
Formoreinformation,checkouttheseriesWebsiteat
ListofFigures
FigureI-1.Acodelineanditscomponents
FigureI-2.Populatingaworkspacefromdifferentcodelines
FigureI-3.Branchingasinglefileandmergingwiththetrunk
FigureI-4.Branchinganentirecodeline
FigureI-5.Codelinediagramnotation
Figure2-1.Theinteractionsbetweenelementsoftheenvironment
Figure3-1.TheSCMpatternlanguage
Figure3-2.Codeline-relatedpatterns
Figure3-3.Workspace-relatedpatterns
Figure4-1.Amergecanbemessy
Figure4-2.Staircasebranching(oracascade)
Figure4-3.Mainlinedevelopment
Figure5-1.Long-runningtestshavemixedvalue.
Figure5-2.Astablebutdeadcodeline
Figure5-3.AVeryActivebutveryUselessCodeline
Figure5-4.Anactive,alivecodeline
Figure5-5.LabelingNamedStableBases
Figure6-1.Combiningchangesatonce
Figure6-2.Integratingeachchangeasithappens
Figure6-3.SharingSomeComponentsbetweenWorkspaces
Figure7-1.Aworkspaceiscreatedfrommanythings.
Figure7-2Populateyourworkspacefromarepository.
Figure7-3.Versiontreeforaworkspace
Figure8-1.Thebuildintegrateschangesfromeveryone.
Figure8-2.Componentsoftheprivatesystembuild
Figure9-1.Integrationcanbedifficult.
Figure9-2.AnIntegrationBuildProcessAssemblesthePieces.
Figure10-1.Vendorreleasesandyourreleasesarenotinsync.
Figure10-2.Thirdpartycodeline
Figure12-1.Eachcodelineneedsdifferentrules.
Figure16-1.Eachdecisionleadstomorechoices,untilyoupickthesolution.
Figure16-2.Usingthecodelineforstaginggeneratesalotofnoise.
Figure17-1.Doingallyourworkonthemainline
Figure17-2.Createabranchwhenyouship.
Figure17-3.Staircaseofdependentbranches
Figure17-4.ReleaseLine
Figure18-1.Release-PrepCodeLine
Figure19-1.Sometasksareforthefuture.
Figure19-2.Creatingareleaselinetooearlyistroublesome.
Figure19-3.Taskbranch
Foreword
ThoseofyoufamiliarwithmyworkmaybeaskingyourselveswhyanexpertonJ2EEsoftwarearchitecturewouldbewritingaprefaceforabookonsoftwareconfigurationmanagement(SCM).Afterall,thetwodisciplinescouldn'
tbefartherapart,couldthey?
J2EEarchitectureseemsloftyandexalted,whileSCMmightappeartobesomethingthatisdowninthemuckofthetrenchesofsoftwaredevelopment.Infact,nothingcouldbefurtherfromthetruth.Overtheyears,I'
veoftenfoundthatcustomersthatIworkwithwhohaveproblemswithJ2EEapplicationarchitectureusuallyhaveseriousproblemswithSCMaswell.
Thereasonsforthiscuriouscoincidencearetwofold.First,manypeoplehaveahardtimedealingwithchangeingeneral—beitmovingfromasetofarchitecturalpracticesthatnolongerapplyinanewenvironmentlikeJ2EE,ormovingfromasoftwaredevelopmentprocessthatworkedinoneenvironmentbutmaynotworkinallenvironmentsaswell.ThustheyfeelthatiftheirSCMprocessesworkedintheirlastproject,theymustworkintheircurrentproject—regardlessofthefactthatthetechnologies,timescales,andmethodsemployedindesigningandbuildingthetwoprojectsmayberadicallydifferent.
Second,peopleoftenwantasmallsetofsimplerulestogovernalltheiractivities.However,takingatoosimpleapproachusuallyleadstoproblemsattheedgewhereabstractionsmeetreality.WhethertheissueisunderstandingwhyaparticularJ2EEconstruct,suchasanEntityEJB,mayworkinonecircumstancebutnotanother,orunderstandingwhyitisimportantfordeveloperstohavetheirownprivateworkspacesinwhichtododevelopmentandintegrationwhen,afterall,youhavetointegratethecodefromyourdevelopersattheendofthedayanyway,theproblemsarethesame.Inbothcases,asimplerule(useEntitybeans,useabuildscript)isperfectlygoodadvice,butitmustbetemperedintheforgeofexperiencebecauseinitsrawformitistoobrittletouse.
Whatmathematiciansandscientistshavebeguntodiscoverinthelasttwodecadesofresearchintochaosandcomplexitytheoryisthat,althoughsystemsbuiltwithrulesthataretoofewandtoosimpleareusuallystagnantandpredictable,addingjustafewmorerulescanoftenleadtosystemsofstartlingcomplexityandbeauty.Thesearesystemsthatcanbeseriouslyperturbedbyoutsideforcesandyetcanreconstitutethemselvessothattheoverallschemeremainswhole.ThebookyouholdinyourhandprovidesasetofrulesforSCMthathavethatkindofflexibility.
SteveandBradhavedevelopedtheiradviceondealingwithSCMasasystemofpatterns.Astheytellinglyrevealearlyon,thestrengthofasystemofpatternsliesnotintheindividualpatternsthemselvesbutinthewebofrelationshipsbetweenthepatterns.TheauthorshavedevelopedaninterlockingmeshofpatternsthatindividuallycoverthemostcommonpracticesinSCM.However,theymoreimportantlyshowhowtheforcesthatleadtoeachsolutionarenotcompletelyresolvedineachpattern—thatyouneedtocarefullyconsiderhoweachSCMpracticeistiedtoothers,tokeepfromlockingyourselfintoaprisonofyourownmaking.
Forexample,youmaywanttolookaheadtothewonderfuladvicegivenintheirfirstpattern,Mainline(4).Thisseeminglyprosaicadvice(thatdevelopersshouldworkonasingle,stablecodebase)issomethingthatIhavefoundmanygroups,includingthoseinlarge,successfulcorporationsthathavespentmillionsofdollarsonimplementingprocesses,havesomehowfailedtograsp.Thisiscommonsense,wellapplied,andthatiswhatmakesituncommon.
Likewise,theadvicegiveninPrivateWorkspace(6)andPrivateSystemBuild(8)isnothinglessthantwoofthekeyideasthathavemademodernJavaIDEssuchasVisualAgeforJavaandIBMWebSphereStudiosousefulandpopular.WhenIamasked(asIamnearlydaily)whydevelopersshouldchooseoneoftheseIDEsoverdevelopmentatthecommandlinewithtraditionalcodeeditorsandcompilers,thefactthatthesetoolsnotonlyallowbutactivelyencouragethisstyleofdevelopmentisakeyfactorinhowIphrasemyrecommendations.
So,ItrustthatyoufindthisbookashelpfulandenlighteningasIdo.I'
vebeenintroducingpeopletoanumberofthepatternsfromthisbooksincetheirfirstpublicationinthePatternLanguagesofPrograms(PLoP)Conferenceproceedingsseveralyearsago,andI'
vefoundthemtobeinvaluableinsettingthestageforfrankandconstructivediscussionsabouthowtoperformSCMtherightway.ThesepatternshavebeenmyswordforcuttingthroughtheGordianknotofcomplexSCMissuesintrickycustomerengagements—Ihopethatyouwillsoonbegintowieldthisweaponaswell.
—Kyle
Brown
Author
of
EnterpriseJavaProgrammingwithIBMWebSphere
Preface
SoftwareconfigurationmanagementisnotwhatIdo.Iamnotasoftwareconfigurationmanagementperson.Iamnotanorganizationalanthropologyperson.However,Idiscoveredearlyonthatunderstandingorganizations,softwarearchitecture,andconfigurationmanagementwasessentialtodoingmyjobasasoftwaredeveloper.Ialsofindthissystemsperspectiveonsoftwareengineeringinteresting.Ibuildsoftwaresystems,andconfigurationmanagementisaveryimportantandoftenneglectedpartofbuildingsoftwaresystems.Inthisbook,IhopethatIcanshowyouhowtoavoidsomeoftheproblemsIhaveencounteredsothatyo