using uml, patterns, and java object-oriented software engineering chapter 1: introduction
TRANSCRIPT
Usi
ng
UM
L,
Patt
ern
s, a
nd
Java
Ob
ject-
Ori
en
ted
Soft
ware
E
ng
ineeri
ng
Chapter 1: Introduction
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Objectives of the Lectures
• Appreciate the Fundamentals of Software Engineering:
• Methodologies • Process models• Description and modeling techniques• System analysis - Requirements engineering• System design• Implementation: Principles of system development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Assumptions for this Class
• Assumption: • You have taken <Note to Instructor: Add the
prerequisite courses here>
• Beneficial: • You have had practical experience with a large
software system • You have already participated in a large software
project• You have experienced major problems.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Times and Locations• Main lecture:
• <Note to Instructor: Add the lecture time here>
• Exercises:• <Note to Instructor: Add the exercise times here>
• Written Exams: • Mid-term• Final
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Grading Criteria
• <Note to Instructor: Add grading criteria here. See Backup Slides for Examples>
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Grading Criteria
<Note to Instructor: These grading criteria currently used by the authors for a one semester course with a mid-term and a final. They most probably not reusable for your course, but they may give you an idea>
The final grade is the weighted average of the mid term (30%) and final grades (70%)
• To pass this course your final grade must be D or better• Participation in the exercises is required (admission
requirement for the final exam)• Information about the exercises will be made available on
the exercise portal• Hours per week: 3 hours (lecture) + 2 hour (exercises)• ECTS Credits: 6.0.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Focus: Acquire Technical Knowledge• Different methodologies (“philosophies”) to
model and develop software systems• Different modeling notations • Different modeling methods• Different software lifecycle models (empirical
control models, defined control models)• Different testing techniques (eg. vertical testing,
horizontal testing)• Rationale Management• Release and Configuration Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Acquire Managerial Knowledge
• Learn the basics of software project management
• Understand how to manage with a software lifecycle
• Be able to capture software development knowledge (Rationale Management)
• Manage change: Configuration Management• Learn the basic methodologies
• Traditional software development• Agile methods.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Outline of Today’s Lecture
• The development challenge• Dealing with change• Concepts: Abstraction, Modeling, Hierarchy• Methodologies• Organizational issues
• Lecture schedule• Exercise schedule• Associated Project
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Can you develop this system?
The impossibleFork
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Physical Model of the impossible Fork (Shigeo Fukuda)
See http://illusionworks.com/mod/movies/fukuda/DisappearingColumn.mov
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Physical Model of the impossible Fork (Shigeo Fukuda)
Additional material can be found on http://illusionworks.com/mod/movies/fukuda/
Images may be subject to copyright
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Why is Software Development difficult?
• The problem is usually ambiguous• The requirements are usually unclear and changing
when they become clearer• The problem domain (called application domain) is
complex, and so is the solution domain • The development process is difficult to manage• Software offers extreme flexibility• Software is a discrete system
• Continuous systems have no hidden surprises • Discrete systems can have hidden surprises! (Parnas)
David Lorge Parnas - an early pioneer in software engineering who developed the concepts of modularity and information hiding in systems which are the foundation of object oriented methodologies.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
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 18
Can we not use the Scientific Method?• Not exactly, we need ideas and hypotheses
• The scientific method, unfortunately, has never quite gotten around to saying exactly where to pick up these hypotheses.
• The traditional scientific method has always been at the very best, 20-20 hindsight
• It's good for seeing where you've been. It's good for testing of what you think you know
• But it can't tell you where you should to go
• Creativity, originality, inventiveness, intuition, imagination – "unstuckness," in other words – are completely outside the domain of the scientific method
• Robert Pirsig, Zen and the Art of Motorcycle Maintenance, p. 251, Bantam Books, 1984.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
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 20
Computer Science vs. Engineering
• Computer Scientist• Assumes techniques and tools have to be developed. • Proves theorems about algorithms, designs languages,
defines knowledge representation schemes• Has infinite time…
• Engineer• Develops a solution for a problem formulated by a client• Uses computers & languages, techniques and tools
• Software Engineer• Works in multiple application domains• Has only 3 months...• …while changes occurs in the problem formulation
(requirements) and also in the available technology.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 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
Software Engineering: A Working Definition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
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 23
Course OutlineDealing with Complexity
• Notations (UML, OCL)• Requirements Engineering,
Analysis and Design• OOSE, SA/SD, scenario-based
design, formal specifications
• 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
Application of these Concepts in the Exercises
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Exercises
• The exercise sessions are organized by teams• Registration, attending the exercise sessions
and attempting the homeworks is mandatory.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
TextbookBernd Bruegge, Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns and Java, 3rd Edition
Publisher: Prentice Hall, Upper Saddle River, NJ, 2009;
ISBN-10: 0136061257 ISBN-13: 978-0136061250
• Additional readings will be added during each lecture.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Lecture Content and Course Website
• Lecture Portal:• The lecture slides will be posted in PDF format after the
lecture is given
• Exercise Portal:• Separate home page will be set up for the exercise materials
• What happens if I don’t participate in the exercises?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
What happens if I don’t participate in the exercises?
Play the moviehttp://www.youtube.com/watch?v=_VFS8zRo0pc
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
What to do next?
• Reading for the next two weeks• Chapter 1 and 2, Bruegge&Dutoit, Object-
Oriented Software Engineering
• Visit the Lecture Portal
• Register for the Lecture Forum
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Additional Slides