L1_Introduction_ch01lect1

advertisement
Object-Oriented Software Engineering
Using UML, Patterns, and Java
Chapter 1: Introduction
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
2
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
3
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
4
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
5
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
6
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
7
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
8
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
9
Can you develop this system?
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?
The impossible
Fork
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
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
21
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
22
Course Outline
Dealing 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
23
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
24
Textbook
Bernd 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
25
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
26
What happens if I don’t participate in the
exercises?
Play the movie
http://www.youtube.com/watch?v=_VFS8zRo0pc
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
27
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
28
Additional Slides
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
29
Download