Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 29

Software Engineering

Fundamentals
CSC-2073
Lecture No. 26
Dr. Muhammad Adeel
Department of Computer Science
National Textile University

dr.muhammad.adeel.ntu@hotmail.com
Last Lecture Review

 Mid Exam Solution

2 Software Engineering - CSC2073


Agenda – What will you Learn Today?
Software Architecture Architecture
Attributes

Architecture
Attributes

3 Software Engineering - CSC2073


Software Architecture

4 Software Engineering - CSC2073


Architecture

5 Software Engineering - CSC2073


Constructing Building

I need a
tower, with a
big clock

The king's
requirements

6 Software Engineering - CSC2073


Constructing Building

I need a
tower, with a
big clock

Architecture
The king's
requirements Construction

7 Software Engineering - CSC2073


CC

Software is different
 No physical natural order of construction (e.g.
start with the foundation of the house)
 Software is not tangible

Architecture

Requirements Implementation

8 Software Engineering - CSC2073


What is Software Architecture?

The Software Architecture of a system consists


of a description of the system elements,
interactions between the system elements,
patterns that guide the system elements and
constraints on the relationships between system
elements.
[Shaw and Garlan]

9 Software Engineering - CSC2073


What is Software Architecture?

The software architecture of a program or


computing system is the structure or structures
of the system, which comprise software
components, the externally visible properties of
those components, and the relationships among
them.
[SEI]

10 Software Engineering - CSC2073


What is Software Architecture?

Architectural design: The process of defining a


collection of hardware and software
components and their interfaces to establish the
framework for the development of a computer
system.
[IEEE Glossary]

11 Software Engineering - CSC2073


Importance of Architecture

 Communication between Stakeholders


 A high-level presentation of the system
 Use for understanding, negotiation and
communication
 Early Design Decisions
 Profound effect on the systems quality attributes,
e.g. performance, availability, maintainability etc.

 Large-Scale Reuse
 If similar system have common requirements,
modules can be identified and reused

12 Software Engineering - CSC2073


Architecture Attributes

13 Software Engineering - CSC2073


Performance

 Localize the operations to minimize subsystem


communication

Scale up …

Scale out …

14 Software Engineering - CSC2073


Security

 Use a layered architecture with critical assets


in inner layers
 Only authorized users can
Confidentiality read the information
 E.g. Military

Availability Integrity
 Right information is  Only authorized users
available at the right time can modify, edit or delete
 Important for everyone data.
 E.g. bank systems

15 Software Engineering - CSC2073


Safety

 Isolate safe-critical components

The Whole System

Critical

Design so that all safety critical operations are


located in one or few modules / subsystems.

16 Software Engineering - CSC2073


Availability

 Include redundant components in the


architecture

17 Software Engineering - CSC2073


Maintainability

 Use fine-grain, self-contained components

18 Software Engineering - CSC2073


Partitioning the Architecture

19 Software Engineering - CSC2073


Partitioning the Architecture

 Distribute the responsibilities to different


subsystems

 A system that is easier to test and easier to


maintain

 Partitioning of an architecture may be


Horizontal and/or Vertical

20 Software Engineering - CSC2073


Problem Partitioning

 Principle of “Divide and Conquer” (Analyze


and Synthesis)

 Divide the problem into manageably small


pieces that can be solved separately

 The different pieces have to cooperate and


communicate to solve the larger problem and
cannot be entirely independent of each other

21 Software Engineering - CSC2073


Analyze & Synthesis
The process of
Problem Analysis

Sub-problem 1 Sub-problem 2 Sub-problem 3 Sub-problem 4

solution 1 solution 2 solution 3 solution 4

solution 1 The process of


Synthesis

22 Divide & Conquer


Software Strategy
Engineering - CSC2073
Problem Partitioning

 Problem partitioning can be divided into two


categories:

Horizontal Vertical
Partitioning Partitioning

23 Software Engineering - CSC2073


Horizontal Partitioning

 Horizontal partitioning defines separate


branches of modular hierarchy for each major
program function

 The simplest approach to horizontal


partitioning defines three partitions:
a. Input
b. Data transformation (often called processing)
c. Output

24 Software Engineering - CSC2073


Horizontal Partitioning

Function 1 Function 3

Function 2

25 Software Engineering - CSC2073


Vertical Partitioning

 Vertical partitioning suggests that control and


work should be distributed from top-down in
the program structure

 Top-level modules should perform control


functions and do actual processing work

 Modules that reside low in the structure


should be the workers, performing all input,
compilation, and output tasks
26 Software Engineering - CSC2073
Vertical Partitioning

Decision
Making
Modules

"Working"
Modules

27 Software Engineering - CSC2073


Recap

 What is Software Architecture?


 Importance of Architecture
 Architecture Attributes
‒ Performance
‒ Security
‒ Safety
‒ Availability
‒ Maintainability
 Partitioning the Architecture
1) Horizontal Partitioning
2) Vertical Partitioning

28 Software Engineering - CSC2073


Questions

29 Software Engineering - CSC2073

You might also like