Sie sind auf Seite 1von 28

REKAYASA

PERANGKAT LUNAK
Semester Genap 2013 - 2014
Design Concepts and Principles
Beni Suranto, S.T., M.SoftEng
Outline
Software design
Design principles
Design concepts
Effective modular design
Design specification
Definition
Change
Development
Engineering process
What is the problem to be solved?
What are the characteristics of the solution?
How will the solution be realised?
How will the solution be constructed?
What approach will be used to uncover errors
that were made in the design and construction of
the solution?
How will the solution be supported over long
term?
Design
Analysis
Definition
Code
Test
Maintenance
Change
Development
Software design
(1) A process of defining the architecture,
components, interfaces, and other
characteristics of a system or component.
(2) The result of that process.
To produce a model that will later be built.
A software design must describe
Architecture: how software is decomposed and
organised into components
Interfaces between components
Components that can be constructed.
Design process
An iterative process through which
requirements are translated into a design for
constructing the software.
Combining intuition and judgment based on
experiences, principles, guidance, and quality
criteria.
Software design quality
Implement all of the explicit requirements in the
requirement specification.
Accommodate all of the implicit requirements desired
by the customer.
Be readable for programmer, tester, and maintainer.
Provide a complete picture of the software (data,
functions, behaviour) from an implementation
perspective.
Design principles
Design should be traceable to the analysis model.
Design should not reinvent the wheel.
Design should mimic the problem domain.
Design should exhibit uniformity and integration.
Design should be structured to accommodate
change.
Design should be structured to degrade gently
when exceptions are encountered.
Design is not coding, coding is not design.
Design should be assessed for quality as it is being
created.
Design should be reviewed to minimize
conceptual errors.
Design concepts
Levels of abstraction
Higher level: what is the system?
Lower level: how the system is implemented?
Design
Design'
Design''
Refinement
Refinement
Abstraction
Abstraction
Abstraction
Removing details (from lower to higher levels of
abstractions)
Refinement
Adding details (from higher to lower levels of
abstractions)
Data abstraction
A collection of data that describes a data object.
Function abstraction
From detailed behaviour.
Modularity
Software is decomposed into components
(modules).
Modularity = an attribute that allows software to
be intellectually manageable.
Monolithic = a single-module software.
Number of modules
C
o
s
t

o
r

e
f
f
o
r
t
cost/module
cost to
integrate
Total cost
minimum cost
Software architecture
The overall structure of the software that
provides conceptual integrity for a system.
Models
Static (structural) = components
Dynamic = behaviour aspects
Partitioning
Horizontal partitioning
Easier to test
Easier to maintain
Easier to extend
Fewer side-effects propagation
More data to be passed across module interfaces
(complicate control flow)
Function
2
Function
1
Function
3
Horizontal partitioning
V
e
r
t
i
c
a
l

p
a
r
t
i
t
i
o
n
i
n
g
worker
modules
decision
making
modules
Information hiding
Modules hide design decision from each other.
Data and procedure within a module is
inaccessible to other modules.
Modules communicate with each other to achieve
software function.
Effective modular design
Functional independence
Module with single-minded function.
Addresses a specific function of requirements.
Has simple interface to communicate.
Easier to test and maintain.
Error propagation is reduced.
Reusable modules are possible.
Cohesion
A cohesive module performs a single task,
requiring little interaction with other modules.
Cohesion spectrum
functional coincidental
single-minded scatter-brained
Coupling
A measure of interconnection among modules.
Coupling spectrum
high low
Content coupling No coupling
Design specification
Scope
System objective
Major software requirements
Design constraints, limitations
Data design
Data object and data structures
File and database structures
Architectural design
Data and control flow
Program structure
Interface design
Human-machine interface specification
Human-machine interface design rules
External interface design
To external data
To external systems
Internal interface design
Procedural design
For each module
Processing narrative
Interface description
Design language description
Module used
Internal data structures
Comment
Requirement cross references
Test provisions
Test guidelines
Integration strategy
Special considerations
Special notes
Appendices
Summary
Software design
Design principles
Design concepts
Effective modular design
Design specification
Terima kasih..

Das könnte Ihnen auch gefallen