Chapter 5, Object Modeling

Similar documents
Chapter 5, Analysis: Object Modeling

Course "Softwaretechnik" Analysis Model: Objects

Software Engineering I: Software Technology WS 2008/09. Analysis

Modeling with UML eerin gin n are E oftw S ted rien ject-o b O

Chapter 5, Analysis: Dynamic Modeling

Progress Report. Object-Oriented Software Development: Requirements elicitation (ch. 4) and analysis (ch. 5) Object-oriented software development

Chapter 2, Modeling with UML, Part 2

Page 1. Dynamic Modeling. How do you find classes? Dynamic Modeling with UML. UML Interaction Diagrams. UML State Chart Diagram.

Introduction to Software Engineering: Analysis

Chapter 2, Modeling with UML, Part 2

Chapter 5, Analysis: Dynamic Modeling

Chapter 5, Analysis: Dynamic Modeling

Progress Report. Object-Oriented Software Development: Requirements elicitation and analysis. Object-oriented analysis, design, implementation

Chapter 4 Requirements Elicitation

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 09/29/2015

Outline of Lecture 3. Identifying Objects. Requirements Analysis Overview. Actors, Objects and Classes

Object Design II: Design Patterns

Chapter 5, Analysis: Dynamic Modeling

Chapter 2, lecture 2 Modeling with UML

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/03/2015

Chapter 2, Modeling with UML, Part 2

Chapter 2, Modeling with UML, Part 2

Chapter 4 Requirements Elicitation

Chapter 2, Modeling with UML

Course "Softwaretechnik" Book Chapter 2 Modeling with UML

Introduction to Unified Modelling Language (UML)

Software Engineering Fall 2014

Chapter 4 Requirements Elicitation (Recueil des éxigences)

Object-Oriented Software Engineering Conquering Complex and Changing Systems. Chapter 6, System Design Lecture 1

Äriprotsesside modelleerimine ja automatiseerimine Loeng 7 Valdkonna mudel

Principles of Software Construction: Objects, Design, and Concurrency

Modeling with UML. (1) Use Case Diagram. (2) Class Diagram. (3) Interaction Diagram. (4) State Diagram

MSc programme (induction week) Department of Informatics INTRODUCTION TO UML

Requirements Elicitation

Chapter 6 System Design: Decomposing the System

Use Case Modeling. Bernd Bruegge Carnegie Mellon University School of Computer Science. 8 September Bernd Brügge Software Engineering 1

Chapter 8, Design Patterns Visitor

CSCU9T4: Managing Information

