T06 - SYSTEM DESIGN - Latest
CSC577 Chapter 6 - Software Design
Page 1: Introduction
Topic: Software Design
Page 2: Contents
System design principles
Design Paradigms - OOAD (Object-Oriented Analysis and Design)
Relationship between requirements and designs
Software architecture concepts and standard architectures
Design patterns
Design modeling
Page 3: Outcomes
Introduce the software design process
Describe different stages in the design process
Explain how object-oriented design strategies work
Discuss design quality attributes
Page 4: Introduction to Design
Definition: What is design?
Page 5: Design Process
Analysis:
Understand the organization’s informational needs or requirements.
Document the requirements in a specification.
Build a system that satisfies the requirements.
Define and organize components of the final solution, creating a blueprint for construction.
Page 6: Analysis Overview
Focus on:
What the system should do (Functional Requirements)
How the system will be built (Technical Design)
Page 7: Levels of Design
Architectural Design: Overview of system components
Detailed Requirements: Deeper understanding of requirements
Detail Design: Specific design choices (General/Conceptual Design)
Page 8: Purpose of Design
Refine and expand the software architecture.
Complete design sufficiently for implementation.
Define internal structure and behavioral capabilities of components.
Natural and efficient construction of software.
Page 9: Software Design Definition
A meaningful engineering representation of software to be built.
An iterative process transforming requirements into a construction blueprint.
Page 10: System Design Principles
Focus on fundamental principles guiding design practices.
Page 11: Design Principles
Design is a combination of process and model.
Process steps describe all aspects of software to be built.
Model acts as architectural plans, refining into specific implementation guidelines.
Page 12: Principles for Software Design
Avoid “tunnel vision” (narrow perspective).
Ensure traceability to analysis model.
Don’t reinvent the wheel (reuse existing solutions).
Mimic the problem structure of the real world.
Define rules of style and format before beginning design.
Page 13: Additional Principles for Software Design
Structure for change accommodation.
Assess design quality as it grows.
Design should degrade gracefully under adverse conditions.
Distinguish between design and coding.
Review designs to minimize conceptual errors.
Page 14: Requirements and Design Relationship
Evaluation of software requirements translates into design elements specifying system aspects.
Page 15: Dynamics between Requirements and Design
The foundational activity of design evaluates both functional and non-functional requirements to guide detailed design and construction.
Page 16: Informal to Formal Design
Various abstraction levels needed to describe system.
Design takes place in overlapping stages.
Page 17: Stages of Design Process
Problem understanding and requirement identification.
Evaluate and choose appropriate solutions.
Describe solutions using graphical or other notations.
Page 18: Phases in the Design Process
Architectural Design: Identify sub-systems.
Abstract Specification: Specify sub-systems.
Interface Design: Define interfaces between sub-systems.
Component Design: Break down subsystems into components.
Data Structure Design: Design structures to hold relevant data.
Algorithm Design: Develop algorithms relevant to functionalities.
Page 19: Software Architecture Concepts
Overview of the software design process and its components.
Page 20: Introduction to Architectural Design
Framework involving:
Software architecture
Detailed design
Page 21: Advantages of Explicit Architecture
Enhances transition from requirements to design and further to programming.
Facilitates stakeholder communication and system analysis.
Promotes large-scale reuse of architecture across systems.
Page 22: Definition of Architectural Design
It identifies sub-systems and the control/communication framework among them.
Page 23: Architectural Analogy
Architectural designs compared to house construction.
Page 24: Architectural Design Decisions
Variance in processes based on system and architect.
Consider key questions that influence the architectural structure.
Page 25: Key Architectural Design Decision Questions
Choose structural approach, architectural styles, control strategy, and decompositions of components.
Define non-functional requirements response, system distribution, and documentation processes.
Page 26: Architectural Views
Illustrate exterior and interior elevations of a house and system subsystems.
Page 27: Views of Design
Different perspectives such as functional top-down design.
Page 28: System Characteristics
Design must consider performance, security, safety, reliability, availability, maintainability, and quality.
Page 29: Architectural Patterns and Styles
Patterns facilitate knowledge sharing, representing proven design practices.
Information about contexts for use of patterns is crucial.
Page 30: Model-View-Controller (MVC) Pattern
Separates presentation and interaction from system data.
Composed of Model, View, and Controller components for interaction handling.
Page 31: Web Application Architecture using MVC
Details interactions processed by Controllers and Views.
Page 32: MVC Architecture Components
Showcasing the roles of Controller, Database, and View.
Page 33: MVC Interplay
Describing interactions between components in an MVC architecture.
Page 34: Further MVC Examples
Example of servlet and user interaction within MVC framework.
Page 35: Repository Architecture Overview
Data exchange methods illustrated.
Used for large data sharing.
Page 36: Example Repository Architecture
Showcase of an Integrated Development Environment (IDE).
Page 37: Client-Server Architecture
Detailed abstraction of distribution amongst components.
Page 38: Example Film Library Client-Server Architecture
Overview of users and server roles in a film library system.
Page 39: Layered Model Description
Organization of the system into interacting layers.
Page 40: Layered Model Usage
Domain applications and security models leveraging layered architecture.
Page 41: LIBSYS System Architecture
Example showcasing web browser interface and library index interaction.
Page 42: Pipe and Filter Architecture
Discrete processing components for data flow management.
Suitable for batch processes.
Page 43: Pipe and Filter Example
Illustrating stages of receipt processing.
Page 44: Application Architectures Overview
Common architecture patterns arising from similar business needs.
Page 45: Applications of Architecture
Utilized as design checklists among other functions.
Page 46: Common Application Types
Categorization of applications like data processing, transaction processing, event processing, and language processing.
Page 47: Specific Examples of Application Types
Focus on transaction processing and language processing systems and their implementations.
Page 48: Transaction Processing Systems Basics
Structure and user interactions with the database.
Page 49: Transaction Processing Applications Structure
Components involved in transaction applications.
Page 50: ATM System Architecture Overview
Interaction sequence between user and ATM system.
Page 51: Information Systems Architecture
Characterization as layered transactions.
Page 52: Layered Information System Structure
Layers including user interface, communications, and database.
Page 53: Medical Health Clinic System Example
Web system architecture and data management overview.
Page 54: Web-Based Information Systems
Transition to web-based resource management systems and their functionalities.
Page 55: Server Implementation in Web-Based Systems
Description of multi-tier client-server architectures.
Page 56: Language Processing Systems Overview
Functionalities of systems handling language interpretation.
Page 57: Architecture of a Language Processing System
Components involved in translation and representation.
Page 58: Compiler Components
Overview of essential components like lexical and semantic analyzers.
Page 59: Remaining Compiler Components
Detailing the code generation process and the role of the syntax tree.
Page 60: Pipe and Filter Compiler Architecture
Structure showcasing the processing stages.
Page 61: Language Processing System Architecture
Repository interactions within compilers and analyzers.
Page 62: Design Patterns Overview
Definitions and significance in software engineering.
Page 63: Uses of Design Patterns
Speeding up development, improving readability, and facilitating communication.
Page 64: Classification of Design Patterns
Types include:
Structural, Creational, Behavioral patterns.
Page 65: Using Patterns in Design
Application of inheritance and composition in object-oriented systems.
Page 66: Modularity in Design
Importance of structural interconnections and their impact on design quality.
Page 67: Design Concept: Cohesion
Definition and significance of cohesive components within systems.
Page 68: Design Concept: Coupling
Understanding the strength of interconnections between components.
Page 69: Coupling Examples
Types: tight coupling, loose coupling, uncoupled.
Page 70: Design Modelling Overview
Process of developing abstract system models using UML.
Page 71: UML Diagram Types
Types include Activity, Use Case, Sequence, and Class diagrams.
Page 72: Key Points on Design
Design as a progressive refinement technical process affecting software quality.
Page 73: Additional Key Points
Concepts like modularity and refinement enhance design quality.