0% found this document useful (0 votes)
6 views

Software Architecture Design Process Overview

-

Uploaded by

buytango03
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Software Architecture Design Process Overview

-

Uploaded by

buytango03
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Software Architecture

and Design Process –


An Overview
Dr Mike Russell
Introduction
• Software Architecture is the key to delivering robust software by
• Designing an understandable, organized system.

• Architecting software is the practice of partitioning a large system into


smaller ones.
• That can be created separately,
• That individually have business value, and
• That can be straightforwardly integrated with one another and with existing
systems.
Architecture Design Process –
Typical Steps
• Partition the requirements Software Requirements Specification
Environmental Constraints
into self-contained Design Constraints
subsystems. (Later, each
subsystem will be
decomposed into one or Software Architecture / Design
more classes.) Process

• Plan how those subsystems Architectural Design


cooperate and Detailed Design
Design Decisions
communicate. Traces to Requirements
Architecture and Design
Relationship – A View
• An architect is responsible for things like
analysing business requirements to extract
and define the architectural characteristics,
selecting which architecture patterns and
styles would fit the problem domain, and
creating components (the building blocks of
the system).

• The artefacts created from these activities


are then handed off to the development
team, which is responsible for creating class
diagrams for each component, creating
user interface screens, and developing and
testing source code.
Architecture Design Process – Static
Structures
• The static structures of a system define its internal design-time
elements and their arrangement.

• Software elements: modules, classes, packages.


• Data elements: Database entries/tables, data files.
• Hardware elements: Servers, CPUs, disks, networking environment.

• The static arrangement of elements defines associations,


relationships, or connectivity between these elements.
Architecture Design Process – Static
Structures
• For software elements, static relationships define hierarchy
(inheritance) or dependency (use of variables or methods).

• For data elements, static relationships define how data items are
linked.

• For hardware elements, static relationships define physical


interconnections between hardware elements.
Architecture Design Process –
Dynamic Structures
• The dynamic structures of a system define its runtime elements and their
interactions.

• May depict flow of information between elements


• A sends messages to B

• May depict flow of control in a particular scenario.


• A.action() invokes B.action()

• May depict effect an action has on data.


• Entry E is created, updated, and destroyed.
Architecture Design Process –
Architectural Elements
• An architectural element is a fundamental piece from which a system
can be constructed.

• The scope of an element depends on the type of system.

• A single method, a class, a set of related classes (a subsystem), an imported


library can all be elements.

• “Component”, “module”, and “unit” are often used interchangeably, but are
overloaded terms.
Architecture Design Process –
Architectural Elements
• An element must possess
key attributes:

• A clearly defined set of


responsibilities.

• A clearly defined boundary.

• A set of defined interfaces,


which define the services
that the element provides to
other elements.
Architecture Design Process –
Externally Visible Behaviour
• The externally visible behaviour of a system defines the functional
interactions between the system and its environment:

• Flow of information in and out of the system.


• How the system responds to input.
• The defined interfaces available to the outside world.
Architecture Design Process –
Quality Properties
• A quality property is an externally visible, non-functional property.
• Performance, security, availability, safety, modifiability, testability, usability,
etc.
• How does the system perform under load?
• How is information protected from unauthorized use?
• How long will it be down on a crash?
• How easy is it to manage, maintain, and enhance?

• Tell us how an observer views the behaviour of a system.


Architecture Design Process – Initial
Example
• Airline Reservation System:

• Features: Allows seat booking,


updating, cancellation, upgrading,
transferring. <System>
Airline Reservation
System
• Externally visible behaviour: How it
responds to submitted transactions.

• Quality properties: average response


time, max throughput, availability, time
required to repair issues.
Architecture Design Process – Initial
Example
Airline Booking System Architecture

1. Client-Server: The application server and


database server are the server side, with
multiple clients.
2. Layers: The application server exhibits a
layered architecture.
3. Presentation Abstraction Control (PAC): The
clients use the PAC pattern. Each client has a
presentation component, which interacts with
an abstraction of the system, and controlled by
the business logic in the server.
4. Shared Repository: Architecture is not clear
whether accesses to the database are shared
or not.

You might also like