Design Engineering - Software Design
Design Engineering - Software Design
Design Engineering
It covers the set of principles, concepts, and practices that
lead to the development of a high quality system or product.
Goal of design engineering is to produce a model or
representation that depict:
Firmness – program should not have any bug that inhibits its functions.
Commodity – suitable to its intended use.
Delight - pleasurable to use
The design model provides detail about software data
structures, architecture, interfaces, and components that are
necessary to implement the system.
Software Design
Software design model consists of 4
designs:
Data/class Design
Architectural Design
Interface Design
Component Design
Translating Analysis Design
Data/class design - Created by transforming the analysis model
class-based elements into classes and data structures required to
implement the software
Architectural design - defines the relationships among the major
structural elements of the software, it is derived from the class-based
elements and flow-oriented elements of the analysis model
Interface design - describes how the software elements, hardware
elements, and end-users communicate with one another, it is derived
from the analysis model scenario-based elements, flow-oriented
elements, and behavioral elements
Component-level design - created by transforming the structural
elements defined by the software architecture into a procedural
description of the software components using information obtained
from the analysis model class-based elements, flow-oriented
elements, and behavioral elements
Why design is so important?
It is place where quality is fostered.
It provides us with representation of software that can be
assessed for quality.
Only way that can accurately translate a customer’s
requirements into a finished software product.
It serves as foundation for all software engineering
activities.
Without design difficult to assess:
Risk
Test
Quality
Design Process and Design Quality
Batch Sequential
Data Flow architecture
This architecture is applied when input data are to be
transformed through a series of computational or
manipulative components into output data.
A pipe and filter pattern (Fig .1) has a set of components,
called filters, connected by pipes that transmit data from
one component to the next.
Each filter works independently (i.e. upstream,
downstream) and is designed to expect data input of a
certain form, and produces data output (to the next filter)
of a specified form.
the filter does not require knowledge of the working of its
neighboring filters.
If the data flow degenerates into a single line of
transforms, it is termed batch sequential.
Call and return architecture
Call and return architecture
Architecture style enables a software designer
(system architect) to achieve a program structure
that is relatively easy to modify and scale.
Two sub-styles exist within this category:
1. Main/sub program architecture:
Program structure decomposes function into a
control hierarchy where a “main” program invokes
a number of program components, which in turn
may invoke still other components.
2. Remote procedure Call architecture:
The components of a main program/subprogram
architecture are distributed across multiple
computers on a network
Object-oriented architecture
Object-oriented architecture
The object-oriented paradigm, like the abstract data type
paradigm from which it evolved, emphasizes the
bundling of data and methods to manipulate and access
that data (Public Interface).
Components of a system summarize data and the
operations that must be applied to manipulate the data.
Communication and coordination between components
is accomplished via message passing.
Layered Architecture
A number of different layers are defined,
each accomplishing operations that
progressively become closer to the
machine instruction set.
At the outer layer, components examine
user interface operations.
At the inner layer, components examine
operating system interfacing.
Intermediate layers provide utility services
and application software functions.
User Interface Design
The UI design process
UI design is an iterative process involving
close liaisons between users and
designers.
The 3 core activities in this process are:
User analysis. Understand what the users
will do with the system;
System prototyping. Develop a series of
prototypes for experiment;
Interface evaluation. Experiment with these
prototypes with users.
The design process
Interface Design Models
Four different models occur in HCI design:
1. The design model expresses the software design.
2. The user model describes the profile of the end users. (i.e.,
novices vs. experts, cultural background, etc.)
GUI Characteristics
Characteristic Description
Multiple windows allow different information to be
Windows
displayed simultaneously on the user’s screen.
Usually icons represent files (including folders and
Icons applications), but they may also stand for processes
(e.g., printer drivers).
Menus bundle and organize commands (eliminating the
Menus
need for a command language).
A pointing device such as a mouse is used for
Pointing command choices from a menu or indicating items of
interest in a window.
Graphical elements can be commands on the same
Graphics
display.
GUIs
Advantages
They are easy to learn and use.
Users without experience can learn to use the system quickly.
The user may switch attention between tasks and applications.
Fast, full-screen interaction is possible with immediate access to the
entire screen
Problems
A GUI is not automatically a good interface
Many software systems are never used due to poor UI design
A poorly designed UI can cause a user to make catastrophic errors
Menu Systems
Advantages
Users don’t need to remember
command names
Typing effort is minimal
User errors are trapped by the
interface
Context-dependent help can be
provided (based on the current
menu selection)
Problems
> Actions involving logical conjunction (and) or disjunction
(or) are awkward to represent
> If there are many choices, some menu structuring facility
must be used
> Experienced users find menus slower than command
language
Menu Structuring
Scrolling menus
The menu can be scrolled to reveal additional choices
Not practical if there is a very large number of choices
Hierarchical menus
Selecting a menu item causes the menu to be replaced by a sub-
menu
Walking menus
A menu selection causes another menu to be revealed
Problems
Users have to learn and remember a command language
Not suitable for occasional or inexperienced users
An error detection and recovery system is required
Typing ability is required (!)
Analogue vs. Digital
Presentation
Digital presentation
Compact — takes up little screen space
Precise values can be communicated
Analogue presentation
Easier to get an 'at a glance' impression of a value
Possible to show relative values
Easier to see exceptional data values
Pressure Temperature
0 100 200 300 400 0 25 50 75 100
Colour Use Guidelines
Colour can help the user understand complex information
structures.
Don’t use (only) colour to communicate meaning!
Open to misinterpretation (colour-blindness, cultural differences ...)
Design for monochrome then add colour
Use colour coding to support user tasks
highlight exceptional events
allow users to control colour coding
Use colour change to show status change
Don't use too many colours
Avoid colour pairings which clash
which clash
Use colour coding consistently
Roadmap
Interface design models
Design principles
GUI characteristics
User Guidance
Usability Testing
Examples
User Guidance
The user guidance system is integrated with
the user interface to help users when they
need information about the system or
when they make some kind of error.
Includes
System messages, including error
messages
Documentation provided for users
On-line help
Help system use
Multiple entry points should be provided
the user should be able to get help from
different places
The help system should indicate where the
user is positioned
Navigation and traversal facilities must be
provided
Error Message Guidelines
Speak the user’s language
Give constructive advice for recovering from the error
Indicate negative consequences of the error (e.g., possibly
corrupted files)
Give an audible or visual cue
Don’t make the user feel guilty!
Roadmap
Interface design models
Design principles
GUI characteristics
User Guidance
Usability Testing
Examples
Usability Testing
Observe a group of test subjects
performing a pre-defined scenario
Usability Attributes
Attribute Description
How long does it take a new user to
Learnability
become productive with the system?
Speed of How well does the system response
operation match the user’s work practice?
How tolerant is the system of user
Robustness
error?
How good is the system at recovering
Recoverability
from user errors?
How closely is the system tied to a
Adaptability
single model of work?
Thank You