Design in construction

24
Prof. Asha N 1 5. Design in Construction Code Complete Author : Steven C. McConnell.

description

Chapter - Design in Construction, Code Complete, Author : Steven C. McConnell.

Transcript of Design in construction

Page 1: Design in construction

Prof. Asha N 1

5. Design in Construction

Code Complete

Author : Steven C. McConnell.

Page 2: Design in construction

2 Prof. Asha N

Introduction

SOME PEOPLE MIGHT ARGUE THAT design isn’t really a construction activity, but many activities are thought of as construction, often including design.

A lot of design is done while the programmer sits at the keyboard.

- “Design” might be just writing a class interface in pseudo code before writing the details. It might be drawing diagrams of a few class relationships before coding them.

Page 3: Design in construction

3 Prof. Asha N

5.1. Design Challenges

“software design” means the conception, invention, or contrivance of a scheme for

turning a specification for a computer program

into an operational program.

that links requirements to coding and debugging.

A good top-level design provides a structure that

can safely contain multiple lower level designs.

Page 4: Design in construction

4 Prof. Asha N

Design is a “Wicked” Problem

“wicked” problem as one that could be clearly defined only by solving it, or by solving part of it.

This paradox implies, essentially, that you have to “solve” the problem once in order to clearly define it and then solve it again to create a solution that works.

Page 5: Design in construction

5 Prof. Asha N

Design is a Sloppy Process

Design is sloppy because a good solution is

often only subtly different from a poor one.

Design is also sloppy because it’s hard to know when your design is “good enough.”

Since design is open-ended, the most common

answer to that question is

-“When you’re out of time.”

Page 6: Design in construction

6 Prof. Asha N

Other Design Challenges

Design is About Trade-Offs and Priorities

Design Involves Restrictions

Design is Non-Deterministic

Design is a Heuristic Process

Design is Emergent

Page 7: Design in construction

7 Prof. Asha N

5.2 Design Concepts

Good design depends on understanding a handful of key concepts. The role of complexity.

desirable characteristics of designs.

levels of design.

Managing Complexity: Two different classes of problems—the essential and the

accidental

the complexity of a problem is reduced by dividing the system into subsystems.

Page 8: Design in construction

8 Prof. Asha N

Design Concepts

Ineffective Design:

A complex solution to a simple problem

A simple, incorrect solution to a complex

problem

An inappropriate, complex solution to a

complex problem

Page 9: Design in construction

9 Prof. Asha N

Design Concepts

How to Attack Complexity

Two-prong approach to managing Complexity:

1. Minimize the amount of essential complexity

that anyone’s brain has to deal with at any one

time.

2. Keep accidental complexity from needlessly

proliferating.

Page 10: Design in construction

10 Prof. Asha N

Design Concepts

Desirable Characteristics of a Design • Minimal complexity • Ease of maintenance • Minimal connectedness • Extensibility • Reusability • High fan-in • Low-to-medium fan-out • Portability • Leanness • Stratification • Standard techniques

Page 11: Design in construction

11 Prof. Asha N

Design Concepts

Levels of Design

Page 12: Design in construction

12 Prof. Asha N

Design Concepts

Levels:

The system (1) is first organized into subsystems (2).

The subsystems are further divided into classes (3), and

the classes are divided into routines and data (4).

The inside of each routine is also designed (5).

Page 13: Design in construction

13 Prof. Asha N

5.3 Design Building Blocks: Heuristics

design is non-deterministic, So skillful application of an effective set of heuristics is the core activity in good software design.

1. Find Real-World Objects

The steps in designing with objects are Identify the objects and their attributes (methods and data).

Determine what can be done to each object.

Determine what each object can do to other objects.

Determine the parts of each object that will be visible to other objects— which parts will be public and which will be private.

Define each object’s public interface.

Page 14: Design in construction

14 Prof. Asha N

Design Building Blocks: Heuristics

The Billing System

Page 15: Design in construction

15 Prof. Asha N

Design Building Blocks: Heuristics

2. Form Consistent Abstractions

• Abstraction allows

to focus on the

interface without

needing to worry

about the internal

workings of the

class.

•Abstraction allows

you to take a simpler

view of a complex

concept.

Page 16: Design in construction

16 Prof. Asha N

Design Building Blocks: Heuristics

3. Encapsulate Implementation Details

Encapsulation says that, not

only are you allowed to take

a simpler view of a complex

concept, you are not allowed

to look at any of the details

of the complex concept.

Page 17: Design in construction

17 Prof. Asha N

Design Building Blocks: Heuristics

4. Inherit When Inheritance Simplifies the

Design

Defining similarities and differences among objects

is called “inheritance”

5. Hide Secrets (Information Hiding)

Information hiding is characterized by the idea of

“secrets,” design and implementation decisions that a software developer hides in one place from the rest

of a program.

Page 18: Design in construction

18 Prof. Asha N

Design Building Blocks: Heuristics

6. Secrets and the Right to Privacy

A good class interface is like

the tip of an iceberg, leaving

most of the class unexposed.

Two Categories of Secrets

● Hiding complexity so that your

brain doesn’t have to deal with it unless you’re specifically

concerned with it

● Hiding sources of change so that

when change occurs the effects

are localized

Page 19: Design in construction

19 Prof. Asha N

Design Building Blocks: Heuristics

7. Value of Information Hiding Information hiding has unique heuristic power, a unique

ability to inspire effective design solutions.

8. Identify Areas Likely to Change ability to anticipate change

few areas that are likely to change: Business logic Hardware dependencies Input and output Nonstandard language features Difficult design and construction areas Status variables Data-size constraints

Page 20: Design in construction

20 Prof. Asha N

Design Building Blocks: Heuristics

9. Anticipating Different Degrees of Change

design the system so that the effect or scope of the change is proportional to the chance that the change will occur.

10. Keep Coupling Loose

Coupling describes how tightly a class or routine is related to other classes or routines. The goal is to create classes and routines with small, direct, visible, and flexible relations to other classes and routines (loose coupling).

Page 21: Design in construction

21 Prof. Asha N

Design Building Blocks: Heuristics

Coupling Criteria

Size

Visibility

Flexibility

Kinds of Coupling

Simple-data-parameter coupling

Simple-object coupling

Object-parameter coupling

Semantic coupling

Page 22: Design in construction

22 Prof. Asha N

Look for Common Design Patterns

Patterns reduce complexity by providing ready-made abstractions

Patterns reduce errors by institutionalizing details of common solutions

Patterns provide heuristic value by suggesting design alternatives

Patterns streamline communication by moving the design dialog to a higher level

Page 23: Design in construction

23 Prof. Asha N

Other Heuristics

Aim for Strong Cohesion

Build Hierarchies

Formalize Class Contracts

Assign Responsibilities

Design for Test

Avoid Failure

Choose Binding Time Consciously

Make Central Points of Control

Consider Using Brute Force

Draw a Diagram

Keep Your Design Modular

Page 24: Design in construction

24 Prof. Asha N

5.4 Design Practices

Iterate

Divide and Conquer

Top-Down and Bottom-Up Design Approaches

Argument for Top Down

Argument for Bottom Up

Experimental Prototyping

Collaborative Design

How Much Design is Enough?

Capturing Your Design Work