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

S24 SDA Lecture 2

Uploaded by

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

S24 SDA Lecture 2

Uploaded by

hashir.afzal1999
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 32

Software

Design & Architecture


Lecture 2

SESD-2222
SPRING 2024

Madiha Yousaf Malik


[email protected]
Office: Cabin #5, C-Block
OFFICE HOURS: Monday : 10:00 AM- 01:00 PM
Tuesday: 10:00 AM- 01:00 PM
Software Design

Software Design
 What is Design?
 Why Design is so important?
 Levels of Design
 The Design Process
What is Design?
 Design is the creation of a plan or convention for the
construction an object or the system.
What is Design?
 Another definition for design is a roadmap or a strategic
approach for someone to achieve a unique expectation. It
defines the specifications, plans, parameters, costs, activities,
processes and how and what to do within legal, political, social,
environmental, safety and economic constraints in achieving that
objective.
Software Design

There are two ways of constructing a software design: One way is to


make it so simple that there are obviously no deficiencies, and the
other way is to make it so complicated that there are no obvious
deficiencies.”
- C.A.R. Hoare
Software Design

 Requirements specification was about the WHAT the system will do


 Design is about the HOW the system will
perform its functions.
 Design provides the overall decomposition of the system
 Design allows to split the work among a team of developers
 Design also lays down the groundwork for
achieving non-functional requirements (performance,
maintainability, reusability, etc.)
 Design takes target technology into account (e.g., database design,
etc.)
Why Design is so Important?

 Design it so that it connects with the end-user


Levels of Design
Two basic Levels of Design:
 Architectural design (also: high-level design)
 the overall structure main modules and their connections
 design that covers the main use-cases of the system
 Addresses the main non-functional requirements(e.g., throughput,
reliability)
 hard to change

Note: A high-level design document will usually include a high- level


architecture diagram depicting the components, interfaces and
networks that need to be further specified or developed.
Levels of Design
Two basic Levels of Design:
 Detailed design (also: low-level design)
 the inner structure of the main modules
 may take the target programming language into account
 detailed enough to be implemented in the programming language
Top-Down vs Bottom-Up Design

Top-Down Design Bottom-Up Design

 Recursively partition  Assemble, adapt, and


problem into smaller sub- extend existing solutions to
problems fit the problem.
 Continue until tractable
solutions found
Note: Not practical for large
system in its pure form
Software Architecture
• Software Architecture
 What is Architecture?
 Why Architecture is
important?
 Software Architecture

12
What is Architecture?

Architecture (ANSI/IEEE 1471-2000)


• The fundamental organization of a system embodied in its
components, their relationships to each other, and to the
environment, and the principles guiding its design and
evolution

13
* Reference [5]
Architecture (Cont...)

Architecture is: Architecture is not:


• All about communication. • About development.
• What ‘parts’ are there? • About algorithms.
• How do the • About data structures.
‘parts’ fit together?

14
Why Architecture is important?
• Architecture “constitutes a relatively small, intellectually graspable model of how the
system is structured and how its components work together” -- L. Bass

• Representations of software architecture are an enabler for communication between


all parties (stakeholders) interested in the development of a computer-based system.

15
* Reference [6]
Software Architecture
Software Architecture (Eoin Woods)
“Software architecture is the set of design decisions which, if made incorrectly, may
cause you project to be cancelled.’

A software architecture defines:


• The components of the software system
• How the components use each other’s functionality and data
• How control is managed between the components

16
Software Design Vs Architecture

17
What is Software Architecture?

• A software architecture is typically a set


of design decisions to address
non-functional
various requirements
and attributes of a software
system/application.

• It primarily focuses on aspects such as


performance, reliability, scalability,
testability, maintainability and various
other attributes, which can be key both
structurally and behaviourally of a
software system.

18
* Reference [7]
Software Design Vs Architecture
• Grady Booch says: "All architecture is design but not all
design is architecture".

• Software architecture deals with high level concepts without


regard to any implementation details. Software design on the
other hand takes high level concepts and applies concrete
details so that software can be implemented.

19
Software Design Vs Architecture

• The architecture of a system is its 'skeleton'. It's the


highest level of abstraction of a system. For example:
How do modules interact with each other.

While

Software design is about designing the individual modules


/ components. What are the responsibilities,
functions, of module x? Of class Y?
• So in short, Software architecture is more about the design of
the entire system, while software design emphasizes on module
/ component / class level.
20
21 Engineering Problem Solving
22 Activity
The problem specification is as follows: there are six equal matches; connect each match to form four
equilateral triangles.
23
24 Context of software design: Software
Development Life Cycle (SDLC)
25 Why study Software Engineering Design ?
 Systems are increasingly dependent on software components e.g. microwave oven, washing
machine, cars etc.  increased complexity because of embedded software

 Maintaining reliability in software-intensive systems is very difficult


Way study Software Engineering Design .. Famous software Bugs

26  History of software bugs


 Software encountered notorious bugs that were the cause of
financial lose and deaths of many people.

i. Ariane 501

On 4 June 1996, the Ariane 501 satellite launch failed terribly 40


seconds after initiation of the flight sequence, incurring a direct
cost of approximately $370 million

ii. The Millennium Bug, or Y2K

Two digits were used to show the date, e.g. 98 instead of 1998,
the year 2000 could only be represented as ’00′, which might
confuse computers into thinking it meant the year 1900
27 Why study Software Engineering Design
The reasons for studying software engineering design can be described using a :
1. Product development perspective
2. Project management perspective.
28 Product Development Perspective
 designs form the foundation for all other software construction activities  create models
that represent the structure and behavior of the software system
 modularization, cohesiveness, and coupling, are all born in the design phase
 For complex tasks, abstractions and encapsulation are used in software design as means to
provide a systematic approach for problem solving
 software designs are reusable
29
Project Management Perspective

 Changing requirements, tight schedules, cost constraints, high expectations for software quality etc.

 Software design helps to accommodate changes to the requirements or system updates, therefore
minimizing impact on schedule, cost, and quality.

 Helps in tasks allocation to human resources in efficient way


30 Software Design Challenges

 Requirements Volatility
 Process
 Technology
 Ethical and Professional Practices
 Managing Design Influences
 Stakeholders
 Development Organization’s Structure
31 Roles Of The Software Designer
References
1. http://java.dzone.com/articles/challenges-requirements
2. http://eduhunch.com/why-design-is-the-most-important- factor-for-future-
products/
3. http://www.informationweek.com/mobile/mobile-devices/10- best-and-worst-
cellphones-of-all-time/d/d- id/1109416?page_number=6
4. http://en.wikipedia.org/wiki/Sustainable_design
5. http://en.wikipedia.org/wiki/IEEE_1471
6. Software architecture in practice by Len Bass, Clements, Rick
Kazman Paul
7. http://www.prowareness.com/blog/software-architecture/
8. Chapter 1: “software engineering design, theory and practice by Carlos -E-Otero

32

You might also like