PROCESSI DI PRODUZIONE E GESTIONE DEL SOFTWARE. Analysis and Design with UML. Paola Turci

Similar documents
Software Service Engineering

Chapter 10. Object-Oriented Analysis and Modeling Using the UML. McGraw-Hill/Irwin

Interactions A link message

GRASP: Patterns for. chapter18

SOFTWARE DESIGN COSC 4353 / Dr. Raj Singh

Assigning Responsibilities (Patterns of Responsibility Assignment Principles: GRASP)

GRASP Design Patterns A.A. 2018/2019

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

Recalling the definition of design as set of models let's consider the modeling of some real software.

Responsibilities. Using several specific design principles to guide OO design decisions.

17. GRASP: Designing Objects with Responsibilities

UNIT V *********************************************************************************************

Principles of Software Construction: Objects, Design and Concurrency. Just enough UML. toad

Patterns and Testing

Software Modeling & Analysis

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING CS2353-OBJECT ORIENTED ANALYSIS AND DESIGN. Unit-I. Introduction to OOAD

Object-Oriented Design

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

UNIT 5 - UML STATE DIAGRAMS AND MODELING

Introduction to Software Engineering. 5. Modeling Objects and Classes

History of object-oriented approaches

Index. Add Diagram > Sequence Diagram command,

UML 2.0 UML 2.0. Scott Uk-Jin Lee. Division of Computer Science, College of Computing Hanyang University ERICA Campus

Week 9 Implementation

Oral Questions. Unit-1 Concepts. Oral Question/Assignment/Gate Question with Answer

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

Object-Oriented and Classical Software Engineering

Assigning Responsibilities by Larman

Object-Oriented Design

UML (Unified Modeling Language)

VEL TECH HIGH TECH Dr. RANGARAJAN Dr. SAKUNTHALA ENGINEERING COLLEGE UNIT 1 UML DIAGRAMS

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

UNIT II. Syllabus. a. An Overview of the UML: Visualizing, Specifying, Constructing, Documenting

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 5: Modelling with Classes

CS6502-OBJECT ORIENTED ANALYSIS AND DESIGN Two Marks Question with Answers Unit-I Introduction to OOAD

UNIT-4 Behavioral Diagrams

Unified Modeling Language (UML)

APPENDIX M INTRODUCTION TO THE UML

Chapter 2: The Object-Oriented Design Process

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

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION (Autonomous) (ISO/IEC Certified)

The Unified Modeling Language (UML)

Information Expert (or Expert)

Unified Modeling Language (UML)

UNIT I. 3. Write a short notes on process view of 4+1 architecture. 4. Why is object-oriented approach superior to procedural approach?

UNIT-I Introduction of Object Oriented Modeling

OBJECT ORIENTED ANALYSIS AND DESIGN SYLLABUS

Chapter : Analysis Modeling

LABORATORY 1 REVISION

ROEVER ENGINEERING COLLEGE DEPARTMENT OF INFORMATION TECHNOLOGY CS2353-OBJECT ORIENTED ANALYSIS AND DESIGN. Unit-I. Introduction to OOAD

Software Design and Analysis CSCI 2040

Introduction to UML. Danang Wahyu utomo

What is a Class Diagram? A diagram that shows a set of classes, interfaces, and collaborations and their relationships

What is a Class Diagram? Class Diagram. Why do we need Class Diagram? Class - Notation. Class - Semantic 04/11/51

PROCESSES AND THREADS

UML Modeling I. Instructor: Yongjie Zheng September 3, CS 490MT/5555 Software Methods and Tools

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Class diagrams. Modeling with UML Chapter 2, part 2. Class Diagrams: details. Class diagram for a simple watch

What s Next. INF 117 Project in Software Engineering. Lecture Notes -Spring Quarter, Michele Rousseau Set 6 System Architecture, UML

BPMN Getting Started Guide

Software Engineering Lab Manual

Experiment no 4 Study of Class Diagram in Rational Rose

Analysis and Design with UML

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

Software Engineering from a

Software Engineering with Objects and Components Open Issues and Course Summary

06. Analysis Modeling

Object Oriented Modeling

Solved Question Paper June 2017

Object Oriented Design. Program Design. Analysis Phase. Part 2. Analysis Design Implementation. Functional Specification

XVIII. Software Architectures

References: Applying UML and patterns Craig Larman

Ch 1: The Architecture Business Cycle

Course "Softwaretechnik" Book Chapter 2 Modeling with UML

CASE TOOLS LAB VIVA QUESTION

UML. By Somenath Mukhopadhyay.

Objectives. Explain the purpose and objectives of objectoriented. Develop design class diagrams

Chapter 1: Principles of Programming and Software Engineering

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION (Autonomous) (ISO/IEC Certified)

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

A PROPOSAL FOR MODELING THE CONTROL SYSTEM FOR THE SPANISH LIGHT SOURCE IN UML

12 Tutorial on UML. TIMe TIMe Electronic Textbook

Object-Oriented Design

System Sequence Diagrams. Based on Craig Larman, Chapter 10 and Anuradha Dharani s notes

Lab Manual. Object Oriented Analysis And Design. TE(Computer) VI semester

Dr.S.S.Riaz Ahamed Principal, Sathak Institute of Technology, Ramanathapuram,India.

Principles of Software Construction: Objects, Design, and Concurrency. Assigning Responsibilities to Objects. toad. Jonathan Aldrich Charlie Garrod

