UsingUML,Patterns,andJava
Object-OrientedSoftwareEngineering
Chapter 1: Introduction
What is a computer program?
“A list of instructions, written in a specific programming
language (Java, C, Fortran, etc.), which a computer follows
in processing data, performing an operation, or solving a
logical problem. “
What is Software?
Computer programs
Configuration files used to set up these
programs
User documentation explaining how to use
the software
Support service
System documentation describing the
structure of the software
The Definition of Software
Hardware (Manufacturing) vs Software
(Development)
Software is engineered, not manufactured.
Once a hardware product has been manufactured, it is difficult or
impossible to modify. In contrast, software products are routinely
modified and upgraded.
In hardware, hiring more people allows you to accomplish more
work, but the same does not necessarily hold true in software
engineering.
Unlike hardware, software costs are concentrated in design rather
than production.
Software Deteriorates
Software does not wear-out, but it does deteriorate due to changes
Most software models a part of reality and reality evolves. If software does
not evolve with the reality that is being modeled, then it deteriorates
time
failure rate
Hardware
Design or
manufacturing
defects
Cumulative effects
of dust, vibration,
environmental maladies
time
failure rate
Software
Idealized curve
Actual curve
change
Increased failure rate
due to side effects
What are the attributes of good Software?
• Maintainability
– Software must (easily) evolvable to meet changing needs
• Dependability
– Software must be trustworthy (work with all data)
• Efficiency
– Software should not make wasteful use of system resources
• Usability
– Software must be usable by the users for which it was designed
The software should deliver the required functionality and performance
to the user and
should be maintainable, dependable, efficient and usable.
Where is Software?
The economies of ALL developed nations are
dependent on software.
More and more systems are software
controlled
• In computer systems
o Operating systems (eg: Windows,
Linux)
o End-user programs (eg:Photoshop,
dreamveawer)
o Compilers (eg: javac, pascal, gcc)
• Aircrafts, Space Shuttles (Eg: F16,
Discovery Space Shuttle )
• Cellular Phones (Eg: IOS, Android
etc.)
• Education (Eg: Distance Learning)
• Entertainment, Transportation
• Health systems, Military
• And many more….
Granularity of Software
Trivial: 1 month, 1 programmer, 500 LOC
Ex: Intro programming assignments
Very small: 3 months, 1 programmer, 2000 LOC,
Ex: Course project
Small: 1 year, 3 programmers, 50K LOC,
Ex: Mobile App
Medium: 3 years, 10s of programmers, 100K LOC
Ex: Optimizing compiler
Large: 5 years, 100s of programmers, 1M LOC,
Ex: MS Word, Excel
Very large: 10 years, 1000s of programmers, 10M LOC
Ex: Air traffic control, Telecommunications, space shuttle
What type of software?
Small single-developer projects can typically get by without
Software Engineering
– typically no deadlines, small budget (freeware), not safety-
critical
Software Engineering is especially required for
– Medium to large projects (50,000 lines of code and up)
– multiple subsystems
– teams of developers (often geographically dispersed)
– safety-critical systems (software that can kill people...)
What is Software Engineering?
20
Challenge: Dealing with complexity
and change
Software Engineering is a collection of techniques, methodologies
and tools that help with the production of
A high quality software system developed
with a given budget
before a given deadline
while change occurs
Computer Scientist vs Software 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
How successful have we been in Software
Engineering?
Perform tasks more quickly and effectively
– Word processing, spreadsheets, e-mail
Support advances in medicine, agriculture, transportation,
multimedia education, and most other industries
Many good stories
However, software is not without problems
If SW Engineering is so popular, why so many
SWE disasters?
• 1985: Therac-25(radiation theraphy) lethal radiation
overdose
– Reused SW from machine with HW interlock on machine
without it: SW bug => 3 died
• 1996: Ariane 5 rocket explosion
– 1996 => wasted $370M
– https://www.youtube.com/watch?v=gp_D8r-2hwk
• 1999: Mars Climate Orbiter disintegration
– SW used wrong units (pound-seconds vs. metric-seconds)
=> wasted $325M
• 2005: FBI Virtual Case File project abandoned
– give up after 5 years of work => wasted $170M14
ARIANE Flight 501
• Disintegration after 39 sec
• Caused by wrong data being sent to On
Board Computer
• Large correction for attitude deviation
• Software exception in Inertial Reference
System after 36 sec.
– Overflow in conversion of a variable from 64-
bit floating point to 16-bit signed integer
– Of 7 risky conversions, 4 were protected
– Reasoning: physically limited, or large margin
of safety
– In case of exception: report failure and shut
down
http://www.devtopics.com/20-famous-software-disasters-part-4/
http://en.wikipedia.org/wiki/List_of_software_bugs
Why Software Engineering ?
Software failure can be very serious
– Software controls safety critical systems
– Software protects sensitive data
– Software is involved in systems which handle money
Software Engineering has to
– Produce software which has a very low chance of faulting
– Be able to demonstrate/proof that software has very low
chance of fault
• Testing or program proving
Participants and Roles
• Developing software requires collaboration of many people with
different backgrounds and interests.
• All the persons involved in the software project are called
participants (stakeholders)
• The set of responsibilities in the project of a system are defined
as roles.
• A role is associated with a set of tasks assigned to a participant.
• Role is also called stakeholder
• The same participant can fulfill multiple roles.
• Example of roles?...
Case
Roles Example
Work Products
• Workproduct is an artifact that is produced during the
development, such as documentation of software
• Internal work product - work product that is defined for the
project’s internal use.
• Deliverable – work product that must be delivered to the client.
– Deliverable are usually defined prior to the start of the project and
specified in the contract
Examples?
Examples
Why is software development difficult?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Why is software development difficult?
 Change (in requirements & technology):
 What kind of changes?
 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 (“Second Law of Software
Dynamics”).
 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.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Why is software development difficult?
 The problem domain (also called application domain) is
