Design Issues: Practice: A Generic View Design Principles
Design Issues: Practice: A Generic View Design Principles
Component
Level Design
Interface
Design
Architectural
Design
Data/Class Design
Design Model (cont.)
Data/Class Design transforms analysis-class
models into design class realizations and
data structures.
Architectural Design defines the relationship
between major structural elements of the
software.
Interface design describes how the software
communicates with systems that interoperate
with it, and with the humans who use it.
Component Level design transforms
structural elements of the software
architecture into a procedural description of
software components.
Evaluation Of A Good Design
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.
Evaluation Of A Good Design (cont.)
The design should provide a complete picture
of the software, addressing the data,
functional, and behavioral domains from an
implementation perspective.
Design Quality Guidelines
The design architecture
Should be created using recognizable styles
or patterns.
Should be composed of components that
exhibit good design characteristics (more
later).
Should be implemented in an evolutionary
fashion facilitating implementation and testing.
Design Quality Guidelines (cont.)
A design should be modular.
A design should contain distinct
representations of data, architecture,
interfaces, and components.
A design should lead to data structures that
are appropriate for the classes to be
implemented and are drawn from
recognizable data patterns.
A design should lead to components that
exhibit independent functional characteristics.
Design Quality Guidelines (cont.)
A design should lead to interfaces that reduce
the complexity of connections between
components and with the external
environment.
A design should be derived using a
repeatable method that is driven by
information obtained during software
requirements analysis.
A design should be represented using a
notation that effectively communicates its
meaning.
Good Design Attributes
Functionality
Feature set
Generality of functions
Security of overall system
Usability
Reliability
Performance
Supportability
Design Concepts
Abstraction
Abstraction is one of the fundamental ways
humans deal with complexity.
Procedural abstraction (OPEN for open the
door)
Data abstraction (DOOR for all the parts of a
door)
Design Concepts (cont.)
Architecture
Overall structure
Represented using one or more models
Structural models
Framework models
Dynamic models
Process models
Functional models
Design Concepts (cont.)
Patterns
Here’s where the Design Patterns that Michael
has covered fit.
Design Concepts (cont.)
Modularity
Region of
Cost or Effort
Minimum Cost
Cost To Integrate
Cost / Module