Lecture 5 STRUCTURED ANALYSIS. PB007 So(ware Engineering I Faculty of Informa:cs, Masaryk University Fall Bühnová, Sochor, Ráček

System Modeling III: Dynamic Modeling

Introducing the UML Eng. Mohammed T. Abo Alroos

Lesson 11. W.C.Udwela Department of Mathematics & Computer Science

About this module. Object-oriented analysis and design. About this module. Analysis

Chapter 10 Object-Oriented Design Principles

Software Engineering

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

Slide 1 Welcome to Fundamentals of Health Workflow Process Analysis and Redesign: Process Mapping: Entity-Relationship Diagrams. This is Lecture e.

SOFTWARE ENGINEERING UML FUNDAMENTALS. Saulius Ragaišis.

Conceptual and Logical Design

CSE 530A. ER Model. Washington University Fall 2013

UML Is Not a Methodology

Accessibility. EEC 521: Software Engineering. Classes and Objects. Inheritance. Classes and Objects (OO Analysis)

Darshan Institute of Engineering & Technology for Diploma Studies

Chapter 7, System Design: Addressing Design Goals

Chapter 6: Entity-Relationship Model. The Next Step: Designing DB Schema. Identifying Entities and their Attributes. The E-R Model.

The Unified Modeling Language. Asst.Prof.Dr. Supakit Nootyaskool IT-KMITL

Chapter 5: Structural Modeling

Object-Oriented Systems Analysis and Design Using UML

The Next Step: Designing DB Schema. Chapter 6: Entity-Relationship Model. The E-R Model. Identifying Entities and their Attributes.

Object Oriented Software Development CIS Today: Object Oriented Analysis

6. System Design: Decomposing the System

MechEng SE3 Lecture 7 Domain Modelling

Chapter 2: The Object-Oriented Design Process

A - 1. CS 494 Object-Oriented Analysis & Design. UML Class Models. Overview. Class Model Perspectives (cont d) Developing Class Models

Lecture 16+17: Modeling with UML

CHAPTER 1. Topic: UML Overview. CHAPTER 1: Topic 1. Topic: UML Overview

Introduction to Software Engineering. ECSE-321 Unit 9 Architectural Design Approaches

Lecture 8 Requirements Engineering

Fundamentals of Health Workflow Process Analysis and Redesign

SOFTWARE MODELING AND DESIGN. UML, Use Cases, Patterns, and. Software Architectures. Ki Cambridge UNIVERSITY PRESS. Hassan Gomaa

Chapter 2, Modeling with UML

Topic : Object Oriented Design Principles

Class Diagrams in Analysis

Software Service Engineering

The Entity-Relationship Model (ER Model) - Part 1

Lecture 4. Lecture 4: The E/R Model

Object-Oriented Systems Development: Using the Unified Modeling Language

Chapter 8, Object Design: Reusing Pattern Solutions

Object-Oriented Design

Chapter 8, Object Design: Reuse and Patterns

Fuente. conceptual data modelling model

MTAT Software Engineering. Written Exam 17 January Start: 9:15 End: 11:45

Chapter 5, Analysis: Dynamic Modeling

Compositional Model Based Software Development

SOFTWARE ENGINEERING Prof.N.L.Sarda Computer Science & Engineering IIT Bombay. Lecture #10 Process Modelling DFD, Function Decomp (Part 2)

Course "Softwaretechnik" Book Chapter 5 Analysis: Dynamic Modeling

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD TM : ,

Object Oriented Paradigm

Software Engineering from a

Summary of the course lectures

Chapter 6: Entity-Relationship Model

Course 3 7 March

Object-Oriented Software Engineering Practical Software Development using UML and Java

LABORATORY 1 REVISION

Introduction to Computers and Programming Languages. CS 180 Sunil Prabhakar Department of Computer Science Purdue University

Lecture 15: Modeling with UML

Principles of Software Construction: Objects, Design, and Concurrency

Lecture 17: (Architecture V)

CPS122 Lecture: Course Intro; Introduction to Object-Orientation

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 09/17/2015

Transcription:

Chapter 5, Object Modeling Using UML, Patterns, and Java Object-Oriented Software Engineering

Where we are, where we are going problem statement Requirements elicitation Requirements Specification nonfunctional requirements functional model Analysis Analysis Model dynamic model analysis object model Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2

Reality and Model Reality R: Real Things, People, Processes happening during some time, Relationship between things Model M: Abstractions from (really existing or only thought of ) things, people, processes and relationships between these abstractions. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3

What is a good model? Relationships, which are valid in reality R, are also valid in model M. I : Mapping of real things in reality R to abstractions in the model M abbildet (Interpretation) f M : relationship between abstractions in M f R : relationship between real things inr In a good model the following diagram is commutative: I M R f M f R M R I Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4

Models of models of models... Modeling is relative. We can think of a model as reality and can build another model from it (with additional abstractions).. M 2 f M2 M 2 Analysis I 2 f M1 The development of Software-Systemes is a Transformation of Models: Analysis, Design, Implementation,Testing M 1 Requirements Elicitation R f R M 1 R I 1 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5

How do we model complex systems (Natural Systems, Social Systems, Artificial Systems)? Epistemology Describes our knowledge about the system Knowledge about Causality (Dynamic Model) Knowledge about Relationships (Object model) Knowledge about Functionality (Functional model) State Diagrams (Harel) Sequence Diagrams (Lamport) Activity Diagrams ( good old Flow-charts Petri Nets(Petri) Inheritance Frames,SemanticNet works (Minsky) Uncertain Knowledge Fuzzy Sets (Zadeh) Formal Specifications (Liskov) Data Relationship (E/R Modeling, Chen) Neural Networks DataFlow Diagrams (SA/SD) Scenarios/Use Cases (Jacobsen) Fuzzy Frames (Graham) Class Diagrams ( E/R + Inheritance, Rumbaugh) Hierarchical Database Model (IMS) Network Database Model (CODASYL) Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Relational Database Model (Codd)

Activities during Object Modeling Main goal: Find the important abstractions What happens if we find the wrong abstractions? Iterate and correct the model Steps during object modeling 1. Class identification Based on the fundamental assumption that we can find abstractions 2. Find the attributes 3. Find the methods 4. Find the associations between classes Order of steps Goal: get the desired abstractions Order of steps secondary, only a heuristic Iteration is important Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7

Class Identification Identify the boundaries of the system Identify the important entities in the system Class identification is crucial to object-oriented modeling Basic assumption: 1. We can find the classes for a new software system (Forward Engineering) 2. We can identify the classes in an existing system (Reverse Engineering) Why can we do this? Philosophy, science, experimental evidence Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8

Class identification is an ancient problem Objects are not just found by taking a picture of a scene or domain The application domain has to be analyzed. Depending on the purpose of the system different objects might be found How can we identify the purpose of a system? Scenarios and use cases Another important problem: Define system boundary. What object is inside, what object is outside? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9

Pieces of an Object Model Classes Associations (Relations) Generic associations Canonical associations Part of- Hierarchy (Aggregation) Kind of-hierarchy (Generalization) Attributes Detection of attributes Application specific Attributes in one system can be classes in another system Turning attributes to classes Operations Detection of operations Generic operations: Get/Set, General world knowledge, design patterns Domain operations: Dynamic model, Functional model Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10

Object vs Class Object (instance): Exactly one thing This lecture on Software Engineering on November 15 from 14:30-16:00 A class describes a group of objects with similar properties Game, Tournament, mechanic, car, database Object diagram: A graphic notation for modeling objects, classes and their relationships ("associations"): Class diagram: Template for describing many instances of data. Useful for taxonomies, patters, schemata... Instance diagram: A particular set of objects relating to each other. Useful for discussing scenarios, test cases and examples Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11

How do you find classes? Finding objects is the central piece in object modeling Learn about problem domain: Observe your client Apply general world knowledge and intuition Take the flow of events and find participating objects in use cases Try to establish a taxonomy Apply design knowledge: Distinguish different types of objects Apply design patterns Do a syntactic analysis of problem statement, scenario or flow of events Abbott Textual Analysis, 1983, also called noun-verb analysis Nouns are good candidates for classes Verbs are good candidates for opeations Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12

Finding Participating Objects in Use Cases Pick a use case and look at its flow of events Find terms that developers or users need to clarify in order to understand the flow of events Look for recurring nouns (e.g., Incident), Identify real world entities that the system needs to keep track of (e.g., FieldOfficer, Dispatcher, Resource), Identify real world procedures that the system needs to keep track of (e.g., EmergencyOperationsPlan), Identify data sources or sinks (e.g., Printer) Identify interface artifacts (e.g., PoliceStation) Be prepared that some objects are still missing and need to be found: Model the flow of events with a sequence diagram Always use the user s terms Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13

Object Types Entity Objects Represent the persistent information tracked by the system (Application domain objects, Business objects ) Boundary Objects Represent the interaction between the user and the system Control Objects: Represent the control tasks performed by the system Having three types of objects leads to models that are more resilient to change. The interface of a system changes more likely than the control The control of the system change more likely than the application domain Object types originated in Smalltalk: Model, View, Controller (MVC) Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14

Example: 2BWatch Objects Year ChangeDate Button Month LCDDisplay Day Entity Objects Control Objects Interface Objects Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15

Naming of Object Types in UML UML provides several mechanisms to extend the language UML provides the stereotype mechanism to present new modeling elements <<Entity>> Year <<Entitity>> Month <<Entity>> Day <<Control>> ChangeDate <<Boundary>> Button <<Boundary>> LCDDisplay Entity Objects Control Objects Boundary Objects Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16

Identifying boundary objects Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17

Identifying control and entity objects Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18

Recommended Naming Convention for Object Types To distinguish the different object types on a syntactical basis, we recommend suffixes: Objects ending with the _Boundary suffix are boundary objects Objects ending with the _Control suffix are control objects Entity objects do not have any suffix appended to their name. Year Month Day ChangeDate_ Control Button_Boundary LCDDisplay_Boundary Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19

Identifying attributes and methods of a class Identifying methods Look at verbs in the problem statement Look at interactions between objects in the use case scenarios Look at interactions in the sequence diagrams Use prior knowledge of the problem domain Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20

Identifying associations between classes Inheritance is the strongest form of association; it is based on a kind of relationship that is easy to identify Aggregation is the next strongest form of association; it is based on a part of relationship A strong form of aggregation is composition where the part uniquely belongs to the whole Other associations are more difficult to find Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21

Example: Flow of events The customer enters a store with the intention of buying a toy for his child with the age of n. Help must be available within less than one minute. The store owner gives advice to the customer. The advice depends on the age range of the child and the attributes of the toy. The customer selects a dangerous toy which is kind of unsuitable for the child. The store owner recommends a yellow doll. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22

Mapping parts of speech to object model components [Abbott, 1983] Part of speech Model component Example Proper noun object Jim Smith Improper noun class Toy, doll Doing verb method Buy, recommend being verb inheritance is-a (kind-of) having verb aggregation has an modal verb constraint must be adjective attribute 3 years old transitive verb method enter intransitive verb method (event) depends on Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23

Another Example Flow of events: The customer enters the store to buy a toy. Ithas to beatoy that his daughterlikes and itmust costless than 50 Euro. He tries a videoga m e, which uses a data glove and a head-mounted display. He likes it. Is this a good use Case? Not quite! An assistant helps him. The suitability ofthe game depends on the age ofthe child. His daughter is only 3 years old. The assistant recommends another type oftoy, namely the boardga me M onopoly". Monopoly is probably a left over from the scenario The use case should terminate with the customer leaving the store Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24

Textual Analysis using Abbot s technique Example Monopoly" toy" "3 years old" enters" depends on." is a", either..or", kind of " "Has a ", consists of" must be", less than " Grammatical construct Concrete Person, Thing noun Adjective verb Intransitive verb Classifying verb Possessive Verb modal Verb UML Component Object class Attribute Operation Operation (Event) Inheritance Aggregation Constraint Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25

Generation of a class diagram from flow of events Customer store? enter() daughter age Flow of events: The customer er enters enters the store to store buy a toy. Ithas buy to be atoy thathis daughter likes and toy it must costless daughter than 50 Euro. He tries avideogame, which less uses than a data 50 glove Euro and a head-mounted videoga display. mehe likes it. suitable * toy toy price buy() buy() like() videogame boardgame An assistant helps him. The suitability of the game depends on the age ofthe depends child. His daughteris ageonly 3 years old. The assistant recom m e nds anothertype oftoy, nam ely a boardgame. The customer buy the game and type leaves oftoy the store boardgame Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26

Order of activities in modeling 1. Formulate a few scenarios with help from the end user and/or application domain expert. 2. Extract the use cases from the scenarios, with the help of application domain expert. 3. Analyse the flow of events, for example with Abbot's textual analysis. 4. Generate the class diagrams, which includes the following steps: 1. Class identification (textual analysis, domain experts). 2. Identification of attributes and operations (sometimes before the classes are found!) 3. Identification of associations between classes 4. Identification of multiplicities 5. Identification of roles 6. Identification of constraints Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27

Avoid Ravioli Models Bank Name * Account Amount CustomerId AccountId AccountI d Deposit() Withdraw() GetBalance() * Has Customer Name CustomerId Savings Account Checking Account Mortgage Account Don t put too many classes into the same package: 7+-2 (or even 5+-2) Withdraw() Withdraw() Withdraw() Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28

Put Taxonomies on a separate Diagram Account Amount CustomerId AccountId AccountI d Deposit() Withdraw() GetBalance() Savings Account Checking Account Mortgage Account Withdraw() Withdraw() Withdraw() Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29

Project Management Heuristics Explicitly schedule meetings for object identification First just find objects Then try to differentiate them between entity, interface and control objects Find associations and their multiplicity Unusual multiplicities usually lead to new objects or categories Identify Inheritance: Look for a Taxonomy, Categorize Identify Aggregation Allow time for brainstorming, Iterate, iterate, iterate, Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30

Who uses class diagrams? Purpose of Class diagrams : The description of the static properties of a system (main purpose) Who uses class diagrams? The customer and the end user are often not interested in class diagrams. They usually focus more on the functionality of the system. The application domain expert uses class diagrams to model the application domain The developer uses class diagrams during the development of a system,that is, during analysis, system design, object design and implementation. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31

Class-diagrams have different types of users According to the development activity, the developer plays different roles. Analyst System-Designer, DetailedDesigner Implementor. In small systems some of the roles do not exist or are played by thesameperson. Each of these roles has a different view about the models. Before I describe these different views, I want to distinguish the types of classes that appear in class diagrams. Application domain classes Solution domain classes Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32

Application domain vs solution domain Application domain: The problem domain (financial services, meteorology, accident management, architecture, ). Application domain class: An abstraction in the application domain. If we model business applications, these classes are also called business objects. Example: Board game, Tournament Solution domain: Domains that help in the solution of problems (tele communication, data bases, compiler construction, operting systems,.) Solution domain class: An abstraction, that is introduced for technical reasons, because it helps in the solution of a problem. Examples: Tree, Hashtable, Scheduler Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33

The Role of the Analyst The analyst is interested in application classes: The associations between classes are relationships between abstractions in the application domain. whether the use of inheritance in the model reflect the taxonomies in the application domain. Definition Taxonomy: A hierarchy of abstractions The analyst is not interested in the exact signature of operations. in solution classes. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34

Designer The designer focuses on the solution of the problem, that is the solution domain. Design consists of many tasks (subsystem decomposition, selection of the hardware platform, data management system, etc.). An important design problem is the specification of interfaces: The designer describes the interface of classes (object design) and subsystems (system design). The goal of the designer is usability and reusability of interface Design-Usability: the interfaces are usable from as many classes as possible within in the system. Design-Reusability: Definition of interfaces, such that they can also be used in other (future) software systems. => Class libraries. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35

Three Types of Implementors Class implementor: Implements the class. The implementor chooses appropriate data structures (for the attributes) and algorithms (for the operations), and realizes the interface of the class ina programming language. Class extender: Extends the class by a subclass, which is needed for a new problem or a new application domain. Class-user: The programmer, who wants to use an existing class (e.g. a class from a class library or a class from another subsystem). The class user is only interested in the Signatures of the class operations and the preconditions, under which they can be invoked. The class user is not so much interested in the implementation of the class. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36