difficult
 The solution domain is difficult
 The development process is difficult to manage
 Software offers extreme flexibility
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Dealing with Complexity
1. Abstraction
2. Decomposition
3. Hierarchy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
1. Abstraction
 Inherent human limitation to deal with complexity
 The 7 +- 2 phenomena
 Our short term memory cannot store more than 7+-2
pieces at the same time -> limitation of the brain
 12062156875
 Chunking: Group collection of objects
• Group collection of objects to reduce complexity
• 4 chunks:
• Country-code, city-code, phone-number, Office-
Part
 Ignore unessential details => Models
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Model
 A model is an abstraction of a system
 A system that no longer exists
 An existing system
 A future system to be built.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
We use Models to describe Software Systems
 Object model: What is the structure of the
system?
 Functional model: What are the functions of the
system?
 Dynamic model: How does the system react to
external events?
 System Model: Object model + functional model
+ dynamic model
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Other models used to describe Software
System Development
 Task Model:
 PERT Chart: What are the dependencies between
tasks?
 Schedule: How can this be done within the time limit?
 Organization Chart: What are the roles in the
project?
 Issues Model:
 What are the open and closed issues?
⧫ What blocks me from continuing?
 What constraints were imposed by the client?
 What resolutions were made?
⧫ These lead to action items
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Interdependencies of the Models
System Model (Structure,
Functionality,
Dynamic Behavior)
Issue Model
(Proposals,
Arguments,
Resolutions)
Task Model
(Organization,
Activities
Schedule)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
The “Bermuda Triangle” of Modeling
System Models
Issue Model Task Models
PERT Chart
Gantt Chart
Org Chart
Constraints
Issues
Proposals
Arguments
Object Model
Functional
Model
Dynamic Model
class...
class...
class...
Code
Pro Con
Forward
Engineering
Reverse
Engineering
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
 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?
2. Decomposition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
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
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Part of Hierarchy
http://www.conradbock.org/relation4.html
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Is-Kind-of Hierarchy (Taxonomy)
http://cs.lmu.edu/~ray/notes/devel/
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Software Engineering Concepts
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
Software Lifecycle Activities ...and their models
Subsystems
Structured By
class...
class...
class...
Source
Code
Implemented
By
Solution
Domain
Objects
Realized By
System
Design
Object
Design
Implemen-
tation
Testing
Application
Domain
Objects
Expressed in
Terms Of
Test
Cases
?
Verified
By
class....?
Requirements
Elicitation
Use Case
Model
Analysis
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Software Lifecycle Activities
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
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/styles: Reduce complexity even further
 Many ways to deal with change
 Tailor the software lifecycle to deal with changing project
conditions
 Use a nonlinear software lifecycle to deal with changing
requirements or changing technology
 Provide configuration management to deal with changing entities
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Reminders
 Reading assignment
 Chapter 1 Introduction to Software Engineering
 Chapter 2 Modelling with UML
 Term Project
 Direct project related questions to your TA
 Choice of projects

