© Andrew IrelandSoftware Design F28SD2 Software Design: Summary Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt University Edinburgh
© Andrew IrelandSoftware Design F28SD2 Outline Nature of Software Design Architectural Design Function-oriented Design Object-oriented Design Software Reuse and Component-based Design Verification & Validation
© Andrew IrelandSoftware Design F28SD2 Architectural Design Systems structuring, i.e. identify the key subsystems and the way in which they will communicate –Repository, client-server, layered Control modelling, i.e. how is control managed between the subsystems? –Centralized vs event-based Subsystem decomposition
© Andrew IrelandSoftware Design F28SD2 Function-oriented Design Transaction based systems, minimal state Data flow Structure charts Detailed design
© Andrew IrelandSoftware Design F28SD2 Object-oriented Design Decentralized state, exploiting information hiding and hierarchies Many OOD methods, but common ingredients: –Identification of objects: CRCs; use cases; grammatical analysis –Identification of static perspective: class diagrams –Identification of dynamic perspective: sequence; communication; activity; state machine diagrams
© Andrew IrelandSoftware Design F28SD2 Component-based Design Promote software reuse Key ingredients: –Well defined service (functionality) –Well defined interface –Explicit dependencies –Standardization (component model), e.g. CORBA, EJB, COM (.NET) Compositionality trade-offs Predictability, trustworthiness & certification
© Andrew IrelandSoftware Design F28SD2 Verification & Validation Definitions Static & dynamic analysis Analysis & testing life-cycle Early phase analysis Planning for testing Exploiting design notations (UML) From unit to acceptance testing
© Andrew IrelandSoftware Design F28SD2 Typical Exam Questions Explain concepts and approaches using examples, e.g. “Using an example explain the role of CRCs with software design process” Be able to compare and contrast the relative merits of particular approaches, e.g. “Compare and contrast the trade-offs between component-based design vs designing a system from scratch.”
© Andrew IrelandSoftware Design F28SD2 Typical Exam Questions Given a scenario, be able to propose a software architecture together with a justification Given a scenario, apply a particular technique or approach, e.g. given English requirements develop: DFDs; structure charts; use cases; CRCs; class, sequence communication, activity, state machine diagrams. Alternatively, be able to answer questions on a given design OR extend the design OR compare it against given requirements