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