Object-Oriented Software Engineering
Using UML, Patterns, and Java
Chapter 1: Introduction
Textbook
Bernd Bruegge, Allen H. Dutoit
Object-Oriented Software Engineering:
Using UML, Patterns and Java, 3rd
Edition
Publisher: Prentice Hall, Upper Saddle
River, NJ, 2010;
ISBN-10: 0136061257
ISBN-13: 978-0136061250
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Software Development is more than
just Writing Code
It is problem solving
Understanding a problem
Proposing a solution and plan
Engineering a system based on the proposed solution
using a good design
It is about dealing with complexity
Creating abstractions and models
Notations for abstractions
It is knowledge management
Elicitation, analysis, design, validation of the system
and the solution process
It is rationale management
Making the design and development decisions explicit
to all stakeholders involved.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Techniques, Methodologies and
Tools
Techniques:
Formal procedures for producing results using
some well-defined notation
Methodologies:
Collection of techniques applied across
software development and unified by a
philosophical approach
Tools:
Instruments or automated systems to
accomplish a technique
Interactive Development Environment (IDE)
Computer Aided Software Engineering (CASE)
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Software Engineering: A
Working Definition
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
Challenge: Dealing with complexity and
change
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
20
Software Engineering:
A Problem Solving Activity
Analysis:
Understand the nature of the problem and break the
problem into pieces
Synthesis:
Put the pieces together into a large structure
For problem solving we use techniques,
methodologies and tools.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Software Engineering
Dealing with Complexity
Notations (UML, OCL)
Requirements Engineering,
Analysis and Design
Testing
Vertical and horizontal testing
Dealing with Change
Rationale Management
Knowledge Management
Patterns
Release Management
Configuration Management,
Continuous Integration
Software Life Cycle
Linear models
Iterative models
Activity-vs Entity-based views
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java