(Cosc3092) : Object Oriented Software Engineering
(Cosc3092) : Object Oriented Software Engineering
(Cosc3092) : Object Oriented Software Engineering
(CoSc3092)
Chapter One
5. SDLC vs OO approach
Management failure
Late and over budget delivery
On-time delivery of incorrect system
Not anticipating situations
A person living more than 100 years was invited to attend kindergarten.
Leap years impacting expiration dates
Nature of system i.e. complexity
Generally, quality of software was unacceptably low and deadlines and budgets weren’t being met.
Leap-year bug
A supermarket was fined $1000 for having meat around 1 day too long, on February 29, 1988.
Interface misuse
On April 10, 1990, in London, an underground train left the station without its driver.
Security
On November 2, 1988, a self-propagating program, subsequently called the Internet Worm, An
estimated 10% of all Internet nodes were affected. The infection took several days to eradicate.
Late and over budget
In 1995, bugs in the automated luggage system of the new Denver International Airport caused
suitcases to be chewed up. The airport opened 16 months late, $3.2 billion over-budget, with a
mostly manual luggage system.
On-time delivery
After 18 months of development, a $200 million system was delivered to a health insurance
company in Wisconsin in 1984. However, the system did not work correctly: $60 million in
overpayments were issued. The system took 3 years to fix.
Unnecessary complexity
The C-17 cargo plane by McDonnell Douglas ran $500 million over budget because of problems with
its avionics software. The C-17 included 19 onboard computers, 80 microprocessors, and 6 different
programming languages.
1. Modeling Activity:
• A model is an abstract representation of a system that enables us to answer questions about the
system.
• Software engineers deal with complexity through modeling, by focusing at any one time on only the
relevant details and ignoring everything else.
• Models are useful when dealing with systems that are too large, too small, too complicated, or too
expensive to experience firsthand.
2.Problem solving
3. Knowledge acquisition
a. In modeling the application and solution domain, software engineers collect data, organize it into
information, and formalize it into knowledge.
b. Knowledge acquisition is nonlinear, as a single piece of data can invalidate complete models.
c. A common mistake that software engineers and managers make is to assume that the acquisition of
knowledge needed to develop a system is linear.
4.Rationale management
a. When acquiring knowledge and making decisions about the system or its application domain,
software engineers also need to capture the context in which decisions were made and the
rationale behind these decisions.
enables software engineers to understand the implication of a proposed change when
revisiting a decision.
1. Requirements Elicitation
2. Analysis
3. System Design
4. Object Design
5. Implementation
Requirements elicitation
The client and developers define the purpose of the system.
The result of this activity is a description of the system in terms of actors and use cases.
Actors represent the external entities that interact with the system. Users, Other
systems, computers
Use cases are general sequences of events that describe all the possible actions
between an actor and the system for a given piece of functionality.
During requirements elicitation, the client and developers also agree on a set of
nonfunctional requirements.
Analysis
• During analysis, developers aim to produce a model of the system that is correct,
complete, consistent, unambiguous, realistic, and verifiable.
• Developers transform the use cases produced during requirements elicitation into an
object model that completely describes the system.
• During this activity, developers discover ambiguities and inconsistencies in the use
case model that they resolve with the client.
The result of analysis is an object model annotated with attributes, operations, and
associations.
System design
During system design, developers define the design goals of the project and decompose the
system into smaller subsystems that can be realized by individual teams.
Developers also select strategies for building the system, such as the hardware/software
platform on which the system will run.
The result of system design is a clear description of each of these strategies, a subsystem
decomposition, and a deployment diagram representing the hardware/software mapping of
the system.
Object design
developers define custom objects to bridge the gap between the analysis model and the
hardware/ software platform defined during system design. Include:
restructuring the object model to attain design goals.
optimizing the object model for performance.
precisely describing object and subsystem interfaces.
The result of the object design activity is a detailed object model annotated with constraints
and precise descriptions for each element.
Implementation
Developers translate the object model into system that includes implementing the attributes
and methods of each object and integrating all the objects such that they function as a single
system. source code.
4. Managing software development
• Management activities focus on planning the project, monitoring its status, tracking
changes, and coordinating resources such that a high-quality product is delivered on
time and within budget. It includes:
1. Communication: deal with communication issues
2. Rationale management: Rationale is the justification of decisions.
3. Testing :developers find differences between the system and its models by
executing the system (or parts of it) with sample input data sets.
3.1 During unit testing, developers compare the object design model with each object and
3.2 During integration testing, combinations of subsystem are combined and compare with
the System Design model.
• This process monitors and controls changes in work products, due to:
SDLC Phases
Systems Investigation
o Identify problems or opportunities
Systems Analysis
o How can we solve the problem
Systems Design
o Select and plan the best solution
Systems Implementation
o Place solution into effect
Systems Maintenance and Review
o Evaluate the results of the solution
Weaknesses of SDLC
Models of processes are unstable
Output-driven design leads to instability
User dissatisfaction
Maintenance workload
Emphasis on “hard” thinking – simplistic assumptions like “identified facts that need
investigation”, “best solution”, etc
Assumption of “green-field” development – incremental on a clean slate
Structured Vs. O-O Paradigm
Structured
Data Flow methodology
Compliments Structured Programming
Can be repeatable, measurable, & automated
(CASE brought significant assistance)
Functional perspective of problem domain
Describes the real world as data flowing
through the information system, being
transformed from inputs to outputs
Separates data from functionality
Object Oriented
Object modeling
Compliments object-oriented
programming
Can be repeatable, measurable, &
automated
Object perspective of the problem
domain
Describes the real world by its
objects, attributes, services, and
relationships
Data & functions are encapsulated
together
Structured Vs. O-O Paradigm
Structured Paradigm
o Separates data from functionality
Data – modeled using a data/persistence model
Functionality – modeled using a process model
O-O paradigm
o Defines systems as a collection of interacting parts called objects, which do things
(functionality) and know things (data).
The Potential benefits of O-O
Increased Reusability
Increased Extensibility
Increased Chance of Project Success
Reduced Maintenance Burden
Managed Complexity
Financial benefit.
The Potential Drawbacks of O-O
O-O requires greater concentration on requirements analysis and design
Developers must work with users
O-O requires a complete change in mindset on the part of individuals & organizations
Many O-O benefits are long-term
O-O demands upfront investments in training, education and tools
O-O necessitates increased testing
O-O is only part of the solution