Software Design & Architecture
Course Introduction and Overview
Dr. Nargis Fatima
Assistant Professor
Department of Software Engineering
National University of Modern Languages, Islamabad
Spring-2023
Outline
• Recommended Textbooks/Reference Books
• Course Outline Overview
• Lab Outline
• CLOs
• Grading
• Software Design Concepts
• SDLC/ Software Design and Architectures
• Software Design-5W1H?
• What is Engineering Design
• Relationship – Requirements Analysis & Software Design?
• Software Engineering Design
• Why Study Software Engineering Design.
Recommended Textbooks/Reference Books
• Software Engineering design theory and practices, Carles eotero, CRC
press, 2012.
• Applying UML And Patterns: An Introduction to Object Oriented Analysis
And Design And Iterative Development, Craig Larman, 3rd Ed, Pearson
Education, 2005.
• Documenting Software Architectures: Views and Beyond By Paul Clements,
Felix Bachmann, Len Bass, 2nd Edition, 2010.
• Design Patterns: Elements of Reusable Object-Oriented Software, Erich
Gamma, John Vlissides, Richard Helm, Ralph Johnson, 1994.
• Software Engineering: A Practitioner’s Approach, Roger S. Pressman, Bruce
R. Maxim, 8th Ed, McGraw-Hill Education, 2015
Course Outline Overview
• Software Design Concepts
• Design principles
• Object-Oriented Design with UML
• User interface design
• Web applications design
• State machine diagrams and modeling
• Design Patterns
• Model View Controller (MVC) architecture
• Software reuse.
• Software Architecture, Architectural Structures & Styles
• Architectural Patterns
• Architectural & Design Qualities
Lab Outline Overview
• Introduction to UML (Unified Modeling Language), Static and Dynamic UML
Diagrams, Introduction to Domain Model
• Domain Model, Vocabulary, Notations, and Roles | Goals, Domain Model
Relationships | Diagram, Examples
• Introduction to Use Case, Vocabulary, Notations, Functional Requirements, Use
case Diagram with Examples
• Use Case Description, User interaction with the system, Tabular Notations,
Examples
• Class Diagram, Relationships, Cardinality, Functions and attributes, Class
Diagram Examples
• Sequence Diagram, Notations, Lifelines, Examples
Lab Outline Overview
• Continuation of Sequence Diagram, If-else statements, parallel states,
More Examples
• Deployment Diagram, Notations, Examples
• Introduction to Architecture Design, Design Patterns, Architecture
Styles, High level and low level designs, Examples
• MVC (Model View Controller), Real world scenarios Examples
Course CLOs
CLOs Description Domain Taxonomy PLOs Assessment
Level Artifacts
CLO 1 Understand fundamental design and Cognitive 2 1 A1, Q1,
architecture concepts in software Midterm
systems
CLO 2 Apply UML to Comprehend the design Cognitive 4 5 A2, Q2,
challenges as well as document the Midterm
design of software systems
CLO 3 Analyze software design patterns and Cognitive 3 2 A3, Q3, P1
architectural styles for particular and Final Term
complex software design problems
Lab CLOs
CLOs Description Domain Taxonomy PLOs Assessment Artifact
Level
CLO1 Demonstrate knowledge about Cognitive 2 2 Participation,
the practical aspects of software Discussion, Viva
design & architecture
CLO2 Apply tools and techniques to Psychomotor 3 5 Report writing, Lab
solve problems by applying design task, Midterm, Final
& architecture concepts term assessment
CLO3 Report the outcome of an Affective 2 7 Report writing,
experiment/task in standard Midterm, Final term
format assessment
Grading
• Internal Evaluation 25%
– Assignment (10%)
– Quiz (10%)
– Presentation/Project 5%)
• Midterm 25%
• Final Term 50%
• Lab 100%
Software Design Concepts
Software Development Phases?
Software Development Phases?
Software Development Phases?
Software Planning Software Design
Software
and Requirement (Architecture &
Construction
analysis Detailed)
Figure 1 : Software Development Phases
Software Design-5W1H?
What is it?
• Design is what almost every engineer wants to do.
• It is the place where creativity rules—where stakeholder requirements, business
needs, and technical considerations all come together in the formulation of a
product or system.
• Design creates a representation or model of the software.
• Unlike the requirements model (that focuses on describing required data, function,
and behavior), the design model provides detail about software architecture, data
structures, interfaces, and components that are necessary to implement the system.
Who Does it?
• Software Design engineers conduct each of the design tasks
Why it is Important?
• Design allows you to model the system or product that is to be built.
• This model can be assessed for quality and improved before code is generated,
tests are conducted, and end users become involved in large numbers.
• Design is the place where software quality is established.
What are the steps?
• Design represents the software in a number of different ways.
• First, the architecture of the system or product must be represented.
• Then, the interfaces that connect the software to end users, to other systems and
devices, and to its own constituent components are modeled.
• Finally, the software components that are used to construct the system are
designed.
What is the work product?
• A design model that encompasses architectural, interface, component-level, and
deployment representations is the primary work product that is produced during
software design.
How do I ensure that I’ve done it right?
• The design model is assessed by the software team in an effort to determine
whether it contains errors, inconsistencies, or omissions; whether better
alternatives exist; and whether the model can be implemented within the
constraints, schedule, and cost that have been established.
Architecture Vs Design
• Software architecture focuses on developing the
skeleton and high-level infrastructure of software.
• Software design, on the other hand, concentrates on
the code level design. It addresses problems like the
functions of individual modules, the scope of classes,
the purposes of different functions, and the like.
Engineering Problem Solving
To become a good designer, engineers must be a good problem solvers
Problem Identification?
Problem Solution?
Software Planning Software Design
and Requirement (Architecture &
analysis Detailed)
What Is Engineering Design?
Dym and Little (2008, p. 6) define engineering design as:
• “A systematic, intelligent process in which designers generate, evaluate and
specify designs for devices, systems or processes whose form(s) and
function(s) achieve clients’ objectives and users’ needs while satisfying a
specified set of constraints.”
• Explaining the idea/concept of something usually with graphical diagrams
23
What Is Engineering Design?
• Is a representation of a product or a system with sufficient detail for
implementation.
– Is an iterative process through which requirements are translated into a
“design” for constructing the software.
• Use by all engineering disciplines e.g designing a house, bridge, industrial
equipment, robots. Airplanes, medical devices etc.
24
Relationship –
Requirements Analysis & Software Design?
Relationship –
Requirements Analysis & Software Design?
• One of the basic principles of good design is to defer decisions as long
as possible. The more you know before you make a design decision, the
more likely it will be that the decision is a good one.
Think First, Code Later!
Design Principle
• One of the basic principles of good design is to defer decisions as long
as possible. The more you know before you make a design decision, the
more likely it will be that the decision is a good one.
Think First, Code Later!
Why there is a need of Design phase ?
• Design is lengthy and complex process requiring
significant investment in time and effort.
• So why conduct design in engineering disciplines?
• Large products of high complexity are hard to create,
costly to change and when built carelessly or
incorrectly can significantly impact human life.
28
Why Study Software Engineering Design ?
29
Software Engineering Design
Formally, software engineering design is defined as:
(1) the process of identifying, evaluating, validating,
and specifying the architectural, detailed, and
construction models required to build software that
meets its intended functional and non-functional
requirements; and (2) the result of such process.
30
Why study Software Engineering Design ?
1. Product development perspective
2. Project management perspective.
31
Why study Software Engineering Design ?
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
32
Why study Software Engineering Design ?
Project Management Perspective
• Changing requirements, tight schedules, cost
constraints, and high expectations for software quality
is tough
• Software design helps to accommodate changes to the
requirements or system updates, therefore minimizing
impact on schedule, cost, and quality.
33
Software Design Trade off
Tradeoff is the situation in which one attribute of a system
or product is made less usable because another attribute has
been given priority.
Example is the
child-resistant safety cap. (Medicine Bottles)
The press-and-turn requirement may be frustrating at times,
but its purpose of preventing a child’s easy access to, and
accidental ingestion of, harmful substances is considered to be a
greater benefit
34