Professional Documents
Culture Documents
OOSE Chapter One
OOSE Chapter One
-1
Chapter One
Overview of object-oriented
Software Engineering
Chapter Contents
• Introduction
• Software development lifecycle
• Development paradigm
• Unified modeling language (UML)
20
1-5
Introduction
In software engineering we are not dealing with
programs that people build to illustrate something
or for hobby i.e student systems).
Instead the problem domain is the software that
solves some problem of some users where larger
systems or businesses may depend on the
software, and where problems in the software can
lead to significant direct or indirect loss. i.e
industrial strength software.
MLITC-CS Dep-OOSE Course Chapter One 5 5
1-6
Introduction
The Software Engineering approach
• The three main forces that govern quality
(Q)&productivity (P) are the people, processes,
and technology, often called the Iron
Triangle.
Moving from one phase to another phase Moving from one phase to another phase
is complex. is easier.
Increases duration of project decreases duration of project
Increases complexity Reduces complexity and redundancy
JACOBSON OOSE
Object-Oriented Software Engineering (OOSE) is a
software design technique that is used in software
design in object-oriented programming.
OOSE is developed by Ivar Jacobson in 1992.
OOSE is the first object-oriented design methodology
that employs use cases in software design.
It includes requirements, an analysis, a design, an
implementation and a testing model.
OO Design:
architectural design
detailed design
both require the transformation of functional requirements into OO design elements
Implementation or Coding:
Programming using OO programming languages and tools.
Testing:
unit testing; test methods within each object
integration testing; test collaborations between objects
system testing; test the entire system as a collection of objects
acceptance testing; test for standards and customer satisfaction
Promotion of reusability:
Objects are reusable because they are modeled directly out of a real—world
problem domain.
Each object stands by itself or within a small circle of peers (other objects).
Within this framework, the class does not concern itself with the rest of the
system or how it is going to be used within a particular system.
This means that classes are designed generically, with reuse as a constant
background goal.
Furthermore, the object orientation adds inheritance, which is a powerful
technique that allows classes to be built from each other, and therefore, only
differences and enhancements between the classes need to be designed
and coded.
All the previous functionality remains and can be reused without change.
1)abstraction
2) encapsulation
3) modularity
4) hierarchy
PRINCIPLE 1: ABSTRACTION
A process allowing to focus on most important aspects while
ignoring less important details.
PRINCIPLE 3: MODULARITY
Modularity breaks up complex systems into small, self-
contained
pieces that can be managed independently.
PRINCIPLE 4: HIERARCHY
Ordering of abstractions into a tree-like structure.
Notation
A notation is a graphical or textual set of rules for representing a model.
The Roman alphabet is a notation for representing words. UML (Unified Modeling Language [OMG,
2009]), the notation we use throughout this course, is a notation for representing object-oriented
models.
The use of notations in software engineering is common and predates object-oriented concepts.
Data flow diagrams [De Marco, 1978] is a notation for representing systems in terms of data
sources, data sinks, and data transformations. Z [Spivey, 1989] is a notation for representing
systems based on set theory.
Method
A method is a repeatable technique that specifies the steps involved in solving a specific
problem.
A recipe is a method for cooking a specific dish. A sorting algorithm is a method for ordering
elements of a list.
Rationale management is a method for justifying change.
Configuration management is a method for tracking change.
MLITC-CS Dep-OOSE Course Chapter One Compiled by: Alula T
1-24
-24
Notations, Methods, and Methodologies
Analysis
System Design
Object Design
Implementation
Testing
Figure 1-1 (Next Slide) depicts an overview of the relationship among these
activities and their products.
System: Airplane
Models:
Flight simulator Views:
Scale model Blueprint of the airplane components
Electrical wiring diagram, Fuel system
Sound wave created by airplane
MLITC-CS Dep-OOSE Course Chapter One
Systems, Models and Views (“Napkin” Notation)
Flightsimulator
Aircraft
The picture can't be display ed. Fuel System
Blueprints Electrical
Scale Model Wiring
Airplane:
System
Object Diagram
Actor.
System boundary
Actor
ReadTime
SetTime
WatchUser WatchRepairPerson
ChangeBattery
Association
Class
Multiplicity
SimpleWatch
1 1 1 1
2 1 2 1
PushButton Display Battery Time
Association
Class
Multiplicity Watch
1 1 1 1
2
1 2 1
PushButton
state LCDDisplay Battery Time
push() blinkIdx Load Now
release() blinkSeconds()
blinkMinutes()
blinkHours()
stopBlinking()
Operations
Attribute referesh()
Transition button1Pressed
button1&2Pressed button2Pressed
Blink Increment
Minutes Minutes
State
button1Pressed
button2Pressed
Stop Blink Increment
Blinking Seconds Seconds
Final state
• It all depends….
• Forward Engineering
• Creation of code from a model
• Start with modeling
• Greenfield projects
• Reverse Engineering
• Creation of a model from existing code
• Interface or reengineering projects
• Roundtrip Engineering
• Move constantly between forward and reverse engineering
• Reengineering projects
• Useful when requirements, technology and schedule are changing
frequently.