Lecture for Chapter 1, Introduction to Software Engineering - PowerPoint PPT Presentation

1 / 57
About This Presentation
Title:

Lecture for Chapter 1, Introduction to Software Engineering

Description:

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: ... The 'Bermuda Triangle' of Modeling. System Models. Issue Model. Task Models. PERT Chart ... – PowerPoint PPT presentation

Number of Views:276
Avg rating:3.0/5.0
Slides: 58
Provided by: bernd205
Category:

less

Transcript and Presenter's Notes

Title: Lecture for Chapter 1, Introduction to Software Engineering


1
Chapter 1 Introduction
2
Outline
  • High quality software State of the art
  • Modeling complex systems
  • Dealing with change
  • Software lifecycle
  • Reuse
  • Design Patterns
  • Frameworks

3
Can you develop this?
4
Limitations of Non-engineered Software
Requirements
Software
5
Software Production has a Poor Track Record
Example Space Shuttle Software
  • Cost 10 Billion, millions of dollars more than
    planned
  • Time 3 years late
  • Quality First launch of Columbia was cancelled
    because of a synchronization problem with the
    Shuttle's 5 onboard computers.
  • Error was traced back to a change made 2 years
    earlier when a programmer changed a delay factor
    in an interrupt handler from 50 to 80
    milliseconds.
  • The likelihood of the error was small enough,
    that the error caused no harm during thousands
    of hours of testing.
  • Substantial errors still exist.
  • Astronauts are supplied with a book of known
    software problems "Program Notes and Waivers".

6
Example Ariane-5, Flight 501
  • European Space Agencys reusable launch vehicle
  • Cost 10 years of development and cost of 7
    billion
  • Launched 4 June 1996
  • Mission 500 million payload to be delivered to
    orbit
  • Fate Veered off course and destructed itself 40
    sec. after launch
  • Conclusions about the cause
  • Unhandled floating point exception in Ada Code
  • Happened due to software specification and design
    errors
  • The extensive reviews and tests did not include
    adequate analysis and testing, which could have
    detected the potential failure

7
Other Book Examples of SWE Failures
  • Denver International Airport
  • In 1995, bugs in the automated luggage system
    ... caused suitcases to be chewed up. The airport
    opened 16 months late, 3.1 billion over budget,
    with mostly manual luggage system
  • Swanick Air Traffic Control System
  • Controls Air traffic over England and Wales
  • Delivered in 2002, 6 years late
  • Substantially over budget (?623 M versus the
    planned?325 M)

8
Quality of todays software.
  • The average software product released on the
    market is not error free.
  • Software bugs, or errors, are so prevalent and so
    detrimental
  • They cost the U.S. economy an estimated 59.5
    billion annually, or about 0.6 of the gross
    domestic product, according to a 2002 NIST Report
  • Software developers spend approximately 80 of
    development costs on identifying and correcting
    defects
  • and yet few products other than software are
    shipped with such high levels of errors
  • ? Complexity of building software solutions

9
Software Engineering A Problem Solving Activity
  • Goal of Software Engineering
  • Produce high quality software to satisfy a set of
    functional and nonfunctional requirements
  • It is a problem solving activity
  • How do we solve a problem?
  • Analysis Understand the nature of the problem
    (requirements) and break the problem into pieces
    (e.g. Object Identification in OO development)
  • Synthesis Put the pieces together into a large
    structure

10
Techniques, Methodologies and Tools
  • For problem solving (Analysis and Synthesis) we
    use
  • Techniques (methods)
  • Formal procedures for producing results using
    some well-defined notation
  • E.g., algorithms, cook book recipes, etc.
  • Methodologies
  • Collection of techniques applied across software
    development and unified by a philosophical
    approach
  • E.g., a cookbook
  • Tools
  • Instrument or automated systems to accomplish a
    technique

11
Software Engineering Definition
  • Software Engineering is a collection of
    techniques,
  • methodologies and tools that help
  • with the production of
  • a high quality software system
  • with a given budget
  • before a given deadline
  • while change occurs.

20
12
Scientist vs Engineer
  • Computer Scientist
  • Proves theorems about algorithms, designs
    languages, defines knowledge representation
    schemes
  • Has infinite time
  • Engineer
  • Develops a solution for an application-specific
    problem for a client
  • Uses computers languages, tools, techniques and
    methods
  • Software Engineer
  • Works in multiple application domains
  • Has only 3 months...
  • while changes occurs in requirements and
    available technology

13
Comment About SWE Tools Software/Hardware vs.
Grayware vs. Thinkware
  • Tools can not substitute skill, knowledge and
    experience
  • Tool-based analysis is that it is often
    insufficient or incomplete
  • System developers are much better at collecting
    and documenting data than they are at
    interpreting what these data mean
  • knowledge and experience, technique skills cannot
    replace good analysis - people are still needed
    to think through the problem
  • The real value is not in the tools and tools
    output but is in the thought and insight that
    only the analyst can provide
  • ?Being able to use a tool does not mean you
    understand the underlying techniques, and
    understanding the techniques does not mean you
    understand the problem.

