Design Goals

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

Software

Design & Architecture


Lecture 2

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
Today’s Agenda

 Design Model
 Design Goals
 Conceptual Design
 Technical Design
Design Model
Components of a design model :
 Data Design
Transforms information domain model into data structures required to implement software
 Architectural Design
Defines relationship among the major structural elements of a software
 Interface Design
Describes how the software communicates with systems that interact with it and with humans.
 Procedural Design
Transforms structural elements of the architecture into a procedural description of software components
 Software Design
An iterative process transforming requirements into a “blueprint” for constructing the software.
Goals of the Design Process

 The design must implement all of the explicit requirements contained in the analysis
model and it must accommodate all of the implicit requirements desired by the
customer.
 The design must be a readable, understandable guide for those who generate code and
for those who test and subsequently support the software.
 The design should address the data, functional and behavioral domains from an
implementation perspective
Translating Analysis Model into a Software Design
Design
• The purpose of design is to produce a solution to a problem:
• The problem: requirements specification.
• The solution: your description of how the requirements are to be met.

• Design is the creative process of describing and transforming a problem into a solution.

• A set of documents on whose basis a software can be fully programmed.


Design (contd..)
Software Design
• Software design describe:
– All the parts of the system and how they fit together (architecture, high-level
design)
– The system well enough that coders can Understand it without
serious problems.
– Each part in detail so that it can be coded (Detailed, low-level
design).
Goals of a Software Design

 Designers faces many challenges to produce a good product, e.g. shifting


requirements.
 But what do we mean by good?
 We need some clear goals here …
 Good design leads to software that exhibits:
– Correctness
– Robustness
– Flexibility
– Reusability
– Efficiency
– Reliability
– Usability
Software Design Goals : Correctness
 Software is correct, if it satisfies its requirements.

 The more specific a question, the more precisely we can verify the
correctness of a design that answers it

 Precise and imprecise questions:


 What number adds to 3 to get 5? (precise)
 What bridge design gets cars from point A to point B? (imprecise)

 Correctness of design usually means sufficient design


Approaches to Correctness
How can we know that a design is correct or even sufficient?
 Informal Approaches
 To be convinced that the design covers the required functionality.
(Sufficient Design)

 Formal Approaches
 Involve applying logic to analyzing the way in which the variables change
 Usually applied when the design enters the detailed stage
 (Testing, Inspection etc)
Software Design Goals: Robustness
 Robustness --- ability to handle anomalous situations even in the presence of
errors (Fault tolerant)
 Sources of error ???
 Faulty input
 User input
 Inputs not from Users (Function Parameters etc)
 Developer errors
 Faulty design
 Faulty implementation
Software Design Goals: Flexibility

 Flexible design implies a design that can easily accommodate the changes
Aspects of Flexibility
1. Adding more of the same kind of functionality
Example (banking application): handle more kinds of accounts without having
to change the existing design or code.
2. Adding different functionality
Example: add withdraw function to existing deposit functionality to user
3. Changing functionality
Flexibility: Designs for Adding More of the Same
Kind of Functionality
Flexibility: Design for Adding Different
Functionality
 Case 1: Handled by adding the new method to an existing set of methods of a class

 Case 2: adding functionality through a base class


Reusability

 Designing a software system such that components of a developed


system can be used again in developing new applications

 Reusability is an important factor in producing low cost applications.


Reusability: Promoting Source Code Reuse

 Use modularity
Efficiency
 Applications must execute required functionality within required
time constraints.

 Two dimensions of efficiency:


 Time
 Space
Reliability
 Reliability– mean time to failure (system crash, error)

 On architectural level can use hardware support, backup servers, multiple


processors, etc

 On code level achieved by software quality assurance methods, testing,


walkthroughs, formal methods etc.
Usability
 Users must find software easy to easy.

 Intuitive GUI, standard layout & meanings

 Good documentation,

 Hard to define and measure, user interviews, questionnaires, etc.


Conceptual Design
Definition: Conceptual design refers to the early stages of the design process, where

the focus is on defining the structure, functionality, and user experience before delving into

technical details.

Purpose: Helps visualize and communicate the system design to stakeholders, developers,

and users.

Conceptual Design Includes:

 Wireframes

 Mockups

 Prototypes
What is Wireframe?

wireframe is a low-fidelity representation of a system’s interface, focusing on the layout and navigation
without detailed styling.
Purpose: Helps plan the structure and functionality of the user interface, including the placement of
elements like buttons, menus, and content areas.
When to Use: During the initial planning phase to brainstorm the design layout.
Tools Used:
Balsamiq, Figma, Axure
Example: Mobile App Wireframe

image is Displaying a wireframe of a mobile app screen


with basic layout elements like buttons and placeholders
for content.
What is Mockup?
A mockup is a static, high-fidelity design of a system's user interface that showcases the look and feel of

the final product.

Purpose: Focuses on aesthetics like color schemes, fonts, and spacing but doesn’t include functionality.

When to Use: After wireframing, to gain approval on the visual design before actual development.

•Tools Used:

•Adobe XD

•Figma

•Sketch
Example: Mobile app Mockup:

Image: Include an image of a mobile application mockup

(e.g., a static signup page showing color, typography, and

layout).
What is Prototype?
•A prototype is an early, simplified version of a software application designed to test concepts, design, and
functionality before full development.
Purpose:
•To visualize how the final system will work.
•Allows for feedback from stakeholders early in the development process.
 When to Use Prototyping
• Unclear Requirements
• User Interface (UI) Design
• Complex Systems
 Types of Prototypes
1. Throwaway/Rapid Prototyping:
• Built quickly and discarded after use.
• Focuses on exploring ideas or testing specific features.
2. Evolutionary Prototyping:
• Developed iteratively and refined into the final system.
• Used when requirements are unclear or evolving.
Example: Mobile App Prototype
Comparison: Wireframes vs Mockups vs
Prototypes
 https://www.youtube.com/watch?v=_SCcl06wZZs

You might also like