T06 - SYSTEM DESIGN - Latest

CSC577 CHAPTER 6 - SOFTWARE DESIGN

Contents

  • System design principles

  • Design Paradigm - OOAD

  • Relationship between requirement and designs

  • Software architecture concepts and standard architectures

  • Design pattern

  • Design modelling

Outcomes

  • Introduce the process of software design

  • Describe the different stages in the design process

  • Show how object-oriented design strategies work

  • Discuss design quality attributes

Introduction

  • Definition of design within the context of software:

    • Analysis: understanding organizational informational needs

    • Documentation: requirements in a specification format

    • Construction: building a system satisfying the requirements

    • Design: organizing and structuring final solution components, serving as a blueprint for construction.

Analysis

  • What the system should do: Understanding requirements

  • How the system will be built: Determining design methodologies

Levels of Design

  1. Analysis

  2. Design Vision Document

  3. Architectural Design

  4. Detailed Requirements

  5. Detail Design

  6. General Design/Conceptual Design

Purpose of Design

  • Refine and expand software architecture to be suitable for implementation.

  • Deep dive into each component to define internal structure and behavior for efficient construction.

Software Design

  • Represents a meaningful engineering model of what is to be built.

  • It derives solutions meeting software requirements through an iterative process, resulting in a 'blueprint' for construction.

System Design Principles

  • Software design is both a process and a model:

    • Process: a sequence of steps to describe all aspects of software.

    • Model: equivalent to an architect's plans, representing various aspect views of software.

Set of Principles for Software Design

  • Avoid tunnel vision in the design process.

  • Ensure design traceability to the analysis model.

  • Do not reinvent wheels; use existing solutions where applicable.

  • Minimize the intellectual distance between software and the real-world problem functions.

  • Design should be uniform and integrated, establishing style rules prior to design.

Ongoing Set of Principles for Software Design

  • Accommodate design for change.

  • Assess design quality continuously.

  • Structure design to handle unexpected situations gracefully.

  • Differentiate design activities from coding activities.

  • Review designs to minimize semantic errors.

Relationship between Requirements and Design

  • Software design activity revolves around evaluating and translating software requirements into a structured collection that communicates both behavioral and structural aspects of the components.

The Design Process

  • Involves several abstraction levels

  • Stages include:

    • Understanding the problem

    • Identifying solutions

    • Evaluating options

    • Describing solution abstractions using various notations

    • Iterating until expressed in primitive terms.

Phases in the Design Process

  1. Architectural design: Identify subsystems

  2. Abstract specification: Specify subsystems

  3. Interface design: Subsystem interfaces description

  4. Component design: Decomposing subsystems into components

  5. Data structure design: Designing data storage

  6. Algorithm design: Designing functional algorithms

Software Architecture Concepts and Standard Architecture

  • Software design consists of activities and controls ensuring effective software design artifacts.

  • Major activities include software architecture and detailed design.

Advantages of Explicit Architecture

  • Facilitates the transition from requirements to design, programming, testing, and maintenance.

  • Enhances stakeholder communication and systemic analysis of nonfunctional requirements.

  • Supports large-scale reuse across varying systems.

Definition of Architectural Design

  • Identifies subsystems and frameworks for their controls and communications.

  • The output comprises a comprehensive description of the software architecture.

Architectural Design Decisions

  • Decisions in this creative process can vary based on system type and architect experience.

  • Key questions:

    • Structural approach

    • Appropriate architectural styles

    • Control strategies

    • Decomposing structural components

    • Generic application architecture usage

    • Organization for fulfilling non-functional requirements

    • System distribution and architectural evaluation methods

    • Documentation strategies

Analogy of House Architectural View

  • Exterior and interior elevations showing layout and features.

  • Detailed floor and roof plans. Schematic electrical layouts.

Views of Design

  • Functional views based on task performance rather than data-centric views.

Architecture and System Characteristics

  • Performance, security, safety, reliability, availability, maintainability, and quality aspects are crucial in design.

Architectural Patterns and Styles

  • Architectural patterns represent common good design practices proven in various environments. They include details on usage contexts and are often visually represented.

The Model-View-Controller (MVC) Pattern

  • Separates presentation and interaction from system data.

  • Comprises three components:

    • Model: Manages system data

    • View: Defines data presentation

    • Controller: Manages user interactions and coordinates between model and view.

  • When to use: Valuable for systems needing multiple data views and unknown future interaction requirements.

Web Application Architecture Using MVC Pattern

  • Interaction between browser, form displays, application logic, and database is structured under the MVC paradigm.

Repository Architecture

  • Shared data either in a central repository or maintained separately by subsystems.

  • Suited for data-intensive systems where longevity of shared data matters.

Client-Server Architecture

  • Illustrates a distributed system model with data and processing spread across components, supporting access from diverse locations.

Layered Model

  • Organizes systems into layers with distinct roles, enhancing isolation of changes and responsibilities among layers. Effective for securing systems and incremental development.

Pipe and Filter Architecture

  • Structures data processing into discrete components with data flowing like a pipeline.

  • Ideal for data handling applications, though not suitable for interactive systems.

Application Architectures

  • Common organizational frameworks for application systems designed to meet business requirements, adaptable for specific needs.

Various Application Types

  • Different applications address specific needs including data processing, transaction processing, event processing, and language processing systems.

Transaction Processing Systems

  • Handle sequences of operations from users directed toward database interaction.

Information Systems Architecture

  • Typically viewed as layered structures with user interactions leveraging database transactions.

Web-based Information Systems

  • Often structured as multi-tier client-server systems, facilitating user communications through web interfaces and managing backend processing via application servers and databases.

Language Processing Systems

  • Convert input languages to other formats, often with interpreters aiding in instruction execution.

Compiler Components

  • Include key elements for transforming programming languages efficiently into machine-readable formats.

Design Patterns

  • General, repeatable solutions to common design problems; not finalized designs but templates usable in multiple contexts.

Using Patterns in Design

  • Application involves inheritance for subclass creation or composition for complex functionality. Patterns enable effective reuse and problem-solving capabilities.

The Design Concept: Modularity

  • Structural criteria assessing module interconnections: cohesion keeps a module together, and coupling measures connection strength.

The Design Concept: Cohesion

  • Focus on implementing single logical functions within components fosters ease of modification and maintenance.

The Design Concept: Coupling

  • A measure of how interdependent components are; loose coupling enhances independence and adaptability among components.

Design Modelling

  • Involves creating models for system representation, often using UML for graphical communication.

UML Diagram Types

  • Various UML diagrams serve specific purposes, such as activity diagrams, use case diagrams, sequence diagrams, and class diagrams.

Key Points

  1. Design is crucial to software engineering, refining data structures and procedural details.

  2. Results yield representations assessable for quality.

  3. Principles guide progression through design processes.

  4. Concepts underpin criteria for evaluating design quality.

  5. Modularity in programming enables simplification and reuse of elements.