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