DesignSoftware Engineering: Elaborated StepsSystem Design PatternsLayered ArchitectureDocumenting Your DesignThink AboutNext StepExamplesTeam Exercise (10 minutes)Detailed DesignWhat does it include?From System to Detailed DesignRelating Use Cases, System & Detailed DesignDomain ClassesDomain Classes Matching Implementation ClassesDefining Domain ClassesBridge ExampleClass exercise: teacher portalUse Cases for a Teacher PortalSlide 20Slide 21Slide 22Back to Detailed DesignBridge Example CompletedDesign15 FebruarySoftware Engineering: Elaborated StepsConcept (contract, intro on web site)Requirements (use cases, requirements)ArchitectureDesignImplementationUnit testIntegrationSystem testMaintenanceSystem Design PatternsModel-View-ControllerData flow systemsPipes and filtersBatch sequentialIndependent componentsClient-serverParallel communicating processesEvent systemsVirtual machinesInterpretersRule-based systemsRepositoriesDatabasesHypertext systemsLayered architecturesLayered ArchitectureRole-playing game layerCharactersLayoutRolePlayingGameEncounterCharactersEncounterEnvironmentEncounter GameApplication layer3D engine layer«uses» «uses»Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.Coherent collection of software artifacts, typically a package of classesDocumenting Your DesignTwo types of documentationThe details of the implementationLess importantCaptured in the code Components:Inline commentsDoxygenHow the system fits togetherCritical to understandingNot easily captured in the codeExternal documentation requiredThink AboutHow would you describe the work?What is the first picture that you will draw?That is probably the architectureHow to proceedPick a general modelSpecialize it to your projectDraw the pictureOne of the few places that I REALLY want a pictureNext StepWhat other models are needed?Data flow?Data model? Almost always neededState transition?Key considerationsWhat are the hard parts of the work?What are the critical areas?ExamplesIf you are in a repository model,the data model is probably keyIf you are building a complex game,the state transitions may be criticalTeam Exercise (10 minutes)Draw your system designReport OutDetailed DesignBuild on well understood patterns from the system designGoal is to prepare the project for implementationWhat does it include?System design decompositionModulesProcessesData Detailed module definitionsDetailed data definitionsDesign decisionsFrom System to Detailed DesignRelating Use Cases, System & Detailed Design1. Use case 3. System Design2. Domainclasses4. DetailedDesignAdapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.Domain ClassesObject-oriented paradigm, not implementationDomain = application specificClasses defined in natural languageUsed to explain the architecture and designClasses derived from the requirementsNeed not match the implementationHard to not fall into that trapDomain Classes Matching Implementation ClassesBenefitsSimplicity of mappingDrawbacksLater changesNo worse off then if not matchedMay be too early for implementation decisionsDefining Domain ClassesBegin with Use CasesIdentify nounsExternal agents are not domain classesAre these key classes for the application?Are there others?Identify attributes and functionality for each classValidate Walkthrough use casesTry changes and extensionsLook forMissing attributes or functionsChanges that reach every whereBridge Example1. Use case 3. Architecture2. Domainclasses4. DetailedDesignAdapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.“Cars should be able to travel from the top of Smith Hill at 65 mph, travel in a straight line, and arrive at Jones Hollow within 3 minutes.”AutoRoadClass exercise: teacher portalWant to identifyClassesAttributesFunctionsUse Cases for a Teacher Portalteacher presented with view with his contentread messages from other teachers and administratorsschedule an assessmentselects class selects test based on difficulty and subject create new testcreate new questiontype of questionintroductory textpossible answerscorrect answeredit existing questionedit full testpost messagecontentrecipientview class content ClassesAttributesFunctionsUse Cases for a Teacher Portalteacher presented with view with his contentread messages from other teachers and administratorsschedule an assessmentselects class selects test based on difficulty and subject create new testcreate new questiontype of questionintroductory textpossible answerscorrect answeredit existing questionedit full testpost messagecontentrecipientview class content ClassesAttributesFunctionsUse Cases for a Teacher Portalteacher presented with view with his contentread messages from other teachers and administratorsschedule an assessmentselects class selects test based on difficulty and subject create new testcreate new questiontype of questionintroductory textpossible answerscorrect answeredit existing questionedit full testpost messagecontentrecipientview class content ClassesAttributesFunctionsUse Cases for a Teacher Portalteacher presented with view with his contentread messages from other teachers and administratorsschedule an assessmentselects class selects test based on difficulty and subject create new testcreate new questiontype of questionintroductory textpossible answerscorrect answeredit existing questionedit full testpost messagecontentrecipientview class content ClassesAttributesFunctionsBack to Detailed DesignWhat are we starting with?Domain classesSystem design modelsUse casesWhat do we need to do?Define implementation classes that realize the domain classes within the architecture framework and implement the functions defined in the use casesBridge Example Completed1. Use case“Cars should be able to travel from the top of Smith Hill at 65 mph, travel in a straight line, and
View Full Document