Вы находитесь на странице: 1из 32

Software Construction

Lecture No. 02
By

RAFIA HASSAN

Prerequisites & Design


CONTENTS

• Importance of Prerequisites
• Determine the Kind of Software You’re
Working On
• Amount of Time to Spend on Upstream
Prerequisites
• Design in Construction

3
Measure Twice, Cut Once: Upstream
Prerequisites

• As with building construction, much of the success or failure of the


project has already been determined before construction begins.

• So you should have good preparation.

• Metaphor: Measure Twice, Cut Once ???

• Measure twice, cut once is highly relevant to the construction part


of software development, which can account for as much as 65
percent of the total project costs.

4
Importance of Prerequisites
• A common denominator of programmers who build high-
quality software is their use of high-quality practices. Such
practices emphasize:

• quality at the beginning


• quality at the middle
• quality at the end of a project

“Paying attention to quality is also the best way to improve


productivity”.
5
Do Prerequisites Apply to Modern
Software Projects?
• Some people have asserted that upstream
activities such as architecture, design, and
project planning aren’t useful on modern
software projects.

• Data from the 1970s to the present day clearly


indicates that projects will run best if
appropriate preparation activities are done
before construction begins in earnest.
6
Goal of Preparation
• The overarching goal of preparation is risk
reduction: a good project planner clears major
risks out of the way as early as possible

• Most common projects risks in software


development are poor requirements and poor
project planning

7
Causes of Incomplete Preparation

• Developers do not have the expertise to carry


out their assignments

• Programmers do know how to perform


upstream activities

• Managers are notoriously unsympathetic to


programmers
8
Cost of Fixing Defects

The data in the Table shown above states that, for example, an
architecture defect that costs $1000 to fix when the architecture is being
created can cost $15,000 to fix during system test.
9
Phase in Which a Defect Is Detected

The cost to fix a defect rises dramatically as the time


from when it’s introduced to when it’s detected
increases. 10
Determine the Kind of Software You’re
Working On

11
Determine the Kind of Software You’re
Working On

12
Determine the Kind of Software You’re
Working On

13
Determine the Kind of Software You’re
Working On

14
Determine the Kind of Software You’re
Working On

15
Amount of Time to Spend on Upstream
Prerequisites
• The amount of time you spend on
prerequisites will depend on your project
type.

• Generally, a well-run project devotes about 10


to 20 percent of its effort and about 20 to 30
percent of its schedule to requirements,
architecture, and up-front planning.

16
KEY CONSTRUCTION

DECISIONS

17
Choice of Programming Language
• The programming language in which the system
will be implemented should be of great interest.

• Studies have shown that the programming-


language choice affects productivity and code
quality in several ways.

• Programmers are more productive using a familiar


language than an unfamiliar one.
18
Choice of Programming Language
• Data from the Cocomo II estimation model shows
that programmers working in a language they’ve
used for three years or more are about 30 percent
more productive than programmers with
equivalent experience who are new to a language.

• An earlier study at IBM found that programmers


who had extensive experience with a programming
language were more than three times as
productive as those with minimal experience
19
Reading Assignment
• Language Descriptions
• Selection of Major Construction Practices

(Chap 4. “Key Construction Decisions” of Code


Complete).

20
Choice of Programming Language

21
Design in Construction

22
Design in Construction

• The phrase “software design” means the conception,


invention, or contrivance of a scheme for turning a
specification for a computer program into an operational
program.

Design is the activity that links requirements to coding and
debugging.

A good top-level design provides a structure that can safely
contain multiple lower level designs.

• Good design is useful on small projects and indispensable on


large projects. 23
24
Design Challenges: Sloppiness

• How much is enough? Design is sloppy because it’s hard


to know when your design is “good enough.” How much
design should be done with a formal design notation,
and how much should be left to be done at the
keyboard?

• Non-determinism: What should be the outcome? 3


designer, 3 different but acceptable designs

• Process is heuristic not an algorithm. Things to try that


sometimes work
25
Key Design Concepts: Managing
Complexity

26
Key Design Concepts: Managing
Complexity

27
Key Design Concepts: Desirable
Characteristics

• Minimal Complexity
• Ease of maintenance
• Minimal connectedness
• Extensibility
• Reusability
• High fan-in
• Low to medium fan-out
• Portability
• Leanness

Read book to understand the definitions 28


Key Design Concepts: Levels of Design

29
30
Key Points
• Software’s Primary Technical Imperative is managing complexity.
This is greatly aided by a design focus on simplicity.

• Simplicity is achieved in two general ways: minimizing the


amount of essential complexity that anyone’s brain has to deal
with at any one time, and keeping accidental complexity from
proliferating needlessly.

• Design is heuristic. Dogmatic adherence to any single


methodology hurts creativity and hurts your programs.

• Good design is iterative; the more design possibilities you try, the
better your final design will be. 31
References
Steve McConnell, “Code Complete: A Practical
Handbook of Software Construction”, Second
Edition.
• Chap # 4
• Chap # 5

32

Вам также может понравиться