Design and Architecture Notes, Lecture notes of Computer System Design and Architecture

Contains comprehensive notes about the subject design and Architecture in computer systems.

Typology: Lecture notes

2020/2021

Uploaded on 07/01/2021

vilos-cohaagen
vilos-cohaagen 🇰🇪

3

(1)

2 documents

1 / 37

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSC 402 Software Engineering I
1
Overview - Design
Introduction to Design
Architectural Design
Modules
Structured Design
Objects
Object-Oriented Design
Detailed Design
Integration Testing
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25

Partial preview of the text

Download Design and Architecture Notes and more Lecture notes Computer System Design and Architecture in PDF only on Docsity!

Overview - Design

  • Introduction to Design
  • Architectural Design
  • Modules
  • Structured Design
  • Objects
  • Object-Oriented Design
  • Detailed Design
  • Integration Testing

Goals and Objectives

  • Develop a coherent representation of a software

system that will satisfy the requirements

  • Identify inadequacies in the requirements
  • Can develop review plan that demonstrates

coverage of the requirements

  • yields confidence in design
  • Can develop test plan that covers design
  • yields confidence in both design and implementation

Relationship to other lifecycle phases

  • Requirements
    • Specifies the “app domain” not the “machine”
    • Provides conceptual boundaries € keeps design focused
  • Implementation
    • When design specifications are sufficient for coding

assignments (now it can be “executable” on a machine

€ each assignment, theoretically, can be given to a programmer unaware of the overall system architecture

  • and the code will satisfy the associated requirements

Basic Design Process

  • The design process develops several models of the software

system at different levels of abstraction

  • Trial and Error in many ways
  • Starting point is an informal “boxes and arrows” design
  • Add information to make it more consistent and complete
  • Provide feedback to earlier designs for improvement Informal design outline Informal design More formal design Finished design

Design Activities

  • Architectural design
    • Subsystem identification € services and constraints are specified
    • Module design € modular decomposition is performed; relationships specified
  • Detailed design
    • Interface design € module interfaces are negotiated, designed and documented
    • Data structure and algorithm design € module details (data structures and algorithms) to provide system services are specified

Design Products

  • Refined requirements specification
  • Description of systems to be constructed
    • software architecture (diagrams and rationale)
    • modular decomposition (hierarchy)
    • abstract module interface specifications
    • detailed module designs
  • Documentation of decisions and rationale
  • Data dictionary of all defined objects
  • Validation review plan
  • Integration test plan

Architectural Design

  • Architectural Design
    • decomposition of large systems that provide some related set of services + establishing a framework for control and communication
  • Architectural styles establish guidelines
    • a relatively new area of research
  • No generally accepted architectural design process (Well,

maybe UML, Rational Unified Process…)

  • some important sub-processes € System structuring: structuring of the system into a number of subsystems, where a subsystem is an independent software unit € Control modeling: establishing a general model of control relationships between the parts of the system € Modular decomposition: decomposing each identified subsystem into modules

Architecture, Subsystems and Modules

  • Architecture consists of interacting subsystems € describes the subsystem decomposition in terms of subsystem responsibilities, dependencies among subsystems, subsystem mapping to hardware, and major policy decisions such as control flow, access control and data storage. (Bruegge)
  • Subsystems
    • a component whose operation does not depend on the

services provided by other subsystems

  • communicates with other subsystems via defined

interfaces

  • is further decomposed further into modules during design

Software Architecture

  • Components (subsystems)
    • The elements out of which the system is built
    • Examples: filters, databases, objects, ADTs
  • Connectors
    • The interaction or communication mechanisms
    • The glue that combines the components
    • Examples: procedure calls, pipes, event broadcast,

messages, secure protocols

  • Constraints
    • Limitations on the composition of components and

connectors

Architectural Style

  • Example architectural styles
    • Batch sequential
    • Pipe and filter
    • Main program and subroutines
    • Blackboard
    • Interpreter
    • Client-server
    • Communicating processes
    • Event systems
    • Object-oriented
    • Layered Systems

Families of systems defined by patterns of composition

Architectural Design:

Control Modeling

  • Control of subsystems so that services are delivered

to the right place at the right time

  • Two general approaches
    • Centralized control € One subsystem has overall responsibility for control and starts/stops other subsystems - call-return model (sequential) - manager model (concurrent)
    • Event-based control € each subsystem responds to externally generated events (from other subsystems or the environment) - broadcast model - interrupt-driven model

Simple Overview (very basic Architecture)

  • Design major subsystems
    • use UML, class diagrams, event trace or sequence

diagrams

€ don’t forget the error handling subsystem

  • keep #subsystems small (5 to 9 rule of thumb)
  • keep communication between subsystems to a minimum
  • explain what each subsystem does
  • Traceability matrices
  • show allocation of requirements to subsystems
  • show subsystems and the requirements they handle € assign a requirement to to as few subsystems as possible
  • why? (coupling and cohesion, covered later in modules…)

Architecture should address:

  • external interfaces, user interface
  • db if needed, other data storage issues
  • key algorithms
  • memory management, key string storage (such as error

messages)

  • concurrency
  • security
  • localization
  • networking
  • portability
  • programming language
  • error handling

Architecture Documentation

  • System Overview
  • Architectural Goals and Constraints
  • Subsystems and Organization
    • diagrams and rationale
  • Can find templates on line if you wish