Software DesignStages of DesignThe Design ProcessPhases in the Design ProcessDesign PhasesHierarchical Design StructureTop-down DesignDesign MethodsMethod ComponentsMethod DeficienciesDesign DescriptionDesign StrategiesFunctional View of a CompilerObject-oriented View of a CompilerMixed-strategy DesignDesign QualityCohesionCohesion LevelsSlide 19Cohesion as a Design AttributeCouplingTight CouplingLoose CouplingCoupling and InheritanceUnderstandabilityAdaptabilityDesign TraceabilityAdaptability and InheritanceArchitectural DesignArchitectural ParallelsSub-systems and ModulesArchitectural ModelsSystem StructuringThe Repository ModelCASE Tool Set ArchitectureRepository Model CharacteristicsClient-server ArchitectureFilm and Picture LibraryClient-server CharacteristicsAbstract Machine ModelVersion Management SystemBroadcast ModelSelective BroadcastingObject ModelsInvoice Processing SystemPipe and Filter ModelsSlide 47Domain-specific ArchitecturesGeneric ModelsCompiler ModelLanguage Processing SystemReference ArchitecturesOSI Reference ModelDistributed Systems ArchitecturesDistributed systemsSystem typesDistributed system characteristicsDistributed system disadvantagesIssues in distributed system designDistributed systems archiecturesMiddlewareMultiprocessor architecturesA multiprocessor traffic control systemClient-server architecturesA client-server systemComputers in a C/S networkLayered application architectureApplication layersThin and fat clientsSlide 70Thin client modelFat client modelA client-server ATM systemThree-tier architecturesA 3-tier C/S architectureAn internet banking systemUse of C/S architecturesDistributed object architecturesDistributed object architectureAdvantages of distributed object architectureUses of distributed object architectureA data mining systemData mining systemCORBAApplication structureCORBA application structureCORBA standardsCORBA objectsObject request broker (ORB)ORB-based object communicationsInter-ORB communicationsSlide 92CORBA servicesSlide 94Starting Clients, Servers, and Name Servers“Hello World” IDL Specification“Hello World” Client Java Program“Hello World” Client Java Program (Cont’d)“Hello World” Server Java Program“Hello World” Server Java Program (Cont’d)Slide 101©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 1Software DesignDeriving a solution which satisfies software requirements©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 2Stages of DesignProblem understanding–Look at the problem from different angles to discover the design requirements.Identify one or more solutions–Evaluate possible solutions and choose the most appropriate depending on the designer's experience and available resources.Describe solution abstractions–Use graphical, formal or other descriptive notations to describe the components of the design.Repeat process for each identified abstraction until the design is expressed in primitive terms.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 3The Design ProcessAny design may be modelled as a directed graph made up of entities with attributes which participate in relationships.The system should be described at several different levels of abstraction.Design takes place in overlapping stages. It is artificial to separate it into distinct phases but some separation is usually necessary.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 4Phases in the Design ProcessArchitecturaldesignAbstractspecificationInterfacedesignComponentdesignDatastructuredesignAlgorithmdesignSystemarchitectureSoftwarespecificationInterfacespecificationComponentspecificationDatastructurespecificationAlgorithmspecificationRequirementsspecificationDesign activitiesDesign products©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 5Design PhasesArchitectural design: Identify sub-systems.Abstract specification: Specify sub-systems.Interface design: Describe sub-system interfaces.Component design: Decompose sub-systems into components.Data structure design: Design data structures to hold problem data.Algorithm design: Design algorithms for problem functions.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 6Hierarchical Design StructureSystem levelSub-systemlevel©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 7Top-down DesignIn principle, top-down design involves starting at the uppermost components in the hierarchy and working down the hierarchy level by level.In practice, large systems design is never truly top-down. Some branches are designed before others. Designers reuse experience (and sometimes components) during the design process.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 8Design MethodsStructured methods are sets of notations for expressing a software design and guidelines for creating a design.Well-known methods include Structured Design (Yourdon), and JSD (Jackson Method).Can be applied successfully because the support standard notations and ensure designs follow a standard form.Structured methods may be supported with CASE tools.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 9Method ComponentsMany methods support comparable views of a system.A data flow view showing data transformations.An entity-relation view describing the logical data structures.A structural view showing system components and their interactions.©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 5th edition. Chapters 10,11 Slide 10Method DeficienciesThey are guidelines rather than methods in the mathematical sense. Different designers create
View Full Document