More Related Content

DOC
Software engineering...basics
PDF
SWE-401 - 8. Software User Interface Design
PDF
Software engineering study materials
PPT
Slides chapter 1
PPT
Software Engineering Lec 1-introduction
PDF
Microkontroler
PDF
Vskills c++ developer sample material
PDF
3 f6 11_softdevmethodologies
Software engineering...basics
SWE-401 - 8. Software User Interface Design
Software engineering study materials
Slides chapter 1
Software Engineering Lec 1-introduction
Microkontroler
Vskills c++ developer sample material
3 f6 11_softdevmethodologies

Similar to Ch01lect1 et (20)

PDF
Software Engineering Lecture for Computer Science.pdf
PPTX
The Introduction to Software Engineering
PPT
se01.ppt
PPT
Rekayasa Perangkat Lunak Pertemuan 1 RPL
PPT
Introduction to Software Engineering.ppt
PPT
Chapter 01
PPTX
Lecture-1,2-Introduction to SE.pptx
PPT
Chapter_01 of software engineering bsit.ppt
PDF
Software Engineering Introduction by Dr M Zhu
PPT
Chapter 01
PPSX
Scope of software engineering
PPT
Oose unit 1 ppt
PPT
Unit 1 introduction tosoftengg_mba tech ii year
PPT
Unit 1 importance ofsoftengg_b.tech iii year
PPTX
01_IT4557.pptx
PPT
Chapter 01
PPT
OOSE Unit 1 PPT.ppt
PPTX
Lect1_IntroductionToSoftwareEngineering.pptx
PDF
Introduction to Software Engineering Notes
Software Engineering Lecture for Computer Science.pdf
The Introduction to Software Engineering
se01.ppt
Rekayasa Perangkat Lunak Pertemuan 1 RPL
Introduction to Software Engineering.ppt
Chapter 01
Lecture-1,2-Introduction to SE.pptx
Chapter_01 of software engineering bsit.ppt
Software Engineering Introduction by Dr M Zhu
Chapter 01
Scope of software engineering
Oose unit 1 ppt
Unit 1 introduction tosoftengg_mba tech ii year
Unit 1 importance ofsoftengg_b.tech iii year
01_IT4557.pptx
Chapter 01
OOSE Unit 1 PPT.ppt
Lect1_IntroductionToSoftwareEngineering.pptx
Introduction to Software Engineering Notes
Ad

Recently uploaded (20)

PPTX
wireless networks, mobile computing.pptx
PDF
LOW POWER CLASS AB SI POWER AMPLIFIER FOR WIRELESS MEDICAL SENSOR NETWORK
PPTX
mechattonicsand iotwith sensor and actuator
PDF
MLpara ingenieira CIVIL, meca Y AMBIENTAL
PDF
August -2025_Top10 Read_Articles_ijait.pdf
PDF
Design of Material Handling Equipment Lecture Note
PPTX
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
PPTX
tack Data Structure with Array and Linked List Implementation, Push and Pop O...
PPTX
Management Information system : MIS-e-Business Systems.pptx
PDF
Cryptography and Network Security-Module-I.pdf
PPTX
CyberSecurity Mobile and Wireless Devices
PDF
Applications of Equal_Area_Criterion.pdf
PDF
Computer System Architecture 3rd Edition-M Morris Mano.pdf
PDF
Unit I -OPERATING SYSTEMS_SRM_KATTANKULATHUR.pptx.pdf
PDF
Introduction to Power System StabilityPS
PPTX
Chapter 2 -Technology and Enginerring Materials + Composites.pptx
PDF
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
PPTX
Amdahl’s law is explained in the above power point presentations
PPTX
Petroleum Refining & Petrochemicals.pptx
PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
wireless networks, mobile computing.pptx
LOW POWER CLASS AB SI POWER AMPLIFIER FOR WIRELESS MEDICAL SENSOR NETWORK
mechattonicsand iotwith sensor and actuator
MLpara ingenieira CIVIL, meca Y AMBIENTAL
August -2025_Top10 Read_Articles_ijait.pdf
Design of Material Handling Equipment Lecture Note
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
tack Data Structure with Array and Linked List Implementation, Push and Pop O...
Management Information system : MIS-e-Business Systems.pptx
Cryptography and Network Security-Module-I.pdf
CyberSecurity Mobile and Wireless Devices
Applications of Equal_Area_Criterion.pdf
Computer System Architecture 3rd Edition-M Morris Mano.pdf
Unit I -OPERATING SYSTEMS_SRM_KATTANKULATHUR.pptx.pdf
Introduction to Power System StabilityPS
Chapter 2 -Technology and Enginerring Materials + Composites.pptx
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
Amdahl’s law is explained in the above power point presentations
Petroleum Refining & Petrochemicals.pptx
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
Ad

