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

Software Design and Architecture

Uploaded by

saifijamil00
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Software Design and Architecture

Uploaded by

saifijamil00
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 27

Software

Design & Architecture


Lecture 1

SESD-2222
Fall 2024

Maria Kiran
[email protected]
Office: Building A, Faculty Hall F202
OFFICE HOURS: Tuesday : 02:00 PM- 04:00 PM
Friday: 11: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/agreement 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
Software
Architecture
• Software Architecture
What is Architecture?
 Why Architecture is
important?
Software Architecture

11
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

12
* 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?

13
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.

14
* 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

15
Software Design Vs
Architecture

16
What is Software Architecture?

• A software architecture is typically a set


of design decisions to address
various
non-functional 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.

17
* 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.

18
20

Engineering Problem Solving


21

Activity
The problem specification is as follows: there are six equal matches; connect
each match to form four equilateral triangles.
22
23 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


24 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.
25 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
26

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


27

Software Design Challenges


 Requirements Volatility
 Process
 Technology
 Ethical and Professional Practices
 Managing Design Influences
 Stakeholders
 Development Organization’s Structure
28

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

29

You might also like