Software Design Overview

Summary

This document provides an overview of software design and architecture. It discusses various design approaches, processes, and strategies. The document highlights different architectural models such as the repository model, client-server model, and event-driven model. It also addresses design strategies, focusing on the functional and object-oriented approaches. Topics covered include different design notations, abstract specification and interface design, as well as the concept of design quality like component cohesion, and component coupling. The style is academic and technical, aimed at a postgraduate audience.

Full Transcript

# Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13 ## Topics * What is Design? * Design Description * The Design Process * Architectural Design * Design Strategies * Design Quality * Component Cohesion * Component Coupling ## What is Design? * Where i...

# Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13 ## Topics * What is Design? * Design Description * The Design Process * Architectural Design * Design Strategies * Design Quality * Component Cohesion * Component Coupling ## What is Design? * Where informal ideas are transformed to detailed implementation descriptions. * It is a creative process. * There is no design "cookbook". * It is learned by experience and study of existing systems. ## Design Description Three main design notations: * **Graphical notations** * Display relationships between components. * Relate the design to the real-world system. * **Program Description Languages (PDLs)** * Pseudocode * **Informal text** * For anything that can't be described formally (e.g. design rationale, non-functional considerations). ## The Design Process * **Architectural Design** * Subsystems and their relationships are identified and documented. * **Abstract specification** * Document an abstract specification of the services provided by and constraints on each subsystem. * **Interface Design** * Document each subsystem's interface. ## Architectural Design ### How a system is decomposed into subsystems that provide some related set of services. * **Domain-independent architectures** * Repository Model * Client-Server Model * Event-driven Model * Many others... * **Domain-specific architectures** ### Architectural Design - Repository Model * Systems which use large amounts of data are organized around a shared database or repository. * Suited to applications where data is generated by one subsystem and used by others. * Example: a management information system. A diagram shows a student information system with the following components: * Student Registration System * Grade Report Generator * Transcript Generator * Course Schedule Generator * Graduation Checkout System All of these components are connected to the *Student Information Repository*. ### Architectural Design - Client-Server Model * A distributed system model which shows how data and processing is distributed across a range of processors. * Servers offer services to other subsystems. * Clients call on the services offered by the servers. A diagram shows a film and picture library with the following components: * Client 1 * Client 2 * Client 3 * Client 4 All clients are connected to a shared *Wide-bandwidth network* and access the following servers: * Catalogue Server * Video Server * Picture Server * Hypertext Server *Catalogue server* provides access to *Catalogue*. *Video server* provides access to *Film clip files*. *Picture server* provides access to *Digitized photographs*. *Hypertext server* provides access to *Hypertext web*. ### Architectural Design - Event-Driven Model * Driven by externally generated events. * The timing is outside the control of the process that handles that event. * Examples: * Spreadsheets * GUI * Typically any real-time system. A diagram shows a generic event-driven system with: * Subsystem 1 * Subsystem 2 * Subsystem 3 * Subsystem 4 All these systems interact through a shared *Event and message handler*. ## Design Strategies * **Functional Design** * System is designed from a functional viewpoint, starting with a high-level view and refining this into a more detailed design. The system state is centralized and shared between the functions. * **Object-oriented Design** * System is viewed as a collection of objects rather than functions. The system state is decentralized. Each object manages its own information. ## Design Quality What is "good" design? No general agreement, but: * Should correctly implement specification * Must be understandable * Good naming conventions * Good internal and external documentation * Minimize complex algorithms * Must be able to adapt to modification or addition of new functionality * High component cohesion * Low component coupling

Use Quizgecko on...
Browser
Browser