Ch01lect1 et

  • 2. What is a computer program? “A list of instructions, written in a specific programming language (Java, C, Fortran, etc.), which a computer follows in processing data, performing an operation, or solving a logical problem. “
  • 3. What is Software? Computer programs Configuration files used to set up these programs User documentation explaining how to use the software Support service System documentation describing the structure of the software
  • 4. The Definition of Software
  • 5. Hardware (Manufacturing) vs Software (Development) Software is engineered, not manufactured. Once a hardware product has been manufactured, it is difficult or impossible to modify. In contrast, software products are routinely modified and upgraded. In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering. Unlike hardware, software costs are concentrated in design rather than production.
  • 6. Software Deteriorates Software does not wear-out, but it does deteriorate due to changes Most software models a part of reality and reality evolves. If software does not evolve with the reality that is being modeled, then it deteriorates time failure rate Hardware Design or manufacturing defects Cumulative effects of dust, vibration, environmental maladies time failure rate Software Idealized curve Actual curve change Increased failure rate due to side effects
  • 7. What are the attributes of good Software? • Maintainability – Software must (easily) evolvable to meet changing needs • Dependability – Software must be trustworthy (work with all data) • Efficiency – Software should not make wasteful use of system resources • Usability – Software must be usable by the users for which it was designed The software should deliver the required functionality and performance to the user and should be maintainable, dependable, efficient and usable.
  • 8. Where is Software? The economies of ALL developed nations are dependent on software. More and more systems are software controlled • In computer systems o Operating systems (eg: Windows, Linux) o End-user programs (eg:Photoshop, dreamveawer) o Compilers (eg: javac, pascal, gcc) • Aircrafts, Space Shuttles (Eg: F16, Discovery Space Shuttle ) • Cellular Phones (Eg: IOS, Android etc.) • Education (Eg: Distance Learning) • Entertainment, Transportation • Health systems, Military • And many more….
  • 9. Granularity of Software Trivial: 1 month, 1 programmer, 500 LOC Ex: Intro programming assignments Very small: 3 months, 1 programmer, 2000 LOC, Ex: Course project Small: 1 year, 3 programmers, 50K LOC, Ex: Mobile App Medium: 3 years, 10s of programmers, 100K LOC Ex: Optimizing compiler Large: 5 years, 100s of programmers, 1M LOC, Ex: MS Word, Excel Very large: 10 years, 1000s of programmers, 10M LOC Ex: Air traffic control, Telecommunications, space shuttle
  • 10. What type of software? Small single-developer projects can typically get by without Software Engineering – typically no deadlines, small budget (freeware), not safety- critical Software Engineering is especially required for – Medium to large projects (50,000 lines of code and up) – multiple subsystems – teams of developers (often geographically dispersed) – safety-critical systems (software that can kill people...)
  • 11. What is Software Engineering? 20 Challenge: Dealing with complexity and change Software Engineering is a collection of techniques, methodologies and tools that help with the production of A high quality software system developed with a given budget before a given deadline while change occurs
  • 12. Computer Scientist vs Software 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. How successful have we been in Software Engineering? Perform tasks more quickly and effectively – Word processing, spreadsheets, e-mail Support advances in medicine, agriculture, transportation, multimedia education, and most other industries Many good stories However, software is not without problems
  • 14. If SW Engineering is so popular, why so many SWE disasters? • 1985: Therac-25(radiation theraphy) lethal radiation overdose – Reused SW from machine with HW interlock on machine without it: SW bug => 3 died • 1996: Ariane 5 rocket explosion – 1996 => wasted $370M – https://www.youtube.com/watch?v=gp_D8r-2hwk • 1999: Mars Climate Orbiter disintegration – SW used wrong units (pound-seconds vs. metric-seconds) => wasted $325M • 2005: FBI Virtual Case File project abandoned – give up after 5 years of work => wasted $170M14
  • 15. ARIANE Flight 501 • Disintegration after 39 sec • Caused by wrong data being sent to On Board Computer • Large correction for attitude deviation • Software exception in Inertial Reference System after 36 sec. – Overflow in conversion of a variable from 64- bit floating point to 16-bit signed integer – Of 7 risky conversions, 4 were protected – Reasoning: physically limited, or large margin of safety – In case of exception: report failure and shut down http://www.devtopics.com/20-famous-software-disasters-part-4/ http://en.wikipedia.org/wiki/List_of_software_bugs
  • 16. Why Software Engineering ? Software failure can be very serious – Software controls safety critical systems – Software protects sensitive data – Software is involved in systems which handle money Software Engineering has to – Produce software which has a very low chance of faulting – Be able to demonstrate/proof that software has very low chance of fault • Testing or program proving
  • 17. Participants and Roles • Developing software requires collaboration of many people with different backgrounds and interests. • All the persons involved in the software project are called participants (stakeholders) • The set of responsibilities in the project of a system are defined as roles. • A role is associated with a set of tasks assigned to a participant. • Role is also called stakeholder • The same participant can fulfill multiple roles. • Example of roles?...
  • 18. Case
  • 20. Work Products • Workproduct is an artifact that is produced during the development, such as documentation of software • Internal work product - work product that is defined for the project’s internal use. • Deliverable – work product that must be delivered to the client. – Deliverable are usually defined prior to the start of the project and specified in the contract Examples?
  • 22. Why is software development difficult?
  • 23. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Why is software development difficult?  Change (in requirements & technology):  What kind of changes?  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 (“Second Law of Software Dynamics”).  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.
  • 24. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 Why is software development difficult?  The problem domain (also called application domain) is difficult  The solution domain is difficult  The development process is difficult to manage  Software offers extreme flexibility
  • 25. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Dealing with Complexity 1. Abstraction 2. Decomposition 3. Hierarchy
  • 26. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 1. Abstraction  Inherent human limitation to deal with complexity  The 7 +- 2 phenomena  Our short term memory cannot store more than 7+-2 pieces at the same time -> limitation of the brain  12062156875  Chunking: Group collection of objects • Group collection of objects to reduce complexity • 4 chunks: • Country-code, city-code, phone-number, Office- Part  Ignore unessential details => Models
  • 27. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Model  A model is an abstraction of a system  A system that no longer exists  An existing system  A future system to be built.
  • 28. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 We use Models to describe Software Systems  Object model: What is the structure of the system?  Functional model: What are the functions of the system?  Dynamic model: How does the system react to external events?  System Model: Object model + functional model + dynamic model
  • 29. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29 Other models used to describe Software System Development  Task Model:  PERT Chart: What are the dependencies between tasks?  Schedule: How can this be done within the time limit?  Organization Chart: What are the roles in the project?  Issues Model:  What are the open and closed issues? ⧫ What blocks me from continuing?  What constraints were imposed by the client?  What resolutions were made? ⧫ These lead to action items
  • 30. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Interdependencies of the Models System Model (Structure, Functionality, Dynamic Behavior) Issue Model (Proposals, Arguments, Resolutions) Task Model (Organization, Activities Schedule)
  • 31. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 The “Bermuda Triangle” of Modeling System Models Issue Model Task Models PERT Chart Gantt Chart Org Chart Constraints Issues Proposals Arguments Object Model Functional Model Dynamic Model class... class... class... Code Pro Con Forward Engineering Reverse Engineering
  • 32. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32  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? 2. Decomposition
  • 33. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 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
  • 34. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34 Part of Hierarchy http://www.conradbock.org/relation4.html
  • 35. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35 Is-Kind-of Hierarchy (Taxonomy) http://cs.lmu.edu/~ray/notes/devel/
  • 36. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36 Software Engineering Concepts
  • 37. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37 Software Lifecycle Activities ...and their models Subsystems Structured By class... class... class... Source Code Implemented By Solution Domain Objects Realized By System Design Object Design Implemen- tation Testing Application Domain Objects Expressed in Terms Of Test Cases ? Verified By class....? Requirements Elicitation Use Case Model Analysis
  • 38. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38 Software Lifecycle Activities
  • 39. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 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/styles: Reduce complexity even further  Many ways to deal with change  Tailor the software lifecycle to deal with changing project conditions  Use a nonlinear software lifecycle to deal with changing requirements or changing technology  Provide configuration management to deal with changing entities
  • 40. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 Reminders  Reading assignment  Chapter 1 Introduction to Software Engineering  Chapter 2 Modelling with UML  Term Project  Direct project related questions to your TA  Choice of projects