part iii elaboration iteration 1 basicswkchen/courses/ooad/ooad101_2/... · 2018. 3. 2. · – do...

41
1 1 PART III PART III Elaboration Iteration 1 Elaboration Iteration 1 Basics Basics inc. elaboration construction transition iteration phase development cycle Chapter 8 Chapter 8 Iteration 1 Iteration 1 Basics Basics

Upload: others

Post on 30-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • 1

    1

    PART IIIPART IIIElaboration Iteration 1Elaboration Iteration 1

    BasicsBasics

    inc. elaboration construction transition

    iteration phase

    development cycle

    Chapter 8Chapter 8Iteration 1Iteration 1

    Basics Basics

  • 2

    3

    Iteration 1Iteration 1• Iteration 1 of the elaboration phase

    – Requirements and Emphasis: Core OOA/D Skills

    – Book iteration 1 is NOT architecture-centricand risk-driven.

    • In Iterative Development– Don't Implement All the Requirements at

    Once – Incremental Development for the Same Use

    Case Across Iterations

    4

    Iteration 1Iteration 1• Use case implementation may be spread across iterations

    1A use case or feature is often too complex to complete in one short iteration.

    Therefore, different parts or scenarios must be allocated to different iterations.

    Use CaseProcess Sale

    2 3 . . .

    Use CaseProcess Sale

    Use CaseProcess Sale

    Use CaseProcess Rentals

    Feature: Logging

  • 3

    5

    POS Iteration 1POS Iteration 1• Requirements for iteration 1 of the POS application

    – Implement a basic, key scenario of the Process Sale use case: entering items and receiving a cash payment.

    – Implement a Start Up use case as necessary to support the initialization needs of the iteration.

    – Nothing fancy or complex is handled, just a simple happy pathscenario, and the design and implementation to support it.

    – There is no collaboration with external services, such as a tax calculator or product database.

    – No complex pricing rules are applied.– The design and implementation of the supporting UI, database,

    and so forth, would also be done

    6

    Elaboration Elaboration 11• Elaboration: Build the core architecture, resolve the

    high-risk elements, define most requirements, and estimate the overall schedule and resources.

    • Elaboration is the initial series of iterations during project– the core, risky software architecture is programmed and tested– the majority of requirements are discovered and stabilized– the major risks are mitigated or retired

    • Elaboration often consists of two or more iterations; – each iteration is recommended to be 2~6 weeks

    • Elaboration is not a design phase or a phase when the models are fully developed in preparation for implementation – that would be waterfall.

  • 4

    7

    Elaboration Elaboration 22• Elaboration

    – Not throw-away prototypes; the code and design areproduction quality (a production subset of the final system).

    – More commonly called executable architecture or Architectural baseline

    • Some key ideas and best practices will manifest in elaboration:– do short time boxed risk-driven iterations– start programming early– adaptively design, implement, and test the core and risky parts

    of the architecture– test early, often, realistically– adapt based on feedback from tests, users, developers– write most of the use cases and other requirements in detail,

    through a series of workshops, once per elaboration iteration

    8

    Elaboration Elaboration 33

    A description of the user interface, paths of navigation, usability models, and so forth.

    Use-Case Storyboards, UI Prototypes

    This includes the database schemas, and the mapping strategies between object and non-object representations.

    Data Model

    A learning aid that summarizes the key architectural issues and their resolution in the design. It is a summary of the outstanding design ideas and their motivation in the system.

    Software Architecture Document

    This is the set of diagrams that describes the logical design. This includes software class diagrams, object interaction diagrams, package diagrams, and so forth.

    Design Model

    This is a visualization of the domain concepts; it is similar to a static information model of the domain entities.

    Domain Model

    CommentArtifact

  • 5

    9

    Planning the Next Iteration Planning the Next Iteration • Organize requirements and iterations by risk,

    coverage, and criticality.– Risk includes both technical complexity and other

    factors, such as uncertainty of effort or usability.– Coverage implies that all major parts of the system

    are at least touched on in early iterations perhaps a "wide and shallow" implementation across many components.

    – Criticality refers to functions the client considers of high business value.

    10

    POS Risk ListPOS Risk List

    ……Low

    Affects security subdomain.…

    Maintain Users…

    Medium

    Scores high on all rankings.Pervasive. Hard to add late.…

    Process SaleLogging…

    High

    CommentRequirement (Use Case or Feature)Rank

  • 6

    Chapter 9Chapter 9Domain Models Domain Models

    12

    IntroductionIntroduction• Domain model

    – The most important and classic model in OO analysis. – A visual representation of conceptual classes or real situation

    objects in a domain.– Also called conceptual models, domain object models, and

    analysis object models.– “focusing on explaining 'things' and products important to a

    business domain”, such as POS related things.

    • Guideline– Avoid a waterfall-mindset big-modeling effort to make a

    thorough or "correct" domain model– such over-modeling efforts lead to analysis paralysis, with little

    or no return on the investment.

  • 7

    13

    Sample UP artifact influence Sample UP artifact influence

    Process Sale

    1. Customer arrives ...2. ...3. Cashier enters item identifier.4....

    Use Case Text

    Operation: enterItem(…)

    Post-conditions:- . . .

    Operation Contracts

    Sale

    date. . .

    SalesLineItem

    quantity

    1..*1 . . .

    . . .

    the domain objects, attributes, and associations that undergo state changes

    Domain Model

    Use-Case Model

    Design Model

    : Register

    enterItem(itemID, quantity)

    : ProductCatalog

    spec = getProductSpec( itemID )

    addLineItem( spec, quantity )

    : Sale

    . . .

    conceptual classes in the domain inspire the names of some software classes in the design

    conceptual classes –terms, concepts attributes, associations

    Cashier: …Item ID: …...

    Glossary

    elaboration of some terms in the domain model

    Require-ments

    Business Modeling

    Design

    Sample UP Artifact Relationships

    14

    POS Domain ModelPOS Domain Model

    Register

    Item

    Store

    addressname

    Sale

    date time

    Payment

    amount

    SalesLineItem

    quantity

    Stocked-in

    *

    Houses

    1..*

    Contained-in

    1..*

    Records-sale-of

    0..1

    Paid-by

    1

    1

    1

    1

    1

    1

    0..1

    1

    Captured-on

    conceptor domain object

    association

    attributes

    Partial domain model drawn withUML class diagram

  • 8

    15

    Domain Model Domain Model 11• Domain model is illustrated with UML class

    diagrams (no operations). It provides a conceptual perspective. – domain objects or conceptual classes– associations between conceptual classes– attributes of conceptual classes

    • Elements NOT suitable in a domain model– Software artifacts, such as a window or a database,

    unless the domain being modeled is of software concepts, such as a model of graphical user interfaces.

    – Responsibilities or methods.

    16

    Domain Model Domain Model 22• A domain model shows real-situation conceptual

    classes, not software classes

    Sale

    dateTime

    visualization of a real-world concept in the domain of interest

    it is a not a picture of a software class

    SalesDatabase software artifact; not part of domain modelavo

    id

    software class; not part of domain model

    Sale

    datetime

    print()

    avoid

    • A domain model does not show software artifacts or classes

  • 9

    17

    Domain Model Domain Model 44

    Lower representational gap with OO modeling.

    Payment

    amount

    Sale

    datetime

    Pays-for

    Payment

    amount: Money

    getBalance(): Money

    Sale

    date: DatestartTime: Time

    getTotal(): Money. . .

    Pays-for

    UP Domain ModelStakeholder's view of the noteworthy concepts in the domain.

    UP Design ModelThe object-oriented developer has taken inspiration from the real world domain in creating software classes.

    Therefore, the representational gap between how stakeholders conceive the domain, and its representation in software, has been lowered.

    1 1

    1 1

    A Payment in the Domain Model is a concept, but a Payment in the Design Model is a software class. They are not the same thing, but the former inspired the naming and definition of the latter.

    This reduces the representational gap.

    This is one of the big ideas in object technology.

    inspires objects

    and names in

    18

    Lower representational gap Lower representational gap

    Use case Domain model Design

  • 10

    19

    Guideline: Create a Domain Guideline: Create a Domain ModelModel

    • Guideline: Create a Domain Model– Bounded by the current iteration

    requirements under design• Find the conceptual classes (next slide)• Draw them as classes in a UML class diagram.• Add associations

    – Record relationships for which there is a need to preserve some memory.

    • Add attributes– Necessary to fulfill the information requirements.

    20

    Guideline: Find Conceptual Guideline: Find Conceptual Classes Classes 11

    • Three strategies to find conceptual classes1. Reuse or modify existing models. 2. Use a category list.3. Identify noun phrases

  • 11

    21

    Guideline: Find Conceptual Guideline: Find Conceptual Classes Classes 22

    • Use a Category List

    Register, LedgerFlightManifest

    where is the transaction recorded?Guideline: Important.

    ItemFlight, Seat, Meal

    product or service related to a transaction or transaction line itemGuideline: Transactions are for something (a product or service). Consider these next.

    SalesLineItemtransaction line itemsGuideline: Transactions often come with related line items, so consider these next.

    Sale, PaymentReservation

    business transactionsGuideline: These are critical (they involve money), so start with transactions.

    ExamplesConceptual Class Category

    POS, Monopoly, airline reservation system

    22

    Guideline: Find Conceptual Guideline: Find Conceptual Classes Classes 33

    Store, Bin Board Airplane

    containers of things (physical or information)

    Product CatalogFlight Catalog

    catalogsGuideline: Descriptions are often in a catalog.

    Product DescriptionFlight Description

    descriptions of thingsGuideline: See p. 147 for discussion.

    Item, Register Board, Piece, Die Airplane

    physical objectsGuideline: This is especially relevant when creating device-control software, or simulations.

    Sale, Payment, Flightnoteworthy events, often with a time or place we need to remember

    StoreAirport, Plane, Seat

    place of transaction; place of service

    ExamplesConceptual Class Category

  • 12

    23

    Guideline: Find Conceptual Guideline: Find Conceptual Classes Classes 44

    DailyPriceChangeListRepairSchedule

    schedules, manuals, documents that are regularly referred to in order to perform work

    Cash, Check, LineOfCreditTicketCredit

    financial instruments

    Receipt, LedgerMaintenanceLog

    records of finance, work, contracts, legal matters

    Credit Authorization SystemAir Traffic Control

    other collaborating systems

    Item Square (in a Board) Passenger

    things in a container

    ExamplesConceptual Class Category

    24

    Guideline: Find Conceptual Guideline: Find Conceptual Classes Classes 55

    • Identify noun phrases.– Identify the nouns and noun phrases in textual

    descriptions of a domain, and consider them as candidate conceptual classes or attributes

    – Some of these noun phrases may refer to conceptual classes that are ignored in this iteration (e.g., "Accounting" and "commissions"), and some may be simply attributes of conceptual classes.

    – A weakness of this approach is the imprecision of natural language; different noun phrases may represent the same conceptual class or attribute, among other ambiguities.

  • 13

    25

    Find Conceptual Classes: Find Conceptual Classes: POS POS 11

    • Main Success Scenario (or Basic Flow):1.Customer arrives at a POS checkout with goods and/or

    services to purchase.2.Cashier starts a new sale.3.Cashier enters item identifier.4.System records sale line item and presents item description,

    price, and running total. Price calculated from a set of price rules.

    Cashier repeats steps 2-3 until indicates done.5.System presents total with taxes calculated.6.Cashier tells Customer the total, and asks for payment.7.Customer pays and System handles payment.8.System logs the completed sale and sends sale and payment

    information to the external Accounting (for accounting and commissions) and Inventory systems (to update inventory).

    26

    Find Conceptual Classes: Find Conceptual Classes: POS POS 22

    9.System presents receipt.10.Customer leaves with receipt and goods (if any).

    Extensions (or Alternative Flows):. . .7a. Paying by cash:

    1.Cashier enters the cash amount tendered.2.System presents the balance due, and releases the cash drawer.3.Cashier deposits cash tendered and returns balance in cash to

    Customer.4.System records the cash payment.

  • 14

    27

    Find Conceptual Classes: Find Conceptual Classes: POS POS 33

    • For iteration-1, the basic cash-only scenario of Process Sale. – Sale, Cashier, Cash, Payment, – Customer, Sales Line Item, – Store, Item, Product Description, – Register, Product Catalog, Ledger.

    28

    Guideline:Guideline: Agile Modeling Agile Modeling Maintain the Model in a ToolMaintain the Model in a Tool

    • Perfection is not the goal of Agile, and agile models are usually discarded shortly after creation. – From this viewpoint, there is no motivation

    to maintain or update the model.

    • If someone wants the model maintained and updated with new discoveries– do the drawing with a UML tool.

  • 15

    29

    Guideline: Report Objects Guideline: Report Objects Include 'Receipt' in the ModelInclude 'Receipt' in the Model

    • Receipt is a noteworthy term in the POS domain. Butperhaps it's only a report of a sale and payment, and duplicate information. Two factors to consider– Exclude it: Showing a report of other information in a

    domain model is not useful since all its information is derived or duplicated from other sources.

    – Include it: it has a special role in terms of the business rules: It confers the right to the bearer of the receipt to return bought items.

    • Receipt will be excluded in this iteration. – Until the iteration that tackles the Handle Returns use case

    30

    GuidelinesGuidelines• Guideline: Think Like a Mapmaker; Use Domain

    Terms (next page)– Make a domain model in the spirit of how a

    cartographer or mapmaker works:• Use the existing names in the territory. For example, if

    developing a model for a library, name the customer a "Borrower" the terms used by the library staff.

    • Exclude irrelevant or out-of-scope features. • Do not add things that are not there.

    • Guideline: How to Model the Unreal World?– It requires a high degree of abstraction, and

    listening carefully to the core vocabulary and concepts that domain experts use.

  • 16

    31

    Think Like a Mapmaker; Use Think Like a Mapmaker; Use Domain TermsDomain Terms

    32

    Guideline:Guideline: A Common Mistake A Common Mistake with Attributes vs. Classeswith Attributes vs. Classes

    • If we do not think of some conceptual class X as a number or text in the real world, X is probably a conceptual class, not an attribute.– In the real world, a store is not considered a number

    or text, the term suggests a legal entity, an organization, and something that occupies space. Therefore, Store should be a conceptual class.

    Sale StorephoneNumber

    SaleStore

  • 17

    33

    Guideline:Guideline: When to Model with When to Model with 'Description' Classes'Description' Classes

    • A description class contains information that describes something else. For example, a ProductDescription that records the price, picture, and text description of an Item.– Problems: if implemented in software similar to the domain model,

    it has duplicate data (space-inefficient, and error-prone). Because the description, price, and itemID are duplicated for every Iteminstance of the same product

    – A particular Item may have a serial number; it represents a physical instance. A ProductDescription wouldn't have a serial number

    ItemserialNumber

    ItemdescriptionpriceserialNumberitemID

    productDescriptiondescriptionpriceitemID

    1 *

    34

    Association Association 11• Association

    – a relationship between classes (instances of those classes) that indicates some meaningful and interesting connection.

    • Guideline: When to Show an Association?– Associations imply knowledge of a relationship that needs to be

    preserved for some duration. • Guideline: Avoid Adding Many Associations

    – Many lines on the diagram will obscure it with "visual noise."

    • Perspectives: Will the Associations Be Implemented In Software?– It is meaningful in a purely conceptual perspective in the real

    domain.– Many associations will be implemented in software as paths or

    navigation and visibility.

  • 18

    35

    Association Association 22• Guideline

    – Name an association based on a ClassName-VerbPhrase-ClassName format where the verb phrase creates a sequence that is readable and meaningful.

    – Association names should start with a capital letter, since an association represents a classifier of links between instances;

    – e.g. Good: Sale Paid-by CashPayment– e.g. Bad: Sale Uses CashPayment– e.g. Good: Player Is-on Square– E.g. Bad: Player Has Square

    • Applying UML: Roles– Each end of an association is called a role. Roles may optionally

    have multiplicity expression, name, navigability.

    36

    Association Association 33• Applying UML: Multiplicity

    – Multiplicity defines how many instances of a class A can be associated with one instance of a class B

    ItemStore Stocks

    *

    multiplicity of the role

    1

    zero or more; "many"

    one or more

    one to 40

    exactly 5

    T

    T

    T

    T

    *

    1..*

    1..40

    5

    T3, 5, 8

    exactly 3, 5, or 8

  • 19

    37

    Association Association 44• Applying UML: Multiple Associations Between Two

    Classes

    Flight Airport

    F lies-to

    Flies-from

    *

    * 1

    1

    • Guideline: Find Associations with a Common Associations List (for business information systems)

    CustomerPaymentPassengerTicket

    A is a role related to a transaction B

    ItemSalesLineItem (or Sale), FlightReservation

    A is a product or service for a transaction (or line item) B

    SalesLineItemSaleA is a line item of a transaction B

    CashPaymentSaleCancellationReservation

    A is a transaction related to another transaction B

    ExamplesCategory

    38

    Association Association 55

    SalesLineItemSalesLineItem, SquareSquare, CityCity

    A is next to B

    CashierRegister, PlayerPiece, PilotAirplaneA uses or manages or owns B

    DepartmentStore, MaintenanceAirlineA is an organizational subunit of B

    CashierStore, PlayerMonopolyGame, PilotAirline

    A is a member of B

    SaleRegister, PieceSquare, ReservationFlightManifest

    A is known/logged/recorded/ reported/captured in B

    ProductDescriptionItem, FlightDescriptionFlight

    A is a description for B

    RegisterStore, ItemShelf, SquareBoard, PassengerAirplane

    A is physically or logically containedin/on B

    DrawerRegister, SquareBoard, SeatAirplaneA is a physical or logical part of B

    ExamplesCategory

  • 20

    39

    POS Partial Domain ModelPOS Partial Domain Model

    Reading direction

    Reading direction arrow

    40

    Monopoly Partial Domain Monopoly Partial Domain ModelModel

  • 21

    41

    Attributes Attributes 11• An attribute is a logical data value of an object.• Guideline: When to Show Attributes?

    – Include attributes that the requirements (e.g., use cases) suggest or imply a need to remember information.

    – e.g., a receipt (which reports the information of a sale) in theProcess Sale use case normally includes a date and time, the store name and address, and the cashier ID,

    Sale

    dateTime/ total : Money

    attributes

    derived attribute

    42

    Attributes Attributes 22• Guideline: Where to Record Attribute

    Requirements?– E.g., middleName: [0..1]– Place all such attribute requirements in the Glossary.– Use a tool that integrates UML models with a data dictionary.

    • Derived Attributes– The total attribute in the Sale can be calculated or derived

    from the information in the SalesLineItems.

    Sale

    - dateTime : Date- / total : Money

    Private visibility attributes

    Math

    + pi : Real = 3.14 {readOnly}

    Public visibility readonly attribute with initialization

    Person

    firstNamemiddleName : [0..1]lastName

    Optional value

  • 22

    43

    Attributes Attributes 33• Guideline: Focus on Data Type Attributes in the

    Domain Model.– most attribute types should be primitive data types, such as

    numbers and Booleans.

    Cashier

    namecurrentRegister

    Cashier

    name

    Register

    numberUses

    Worse

    Better

    not a "data type" attribute

    1 1

    44

    Attributes Attributes 44• Guideline: Don't show complex concepts as

    attributes; use associations.

    Flight

    Flight

    destinationW orse

    BetterFlies-to Airport1 1

    destination is a complex concept

  • 23

    45

    Attributes Attributes 55• Guideline: Represent what may initially be considered

    a number or string as a new data type class in the domain model if:– It is composed of separate sections: phone number, name of person– There are operations associated with it, such as parsing or validation.

    • social security number

    – It has other attributes.• promotional price could have a start (effective) date and end date

    – It is a quantity with a unit.• payment amount has a unit of currency

    – It is an abstraction of one or more types with some of these qualities.• item identifier in the sales domain is a generalization of types such as

    Universal Product Code (UPC) and European Article Number (EAN)

    46

    Attributes Attributes 66• Applying UML: Two ways to indicate a data type

    property of an object.

    OK

    OK

    ProductDescription

    ProductDescription

    itemId : ItemID

    1Store

    Store

    address : Address

    11 1ItemID

    idmanufacturerCodecountryCode

    Address

    street1street2cityName...

    Data type

  • 24

    47

    Attributes Attributes 77• Guideline: No Attributes Representing Foreign

    Keys.

    Cashier

    namecurrentRegisterNumber

    Cashier

    name

    Register

    numberWorks-on

    Worse

    Better

    a "simple" attribute, but being used as a foreign key to relate to another object

    1 1

    48

    Attributes Attributes 88• Guideline: Modeling Quantities and Units.

    – Most numeric quantities should not be represented as plain numbers. – To represent Quantity as a distinct class, with an associated Unit. – Money is a kind of quantity whose units are currencies. Weight is a

    quantity with units such as kilograms or pounds.

    Payment

    amount : Number

    Payment Quantity

    amount : Number

    Unit

    ...

    Payment

    amount : Quantity

    Has-amount1*

    Is-in1*

    not useful

    quantities are pure data values, so are suitable to show in attribute section better

    Payment

    amount : Money

    variation: Money is a specialized Quantity whose unit is a currency

  • 25

    49

    POS Partial Domain ModelPOS Partial Domain Model

    Register

    id

    ItemStore

    nameaddress

    Sale

    dateTime/ total

    CashPayment

    amountTendered

    SalesLineItem

    quantity

    Cashier

    id

    Customer

    ProductCatalog

    ProductDescription

    itemIDdescriptionprice

    Stocks

    *

    Houses1..*

    Used-by

    *

    Contains1..*

    Describes

    *

    Captured-on

    Contained-in

    1..*

    Records-sale-of

    0..1

    Paid-by Is-for

    Logs-completed

    *

    Works-on

    11

    1

    1 1..*

    1

    1

    1

    1

    1

    1

    1

    0..1 1

    1

    Ledger

    Records-accounts-

    for

    1

    1

    50

    Monopoly Partial Domain Monopoly Partial Domain ModelModel

  • 26

    51

    Iterative and Evolutionary Iterative and Evolutionary Domain Modeling Domain Modeling

    • Domain model is usually both started and completed in elaboration phase

    rsData Model

    sSW Architecture Document

    rsDesign ModelDesign

    rsGlossary

    rsSupplementary Specification

    rsVision

    rsUse-Case Model (SSDs)Requirements

    sDomain ModelBusiness Modeling

    T1..T2C1..CnE1..EnI1Iteration

    Trans.Const.Elab.Incep.ArtifactDiscipline

    Chapter 10Chapter 10System Sequence System Sequence Diagrams (Diagrams (SSDSSD))

  • 27

    53

    UP artifact influenceUP artifact influence

    54

    POS SSD: a Process Sale POS SSD: a Process Sale ScenarioScenario

    enterItem(itemID, quantity)

    :System: Cashier

    endSale

    makePayment(amount)

    a UML loop interaction frame, with a boolean guard expression

    external actor to system

    Process Sale Scenario

    system as black box

    the name could be "NextGenPOS" but "System" keeps it simple

    the ":" and underline imply an instance, and are explained in a later chapter on sequence diagram notation in the UML

    a message with parameters

    it is an abstraction representing the system event of entering the payment data by some mechanism

    description, total

    return value(s) associated with the previous message

    an abstraction that ignores presentation and medium

    the return line is optional if nothing is returned

    total with taxes

    change due, receipt

    makeNewSale

    [ more items ]loop

    Guard (bool)

    return line

    instance

    message

    TimeSSD name

  • 28

    55

    System Sequence Diagram System Sequence Diagram 11• System sequence diagram (SSD)

    – a picture that shows, for one particular scenario of a use case, the events that external actors generate, their order, and inter-system events.

    – The system is treated as a black box; the emphasis of the diagram is events that cross the system boundary from actorsto systems.

    – UML sequence diagrams is used to draw SSD.

    • Guideline: Draw an SSD for a main success scenario of each use case, and frequent or complex alternative scenarios.

    56

    System Sequence Diagram System Sequence Diagram 22• Motivation: Why draw an SSD?

    – A software system must reacts to:• External events from actors• Timer events• Faults or exceptions

    – Therefore it is useful to identify external input events (system events).

    • Is an important part of analyzing system behavior.• System behavior is description of what the system does.• SSD describes system behavior.• Use cases and system operation contracts also describe

    system behavior.

  • 29

    57

    System Sequence Diagram System Sequence Diagram 33• SSDs are derived from use cases; they show one

    scenario.

    : Cashier :System

    Simple cash-only Process Sale scenario:

    1. Customer arrives at a POS checkout with goods and/or services to purchase.2. Cashier starts a new sale.3. Cashier enters item identifier.4. System records sale line item and presents item description, price, and running total. Cashier repeats steps 3-4 until indicates done.5. System presents total with taxes calculated.6. Cashier tells Customer the total, and asks for payment.7. Customer pays and System handles payment....

    enterItem(itemID, quantity)

    endSale

    makePayment(amount)

    description, total

    total with taxes

    change due, receipt

    makeNewSale

    [ more items ]loop

    Process Sale Scenario

    SSD name

    58

    System Sequence Diagram System Sequence Diagram 44• System events should be expressed at the abstract level of

    intention rather than in terms of the physical input device.– "enterItem" is better than "scan" (laser scan) because it captures the

    abstract intent of the operation.– Non committal with respect to design choices about what interface is

    used to capture the system event (laser scanner, keyboard, voiceinput ..)

    enterItem(itemID, quantity)

    scan(itemID, quantity)

    : Cashier

    worse name

    better name

    :System

  • 30

    59

    System Sequence Diagram System Sequence Diagram 55• Guideline: Show details of SSD in the glossary.

    – The elements shown in SSDs (operation name, parameters, return data) are terse.

    – Put detail of these elements in glossary.

    • Iterative and evolutionary SSDs– Create SSD only for the next iteration– Inception phase: SSDs are not usually motivated in inception.– Elaboration phase: most SSDs are created during elaboration, when it

    is useful to identify the details of the system events to clarify what major operations, write system operation contracts, and possibly to support estimation.

    inc. elaboration construction transition

    iteration phase

    development cycle

    60

    Monopoly SSDMonopoly SSD

    1.Observer requests new game initialization, enters number of players.2.Observer starts play.3.System displays game trace for next player move Repeat step 3 until a winner or Observer cancels.

  • 31

    Chapter 11Chapter 11Operation Operation Contracts Contracts

    62

    Operation Contracts: Operation Contracts: IntroductionIntroduction

    • Operation contracts– Part of the UP Use-Case Model– They provide more analysis detail on the

    effect of the system operations implied in the use cases

    • Operation contracts use a pre- and post-condition form to describe detailed changes to objects in a domain model, as the result of a system operation.

  • 32

    63

    Sample UP Artifact Influence Sample UP Artifact Influence

    Operation: enterItem(…)

    Post-conditions:- . . .

    Operation Contracts

    Sale

    date. . .

    SalesLineItem

    quantity

    1..*1 . . .

    . . .

    Domain Model

    Use-Case Model

    Design Model: Register

    enterItem(itemID, quantity)

    : ProductCatalog

    spec = getProductSpec( itemID )

    addLineItem( spec, quantity )

    : Sale

    Require-ments

    Business Modeling

    Design

    Sample UP Artifact Relationships

    : System

    enterItem(id, quantity)

    Use Case Text

    System Sequence Diagrams

    makeNewSale()

    system events

    Cashier

    Process Sale

    : Cashier

    use case

    names

    system operations

    Use Case Diagram

    Vision

    SupplementarySpecification

    Glossary

    starting events to design for, and more detailed requirements that must be satisfied by the software

    Process Sale

    1. Customer arrives ...2. ...3. Cashier enters item identifier.

    the domain objects, attributes, and associations that undergo changes

    requirements that must be satisfied by the software

    ideas for the post-conditions

    64

    POS Operation Contract POS Operation Contract • Contract CO2: enterItem

    – Operation: enterItem(itemID: ItemID, quantity: integer)

    – Cross References: Use Cases: Process Sale– Preconditions: There is a sale underway.– Postconditions:

    • A SalesLineItem instance sli was created (instance creation).• sli was associated with the current Sale (association

    formed).• sli.quantity became quantity (attribute modification).• sli was associated with a ProductDescription, based on

    itemID match (association formed).

    Words in black are learning aid, not part of the contract

    See domain model (next page)

  • 33

    65

    POS Partial Domain ModelPOS Partial Domain Model

    Register

    id

    ItemStore

    nameaddress

    Sale

    dateTime/ total

    CashPayment

    amountTendered

    SalesLineItem

    quantity

    Cashier

    id

    Customer

    ProductCatalog

    ProductDescription

    itemIDdescriptionprice

    Stocks

    *

    Houses

    1..*

    Used-by

    *

    Contains1..*

    Describes

    *

    Captured-on

    Contained-in

    1..*

    Records-sale-of

    0..1

    Paid-by Is-for

    Logs-completed

    *

    Works-on

    11

    1

    1 1..*

    1

    1

    1

    1

    1

    1

    1

    0..1 1

    1

    Ledger

    Records-accounts-

    for

    1

    1

    enterItem

    66

    Sections of a Contract Sections of a Contract • Operation:

    – Name of operation, and parameters

    • Cross References:– Use cases this operation can occur within

    • Preconditions:– Noteworthy assumptions about the state of the

    system or objects in the Domain Model before execution of the operation. (non-trivial assumptions)

    • Postconditions:– The state of objects in the Domain Model after

    completion of the operation.

  • 34

    67

    System Operations System Operations 11• System operations

    – The public interface of the system (as a black boxcomponent).

    • The entire set of system operations, across all use cases, defines the public system interface, viewing the system as a single component or class.

    – SSDs show system events• Input system events imply the system has system operations

    to handle the events

    68

    System Operations System Operations 22

    : Cashier

    enterItem(itemID, quantity)

    endSale()

    makePayment(amount)

    description, total

    total with taxes

    change due, receipt

    makeNewSale()

    these input system events invoke system operations

    the system event enterItem invokes a system operationcalled enterItem and so forth

    this is the same as in object-oriented programming when we say the message foo invokes the method (handling operation) foo

    [ more items ]loop

    :System

    Process Sale Scenario

  • 35

    69

    Postconditions Postconditions 11• Postconditions definition

    – Describe changes in the state of objects in the domain model• Including instances created, associations formed or broken, and

    attributes changed.

    • Postconditions are not actions to be performed during the operation– They are observations about the domain model objects that are

    true when the operation has finished• Postconditions fall into these categories:

    – Instance creation and deletion.– Attribute change of value.– Associations (UML links) formed and broken.

    • How are postconditions related to the Domain Model?– What instances can be created; What associations can be formed

    in the Domain Model.

    70

    Postconditions Postconditions 22• Motivation: Why Postconditions?

    – First, contracts aren't always necessary unless more detail and precision is useful

    – Postconditions support fine-grained detail and precision in declaring what the outcome of the operation must be.

    – A contract is an excellent tool of requirements analysis that describes in great detail the changes required by a system operation without having to describe how they are to be achieved

    • Guideline: How To Write a Postcondition?– Express postconditions in the past tense to emphasize state

    changes that arose from an operation, not an action to happen.

    • (better) A SalesLineItem was created.• (worse) Create a SalesLineItem, or, A SalesLineItem is created.

  • 36

    71

    Postconditions Postconditions 33• Why write postconditions in the past tense?

    – Think about them using The Stage and Curtain analogy (next page)

    • The system and its objects are presented on a theatre stage.– 1.Before the operation, take a picture of the stage.– 2.Close the curtains on the stage, and apply the system operation– 3.Open the curtains and take a second picture.– 4.Compare the before and after pictures, and express as

    postconditions the changes in the state of the stage

    • Guideline: How Complete Should Postconditions Be? Agile vs. Heavy Analysis– Generating a complete and detailed set of postconditions

    for all system operations is not likely or necessary.– Treat the creation of postconditions as an initial best guess,

    knowing that they are not complete and perfect.

    72

    PostconditionsPostconditions 44

    Before After

  • 37

    73

    Example: enterItem Example: enterItem PostconditionsPostconditions

    • Postconditions of the enterItem system operation.– Instance Creation and Deletion

    • After an enterItem (itemID and quantity) operation, what new objectshould have been created? A SalesLineItem. Thus:

    – A SalesLineItem instance sli was created (instance creation).

    – Attribute Modification• After an enterItem (itemID and quantity) operation, what attributes of

    new or existing objects should have been modified? The quantity of the SalesLineItem should have become equal to the quantity parameter. Thus:

    – sli.quantity became quantity (attribute modification).

    – Associations Formed and Broken• After an enterItem (itemID and quantity) operation, what associations

    between new or existing objects should have been formed or broken? The new SalesLineItem should have been related to its Sale, and related to its ProductDescription. Thus:

    – sli was associated with the current Sale (association formed).– sli was associated with a ProductDescription, based on itemID match

    (association formed).

    74

    Guideline: Should We Update Guideline: Should We Update the Domain Modelthe Domain Model

    • Guideline: Should We Update the Domain Model?– It's common during the creation of the contracts to

    discover the need to record new conceptual classes, attributes, or associations in the domain model.

    – Enhance it as you make new discoveries while thinking through operation contracts.

    – In iterative and evolutionary methods (and reflecting the reality of software projects), all analysis and design artifacts are considered partial and imperfect, and evolve in response to new discoveries

  • 38

    75

    Guideline: When Are Guideline: When Are Contracts UsefulContracts Useful

    • There are situations where the details and complexity of required state changes are awkward or too detailedto capture in use cases– Consider an airline reservation system

    • The system operation addnewreservation: the complexity is very high regarding all the domain objects that must be changed, created, and associated.

    • These fine-grained details can be written up in the use case, but it will make it extremely detailed (e.g., Noting each attribute in all the objects that must change).

    – The postcondition offers and encourages a very precise, analytical language that supports detailed thoroughness

    • If developers can comfortably understand what to do without them, then avoid writing contracts.

    76

    Guideline: How to Create and Guideline: How to Create and Write Contracts Write Contracts 11

    • How to Create and write contracts? Identify system operations from the SSDs. For system operations that are complex and

    perhaps subtle in their results, or which are not clear in the use case, construct a contract.

    To describe the postconditions, use the following categories:• Instance creation and deletion• Attribute modification• Associations formed and broken

  • 39

    77

    Guideline: How to Create and Guideline: How to Create and Write Contracts Write Contracts 22

    • Writing Contracts– Write the postconditions in a declarative, passive past form

    (was ..) to emphasize the observation of a change rather than how it is going to be achieved.

    • (better) A SalesLineItem was created.• (worse) Create a SalesLineItem.

    – To establish an association between existing objects or those newly created.

    • After the enterItem operation is complete, the newly created instance was associated with Sale; thus:

    – The SalesLineItem was associated with the Sale.

    • The most common problem– Forget to include the forming of associations. Particularly when

    new instances are created.

    78

    Example: NextGen POS Example: NextGen POS Contracts Contracts 11

    System Operations of the Process Sale Use Case• Contract CO1: makeNewSale

    – Operation: makeNewSale()– Cross References: Use Cases: Process Sale– Preconditions: none– Postconditions:

    • A Sale instance s was created (instance creation).• s was associated with a Register (association formed).• Attributes of s were initialized.

    • Keep it as light as possible, and avoid all artifacts unless they really add value.

    • Contract CO2: enterItem– Operation: enterItem(itemID: ItemID, quantity: integer)– Cross References: Use Cases: Process Sale– Preconditions: There is a sale underway.– Postconditions:

    • A SalesLineItem instance sli was created (instance creation).• sli was associated with the current Sale (association formed).• sli.quantity became quantity (attribute modification).• sli was associated with a ProductDescription, based on itemID match (association

    formed).

    There is no sale underway

    See domain model (next next page)

  • 40

    79

    Example: NextGen POS Example: NextGen POS Contracts Contracts 22

    • Contract CO3: endSale– Operation: endSale()– Cross References: Use Cases: Process Sale– Preconditions: There is a sale underway.– Postconditions:

    • Sale.isComplete became true (attribute modification).

    • Contract CO4: makePayment– Operation: makePayment( amount: Money )– Cross References: Use Cases: Process Sale– Preconditions: There is a sale underway.– Postconditions:

    • A Payment instance p was created (instance creation).• p.amountTendered became amount (attribute modification).• p was associated with the current Sale (association formed).• The current Sale was associated with the Store (association formed); (to

    add it to the historical log of completed sales)

    See domain model (next page)

    Add isCompleteattribute

    80

    POS Partial Domain ModelPOS Partial Domain Model

    Register

    id

    ItemStore

    nameaddress

    Sale

    dateTime/ total

    CashPayment

    amountTendered

    SalesLineItem

    quantity

    Cashier

    id

    Customer

    ProductCatalog

    ProductDescription

    itemIDdescriptionprice

    Stocks

    *

    Houses

    1..*

    Used-by

    *

    Contains1..*

    Describes

    *

    Captured-on

    Contained-in

    1..*

    Records-sale-of

    0..1

    Paid-by Is-for

    Logs-completed

    *

    Works-on

    11

    1

    1 1..*

    1

    1

    1

    1

    1

    1

    1

    0..1 1

    1

    Ledger

    Records-accounts-

    for

    1

    1

    makeNewSale

    makePayment

  • 41

    81

    Applying UML: Operations, Applying UML: Operations, Contracts, and the OCL Contracts, and the OCL

    • The UML formally defines operations:– An operation is a specification of a transformation or query that an

    object may be called to execute– Operation is an abstraction, not an implementation.

    • By contrast, a method is an implementation of an operation• In UML, an operation has a signature (name and parameters) and

    – is associated with a set of UML Constraint objects classified as preconditions and postconditions that specify the semantics of the operation

    • Object Constraint Language (OCL) – A rigorous language that can be used to express constraints of UML

    operartions.– Example:

    System::makeNewSale( ) pre : post : …

    • Guideline: Keep things simple; use natural language instead of OCL.

    82

    Process: Process: Operation Contracts Operation Contracts Within the UPWithin the UP

    • In the UML, operations exists at many levels, from System down to fine-grained classes, such as Sale.– Operation contracts for the System level are part of the Use-Case

    Model.

    • Inception phase– Contracts are not motivated during inception, they are too

    detailed.

    • Elaboration phase– If used at all, most contracts will be written during elaboration,

    when most use cases are written. Only write contracts for the most complex and subtle system operations.

    inc . e labora tion construction transition

    ite ration phase

    developm ent cycle

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice