You are on page 1of 12

Software Design Principles

Table of Contents

– What is software design?


– Importance of software design
– Software design process
– What is a good design/software/process

2
General Design Principles

1. Modularization
2. Abstraction
3. Encapsulation
4. Coupling
5. Cohesion
6. Separation of interface and implementation
7. Sufficiency
8. Completeness

5
Principle # 1 Modularization
Modularization is the process of continuous decomposition
of the software system until fine-grained components are
created.

When you modularize a design, you are also modularizing


the requirements, programming and test cases. 6
Principle # 2 Abstraction

Abstraction is “a view of an object


that focuses on the information
levant to a particular purpose and
ignores the remainder of the
information”

7
Principle # 3 Encapsulation
– One can think of information hiding as the
principle and encapsulation as the technique

– Encapsulation is the public interface that


defines how an object can be used, and how
its data is derived.

– Information Hiding prevents an external object


from using the derived data altogether

11
Principle # 4 Coupling

Refers to the manner and degree of interdependence


between software modules. Measurement of dependency
between units.

The The
higher higher
the coupling the
dependency

18
Principle # 5 Cohesion
– The manner and degree to which the tasks
performed by a single software module are
related to one another.

– Measures how well design units are put


together for achieving a particular tasks.

28
Principle # 6 ENCAPSULATION
“ During encapsulation, interfaces are created to provide public
access to services provided by the design unit while hiding
unnecessary details, which include implementation.

While encapsulation dictates hiding the details of


implementation, the principle of separation dictates their
separation, so that different implementation of the same
interface can be swapped to provide modified or new
behavior.”

44
– Sufficiency
PRINCIPLE # 7&8: measures how well
COMPLETENESSAND the designed units
are at providing
SUFFICIENCY only the services
that are sufficient
for achieving the
intent (no more).
– Completeness
measures how well
designed units
provide the required
services to achieve
the intent (no less).
45
Completenessandsufficiency

Apple has really come up with lots of smart


ideas to improve simple app like photo
editing which reduces the number of clicks
required and still get 46

the work done.


PRACTICALDESIGNCONSIDERATIONS

Designforminimizingcomplexity
Designforchange

49

You might also like