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

Slide 1.

Object-Oriented and
Classical Software
Engineering
Fifth Edition, WCB/McGraw-Hill, 2002

Stephen R. Schach
srs@vuse.vanderbilt.edu

© The McGraw-Hill Companies, 2002


CHAPTER 1 Slide 1.2

SCOPE OF
SOFTWARE ENGINEERING

© The McGraw-Hill Companies, 2002


Outline Slide 1.3

● Historical aspects
● Economic aspects
● Maintenance aspects
● Specification and design aspects
● Team programming aspects
● The object-oriented paradigm
● Terminology

© The McGraw-Hill Companies, 2002


Scope of Software Engineering Slide 1.4

● Historical Aspects
– 1968 NATO Conference, Garmisch
– Aim: to solve the “Software Crisis”
– Software is delivered
» Late
» Over budget
» With residual faults

© The McGraw-Hill Companies, 2002


Scope of Software Engineering (contd) Slide 1.5

● Why cannot bridge-building techniques


be used to build operating systems?
– Attitude to collapse
– Imperfect engineering
– Complexity
– Maintenance

© The McGraw-Hill Companies, 2002


Conclusion Slide 1.6

● Software Engineering is not “Engineering”

© The McGraw-Hill Companies, 2002


Economic Aspects Slide 1.7

● Economically viable techniques


● Coding method CMnew is 10% faster than currently
used method CMold. Should it be used?
– Common sense answer
» Of course!
– Software Engineering answer
» Consider the effect of CMnew on maintenance

© The McGraw-Hill Companies, 2002


Maintenance Aspects Slide 1.8

● Software Life Cycle


– The way we produce software, including
» The life-cycle model
» The individuals
» CASE tools

© The McGraw-Hill Companies, 2002


Life-cycle model Slide 1.9

1. Requirements phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement

© The McGraw-Hill Companies, 2002


Approximate Relative Cost of Each Phase Slide 1.10

● 1976–1981 data
● Maintenance constitutes 67% of total cost

© The McGraw-Hill Companies, 2002


Comparative Relative Cost of Each Phase Slide 1.11

© The McGraw-Hill Companies, 2002


Good and Bad Software Slide 1.12

● Good software is maintained—bad software


is discarded
● Different types of maintenance
– Corrective maintenance [about 20%]
– Enhancement
» Perfective maintenance [about 60%]
» Adaptive maintenance [about 20%]
● Effect of CMnew on maintenance

© The McGraw-Hill Companies, 2002


Specification and Maintenance Faults Slide 1.13

● 60 to 70 percent of faults are specification


and design faults
● Data of Kelly, Sherif, and Hops [1992]
– 1.9 faults per page of specification
– 0.9 faults per page of design
– 0.3 faults per page of code
● Data of Bhandari et al. [1994]

© The McGraw-Hill Companies, 2002


Specification and Maintenance Faults (contd) Slide 1.14

● Faults at end of the design phase of the


new version of the product
– 13% of faults from previous version of product
– 16% of faults in new specifications
– 71% of faults in new design

© The McGraw-Hill Companies, 2002


Cost to Detect and Correct a Fault Slide 1.15

© The McGraw-Hill Companies, 2002


Team Programming Aspects Slide 1.16

● Hardware is cheap
– We can build products that are too large to be written
by one person in the available time
● Teams
– Interface problems
– Meetings

© The McGraw-Hill Companies, 2002


The Object-Oriented Paradigm Slide 1.17

● The structured paradigm had great successes


initially
– It started to fail with larger products (> 50,000 LOC)
● Maintenance problems (today, up to 80% of
effort)
● Reason: structured methods are
– Action oriented (finite state machines, data flow
diagrams); or
– Data oriented (entity-relationship diagrams,
Jackson’s method);
– But not both

© The McGraw-Hill Companies, 2002


The Object-Oriented Paradigm (contd) Slide 1.18

● Both data and actions are of equal importance


● Object:
– Software component that incorporates both data
and the actions that are performed on that data
● Example:
– Bank account
» Data: account balance
» Actions: deposit, withdraw, determine balance

© The McGraw-Hill Companies, 2002


Structured versus Object-Oriented Paradigm Slide 1.19

● Information hiding
● Responsibility-driven design
● Impact on maintenance, development
© The McGraw-Hill Companies, 2002
Key Aspects of Object-Oriented Solution Slide 1.20

● Conceptual independence
– Encapsulation
● Physical independence
– Information hiding
● Impact on development
– Physical counterpart
● Impact on maintenance
– Independence effects

© The McGraw-Hill Companies, 2002


Responsibility-Driven Design Slide 1.21

● Also called “Design by Contract”


● Send flowers to your aunt in Iowa City
– Call 1-800-FLOWERS
– Where is 1-800-FLOWERS?
– Which Iowa City florist does the delivery?
– Information hiding
● Object-oriented paradigm
– “Send a message to a method [action] of an object“

© The McGraw-Hill Companies, 2002


Transition From Analysis to Design Slide 1.22

● Structured paradigm:
– Jolt between analysis (what) and design (how)
● Object-oriented paradigm:
– Objects enter from very beginning
© The McGraw-Hill Companies, 2002
Analysis/Design “Hump” Slide 1.23

● Systems analysis
– Determine what has to be done
● Design
– Determine how to do it
– Architectural design—determine modules
– Detailed design—design each module

© The McGraw-Hill Companies, 2002


Removing the “Hump” Slide 1.24

● Object-oriented analysis
– Determine what has to be done
– Determine the objects
● Object-oriented design
– Determine how to do it
– Design the objects

© The McGraw-Hill Companies, 2002


  In More Detail Slide 1.25

● Objects enter here

© The McGraw-Hill Companies, 2002


Warning Slide 1.26

● Do not use the object-paradigm to enhance a


product developed using the structured paradigm
– Water and oil do not mix
● Exception: if the new part is totally disjoint
– Example: adding a GUI (graphical user interface)

© The McGraw-Hill Companies, 2002


Terminology Slide 1.27

● Quality
● Program, system, product
● Methodology, paradigm
● Method and technique
● Client, developer, user
● Bug 
– “A bug  crept into the code”
instead of
– “I made a mistake”

© The McGraw-Hill Companies, 2002


Object-Oriented Terminology Slide 1.28

● Data component of an object


– State variable
– Instance variable (Java)
– Field (C++)
– Attribute (generic)
● Action component of an object
– Member function (C++)
– Method (generic)

© The McGraw-Hill Companies, 2002


Object-Oriented Terminology (contd) Slide 1.29

● C++: A member is either an


– Attribute (“field”), or a
– Method (“member function”)
● Java: A field is either an
– Attribute (“instance variable”), or a
– Method

© The McGraw-Hill Companies, 2002

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