Final Exam CISC 475/675 Fall 2004

ADVANCED SOFTWARE DESIGN LECTURE 7 GRASP

WHAT IS SOFTWARE ARCHITECTURE?

user.book Page 45 Friday, April 8, :05 AM Part 2 BASIC STRUCTURAL MODELING

UML part I. UML part I 1/41

CSSE 374: Logical Architecture. Shawn Bohner Office: Moench Room F212 Phone: (812)

Topic : Object Oriented Design Principles

S1 Informatic Engineering

Data and Process Modelling

Basic Structural Modeling. Copyright Joey Paquet,

UML- a Brief Look UML and the Process

JOURNAL OF OBJECT TECHNOLOGY

Meltem Özturan

Transcription:

PROCESSI DI PRODUZIONE E GESTIONE DEL SOFTWARE Analysis and Design with UML Paola Turci

What is Visual Modelling? Modelling captures essential parts of the system. Dr. James Rumbaugh Order Item Ship via Computer System Business Process 2

What is UML? UML stands for Unified Modeling Language The UML combines the best from Data Modelling concepts (Entity Relationship Diagrams) Business Modelling (work flow) Object Modelling Component Modelling The UML is the standard language for visualizing, specifying, constructing, and documenting the artefacts of a software-intensive system (based on object concepts) It can be used with all processes, throughout the development life cycle, and across different implementation technologies An OMG (Object Management Group) standard 3

History of UML UML 2.0 OMG Acceptance, Nov 1997 Final submission to OMG, Sep 97 UML 1.1 First submission to OMG, Jan 97 UML partners UML 1.0 June 96 UML 0.9 Other methods Unified Method 0.8 Microsoft IBM HP Oracle Booch method OMT (Rumbaugh) Jacobson 4

UML Is Not Enough Team-Based Development Modeling Language Unified Process Most methods consist of both a modeling language and a process The modeling language is the (mainly graphical) notation that methods use to express designs. The key part for communication The process concerns advices on what steps to take in doing a design. 5

The Classical Cascade Process The phases of software development: Independent of programming paradigm; Methodologies are typically organized around this classical process. Inputs, outputs, internal activities of phases ANALYSIS DESIGN DEVELOPMENT TEST MAINTENANCE 6

Notation and Metamodels UML defines a notation and a meta-model. The notation is the graphical stuff used in models; it is the syntax of the modelling language. For instance, class diagram notation defines how items and concepts such as class, association, and multiplicity are represented. But this leads to the question of what exactly is meant by an association or multiplicity or even a class. Common usage suggests some informal definitions, but more rigor is needed One way to improve the rigor of models without sacrificing their usefulness is to define a meta-model: a diagram, usually a class diagram, that defines the notation it defines what is a well-formed model - that is, one that is syntactically correct 7

UML 2.0 - Four-Layer Metamodel Hierarchy Source : 3rd revised submission to OMG RFP ad/00-09-01 8

Why Do Analysis and Design? Diagrams are, after all, just pretty pictures. No user is going to thank you for pretty pictures; what a user wants is software that executes some motivations: Communication in particular communication with Domain Experts Natural language is too imprecise Code is precise but too detailed M. Fowler - UML Distilled UML allows to achieve a certain amount of precision without get lost in details (to highlight important details) Learning OO Object languages allow advantages but don't provide them. To use these advantages, you have to make the infamous paradigm shift Tom Hadfield The techniques define in UML were to some degree designed to help people do good OO 9

Unified Process - Overview Inception Elaboration Construction 1 2 3 Transition It is an iterative and incremental development process. Inception: business rationale for the project and the scope of the project. Elaboration: more detailed requirements, high-level analysis and design to establish a baseline architecture, and the plan for construction The construction phase consists of many iterations. Each iteration is a mini-project: analysis, design, coding, testing, and integration for the use cases assigned to each iteration. Transition phase can include beta testing, performance tuning, and user training. 10

Phases and Workflows 11

Phases and Iterations 12

Putting the UML to Work The case study is a point-of-sale terminal* system. POST is a computerized system used to record sales and handle payments (used in retail store) We have been requested to create the software to run a POST We will use an iterative-incremental development strategy Requirements Object-oriented analysis Object-oriented design Implementation *Source : Craig Larman, Applying UML and Patterns 13

ANALYSIS PHASE 14

Requirements Unambiguous description of needs or desires for a product. Goals System functions (functional requirements) - what system is supposed to do (e.g. system should do credit payment authorization) System attributes (non-functional requirements) - characteristics or dimensions of the system (e.g. fault tolerance, response time, ) Use cases (narrative descriptions, stories or cases of using a system) Analysis of risks Requirements risks Technological risks Skills risks The artefacts produced in this phase are not UML-specific 15

Non Functional Requirements - Performance Response time time to process a request Responsiveness time to acknowledge a request Latency time required to get any form of response (important in distributed systems) Throughput how many things you can do in a given amount of time (e.g. transactions per second) Load a statement of how much stress a system is under (e.g. how many users are currently connected to it). Usually a context for some other measurement. Efficiency performance divided by resources. Scalability a measure of how adding resources (usually hardware) affects performance. 16

