ImplementationModel
Sources 
•IvarJacobson,GradyBooch,JamesRumbaugh.TheUnifiedSoftwareDevelopmentProcess(ObjectTechnologySeries)-1998. 
•AhmadK.Shuja,JochenKrebs.IBMRationalUnifiedProcessReferenceandCertificationGuide—SolutionDesigner.IBMPress,2008. 
•McConnell.,Steve.CodeCompleteSecondEdition-Apracticalhandbookofsoftwareconstruction.MicrosoftPress.2009 
•Sommerville,Ian.SoftwareEngineeringNinthEdition. Pearson,2011.
•ImplementationModel 
•ImportantConcepts 
•Integration
Before.. 
Cartoon: NP 
Designersand developersdon'treallyspeakthesamelanguage. 
(From: http://chetchat.blogspot.fr/2014/08/cartoon-np.html)
Somewordsenvolved 
•Implementation 
•Construction? 
•Coding? 
Codingimplythemechanicaltranslationofapreexistingdesignintoacomputerlanguage; 
Implementation(SWconstruction)isnotatallmechanicalandinvolvessubstantialcreativityandjudgment. 
Steve McConnell 
lead for the Construction Knowledge Area of the Software Engineering Body of Knowledge (SWEBOK) project.
Implementationisvital 
Implementationisthecentralactivityinsoftwaredevelopment.Requirementsandarchitecturearedonebeforeconstructionsothatyoucandoconstructioneffectively.Systemtesting(inthestrictsenseofindependenttesting) isdoneafterconstructiontoverifythatconstructionhasbeendonecorrectly. Constructionisatthecenterofthesoftware- developmentprocess. 
Steve McConnell
Implementationisvital 
Constructionistheonlyactivitythat'sguaranteedtobedone.Theidealsoftwareprojectgoesthroughcarefulrequirementsdevelopmentandarchitecturaldesignbeforeconstructionbegins.Theidealprojectundergoescomprehensive,statisticallycontrolledsystemtestingafterconstruction.Imperfect,real-worldprojects,however,oftenskiprequirementsanddesigntojumpintoconstruction.Theydroptestingbecausetheyhavetoomanyerrorstofixandthey'verunoutoftime.Butnomatterhowrushedorpoorlyplannedaprojectis,youcan'tdropconstruction;it'swheretherubbermeetstheroad.Improvingconstructionisthusawayofimprovinganysoftware-developmenteffort,nomatterhowabbreviated. 
Steve McConnell
ImplementationModel 
•TheImplementationmodeldescribeshowdesignmodel’selementsareimplementedintermsofcomponents. 
•Italsodescribeshowcomponentsareorganizedaccordingtostructurationandmodularizationapproachesavailableintheenvironmentolanguage. 
•Itimpliesdependence
ImplementationModel 
From: "The Unified Software Development Process (Object Technology Series)“-1998
More in deep… 
TheImplementationexplainshowtodevelop, organize,unittest,andintegratethecomponentsastheyareincrementallydevelopedineveryiteration.Testingduringimplementationislimitedtounittesting.Othertests,suchasthesystemtestandtheintegrationtest,arecarriedoutwithintheTest.
More in deep… 
Sommervilleintroducessomeaspectsofimplementationthatareparticularlyimportanttosoftwareengineeringthatareoftennotcoveredinprogrammingtexts 
1.Reuse.Mostmodernsoftwareisconstructedbyreusingexistingcomponentsorsystems.Whenyouaredevelopingsoftware,youshouldmakeasmuchuseaspossibleofexistingcode. 
2.Configurationmanagement.Duringthedevelopmentprocess,manydifferentversionsofeachsoftwarecomponentarecreated.Ifyoudon’tkeeptrackoftheseversionsinaconfigurationmanagementsystem,youareliabletoincludethewrongversionsofthesecomponentsinyoursystem. 
3.Host-targetdevelopment.Productionsoftwaredoesnotusuallyexecuteonthesamecomputerasthesoftwaredevelopmentenvironment.Rather,youdevelopitononecomputer(thehostsystem)andexecuteitonaseparatecomputer(thetargetsystem).Thehostandtargetsystemsaresometimesofthesametypebut,oftentheyarecompletelydifferent.
Aboutreuse 
Softwarereuseispossibleatanumberofdifferentlevels: 
1. The abstraction level. 
2. The object level 
3. The component level 
4. The system level
•Todefinetheorganizationofthecodeintermsofimplementationsubsystems(maybeorganizedinlayers) 
•Toimplementthedesignelementsintermsofimplementationelements(sourcefiles,binaries, executableprograms,andothers) 
•Totestthedevelopedcomponentsasunits 
•Tointegratetheresultsproducedbyindividualimplementers(orteams)intoanexecutablesystem 
Purposes
•Verifyingthatthegroundworkhasbeenlaidsothatconstructioncanproceedsuccessfully 
•Determininghowyourcodewillbetested 
•Designingandwritingclassesandroutines 
•Creatingandnamingvariablesandnamedconstants 
•Selectingcontrolstructuresandorganizingblocksofstatements 
•Unittesting,integrationtesting,anddebuggingyourowncode 
•Reviewingotherteammembers'low-leveldesignsandcodeandhavingthemreviewyours 
•Polishingcodebycarefullyformattingandcommentingit 
•Integratingsoftwarecomponentsthatwerecreatedseparately 
•Tuningcodetomakeitfasterandusefewerresources 
Specifictasksinvolved 
Steve McConnell
•TheImplementationModelisacollectionofcomponentsandtheimplementationsubsystemsthatcontainthem. 
•Thetermmodelhereisnotmeanttoconnotediagramsandothermoreabstractrepresentations.Instead,anImplementationModelconsistsofImplementationElements,ImplementationSubsystems,andelementscreatedtosupportdevelopertesting. 
ImplementationModel
Workersinvolvedin theImplementationModel
•TheSoftwareArchitectisresponsibleforstructuringtheImplementationModel. 
•StructuringtheImplementationModelinvolvesestablishingtheImplementationModelstructure,adjustingimplementationsubsystems,definingimportsforeachimplementationsubsystem,decidinghowtotreatexecutableprogramsandotherderivedobjects,decidinghowtotreattestassets,updatingtheimplementationview, andevaluatingtheImplementationModel 
ImplementationModel
ImplementationModel
Workersinvolvedin theImplementationModel
So…
•Implementdesignelements—TheImplementerimplementstheelementsinthedesignmodel;thatis,hewritessourcecode, adaptsexistingsourcecode,compiles,andlinksandperformsunittests.Ifhediscoversdefectsinthedesign,hesubmitsreworkfeedbackonthedesign. 
•Fixcodedefects—TheImplementeralsofixescodedefectsidentifiedduringtheunittestsandperformsfurtherunittestingtoensurethatnonewdefectshaveemergedandthatthechangeisverified. 
•Evaluatequality—Finally,theImplementerreviewsthecodetoevaluatequalityandcompliancewiththeProgrammingGuidelines. 
ImplementationModelconsiderate!!
TheImplementerisresponsibleforthefollowing: 
•Implementingdesignelements-Thisinvolvespreparingforimplementation,transformingthedesigntoimplementation,completingtheimplementation,evaluatingtheimplementation,andprovidingfeedbacktodesign.Inimplementingthedesignelements,theImplementerproducesanImplementationElementandImplementationSubsystem 
ImplementComponents
TheImplementerisresponsibleforthefollowing: 
•Analyzingruntimebehavior—Thisisdonebydeterminingtherequiredexecutionscenario,preparingimplementationcomponentsforruntimeobservation, preparingtheenvironmentforexecution,executingthecomponentandcapturingbehavioralobservations, reviewingbehavioralobservationsandisolatinginitialfindings,analyzingfindingstounderstandrootcauses, identifyingandcommunicatingfollow-upactivities,andevaluatingtheresults 
ImplementComponents
TheImplementerisresponsibleforthefollowing: 
•ImplementingtestabilityelementsandproducingtheTestabilityElementandtheTestStub—Thisinvolvesimplementingandunittestingdrives/stubsandimplementingandunittestingtheinterfacetotheautomatedtesttool(UnitFramework,TestNG…). 
ImplementComponents
TheImplementerisresponsibleforthefollowing: 
•ImplementingandproducingtheDeveloperTest—Thisisachievedbyrefiningthescopeandidentifyingthetests,selectingtheappropriateimplementationtechniques,implementingthetest, establishingexternaldatasets,verifyingthetestimplementation, andmaintainingtraceabilityrelationships. 
•ExecutingdevelopertestsandproducingtheTestLog—Thisrequiresexecutingtheunittests,evaluatingtheexecutionoftests, verifyingthetestresults,andrecoveringfromhaltedtests. 
ImplementComponents
So…
So…
So…
Integration 
Largesoftwaresystemsrequiremultiplesoftwarecomponents,someofftheshelfandotherscustomdeveloped,tobeintegratedintoawholesystem.Thisisaspecializedsoftwaredevelopmentactivitythatcombinesseparatesoftwarecomponentstoproduceasoftwaresystem. 
ImportantConcepts
Integrationisdoneatseveralstagesandlevelsduringtheimplementation. 
-Integratingtheworkofateamworkinginthesameimplementationsubsystembeforereleasingthesubsystemtosystemintegrators 
-Integratingsubsystemsintoacompletesystem. 
Integration
Incrementalintegrationmeansthatcodeiswrittenandtestedinsmallpiecesandthencombinedintoaworkingwholebyaddingonepieceatatime. Thebenefitsincludeeasyidentificationoffaults, fulltestingofcomponents,andearlyfeedbackontheexecutionofthesystem. 
Integration
So…
ImportantConcepts 
Prototypes 
Prototypesareusedtocheckbusinessviability,todemonstratekeytechnology,toobtainprojectcommitmentorfunding,tofurtherunderstandrequirements,andtocheckusability
ImportantConcepts 
RuntimeObservationand Analysis 
Thisconceptencompassestheobservationofthesoftwareduringruntimeexecutionandanalysisofthecapturedannotationswherepathsaretracedthroughsoftwarecomponentsandthenaggregatedtounderstandglobalsystembehaviorviastatisticalinference.
ImportantConcepts 
RuntimeObservationand Analysis 
Becauseofthepotentialvolumeofthelow-levelinformationthatcanbecapturedfromruntimebehavior,thespeedatwhichthatinformationisgenerated,andthesubsequentdifficultyinunderstandingthepotentiallyvastamountofinformation,automatedtoolsupportisakeyfactorinmakingthispracticefeasible.
ABuildisanoperationalversionofasystemorapartofthesystemthatdemonstratesasubsetofthecapabilitiesprovidedinthefinalproduct.TheBuildconstitutesanintegralpartoftheiterativedevelopmentlifecycleandprovidesreviewpoints.Notethatinalliterativeincrementaldevelopmentprocesses,progressisdemonstratedviaanexecutable,a(working)softwaredeliverableratherthanjustdocumentsorthelike.Thelifecycle“providesreviewpoints,”buttheBuildisreviewableandobjectivelydemonstratesprogresstowardcompletion.TheBuildisexaminedatthereviewpointsthatthelifecycleprovides. 
Build
Build 
ThepurposeofaBuild,constructedfromotherelementsintheimplementation,istodeliveratestablesubsetoftheruntimefunctionsandcapabilitiesofthesystem.
IntegrationBuildPlan 
Thisartifactprovidesadetailedplanforintegrationwithinaniteration.Thepurposeofthisartifactistodefinetheorderinwhichtoimplementthecomponents,determinewhichbuildstocreatewhenintegratingthesystem,anddefinehowtheyaretobeassessed.TheImplementerusesthisartifacttoplantheorderinwhichtoimplementdesignelementsandwhatandwhentodelivertosystemintegration.
IntegrationBuildPlan 
-Integratorleadstheplanningandexecutionofimplementationelementintegrationtoproducebuilds. 
-TheIntegratorusestheintegrationbuildplanasaplanningtool
DeveloperTest 
ThepurposeoftheDeveloperTestistoprovidetheimplementationofasubsetofrequiredtestsinanefficientandeffectivemanner. 
MostoftheDeveloperTestsarecreatedinthesametimeframesasthesoftwarecomponentsthatneedtobetested.
Component-UML 
Amodularpartofasystemthatencapsulatesitscontentsandwhosemanifestationisreplaceablewithinitsenvironment.Acomponentdefinesitsbehaviorintermsofprovidedandrequiredinterfaces.Assuch,acomponentservesasatype,whoseconformanceisdefinedbytheseprovidedandrequiredinterfaces(encompassingboththeirstaticaswellasdynamicsemantics).
Anencapsulatedpartofasystem,ideallyanon-trivial,nearlyindependent,andreplaceablepartofasystemthatfulfillsaclearfunctioninthecontextofawell-definedarchitecture.Thisincludes: 
•designcomponent-asignificantencapsulatedpartofthedesign,andsoincludesDesignSubsystemsandsometimessignificantDesignClassesandDesignPackages. 
•implementationcomponent-asignificantencapsulatedpartoftheimplementation,generallycodethatimplementsadesigncomponent 
Component-RUP
ComponentReplaceability(RUP) 
•Source-FileReplaceability:Thischaracteristicmakesiteasierforcomponentsourcecodetobeversion- controlled,baselined,andre-used 
•DeploymentReplaceability:thereisonefileoronesetoffilesthatdeploythecomponentandnoothercomponent 
•Run-TimeReplaceability:Thisenablessoftwaretobeupgradedwithoutlossofavailability. 
•LocationTransparency
More aboutComponents 
•http://www.agilemodeling.com/artifacts/componentDiagram.htm 
•http://www.ibm.com/developerworks/rational/library/dec04/ bell/
Finally… don’tforgettheTraceability!
Finally… don’tforgettheTraceability!
Finally… don’tforgettheTraceability!
ImplementationEnviromentFeatures(Sommerville) 
Asoftwaredevelopmentplatformshouldprovidearangeoftoolstosupportsoftwareengineeringprocesses.Thesemayinclude: 
1.Anintegratedcompilerandsyntax-directededitingsystemthatallowsyoutocreate,edit,andcompilecode. 
2.Alanguagedebuggingsystem. 
3.Graphicaleditingtools,suchastoolstoeditUMLmodels. 
4.Testingtools,suchasJUnitthatcanautomaticallyrunasetoftestsonanewversionofaprogram. 
5.Projectsupporttoolsthathelpyouorganizethecodefordifferentdevelopmentprojects.
Be careful 
•Implementationhavepatternsalso…. 
•SeeCleanCodeofRobertC.Martin,andImplementationPatternsofKentBeck
Be careful(http://www.agilemodeling.com/artifacts/componentDiagram.htm) 
UML1.0 
UML2.0
Thanks for your attention 
fdgiraldo@uniquindio.edu.co

Implementation Model