You are on page 1of 34

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

You might also like