Use Case A use case is a pattern of behaviour the system exhibits It is a relatively large end-to-end process description that typically include many steps and transactions A flow of events document is created for each use case Written from an actor point of view Specification of the interactions of an actor with the system None of the inner workings of the system is discussed, nor is the user interface described in any detail Typical contents How the use case starts and ends Normal flow of events Alternate flow of events Exceptional flow of events 17

High-level use case: Buy Items Use case : Actors: Purpose: Type: Description: Buy Items Customer, Cashier Capture a sale and its cash payment Primary A customer arrives at a checkout with items to purchase. The cashier records the purchase items and collects a cash payment. On completion, the customer leaves with the items. Source : Craig Larman, Applying UML and Patterns 18

Use Case - Example A simple format for capturing a use case involves describing Its primary scenario as a sequence of numbered steps The alternatives as variations on that sequence The amount of detail you need depends on the risk in the use case: the more risk, the more detail you need Source : Fowler, Martin - UML Distilled - Addison Wesley 19

Actors An actor is an entity external to the system who participate in the story of the use case Actors don't need to be human An actor typically stimulate the system with input events or receives something from it. Actors are represented by the role they play in the use case. Customer A single actor may perform many use cases; conversely, a use case may have several actors performing it There is one initiator actor and other participating actors 20

Identifying Use Cases Actor-based Identify the actors related to a system or organization For each actor identify the processes they initiate or participate in Event-based Identify the external events that a system must respond to Relate events to actors and use cases e.g. Cashier Customer Log In Cash Out Buy Items Refund Items The system functions should all be allocated to use cases 21

Use Case Diagram Captures system functionality as seen by users Built in early stages of development Purpose Specify the context of a system Capture the requirements of a system Validate a system s architecture Drive implementation and generate test cases Developed by analysts and domain experts The use case diagram is now part of the UML 22

POST: Simplified Use Case Diagram The entire set of use cases can be shown in summary by a use case diagram The rectangle represents the boundary of the system POST Buy Items Cashier Log In Customer Refund Purchased Items Source : Craig Larman, Applying UML and Patterns 23

Include and Extend Use Cases <<include>> relationship is used to make the structure of the use cases more efficient by collapsing repeated operation in smaller use cases that can be shared among many other use cases <<extend>> relationship is used when there are many alternatives or options within a use case. Separation of the invariant part of the use case from the variable parts The invariant part becomes the use case that is extended The variable parts become the extending use cases A use case may have many extension points, and an extending use case may extend one or more of these extension points 24

<<include>> Relationship - Notation The Buy Items use case is bound to the View Price List use case by an oriented dashed line. The arrowhead points to the included use case and has the stereotype <<include>> The description of the View Price List use case is inserted in the appropriate location of the Buy Items use case View Price List <<include>> Buy Items Source : Craig Larman, Applying UML and Patterns 25

<<extend>> Relationship - Notation The Buy Items use case has an extension point. The descriptions of the extending use cases are inserted in the Buy Items use case at the extension point They describe the optional data that need to be entered depending on the selected payment method Buy Items <<extend>> Pay by Check Pay by Card Pay in Cash Source : Craig Larman, Applying UML and Patterns 26

Terminology Scenario A specific sequence of actions that illustrates behaviors (a sequence of steps describing an interaction between a user and a system) A use case is a set of scenarios tied together by a common user goal Business vs. system use case The general usage is that a system use case is an interaction with the software, whereas a business use case discusses how a business responds to a customer or an event The focus is first on business use cases, and then to the system use cases that satisfy them. At least one set of system use cases is expected for each business use case identified 27

When to Use Use Cases I can't imagine a situation now in which I would not use use cases. They are an essential tool in requirements capture and in planning and controlling an iterative project. Capturing use cases is one of the primary tasks of the elaboration phase Martin Fowler - UML Distilled Use cases represent an external view of the system. There are no correlations between use cases and the classes inside the system How many use cases should a project have? During an OOPSLA panel discussion, several use case experts said that for a 10-person-year project, they would expect around a dozen use cases (base use cases; each use case would have many scenarios and many variant use cases). As ever, use what works for you 28

What Do We Use these Diagrams for? These diagrams are used for human communication, primarily between the analysts and stakeholders Use cases and use case diagrams are not software-structure diagrams, they do not give any information about partitioning of the software elements of the system to be created These diagrams can be useful, but they are often unnecessary Produce no document unless its need is immediate and significant Source : R. Martin, Agile Software Development 29

Ranking Use Cases Development cycles are organized around use case requirements; a development cycle is assigned to implement one or more use cases, or simplified versions of use cases. Ranking use cases High ranking need to be tackled in early development cycles. Qualities affecting the ranking Significant impact on the architectural design Significant information Include risk, time-critical or complex function Involve significant research and/or new and risky technology Represent primary line-of-business processes 30

The Domain Model Is a set of diagrams that helps to define the terms appearing in the use cases shows the key objects within the problem and their interrelationship Is a descriptive tool that is used to help humans record their decisions and communicate with each other does not represent an element of software and it does not map directly to code The objects in the domain model do not necessarily correspond to the object-oriented design of the software Use stereotype and possibly a different icon in order to avoid this kind of mistake e.g. use the <<type>> stereotype to represent a special kind of entity 31

Conceptual Model The most important artefact to create during object-oriented analysis. It may show: Concepts (a concept has a symbol, intension and extension) Associations between concepts Attributes of concepts Representation of real-word things, not of software components It is better to over specify a conceptual model with a lots of fine-grained concepts, than to under specify it Finding concepts The concept category list Identifying nouns and noun phrases in textual descriptions of a problem domain 32

