ASoftwareDesignSpecificationTemplateASoftwareDesignSpecificationTemplatebyBradAppletonbrad@bradapp.net©1994-1997byBradfordD.AppletonPermissionisherebygrantedtomakeanddistributeverbatimcopiesofthisdocumentprovidedthecopyrightnoticeandthispermissionnoticearepreservedonallcopies.TableofContents●Introduction●DocumentOutline●DocumentDescription ❍Introduction ❍SystemOverview ❍DesignConsiderations■AssumptionsandDependencies■GeneralConstraints■GoalsandGuidelines■DevelopmentMethods ❍ArchitecturalStrategies ❍SystemArchitecture■SubsystemArchitecture ❍PoliciesandTactics ❍DetailedSystemDesign■DetailedSubsystemDesign ❍Glossary ❍BibliographyIntroductionThefollowingisanattempttoputtogetheracomplete,yetreasonablyflexibletemplatefor[2009/12/2608:37:28]ASoftwareDesignSpecificationTemplatethespecificationofsoftwaredesigns.Whereverpossible,Ihavetriedtoprovideguidelines(insteadofprescribingrequirements)forthecontentsofvarioussectionsandsubsectionsofthedocument.Somemayprefertorequiremoredetailedsubsectionsofaparticularsection,choosingoneormoreofthesubsectiontopicsfromthelistofguidelinesprovided.Inthissense,thisdocumentisreallyatemplateforatemplate.Indevisingthistemplate,Ihavegleanedinformationfrommanysources,includingvarioustextsonSoftwareEngineering(Pressman,Sommerville,andVanVliet),Object-OrientedDevelopment(Booch,Rumbaugh,Berard,andWirfs-Brock),variousSEIreports,DoD-StdandMil-Stddocumentationrequirements(2167/2167A),andIEEEdocumentationstandards(particularlyIEEE-1016forsoftwaredesigns,andIEEE-830forsoftwarerequirements).Ihavemadeeveryeffortnottoassumeorimposeaparticularsoftwaredevelopmentmethodologyorparadigm,andtoplacemoreemphasisoncontentthanonformat.Itismydesirethatacompletedsoftwaredesignspecificationmeetthefollowingcriteria:●Itshouldbeabletoadequatelyserveastrainingmaterialfornewprojectmembers,impartingtothemenoughinformationandunderstandingabouttheprojectimplementation,sothattheyareabletounderstandwhatisbeingsaidindesignmeetings,andwon'tfeelasiftheyaredrowningwhentheyarefirstaskedtocreateormodifysourcecode.●Itshouldserveasobjectiveevidencethatthedesignersand/orimplementorsarefollowingthroughontheircommitmenttoimplementthefunctionalitydescribedintherequirementsspecification.●Itneedstobeasdetailedaspossible,whileatthesametimenotimposingtoomuchofaburdenonthedesignersand/orimplementorsthatitbecomesoverlydifficulttocreateormaintain.Pleasenotethattherearenosectionsinthisdocumentfordescribingadministrativeorbusinessduties,orforproposingplansorschedulesfortestingordevelopment.Thesectionsinthisdocumentareconcernedsolelywiththedesignofthesoftware.Whilethereareplacesinthisdocumentwhereitisappropriatetodiscusstheeffectsofsuchplansonthesoftwaredesign,itisthisauthor'sopinionthatmostofthedetailsconcerningsuchplansbelonginoneormoreseparatedocuments.DocumentOutline[2009/12/2608:37:29]ASoftwareDesignSpecificationTemplateHereistheoutlineoftheproposedtemplateforsoftwaredesignspecifications.Pleasenotethatmanypartsofthedocumentmaybeextractedautomaticallyfromothersourcesand/ormaybecontainedinother,smallerdocuments.Whatfollowsisjustonesuggestedoutlineformattousewhenattemptingtopresentthearchitectureanddesignoftheentiresystemasonesingledocument.Thisbynomeansimpliesthatitliterallyisasingledocument(thatwouldnotbemypersonalpreference):●Introduction●SystemOverview●DesignConsiderations ❍AssumptionsandDependencies ❍GeneralConstraints ❍GoalsandGuidelines ❍DevelopmentMethods●ArchitecturalStrategies ❍strategy-1nameordescription ❍strategy-2nameordescription ❍...●SystemArchitecture ❍component-1nameordescription ❍component-2nameordescription ❍...●PoliciesandTactics ❍policy/tactic-1nameordescription ❍policy/tactic-2nameordescription ❍...●DetailedSystemDesign ❍module-1nameordescription ❍module-2nameordescription ❍...●Glossary●BibliographyTheaboveoutlineisbynomeansexclusive.Aparticularnumberingschemeisnotnecessarilyrequiredandyouaremorethanwelcometoaddyourownsectionsorsubsections[2009/12/2608:37:29]ASoftwareDesignSpecificationTemplatewhereyoufeeltheyareappropriate.Inparticularyoumaywishtomovethebibliographyandglossarytothebeginningofthedocumentinsteadofplacingthemattheend.Thesametemplateisintendedtobeusedforbothhigh-leveldesignandlow-leveldesign.Thedesigndocumentusedforhigh-leveldesignisalivingdocumentinthatitgraduallyevolvestoincludelow-leveldesigndetails(althoughperhapstheDetailedDesignsectionmaynotyetbeappropriateatthehigh-leveldesignphase).Theorderingofthesectionsinthisdocumentattemptstocorrespondtotheorderinwhichissuesareaddressedandinwhichdecisionsaremadeduringtheactualdesignprocess.Ofcourseitisunderstoodthatsoftwaredesignsfrequently(andoftenfortunately)don'talwaysproceedinthisorder(orinanylinear,orevenpredictableorder).However,itisusefulforthepurposeofcomprehendingthedesignofthesystemtopresentthemasiftheydid.Frequently,oneofthebestwaystodocumentaproject'sdesignisto