Design Goals
Design Goals
Design Goals
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.
The more specific a question, the more precisely we can verify the
correctness of a design that answers it
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
Use modularity
Efficiency
Applications must execute required functionality within required
time constraints.
Good documentation,
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.
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
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:
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