Professional Documents
Culture Documents
DESIGN AND
ARCHITECTURE
LECTURE 03
Previous Lecture
Design phase in SDLC – architecture and detailed
design
Factors that affect design
Quality Models
Outline
Good design
Quality attributes of software design
Software design principles
Concepts in design
good design
Efficiency
Efficiency refers to the responsiveness of the
system,
i.e. the time required to respond to stimuli (events),
or the number of events processed in some interval of
time.
Efficiency
The time to process a sequence of events can be divided into
three parts.
Third, the times are needed for each component to complete its
computation.
Correctness
Correctness is the property that software
implements the specified users’ requirements.
Modularity:
The design should be composed of replaceable, self-
contained assemblies of elementary parts,
thereby aiding both the initial development and the later
maintenance.
Portability:
The designed product should be able to be moved unchanged
from test environments to operational environments and
from one operational environment to another.
Quality Attributes – Design Objectives
Flexibility or modifiability:
The design should facilitate adaptation to changing end-user
requirements,
changes based on new problems in the end users’ world
Conceptual integrity:
The design should exhibit harmony, symmetry and predictability.
Well structured:
The design should be consistent with chosen design principles,
such as information hiding, to organise the structure of the design.
Quality Attributes – Design Objectives
Simple:
The design should be ‘as simple as possible, but no
simpler’.
Efficient:
The functions provided by the design should be computable
by using the available resources.
Adequate:
The design should meet the stated requirements.
Quality Attributes – Design Objectives
Flexible:
The design should be able to accommodate likely changes in the
requirements, however these might arise.
Implementable:
The functions offered by the design should be theoretically computable
with the information available and achievable using currently available
software and hardware technology.
Standardised:
The design should be represented using standard or well defined and
familiar notation for any documentation.
Quality Attributes – Design Objectives
Feasibility:
The designed process of bringing about the product should be
executable.
Simplicity:
The production (i.e. the development) of the designed software should
be as simple and straightforward as possible without unnecessary
complication.
Reliability:
The designed development process should with high probability be
successful rather than fail to achieve its goal.
Software design principles
Software Design Principles
Always consider alternative approaches
Independent modules.
Benefits:
when modifications are required, it reduces the chances
of propagating to other modules.
Cohesion
“A module should ideally do one thing.”
Each module performs a single task requiring little
interaction with other modules.
A cohesive module since accomplished neatly defined
single task so it can be re-used in other projects
High cohesion is good
Changes are likely to be local to a module
Easier to understand a module in isolation
Coupling
Difficulty in understanding
Difficult reuse
Functional Independence
A module having high cohesion and low coupling is said to
be functionally independent of other modules.