14
Factors affecting the quality of a software system
  • Complexity
  • The system is so complex that no single
    programmer can understand it anymore
  • The introduction of one bug fix causes another
    bug
  • Change
  • The Entropy of a software system increases with
    each change Each implemented change erodes the
    structure of the system which makes the next
    change even more expensive.
  • As time goes on, the cost to implement a change
    will be too high, and the system will then be
    unable to support its intended task. This is true
    of all systems, independent of their application
    domain or technological base.

15
Why are software systems so complex?
  • The problem domain is difficult
  • Developers are not experts in the domain
  • The development process is very difficult to
    manage
  • Non-linear development processdependencies that
    may not be unless you try the design
  • Software offers extreme flexibility
  • No physical constraints on software complexity
  • No physical constraints on change
  • Software is a discrete system
  • Continuous systems have no hidden surprises
  • Discrete systems have!

16
Dealing with Complexity
  • Abstraction
  • Decomposition
  • Hierarchy

17
What is this?
18
How about this?
19
1. Abstraction
Remember the following ACD98
Remember the following 10101100110110011000
  • Inherent human limitation to deal with complexity
  • The 7 - 2 phenomena
  • Chunking Group collection of objects
  • Ignore unessential details gt Models

20
Models are used to provide abstractions
  • System Model
  • Object Model What is the structure of the
    system? What are the objects and how are they
    related?
  • Functional model What are the functions of the
    system? Users point of view.
  • Dynamic model How does the system react to
    external events? How is the event flow in the
    system ?
  • Task Model
  • PERT Chart What are the dependencies between the
    tasks?
  • Schedule How can this be done within the time
    limit?
  • Org Chart What are the roles in the project or
    organization?
  • Issues Model
  • What are the open and closed issues? What
    constraints were posed by the client? What
    resolutions were made? Rationale?

21
Functional Model Example
  • Ticket Distribution System

22
Object Model Example
23
Dynamic Model Example I (Sequence Diagram)
24
Dynamic Model Example II (State Diagram)
button2Pressed
button12Pressed
Blink
Hours
button1Pressed
button2Pressed
button12Pressed
Blink
Minutes
button1Pressed
button2Pressed
Blink
Stop
Seconds
Blinking
25
Task Model Example Gantt Chart
26
Task Model Example PERT Chart
27
Example of an Issue Galileo vs the Church
  • What is the center of the Universe?
  • Church The earth is the center of the universe.
    Why? Aristotle says so.
  • Galileo The sun is the center of the universe.
    Why? Copernicus says so. Also, the Jupiters
    moons rotate round Jupiter, not around Earth.

28
Issue-Modeling
Issue What is the Center of the Universe?
29
Interdependencies of the Models
System Model (Structure,
Functionality,
Dynamic Behavior)
Issue Model (Proposals, Arguments, Resolutions)
Task Model (Organization, Activities Schedule)
30
The Bermuda Triangle of Modeling
System Models
Forward Engineering Reverse Engineering
PERT Chart
Gantt Chart
Issue Model
Task Models
31
Model-based software EngineeringCode is a
derivation of object model
Pr
oblem Statement

A
stock exchange lists many companies.
Each company is identified by a ticker symbol
A good software engineer writes as little code as
possible
32
2. Decomposition
  • A technique used to master complexity (divide
    and conquer)
  • Functional decomposition
  • The system is decomposed into modules
  • Each module is a major processing step (function)
    in the application domain
  • Modules can be decomposed into smaller modules
  • Object-oriented decomposition
  • The system is decomposed into classes (objects)
  • Each class is a major abstraction in the
    application domain
  • Classes can be decomposed into smaller classes

Which decomposition is the right one?
33
Functional and OO Decomposition
34
Functional Decomposition
System Function

Top Level functions
Level 1 functions
Level 2 functions
Machine Instructions
35
Functional Decomposition
  • Functionality is spread all over the system
  • Maintainer must understand the whole system to
    make a single change to the system
  • Consequence
  • Codes are hard to understand
  • Code that is complex and impossible to maintain
  • User interface is often awkward and non-intuitive
  • Example Microsoft Powerpoints Autoshapes

36
Functional Decomposition Autoshape
Autoshape

37
What is This?
38
Model of an Eskimo
Eskimo Size Dress() Smile() Sleep()
39
Iterative Modeling then leads to ....
but is it the right model?
40
Alternative Model The Head of an Indian

41
Class Identification
  • Class identification is crucial to
    object-oriented modeling
  • Basic types of class identification activities
  • Find the classes for a new software system
    (from scratch) We call this Greenfield
    Engineering
  • Identify the classes in an existing system
    (redesign) We call this Reengineering
  • Create a class-based interface to any system
    (redesign interface and keep the core) We call
    this Interface Engineering
  • What are the limitations? Depending on the
    purpose of the system different objects might be
    found
  • How can we identify the purpose of a system?

