Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering Software Engineering Software systems are complex Impossible to understand by a single person Many projects are never finished: "vaporware" The problem is arbitrary complexity 1968 Definition: Software Engineering means the construction of quality software with a limited budget and a given deadline Our definition: Software Engineering means the construction of quality software with a limited budget and a given deadline in the context of constant change Emphasis is on both, on software and on engineering Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2 Course format A Single Semester Course Lectures: Theoretical foundations and background Project: Learn how to apply them in practice Lectures and Project work are interleaved Everybody will participate in a software project Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3 Objectives of this course Acquire technical knowledge Understand difference between program and software product Be able to reconstruct the analysis and design of an existing software system Be able to design and implement a subsystem that will be part of a larger system Acquire managerial knowledge produce a high quality software system within budget & time while dealing with complexity and change Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4 Emphasis is on team work Participate in collaborative design Work as a member of a project team, assuming various roles Create and follow a project and test plan Create the full range of documents associated with a software product Complete a project on time Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5 How can we accomplish this? Course Projects Internet Ordering System Internet Sales Tracking System You will organize into groups of 3 Each group will be assigned a project Details will be revealed once the groups are formed Course project will be done in 3 stages Requirements elicitation Analysis and design Implementation Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6 Assumptions and Requirements for this Class Assumption: You are proficient in a programming language (Java preferred), but have no experience in analysis or design of a system You have access to a Web Browser Course Homepage: http://www.cs.fiu.edu/~ege/cen4010/ Requirements: You have taken required courses (Programming III, Data Structures) or You have practical experience with maintaining or developing a large software system Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7 Textbooks Textbook Bernd Bruegge and Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems, Prentice Hall, 2000. Optional Readings Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns, Addison-Wesley, 1996, ISBN 0-201-63361-2 Ivar Jacobson, M. Christerson, P. Jonsson, G. Övergaard, "ObjectOriented Software Engineering" , Addison Wesley, 1992 Grady Booch, "Object-Oriented Design with Applications", Benjamin Cummings, 1991. James Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lorensen, Object-Oriented Modeling and Design, Prentice Hall, 1991 Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8 Ground Rules Attendance: Attendance and class participation is required Every project team member is responsible for the whole project Grading: Midterm exam Final exam Group project 30% 30% 40% Requirements document 30% Design document 40% System implementation 30% Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9 Project Each team must: Submit a bi-weekly activity log Submit a Requirement Analysis Document Submit an Object Design Document Demonstrate the entire running program Each of the above also require a 15 minutes in class presentation Every team member is responsible for the entire project Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10 What is Software Engineering Software Engineering is the construction of quality software with a limited budget and a given deadline How about change? Software Engineering is the construction of quality software with a limited budget and a given deadline in the context of constant change Emphasis is on both, on software and on engineering Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11 Why Software Engineering Software Systems are complex: Impossible to understand by a single person Many projects are never finished The problem being solved is arbitrarily complex Software Systems are subject to constant change Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12 What are the activities? Modeling An abstract representation of a system that allows the software engineer to answer questions about the system Models allow visualizing and understanding systems that are too large too complex too expensive for direct experimentation or do not even exist in the real world Problem Solving Find a solution with incomplete knowledge and limited resources Formulate the problem Analyze the problem Search for solutions Select an appropriate solution Specify the solution Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13 What are the activities? Knowledge Acquisition software Engineer must acquire problem domain knowledge required to develop the target system is nonlinear Rationale Management Justification of decisions issues that were addressed alternatives that were considered decisions that were made to resolve the issues the criteria that were used to guide decisions the underlying debates Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14 Concepts A project’s purpose is to develop a software system A project is composed of a number of activities An activity is composed of a number of tasks A task consumes resources and produces a work product work product: a system a Model a document resource: time equipment personnel Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15 Concepts -- UML Project * Activity is produced by WorkProduct * consumes * Task System * Participant Model Time Document Bernd Bruegge & Allen Dutoit Resources Object-Oriented Software Engineering: Conquering Complex and Changing Systems Equipment 16 Development Activities Requirement Elicitation Analysis System Design Object Design Implementation Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17 Requirement Elicitation Define the purpose of the system Describe the system in terms of actors and use cases Actors: External entities that interact with the system Use Cases: Sequences of events that describe all possible actions between actors and the system Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18 Analysis Produce a model of the system that is: Correct Complete Consistent Unambiguous Realistic Verifiable Transform use cases into object model Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19 System Design Define the design goals Decompose the system into smaller subsystems Select strategies for building the system Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20 Object Design Precisely describe object and system interfaces Select off-the shelf components Restructure the object model to attain design goals: Extensibility Understandability Performance optimization Result: Detailed object model Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21 Implementation Translate the object model into source code Implement the attributes and methods of each object Integrate all the objects Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22 Managerial Aspects Communication Rationale Management Testing Discover as many faults as possible and repair them before the delivery Software Configuration Management Monitor and control changes Software Project Management Budgeting Hiring Tracking progress, etc. Software life cycle modeling Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23 Summary Find the class website Read Chapter 1 Form your teams Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24