Conceptual Model Central distinction between object-oriented and structured analysis Division by concepts (objects) rather than division by functions A conceptual model is not absolutely correct or wrong, but more or less useful It is a tool of communication (with Stakeholders). Developers tend to do use cases and conceptual modeling at the same time 33

POST Conceptual Model Source : Craig Larman, Applying UML and Patterns 34

Other Artifacts Source : Craig Larman, Applying UML and Patterns 35

DESIGN PHASE 36

The Architecture Represents the software structures that form the skeleton of the application Choosing the software platform A Web-based application, would be accessed by a Web browser, the data would reside at the Web server A database application, using a relational database, the forms package and the proprietary language to write the application A stand alone application, using a visual objectoriented programming language. User interfaces could be created by using visual construction tools, invoking software functions needed to store, retrieve and manipulate data 37

Layering To break apart a complicated software system Benefits: A single layer can be understood as a coherent whole without knowing much about the other layers Layers can be substituted with alternative implementations Minimize dependencies between layer Layers make good places for standardization A single layer can be used for many higher-level services Downsides: Layers encapsulate some, but not all, things well. Sometimes cascading changes Extra layers can harm performance. Transformation from one representation to another But the hardest issue is deciding what layers to have and what the responsibility of each layer should be 38

Evolution of Layers in EA In the '90s client server systems Two-layer systems: the client held the user interface and other application code; the server was usually a relational database Generally a screen was built by dragging controls onto a design area and then using property sheets to connect the controls to the database Problems came with domain logic: business rules, validations, calculations, Usually written on the client, by embedding the logic directly into the UI As the domain logic got more complex, this code became very difficult to work with Simple changes resulted in hunting down similar code in many screens Alternative: put the domain logic in the database as stored procedures Stored procedures gave limited structuring mechanisms SQL as a standard would allow changing the database vendor (few people actually did this). Stored procedures removed that option. since they are all proprietary, 39

Evolution of Layers in EA (II) The object oriented community had an answer to the problem of domain logic: Move to a three-layer system A presentation layer for the UI, a domain layer for the domain logic, and a data source layer Issues Many systems were simple Although the three-layer approach had many benefits, the tooling for client server was compelling if the problem was simple The client server tools were difficult, or even impossible, to use in a three-layer configuration 40

Evolution of Layers in EA (III) With the rise of the Web Need to deploy client server applications with a Web browser A business logic embedded in a rich client needed to be redone to have a Web interface A well-designed three-layer system could just add a new presentation layer Java, an object-oriented language, hits the mainstream The tools that appeared to build Web pages were much less tied to SQL and thus more open to a third layer 41

The Three Principal Layers Presentation logic - handles the interaction between the user and the software Can be as simple as a command-line or text-based menu system, or a rich-client graphics UI or an HTML-based browser UI Responsibilities: to display information to the user and to interpret commands from the user invoking the corresponding actions Domain logic, aka business logic Involves calculations based on inputs and stored data, validation of any data, and choosing the right data source logic Data source logic - communicates with other systems e.g. transaction monitors, other applications, messaging systems Generally a database, responsible for storing persistent data 42

The Three Principal Layers (II) Sometimes the domain layer completely hides the data source from the presentation BUT the presentation often accesses the data store directly Less pure, but it tends to work better in practice The presentation may interpret a command from the user, use the data source to pull the relevant data, and then let the domain logic manipulate that data before presenting it Asymmetric layering scheme To highlight the distinction between Presentation, an external interface for a service the system offers Data source, an interface to things providing a service used by the system 43

The Three Principal Layers (III) The kind of separation depends on how complex the application is A general advice is to make some kind of separation A simple script (e.g. to pull data from a database and display it in a Web page) may be one procedure. Still it is better to separate the three layers, e.g. by placing the behavior of each layer in separate subroutines As the system gets more complex, break the three layers into separate classes As complexity increased, divide the classes into separate packages A steady rule about dependencies The domain and data source should never be dependent on the presentation To recognize domain logic from other forms of logic The domain logic leaks into the presentation If there is the need to duplicate any functionality in order to add a different presentation; e.g. a command-line interface to a Web application Similarly, if you have to duplicate logic to replace a relational database with an XML file Separation between layers is useful even if the layers are all running on one physical machine 44

Choosing Where to Run Layers Running everything on servers. An HTML front end that uses a Web browser Everything is easy to upgrade and fix No deployment to many desktops and keeping them all in sync with the server No problems of compatibilities with other desktop software Running code on a client improves responsiveness The data source generally runs only on servers Exception: duplication of the server functionality onto a powerful client, usually for disconnected operation Where to run the presentation depends mostly on the kind of user interface Running a rich client means running the presentation on the client Running a Web interface means running on the server B2C system, all processing is on the server Limitation with the HTML option: roundtrip from the client to the server Alternative: use of scripting and downloadable applets, but this reduces the browser compatibility Web presentation if you can, the rich client if you must Web presentation if you can, the rich client if you must Domain logic: all on the server or all on the client, or split it 45

Class Diagram Structural Modelling The class diagram technique has become truly central within object-oriented methods Every method has included some variation on this technique. A class diagram describes the types of objects in the system and the various kinds of static relationships that exist among them. There are two principal kinds of static relationships: associations (e.g., a product catalog contains a product specification) subtypes (a paper is a kind of document) Class diagrams also show the attributes and operations of a class and the constraints that apply to the way objects are connected 46

