Using UML Patterns and Java ObjectOriented Software Engineering
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction
Requirements for this Class ¨ You are proficient in a programming language, but you have no experience in analysis or design of a system ¨ You want to learn more about the technical aspects of analysis and design of complex software systems Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Objectives of the Class ¨ Appreciate Software Engineering: w Build complex software systems in the context of frequent change ¨ Understand how to w produce a high quality software system within time w while dealing with complexity and change ¨ ¨ Acquire technical knowledge (main emphasis) Acquire managerial knowledge Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Acquire Technical Knowledge ¨ ¨ ¨ Understand System Modeling Learn UML (Unified Modeling Language) Learn different modeling methods: t t ¨ Use Case modeling Object Modeling Dynamic Modeling Issue Modeling Learn how to use Tools: w CASE (Computer Aided Software Engineering) t ¨ Tool: Together-J Component-Based Software Engineering w Learn how to use Design Patterns and Frameworks Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Acquire Managerial Knowledge ¨ Understand the Software Lifecycle w Process vs Product w Learn about different software lifecycles w Greenfield Engineering, Interface Engineering, Reengineering Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Software Production has a Poor Track Record Example: Space Shuttle Software ¨ ¨ ¨ Cost: $10 Billion, millions of dollars more than planned Time: 3 years late Quality: First launch of Columbia was cancelled because of a synchronization problem with the Shuttle's 5 onboard computers. w Error was traced back to a change made 2 years earlier when a programmer changed a delay factor in an interrupt handler from 50 to 80 milliseconds. w The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing. ¨ Substantial errors still exist. w Astronauts are supplied with a book of known software problems "Program Notes and Waivers". Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
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 (methods): w Formal procedures for producing results using some well-defined notation ¨ Methodologies: w Collection of techniques applied across software development and unified by a philosophical approach ¨ Tools: w Instrument or automated systems to accomplish a technique Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Software Engineering: Definition Software Engineering is a collection of techniques, methodologies and tools that help with the production of ¨ ¨ ¨ a high quality software system with a given budget before a given deadline while change occurs. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 20
Scientist vs Engineer ¨ Computer Scientist w Proves theorems about algorithms, designs languages, defines knowledge representation schemes w Has infinite time… ¨ Engineer w Develops a solution for an application-specific problem for a client w Uses computers & languages, tools, techniques and methods ¨ Software Engineer w Works in multiple application domains w Has only 3 months. . . w …while changes occurs in requirements and available technology Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Dealing with Complexity 1. 2. 3. Abstraction Decomposition Hierarchy Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
1. Abstraction ¨ Inherent human limitation to deal with complexity w The 7 +- 2 phenomena ¨ ¨ Chunking: Group collection of objects Ignore unessential details: => Models Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Models are used to provide abstractions ¨ System Model: w Object Model: What is the structure of the system? What are the objects and how are they related? w Functional model: What are the functions of the system? How is data flowing through the system? w Dynamic model: How does the system react to external events? How is the event flow in the system ? ¨ Task Model: w PERT Chart: What are the dependencies between the tasks? w Schedule: How can this be done within the time limit? w Org Chart: What are the roles in the project or organization? ¨ Issues Model: w What are the open and closed issues? What constraints were posed by the client? What resolutions were made? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Interdependencies of the Models System Model (Structure, Functionality, Dynamic Behavior) Issue Model (Proposals, Arguments, Resolutions) Bernd Bruegge & Allen H. Dutoit Task Model (Organization, Activities Schedule) Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Model-based software Engineering: Code is a derivation of object model Analysis phase results in object model (UML Class Diagram): * Stock. Exchange Lists * Company ticker. Symbol Implementation phase results in code public class Stock. Exchange { public Vector m_Company = new Vector(); }; public class Company { public int m_ticker. Symbol public Vector m_Stock. Exchange = new Vector(); }; Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
2. Decomposition ¨ ¨ A technique used to master complexity (“divide and conquer”) Functional decomposition w The system is decomposed into modules w Each module is a major processing step (function) in the application domain w Modules can be decomposed into smaller modules ¨ Object-oriented decomposition w The system is decomposed into classes (“objects”) w Each class is a major abstraction in the application domain w Classes can be decomposed into smaller classes Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Functional Decomposition System Function Read Input Transform Load R 10 Bernd Bruegge & Allen H. Dutoit Transform Top Level functions Produce Output Level 1 functions Level 2 functions Produce Output Add R 1, R 10 Object-Oriented Software Engineering: Using UML, Patterns, and Java Machine Instructions 17
What is This? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Object Oriented Decomposition(Model of an Eskimo) Eskimo Size Dress() Smile() Sleep() * Shoe Size Color Type Wear() Bernd Bruegge & Allen H. Dutoit Coat Size Color Type Wear() Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Class Identification ¨ ¨ Class identification is crucial to object-oriented modeling Basic assumption: 1. We can find the classes for a new software system: We call this Greenfield Engineering 2. We can identify the classes in an existing system: We call this Reengineering 3. We can create a class-based interface to any system: We call this Interface Engineering Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
What is this Thing? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Modeling a Briefcase Brief. Case Capacity: Integer Weight: Integer Open() Close() Carry() Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
A new Use for a Briefcase Brief. Case Capacity: Integer Weight: Integer Open() Close() Carry() Sit. On. It() Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
3. Hierarchy ¨ We got abstractions and decomposition w This leads us to chunks (classes, objects) which we view with object model ¨ ¨ ¨ Another way to deal with complexity is to provide simple relationships between the chunks One of the most important relationships is hierarchy 2 important hierarchies w "Part of" hierarchy w "Is-kind-of" hierarchy Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Part of Hierarchy Computer I/O Devices CPU Memory Cache ALU Program Counter Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Is-Kind-of Hierarchy (Taxonomy) Cell Muscle Cell Striate Bernd Bruegge & Allen H. Dutoit Smooth Blood Cell Red White Nerve Cell Cortical Object-Oriented Software Engineering: Using UML, Patterns, and Java Pyramidal 26
So where are we right now? ¨ Three ways to deal with complexity: w Abstraction w Decomposition w Hierarchy ¨ Object-oriented decomposition is a good methodology w Unfortunately, depending on the purpose of the system, different objects can be found ¨ How can we do it right? w Many different possibilities w Our current approach: Start with a description of the functionality (Use case model), then proceed to the object model w This leads us to the software lifecycle Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Software Lifecycle Activities Requirements Elicitation Analysis Expressed in Terms Of System Design Structured By . . . and their models Object Design Implementation Implemented By Realized By Verified By class. . . Use Case Model Bernd Bruegge & Allen H. Dutoit Application Domain Objects Subsystems Testing Solution Domain Objects Object-Oriented Software Engineering: Using UML, Patterns, and Java Source Code ? class. . ? Test Cases 28
Software Lifecycle Definition ¨ Software lifecycle: w Set of activities and their relationships to each other to support the development of a software system ¨ Typical Lifecycle questions: w Which activities should I select for the software project? w What are the dependencies between activities? w How should I schedule the activities? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Reusability ¨ ¨ A good software design solves a specific problem but is general enough to address future problems (for example, changing requirements) Experts do not solve every problem from first principles w They reuse solutions that have worked for them in the past ¨ Goal for the software engineer: w Design the software to be reusable across application domains and designs ¨ How? w Use design patterns and frameworks whenever possible Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Design Patterns and Frameworks ¨ Design Pattern: w A small set of classes that provide a template solution to a recurring design problem w Reusable design knowledge on a higher level than data structures (link lists, binary trees, etc) ¨ Framework: w A moderately large set of classes that collaborate to carry out a set of responsibilities in an application domain. t Examples: User Interface Builder Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Summary ¨ Software engineering is a problem solving activity w Developing quality software for a complex problem within a limited time while things are changing ¨ There are many ways to deal with complexity w w w ¨ Modeling, decomposition, abstraction, hierarchy Issue models: Show the negotiation aspects System models: Show the technical aspects Task models: Show the project management aspects Use Patterns: Reduce complexity even further Many ways to do deal with change w Tailor the software lifecycle to deal with changing project conditions w Use a nonlinear software lifecycle to deal with changing requirements or changing technology Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
- Slides: 31