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.