Class Diagram - Perspectives There are three perspectives one can use in drawing class diagrams Conceptual Conceptual model Specification Focus on the interfaces of the software, not the implementation Implementation This is probably the perspective used most often, but in many ways the specification perspective is often a better one to take. 47

Typical Class Diagram Source : Fowler, Martin UML Distilled Addison Wesley 48

Class Diagram - Notation and Semantics In UML, a class is drawn as a rectangle with three compartments <<stereotype>> Name {boolproperty, valueproperty=x} attribute:type operation():type Stereotype is the core extension mechanism of the UML It is more than just a comment, it specifies the way that all elements of a UML class should be interpreted Properties are primarily structured comments Attributes and operations (the body is called method) can be adorned with encapsulation specifiers (+, -, #) 49

Associations Represent relationships between instances of classes (e.g. a person works for a company) Each association has two association ends. An end can be explicitly named with a label, called a role name The multiplicity indicates lower and upper bounds for the participating objects Within the specification perspective, associations represent responsibilities There are methods within the class providing the corresponding information E.g. there are methods in Order that will let us know which Customer placed a given Order and what Line Items are on an Order If there are standard conventions for naming these methods, one can probably infer the class interface. For instance in Java one can infer : class Order { public Customer getcustomer(); public Set getorderlines();... 50

Visibility Visibility is the ability of one object, instance of a class, to see or have reference to another There are four common ways that a visibility can be achieved from object A to object B: Attribute visibility - B is an attribute of A Parameter visibility - B is a parameter of a method of A Locally declared visibility B declared as a local object in a method of A Global visibility B is in some way globally visible 51

more on Associations Within the implementation perspective one can deduce information about data structure Associations are most often implemented as instance variables (attribute visibility) in one class that point or refer to the other Attributes are very similar to associations The navigability of an association can be restricted by adding arrowheads When an arrowhead is present, the association can only be navigated in the direction of the arrow. This means that the class to which the arrow points does not know about its associate Order Customer 52

Aggregation and Composition Aggregation is a special form of association Is denoted with a white diamond on the aggregate class Implies a whole/part relationship The whole/part relationship is purely connotative; there is no semantic difference from association Studente Esame Composition is a special (stronger) form of aggregation Is denoted with a black diamond Implies that the whole is responsible for the lifetime of its part (directly or indirectly) Receiver Msg-Buffer 53

Abstract Classes and Interfaces Examples of notation used to represent abstract classes and interfaces Source : Fowler, Martin UML Distilled Addison Wesley 54

Constraints The basic constructs of association, attribute, and generalization can be used to specify important constraints But they cannot indicate every constraint The UML allows to use anything to describe further constraints The only rule is to put them inside braces {}. One can use an informal English, emphasizing readability The UML also provides a formal Object Constraint Language (OCL) 55

Making a Class Diagram Identify all the classes participating in the software solution. Do this by analysing the conceptual model It is not usually useful to show container/collection classes explicitly in the class diagram Draw them in a class diagram Add methods names by analysing the interaction in the conceptual model Do not add accessing methods Add type information to the attributes and methods Too many details may adversely effect the noise-to-value ratio Add the associations necessary to support the required attribute visibility Add navigability arrows to the associations to indicate the direction of the attribute visibility Add dependency relationship lines to indicate non-attribute visibility 56

POST Conceptual Model Source : Craig Larman, Applying UML and Patterns 57

POST Class Diagram Source : Craig Larman, Applying UML and Patterns 58

Generalization The activity of identifying commonality among concepts and defining supertype (general concept) and subtype (specialized concept) relationship Create a subtype of a supertype when either: The subtype has additional attributes of interest The subtype has additional associations of interest The subtype concept is operated upon, handled or behaves differently than the supertype or other subtypes, in ways that are of interest 59

Generalization Create a supertype in a generalization relationship to subtypes when: The potential subtypes represent variations on a similar concept The subtypes will conform to the is-a rule All subtypes have the same attribute which can be factored out and expressed in the supertype All subtypes have the same association which can be factored out and related to the supertype 60

POST Generalization Type hierarchy of various kind of payments Source : Craig Larman, Applying UML and Patterns 61

Interaction Diagrams Behavioural Modelling One of the most important artefacts created in object-oriented design Typically, an interaction diagram captures the behavior of a single use case Illustrate the message interactions between instances. UML defines two kinds: Collaboration diagram The layout indicates how objects are statically connected The sequence is indicated by numbering the messages Sequence diagram Emphasizes the time ordering of messages Two features distinguish it from collaboration diagram: There is the object lifeline There is the focus of control (period of time during which an object is performing an action) 62

Interaction Diagrams Behavioural Modelling The skilful assignment of responsibilities that occurs while creating interaction diagrams is very important The amount of time and effort spent on their generation and the careful considerations of responsibility assignment, should absorb a significant percentage of the design phase of a project Codified patterns and principles can be applied to improve the quality of the design Interaction diagrams are good at showing collaborations among the objects; they are not so good at precise definition of the behavior. If one want to look at the behavior of a single object across many use cases, one should use a state diagram If one want to look at behaviors across many use cases or many threads, one should consider an activity diagram 63

Collaboration Diagram UML Notation Message syntax: return:= message(parameter: parametertype): returntype Illustrating iteration Source : Craig Larman, Applying UML and Patterns 64

Collaboration Diagram UML Notation Illustrating message number sequencing Source : Craig Larman, Applying UML and Patterns 65

Collaboration Diagram UML Notation Illustrating mutually exclusive conditional paths Source : Craig Larman, Applying UML and Patterns 66

Collaboration Diagram UML Notation Illustrating message to multiple objects Source : Craig Larman, Applying UML and Patterns 67

Typical Collaboration Diagram Source : Fowler, Martin UML Distilled Addison Wesley 68

Sequence Diagram Within a sequence diagram, an object is shown as a box at the top of a dashed vertical line, called the object's lifeline The lifeline represents the object's life during the interaction Each message is represented by an arrow between the lifelines of two objects The order in which these messages occur is shown top to bottom on the page To show when an object is active one can include an activation box Control markers Condition, which indicates when a message is sent (for example, [needsreorder]). The message is sent only if the condition is true Iteration marker, which shows that a message is sent many times to multiple receiver objects. One can show the basis of the iteration within brackets, such as *[for all order lines] Return indicates a return from a message, not a new message 69

Typical Sequence Diagram Source : Fowler, Martin UML Distilled Addison Wesley 70

Sequence Diagram Sequence diagrams are also valuable for concurrent processes The messages exchanged are asynchronous messages represented by means of half-arrowheads An asynchronous message does not block the caller, so it can carry on with its own processing. An asynchronous message can do one of three things: Create a new thread, in which case it links to the top of an activation Create a new object Communicate with a thread that is already running Object deletion is shown with a large X. Objects can self-destruct, or they can be destroyed by another message 71

Sequence Diagram - Concurrent Processes Source : Fowler, Martin UML Distilled Addison Wesley 72

Sequence Diagram - Concurrent Processes (cont d) Source : Fowler, Martin UML Distilled Addison Wesley 73

Class-Responsibility-Collaboration Cards CRC cards can be very useful for exploring behaviors; represent a good alternative to diagrams Responsibility is a high-level description of the purpose of the class The choice of a card is deliberate. One is not allowed to write more than will fit on the card!! Collaborators represent the other classes that this class needs to work with Source : Fowler, Martin UML Distilled Addison Wesley 74

Responsibilities Responsibility as a contract or obligation of a type or class Booch and Rumbaugh Responsibilities are of the following two types: Knowing Knowing about private encapsulated data Knowing about related objects Knowing about things it can derive or calculate Doing Doing something itself Initiating action in other object Controlling and coordinating activities in other objects Methods are implemented to fulfil responsibilities 75

Patterns A pattern is a named problem/solution pair that can be applied in new contexts; it is a vehicle for representing and remembering useful software engineering principle Codified good advice and principles often related to the assignment of responsibilities Patterns do not usually contain new ideas Patterns have a name Naming patterns improve communication 76

GRASP Patterns It is an acronym that stands for General Responsibility Assignment Software Patterns Describes fundamental principles of assigning responsibilities to objects The first five GRASP patterns are: Expert Creator High Cohesion Low Coupling Controller 77

Expert Problem: What is the most basic principle by which responsibilities are assigned in objectoriented design? Solution: Assign a responsibility to the information expert the class that has the information necessary to fulfil the responsibility Start assigning responsibilities by clearly stating the responsibility Also known as: Place responsibilities with data, That which knows, does, Do it Myself, Animation, etc. 78

POST Assign Responsibilities We need to know the grand total of a sale Who should be responsible for knowing it? 79

POST Class Diagram Source : Craig Larman, Applying UML and Patterns 80

POST Assign Responsibilities We need to know the grand total of a sale Who should be responsible for knowing it? Source : Craig Larman, Applying UML and Patterns 81

Creator Problem: Who should be responsible for creating a new instance of some class? Solution: Assign class B the responsibility to create an instance of the class A if one of the following is true: B aggregates A objects (whole-part relationship) B contains A objects (content) B closely uses A objects B has the initialising data that will be passed to A when it is created (thus B is an Expert with respect to creating A) 82

POST Assign Responsibilities Who should be responsible for creating a SalesLineItem instance? 83

POST Class Diagram 84

POST Assign Responsibilities Who should be responsible for creating a SalesLineItem instance? 85

Low Coupling Problem: How to support low dependency and increasing reuse? Solution: Assign a responsibility so that coupling remains low Coupling is a measure of how strongly one class is connected to, has knowledge of, or relies upon other classes. A class with high coupling suffers from the following problems: Changes in related classes force local changes Harder to understand in isolation Harder to reuse 86

Low Coupling Discussion: Common form of coupling from TypeX to TypeY include: TypeX has an attribute that refers to a TypeY instance TypeX has a method which references an instance of TypeY (parameter, local variable, ) TypeX is direct or indirect subclass of TypeY TypeY is an interface, and TypeX implements that interface Low Coupling can not be consider in isolation from other patterns, but rather needs to be included as one of several design principles that influence a choice in assigning responsibility 87

POST Assign Responsibilities We have a need to create a Payment instance and associate it with the Sale. 88

POST Class Diagram 89

POST Assign Responsibilities We have a need to create a Payment instance and associate it with the Sale. 90

POST Assign Responsibilities (II) We have a need to create a Payment instance and associate it with the Sale. Low Coupling is a principle to keep in mind during all design decisions 91

High Cohesion Problem: How to keep complexity manageable? Solution: Assign a responsibility so that cohesion remains high A class should have only one reason to change Cohesion is a measure of how strongly related and focused the responsibilities of a class are. A class with low cohesion suffers from the following problems: Hard to comprehend Hard to reuse Hard to maintain Delicate, constantly effects by change 92

POST Assign Responsibilities We examine the same example problem used in Low Coupling 93

POST Assign Responsibilities (II) The point is not that this single Payment creation task in itself makes the POST incohesive, but as part of a larger picture of overall responsibility assignment, it may suggest a trend towards low cohesion Like Low Coupling, High Cohesion is a principle to keep in mind during all design decisions As a rule of thumb, a class with high cohesion has a relatively small number of methods, with highly related functionality, and does not do too much work 94

Controller Problem: Who should be responsible for handling a system event? A system event is an external input event generated by an external actor. It is associated with a system operation. Solution: Assign the responsibility to a class representing one of the following choices: Represents the overall system (facade controller) Represents the overall business or organisation (facade controller) Represents something in the real world that is active and that might be involved in the task (role controller) Represents an artificial handler of all system events of a use case, usually named <UseCaseName>Handler (use-case controller) Corollary: Note that window, applet, document, etc. classes are not in this list. Such classes should not fulfil the tasks associated with system events, they typically receive these events and delegate them to a controller. A controller is a non-user interface object responsible (delegated) for handling a system event. 95

POST System Events There are several system operations associated with the system events: System endsale() enteritem() makepayment() Applying the Controller pattern, the choices are: POST - represents the overall system Store - represents the overall business or organization Cashier - represents something in the real world that is active EndSaleHandler - represents an artificial handler of all system operation of the use-case related to endsale(). Good choice when there are many system events (low coupling, high cohesion) 96

Presentation/Domain Layers Desirable coupling of presentation to domain layer 97

Message-Handling System and Command Pattern To handle system event messages: Define a single controller for all the system event messages Use the Command pattern to handle the request 98

enteritem - Collaboration Diagram 99

The Dependency-Inversion Principle Abstraction should not depend on details. Details should depend on abstraction A simple example: Button + poll() Lamp + turnon() + turnoff() - Naive Model 100

The Dependency-Inversion Principle (II) Abstraction should not depend on details. Details should depend on abstraction A simple example: Button + poll() <<interface>> ButtonServer + turnon() + turnoff() Lamp - Dependency Inversion Applied to the Lamp 101

DIP: Remarks Button now holds an association to an interface providing methods which can be used to turn on and off a device. This design allows a Button to control any device that is willing to implement the ButtonServer interface Great deal of flexibility Button object will also be able to control objects that have not yet been invented A constraint on object that needs to be controlled by the Button Such an object must implement the ButtonServer interface BUT ButtonServer does not depend on Button Any kind of object that knows how to manipulate the ButtonServer interface will be able to control the lamp The inteface can be used by lots of different clients and implemented by lots of different servers We can change the name in SwitchableDevice, a bit more generic The proper application of DIP is necessary for the creation of reusable framework 102

Managing Third Party APIs Third party APIs are a fact of life for software engineers Database engine, middleware engine, class libraries,... Possible use Direct call to them from our application code Problems Our application code become more and more polluted with such API calls This becomes a problem when third party API changes For database it also become a problem when the schema changes Solution To add a layer that separates the application business rules from the third party API Such layers can sometimes be purchased (ODBC, JDBC,...) Of course they are also third party APIs, therefore the application may need to be insulated even from them 103

Managing Third Party APIs In order to attain even better insulation, it is necessary to invert the dependency between the application and the layer Application LAYER API This arrangement of dependencies is precisely what the PROXY pattern achieves The application does not depend upon the proxies at all The proxies depend upon the application and the API This concentrate all knowledge of the mapping between the application and the API into the proxies 104

PROXY Pattern <<inteface>> Product Product Implementation Product Proxy <<delegates>> DB Every object that is to be proxied is split into three parts Whenever the API changes, the proxies change; whenever the application changes, the proxies change The proxies are nightmares It is good to know where nightmares live Without the proxies the nightmares would be spread throughout the application code Proxies are a very heavyweight solution Proxies achieve an intense separation between the application and the API 105

PROXY Pattern Dynamic Model :Product DB Proxy :DB getprice() price retrieveproduct(sku) product :Product Implementation getprice() price 106

Gateway Pattern Gateway - An object that encapsulates access to an external system or resource Wraps all the special APsI into a class whose interface looks like a regular object Two possible implementations: Row Data Gateway An object that acts as a Gateway to a single record in a data source. There is one instance per row Table Data Gateway An object that acts as a Gateway to a database table. One instance handles all the rows in the table Provides methods to query the database that return a Record Set 107

Gateway Pattern (II) Comparing with Facade Façade simplifies a more complex API, it is usually done by the writer of the service for general use A Gateway is written by the client for its particular use ProductData DB +store(productdata) +getproduct(sku) +deleteproductdata(sku) Application java.sql 108

Package One of the oldest questions in software methods is: How do you break down a large system into smaller systems? Structured methods used functional decomposition The overall system was mapped as a function and broken down into sub-functions, OO methods promote the idea to group the classes together into higher-level units In the UML, this grouping mechanism is called the package The idea of a package can be applied to any model element, not just classes A package is a namespace for its members, and may contain other packages 109

Packages Group elements that provide common service (or family of related services), with relatively high coupling and collaboration (dependency) At some level of abstraction the package will be view as highly cohesive it has strongly related responsibility A package is shown as a large rectangle with a small rectangle (a tab ) attached to the left side of the top The members of the package may be shown within the large rectangle A dependency between two packages exists if any dependency exists between any two classes in the packages - A diagram representing relations among packages Source : Fowler, Martin UML Distilled Addison Wesley 110

When to Use Package Packages are a vital tool for large projects. The suggestion is to use packages whenever a class diagram that encompasses the whole system is no longer legible on a single A4-size sheet of paper. Packages are particularly useful for testing One can do unit testing on a package-by-package basis. 111

State Diagrams A familiar technique to describe the behavior of a system They describe all the possible states that a particular object can get into and how the object's state changes as a result of events that reach the object. In most OO techniques, state diagrams are drawn for a single class to show the lifetime behavior of a single object across several use cases When to use Use state diagrams only for those classes that exhibit interesting behavior Many people find that UI and control objects have the kind of behavior that is useful to depict with a state diagram. 112

A Typical State Diagram - A UML state diagram for an order, indicating the various states of the order Source : Fowler, Martin UML Distilled Addison Wesley 113

State Diagrams - Semantics The syntax for a transition label has three parts, all of which are optional: Event [Guard] / Action A guard is a logical condition that will return only "true" or "false." A guarded transition occurs only if the guard resolves to "true." A state can have an activity associated with it, indicated by a label with the syntax do/activity Note: the term "action" is used for the transition whereas the term "activity" is used for the state. They are both processes, typically implemented by some method, but they are treated differently. Actions are associated with transitions and are considered to be processes that occur quickly and are not interruptible Activities are associated with states and can take longer. An activity may be interrupted by some event When a transition has no event within its label, it means that the transition occurs as soon as any activity associated with the given state is completed Only one transition can be taken out of a given state, so the guards must be mutually exclusive for any event 114

- A UML State Diagram with Superstate Source : Fowler, Martin UML Distilled Addison Wesley 115

Activity Diagrams These diagrams are particularly useful in connection with workflow and in describing behavior that has a lot of parallel processing The activity diagram describes the sequencing of activities, with support for both conditional and parallel behavior An activity diagram is a variant of a state diagram in which most, if not all, the states are activity states The core symbol is the activity state, or simply activity. An activity is a state of doing something: either a real-world process, such as typing a letter, or the execution of a software routine, such as a method on a class 116

A Typical Activity Diagram - A UML activity diagram for an order Source : Fowler, Martin UML Distilled Addison Wesley 117

Activity Diagrams - Semantics Conditional behavior is delineated by branches and merges. A branch has a single incoming transition and several guarded outgoing transitions, mutually exclusive. The [else] guard indicates that the transition should be used if all the other guards on the branch are false. A merge has multiple input transitions and a single output. A merge marks the end of conditional behavior Parallel behavior is indicated by forks and joins. A fork has one incoming transition and several outgoing transitions. When the incoming transition is triggered, all of the outgoing transitions are taken in parallel. join is used to synchronize parallel behaviors. With a join, the outgoing transition is taken only when all the states on the incoming transitions have completed their activities. 118

Activity Diagrams Source : Fowler, Martin UML Distilled Addison Wesley 119

Swimlanes To indicate which class is responsible for each activity Activity diagrams are arranged into vertical zones separated by lines Each zone represents the responsibilities of a particular class or a particular department They combine the activity diagram's depiction of logic with the interaction diagram's depiction of responsibility They can be difficult to draw on a complex diagram Sometimes one have to stop trying to say too much in one diagram Source : Fowler, Martin UML Distilled Addison Wesley 120

Use Activity Diagrams - Pros Activity diagrams offer a suitable support for the representation of parallel behaviors One can use activity diagrams in the following situations: Understanding workflow Useful for understanding a business process. Can easily be drawn together with business experts to understand how a business operates and how it may change. Analyzing a use case At this stage (conceptual modeling ), one is not interested in allocating actions to objects, instead one just need to understand what actions need to take place and what the behavioral dependencies are. Describing a complicated sequential algorithm In this case, an activity diagram is just a UML-compliant flowchart Dealing with multithreaded applications 121

Use Activity Diagrams - Cons Their great disadvantage is that they do not make the links among actions and objects very clear One should not use activity diagrams in the following situations: Trying to see how objects collaborate An interaction diagram is simpler and gives a clearer picture of collaborations Trying to see how an object behaves over its lifetime Use a state diagram for that Representing complex conditional logic Use a truth table 122

Deployment and Component Diagrams A deployment diagram shows the physical relationships among software and hardware components in the delivered system. Each node on a deployment diagram represents some kind of computational unit - in most cases, a piece of hardware. The hardware may be a simple device, or a mainframe. A component diagram shows the various components in a system and their dependencies. A component represents a physical module of code. A component is often the same as a package, but it may be different, since components represent the physical packaging of code. One can place the component diagram on the deployment diagram to show which components run on which nodes. 123

Deployment Diagram One can draw separate component and deployment diagrams, or can place the component diagram on the deployment diagram A component may have more than one interface, in which case one can see which components communicate with each interface One should draw these diagrams when there is the need to show physical information Source : Fowler, Martin UML Distilled Addison Wesley 124