Software Engineering

advertisement
Object-Oriented Software Engineering
Using UML, Patterns, and Java
Chapter 1: Introduction
Objectifs des cours
• Apprécier les fondammentales du Génie Logiciel:
•
•
•
•
•
Methodologies
Techniques de description et de modelisation
Analyse du système - Ingénierie des exigences
Conception du système
Implementation: Principe de développement du
système.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
2
Prérequis pour le cours
• Prérequis :
• Vous avez déjà fait de la COO
•  vous avez des bases en UML
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
3
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
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
4
Outline of Today’s Lecture
• The development challenge
• Dealing with change
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
5
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
6
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
7
Can you develop this system?
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
8
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
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
10
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
(gestion du raisonement)
• Making the design and development
decisions explicit to all stakeholders
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
involved.
11
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
12
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
13
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
14
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
15
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
16
Course Outline
Dealing with Complexity
• Notations (UML, OCL)
• Requirements Engineering,
Analysis and Design
• OOSE (GL en français)
• 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
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
17
• C’est tout pour aujourd’hui !
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
18
Que faire ensuite ?
• Lire les lectures obligatoire et conseillée
• Obligatoire : Chapter 2 Bruegge&Dutoit, ObjectOriented Software Engineering
2.1, 2.2,
• Conseillée : Chapter 1 Bruegge&Dutoit
2.3, 2.4 (long !)
1.1, 1.2, 1.3, 1.4
• Visiter le portail de GL
• http://portail.fil.univlille1.fr/portail/index.php?dipl=MInfo&sem=S7&ue=GL
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
19
Lecture
Bernd Bruegge, Allen H. Dutoit
Object-Oriented Software Engineering:
Using UML, Patterns and Java, 3rd
Edition
Pearson New International Edition, 3/E
ISBN-10: 1292024011
ISBN-13: 9781292024011
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
20
Download