42
What is this Thing?
43
Modeling a Briefcase
BriefCase Capacity Integer Weight
Integer Open() Close() Carry()
44
A new Use for a Briefcase
BriefCase Capacity Integer Weight
Integer Open() Close() Carry()
SitOnIt()
45
Questions
  • Why did we model the thing as Briefcase?
  • Why did we not model it as a chair?
  • What do we do if the SitOnIt() operation is the
    most frequently used operation?
  • The briefcase is only used for sitting on it. It
    is never opened nor closed.
  • Is it a Chairor a Briefcase?
  • How long shall we live with our modeling mistake?

46
3. Hierarchy
  • We got abstractions and decomposition
  • This leads us to chunks (classes, objects) which
    we view with object model
  • Another way to deal with complexity is to provide
    simple relationships between the chunks
  • One of the most important relationships is
    hierarchy
  • 2 important hierarchies
  • "Part of" hierarchy
  • "Is-kind-of" hierarchy

47
Part of Hierarchy
Computer
48
Is-Kind-of Hierarchy (Taxonomy)
49
So where are we right now?
  • Three ways to deal with complexity
  • Abstraction
  • Decomposition
  • Hierarchy
  • Object-oriented decomposition is a good
    methodology
  • Unfortunately, depending on the purpose of the
    system, different objects can be found
  • How can we do it right?
  • Many different possibilities
  • Our current approach Start with a description of
    the functionality (Use case model), then proceed
    to the object model
  • This leads us to the software lifecycle

50
Software Lifecycle Activities
...and their models
System Design
Object Design
Implemen- tation
Testing
Requirements Elicitation
Analysis
51
Software Lifecycle Definition
  • Software lifecycle
  • Set of activities and their relationships to each
    other to support the development of a software
    system
  • Typical Lifecycle questions
  • Which activities should I select for the software
    project?
  • What are the dependencies between activities?
  • How should I schedule the activities?

52
Reusability
  • A good software design solves a specific problem
    but is general enough to address future problems
    (for example, changing requirements)
  • Experts do not solve every problem from first
    principles
  • They reuse solutions that have worked for them in
    the past
  • Goal for the software engineer
  • Design the software to be reusable across
    application domains and designs
  • How?
  • Use design patterns and frameworks whenever
    possible

53
Design Patterns and Frameworks
  • Design Pattern
  • A small set of classes that provide a template
    solution to a recurring design problem
  • Reusable design knowledge on a higher level than
    data structures (link lists, binary trees, etc.)
  • Framework
  • A moderately large set of classes that
    collaborate to carry out a set of
    responsibilities in an application domain.
  • Examples User Interface Builder
  • Provide architectural guidance during the design
    phase
  • Provide a foundation for software components
    industry

54
Patterns are used by many people
  • Chess Master
  • Openings
  • Middle games
  • End games
  • Writer
  • Tragically Flawed Hero (Macbeth, Hamlet)
  • Romantic Novel
  • User Manual
  • Architect
  • Office Building
  • Commercial Building
  • Private Home
  • Software Engineer
  • Composite Pattern A collection of objects needs
    to be treated like a single object
  • Adapter Pattern (Wrapper) Interface to an
    existing system
  • Bridge Pattern Interface to an existing system,
    but allow it to be extensible

55
Composite Design Pattern I
  • Problem Represent a hierarchy of objects so that
    leaves and composites are treated uniformly
    through a common interface
  • Examples
  • Groups of drawable elements. Elements can be
    grouped into groups. Groups can contain other
    groups. Elements and groups are operated on
    (Move, Resize, etc.) uniformly
  • Hierarchy of files and directories. Directories
    can contain files and other directories. Same
    operations are available on files and directories
    (Move, Copy, Delete, Rename, etc.)
  • Hierarchy of tasks and subtasks. Tasks
    (composites) contain smaller subtasks and action
    items (leaves). Same operations (add, delete,
    modify, etc.) are applied on tasks, subtasks, and
    action items.

56
Composite Design Pattern II
  • The Component interface specifies the services
    that are shared among leaf and composite (e.g.,
    move for a drawable element).
  • A Composite has an aggregation relationship with
    Component and implements each service by
    iterating over each contained component.
  • E.g., Composite .move calls Component.move for
    each of its contained components
  • The leave services do the actual work
  • E.g., Leave.move modifies the coordinates and
    redraws the leaf
  • Notice the advantages
  • Client can use same code to deal with Leaves and
    Composites
  • Leaf behavior can independently be changed
  • New classes of leaf can be added

57
Summary
  • Software engineering is a problem solving
    activity
  • Developing quality software for a complex problem
    within a limited time while things are changing
  • There are many ways to deal with complexity
  • Modeling, decomposition, abstraction, hierarchy
  • Issue models Show the negotiation aspects
  • System models Show the technical aspects
  • Task models Show the project management aspects
  • Use Patterns Reduce complexity even further
Write a Comment
User Comments (0)
About PowerShow.com