ch1lect

advertisement
Conquering Complex and Changing Systems
Object-Oriented Software Engineering
Chapter 1,
Introduction to
Software Engineering
Software Engineering

Software systems are complex
 Impossible to understand by a single person
 Many projects are never finished: "vaporware"
 The problem is arbitrary complexity

1968 Definition:
 Software Engineering means the construction of quality software
with a limited budget and a given deadline

Our definition:
 Software Engineering means the construction of quality software
with a limited budget and a given deadline in the context of constant
change

Emphasis is on both, on software and on engineering
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
2
Course format

A Single Semester Course
 Lectures: Theoretical foundations and background
 Project: Learn how to apply them in practice
 Lectures and Project work are interleaved

Everybody will participate in a software project
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
3
Objectives of this course

Acquire technical knowledge
 Understand difference between program and software product
 Be able to reconstruct the analysis and design of an existing
software system
 Be able to design and implement a subsystem that will be part of a
larger system

Acquire managerial knowledge
 produce a high quality software system within budget & time
 while dealing with complexity and change
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
4
Emphasis is on team work





Participate in collaborative design
Work as a member of a project team, assuming various roles
Create and follow a project and test plan
Create the full range of documents associated with a software
product
Complete a project on time
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
5
How can we accomplish this?

Course Projects
 Internet Ordering System
 Internet Sales Tracking System

You will organize into groups of 3
 Each group will be assigned a project
 Details will be revealed once the groups are formed

Course project will be done in 3 stages
 Requirements elicitation
 Analysis and design
 Implementation
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
6
Assumptions and Requirements for this Class

Assumption:
 You are proficient in a programming language (Java preferred), but
have no experience in analysis or design of a system
 You have access to a Web Browser


Course Homepage: http://www.cs.fiu.edu/~ege/cen4010/
Requirements:
 You have taken required courses (Programming III, Data
Structures)

or
 You have practical experience with maintaining or developing a
large software system
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
7
Textbooks

Textbook
 Bernd Bruegge and Allen Dutoit, Object-Oriented Software
Engineering: Conquering Complex and Changing Systems, Prentice
Hall, 2000.

Optional Readings
 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides:
Design Patterns, Addison-Wesley, 1996, ISBN 0-201-63361-2
 Ivar Jacobson, M. Christerson, P. Jonsson, G. Övergaard, "ObjectOriented Software Engineering" , Addison Wesley, 1992
 Grady Booch, "Object-Oriented Design with Applications",
Benjamin Cummings, 1991.
 James Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lorensen,
Object-Oriented Modeling and Design, Prentice Hall, 1991
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
8
Ground Rules

Attendance:
 Attendance and class participation is required


Every project team member is responsible for the whole project
Grading:
 Midterm exam
 Final exam
 Group project



30%
30%
40%
Requirements document 30%
Design document
40%
System implementation 30%
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
9
Project

Each team must:






Submit a bi-weekly activity log
Submit a Requirement Analysis Document
Submit an Object Design Document
Demonstrate the entire running program
Each of the above also require a 15 minutes in class presentation
Every team member is responsible for the entire project
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
10
What is Software Engineering

Software Engineering is the construction of quality software
with a limited budget and a given deadline
 How about change?

Software Engineering is the construction of quality software
with a limited budget and a given deadline in the context of
constant change

Emphasis is on both, on software and on engineering
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
11
Why Software Engineering

Software Systems are complex:
 Impossible to understand by a single person
 Many projects are never finished
 The problem being solved is arbitrarily complex
 Software Systems are subject to constant change
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
12
What are the activities?

Modeling
 An abstract representation of a system that allows the software engineer to
answer questions about the system
 Models allow visualizing and understanding systems that are





too large
too complex
too expensive for direct experimentation
or do not even exist in the real world
Problem Solving
 Find a solution with incomplete knowledge and limited resources





Formulate the problem
Analyze the problem
Search for solutions
Select an appropriate solution
Specify the solution
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
13
What are the activities?

Knowledge Acquisition
 software Engineer must acquire problem domain knowledge
required to develop the target system
 is nonlinear

Rationale Management
 Justification of decisions





issues that were addressed
alternatives that were considered
decisions that were made to resolve the issues
the criteria that were used to guide decisions
the underlying debates
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
14
Concepts





A project’s purpose is to develop a software system
A project is composed of a number of activities
An activity is composed of a number of tasks
A task consumes resources and produces a work product
work product:
 a system
 a Model
 a document

resource:
 time
 equipment
 personnel
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
15
Concepts -- UML
Project
*
Activity
is produced by
WorkProduct
*
consumes
*
Task
System
*
Participant
Model
Time
Document
Bernd Bruegge & Allen Dutoit
Resources
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Equipment
16
Development Activities

Requirement Elicitation

Analysis

System Design

Object Design

Implementation
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
17
Requirement Elicitation

Define the purpose of the system

Describe the system in terms of actors and use cases
 Actors:

External entities that interact with the system
 Use Cases:

Sequences of events that describe all possible actions between actors
and the system
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
18
Analysis

Produce a model of the system that is:







Correct
Complete
Consistent
Unambiguous
Realistic
Verifiable
Transform use cases into object model
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
19
System Design

Define the design goals

Decompose the system into smaller subsystems

Select strategies for building the system
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
20
Object Design

Precisely describe object and system interfaces

Select off-the shelf components

Restructure the object model to attain design goals:
 Extensibility
 Understandability
 Performance optimization

Result:
 Detailed object model
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
21
Implementation

Translate the object model into source code
 Implement the attributes and methods of each object
 Integrate all the objects
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
22
Managerial Aspects



Communication
Rationale Management
Testing
 Discover as many faults as possible and repair them before the
delivery

Software Configuration Management
 Monitor and control changes

Software Project Management
 Budgeting
 Hiring
 Tracking progress, etc.

Software life cycle modeling
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
23
Summary



Find the class website
Read Chapter 1
Form your teams
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
24
Download