rpl - 006 design concepts and principles
TRANSCRIPT
REKAYASAPERANGKAT LUNAKSemester 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
Cost
or
eff
ort
cost/module
cost tointegrate
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
Vert
ical part
itio
nin
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
functionalcoincidental
“single-minded”“scatter-brained”
Coupling
A measure of interconnection among modules.
Coupling spectrum
highlow
Content couplingNo 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..