RPL - 006 Design Concepts and Principles

28
REKAYASA PERANGKAT LUNAK Semester Genap 2013 - 2014 Design Concepts and Principles Beni Suranto, S.T., M.SoftEng

Transcript of RPL - 006 Design Concepts and Principles

Page 1: RPL - 006 Design Concepts and Principles

REKAYASAPERANGKAT LUNAKSemester Genap 2013 - 2014

Design Concepts and Principles

Beni Suranto, S.T., M.SoftEng

Page 2: RPL - 006 Design Concepts and Principles

Outline

Software design

Design principles

Design concepts

Effective modular design

Design specification

Page 3: RPL - 006 Design Concepts and Principles

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?

Page 4: RPL - 006 Design Concepts and Principles

Design

Analysis

Definition

Code

Test

Maintenance

Change

Development

Page 5: RPL - 006 Design Concepts and Principles

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.

Page 6: RPL - 006 Design Concepts and Principles

A software design must describe

Architecture: how software is decomposed and organised into components

Interfaces between components

Components that can be constructed.

Page 7: RPL - 006 Design Concepts and Principles

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.

Page 8: RPL - 006 Design Concepts and Principles

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.

Page 9: RPL - 006 Design Concepts and Principles

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.

Page 10: RPL - 006 Design Concepts and Principles

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.

Page 11: RPL - 006 Design Concepts and Principles

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

Page 12: RPL - 006 Design Concepts and Principles

Abstraction

Removing details (from lower to higher levels of abstractions)

Refinement

Adding details (from higher to lower levels of abstractions)

Page 13: RPL - 006 Design Concepts and Principles

Data abstraction

A collection of data that describes a data object.

Function abstraction

From detailed behaviour.

Page 14: RPL - 006 Design Concepts and Principles

Modularity

Software is decomposed into components (modules).

Modularity = an attribute that allows software to be intellectually manageable.

Monolithic = a single-module software.

Page 15: RPL - 006 Design Concepts and Principles

Number of modules

Cost

or

eff

ort

cost/module

cost tointegrate

Total cost

minimum cost

Page 16: RPL - 006 Design Concepts and Principles

Software architecture

The overall structure of the software that provides conceptual integrity for a system.

Models

Static (structural) = components

Dynamic = behaviour aspects

Page 17: RPL - 006 Design Concepts and Principles

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)

Page 18: RPL - 006 Design Concepts and Principles

Function 2

Function 1

Function 3

Horizontal partitioning

Vert

ical part

itio

nin

g

“worker”modules

“decision making”modules

Page 19: RPL - 006 Design Concepts and Principles

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.

Page 20: RPL - 006 Design Concepts and Principles

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.

Page 21: RPL - 006 Design Concepts and Principles

Cohesion

A cohesive module performs a single task, requiring little interaction with other modules.

Cohesion spectrum

functionalcoincidental

“single-minded”“scatter-brained”

Page 22: RPL - 006 Design Concepts and Principles

Coupling

A measure of interconnection among modules.

Coupling spectrum

highlow

Content couplingNo coupling

Page 23: RPL - 006 Design Concepts and Principles

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

Page 24: RPL - 006 Design Concepts and Principles

Interface design

Human-machine interface specification

Human-machine interface design rules

External interface design

To external data

To external systems

Internal interface design

Page 25: RPL - 006 Design Concepts and Principles

Procedural design

For each module

Processing narrative

Interface description

Design language description

Module used

Internal data structures

Comment

Requirement cross references

Page 26: RPL - 006 Design Concepts and Principles

Test provisions

Test guidelines

Integration strategy

Special considerations

Special notes

Appendices

Page 27: RPL - 006 Design Concepts and Principles

Summary

Software design

Design principles

Design concepts

Effective modular design

Design specification

Page 28: RPL - 006 Design Concepts and Principles

Terima kasih..