Ralph Johnson

Document Sample
Ralph Johnson Powered By Docstoc
					             Ralph Johnson          A & D Project: ONCD           Info 620   Spring 2006




Project Title: Online CD Sales System (OnCD)

Group members (1): Ralph Johnson

Contents:
             Problem Statement                      pp. 2-3

             Use Case Descriptions                  pp. 4-6

             Use Case Diagram                       p. 7

             Use Case 1:     Search for CD(s)       pp. 8-9

             Use Case 2:     Edit Shopping Cart     pp. 10 - 11

             Use Case 3:     Purchase CD(s)         pp. 12 - 13

             Use Case 4:     Authorize Credit       p. 14

             TCM Noun analysis                      p. 15 - 17

             TCM VERBS                              p. 18

             Check List (Step N6)                   p. 19

             Class Diagram                          p. 20

             Sequence Diagram development: pp. 21-24

             System Sequence Diagram p. 25

             Sequence Diagrams pp 26 - 33

             State Chart p. 34

             Design Class Diagram P. 35

             Database Schema p. 36

             Deployment Diagram P. 37

             Evaluation of the Analysis and Design, Lessons Learned, Not Learned pp 38 - 40


                                                  p. 1 of 40
                Ralph Johnson          A & D Project: ONCD             Info 620        Spring 2006

Project Title: Online CD Sales System (OnCD)


                                               Problem Statement

Goals:
         1. To provide web-based access to and sales of CDs available through a local CD store.
         2. To provide simultaneously a computer based inventory, ordering and sales system for the store
         staff.

In scope:
       re-presenting CDs available through vendor network, with cover art images, artist photography and
       sound files provided by vendor, and ability to upload, and customize these representations.

         On-line sales and automatic credit card authorization calculate shipping, allow for in store pick-up
         (assumes one store location).

         Maintain inventory via unified database of stock, and track on-line and in-store CD orders and
         purchases; automate back-ordering and reports.

         Summary reports on sales (by CD category, in-store/on-line, by vendor, date etc) and escrow
         accounting of taxes collected and to be paid out. Data available in formats exportable to financial
         analysis and checking programs

Out of scope:
       accounting of payments to vendors.
       representing CDs available outside of vendor network;
       obtaining distribution permissions for sound files, photographs and copy beyond the licensing for
       these obtained by proxy through vendors;
       In store POS system


Functionality of the system

Web interface including search functionality, access to data on available CDs (artist, title, track list, price, in
stock etc) and related review data (text reviews, number of customer reviews, average ratings). Sound
sample files for each song will be included in any search or browse results.

Interface will provide “shopping cart” functionality for customers to select and delete CDs they wish to
purchase, securely accept customer credit card information, and check that information for credit
authorization. The system will calculate total amounts due, indicate that items are out of stock and
automatically generate back order if the last item of a particular CD sells and notify the store the pull any
sold CDs from circulation.

Exchanges and Returns: [According to store policy], authorized returns and exchanges will be re-entered into
inventory, credit card amounts refunded, defective product replaced.



                                                     p. 2 of 40
               Ralph Johnson          A & D Project: ONCD             Info 620       Spring 2006
The interface will provide additional functionality to store staff which will include reports on backordered
CDs, interface with vendor catalogs for ordering stock and importing CD data from vendor database to
OnCD database, and summary sales reports.

Provide for staff entry and customization of requisite CD / artist photography and sound files, if not available
through vendor.


Data requirements of the system

inputs:
          CD sku or other inventory identification, CD data (artist, title, tracks, background information,
          photography, classification)

          vendor pricing, vendor ids

          store pricing, tax rate, shipping options, shipping charges to customer

          customer contact and credit card information and authorization confirmation records, transaction
          dates, timestamp

          Staff usernames and passwords, employee id numbers


outputs:
        CD data (artist, title, tracks, background information, photography), store pricing, customer contact
and credit card information and authorization confirmation records, order numbers, shipping reports, sales
reports


Other non functional requirements:
       GUI

Other important assumptions

OnCD will present information only on CDs that the store has in stock, has had in stock and plans to re-
order, and other CDs readily available through its vendor network.




                                                     p. 3 of 40
              Ralph Johnson       A & D Project: ONCD          Info 620       Spring 2006
Use Case Descriptions
      use case name       actor    purpose          overview
      Search for CD(s) customer To enable           customer searches web interface by
                                   customer to      entering text, and selecting field to search
                                   access           [title, artist, song]. Customer may view
                                   information      information on a CD, including music
                                   about CDs via    samples for each song, artist information,
                                   search           photographs. Customer may add CD to
                                                    shopping cart [EXTEND Edit Shopping
                                                    Cart]
      Browse for CD(s) customer To enable           Customer browses CD selection by
                                   customer to      category [Rock, Jazz, Classical, Country,
                                   access           Soundtrack]; results in category are sort-
                                   information      able by artist, release date, title. Customer
                                   about CDs via    may view information on a CD, including
                                   categorized      music samples for each song, artist
                                   directory        information, photographs. Customer may
                                                    add CD to shopping cart [EXTEND Edit
                                                    Shopping Cart]
      Edit Shopping       customer To create,       Customer adds a CD to shopping cart, or
      Cart                         maintain and     clicks “view shopping cart.” Cart shows
                                   edit list of CDs running total of CDs in cart [not including
                                   customer may     shipping]. CDs can be deleted, incremented
                                   later commit to  or decremented. Customer returns to
                                   purchasing       Search for CD(s) or Browse for CD(s) or
                                                    moves on to (EXTEND) Purchase CD(s).
      Purchase CD(s)      customer To purchase      Customer clicks “check out” from
                                   CDs in shopping shopping cart view, enters billing
                                   cart             information, selects shipment options.
                                                    System returns shipping fee and total due,
                                                    Customer enters credit card info. System
                                                    authorizes credit card transaction
                                                    [INCLUDE Authorize Credit], removes
                                                    CDs from store inventory or generates list
                                                    of CDs to order from Vendor(s). System
                                                    generates and stores order confirmation
                                                    number, returns order confirmation screen.
                                                    EXTEND Order from Vendor
                                                    Automatically

      Authorize Credit    customer Steps for credit    Customer’s Credit card information and
                                   card approval       charge amount is sent to CC company.
                                   from external       Returns CC confirmation number or 0 for
                                   CC                  not authorized.
                                   authorization
                                   system
      Authorize Return    Staff    To check a          In response to web form-mail, mail or
      of CD(s)                     customer’s          phone call, staff checks validity of sale and
                                   request to return   whether return meets return policy

                                               p. 4 of 40
       Ralph Johnson       A & D Project: ONCD          Info 620       Spring 2006
                            CDs against       requirements. If valid, system generates
                            return policy, if RMA# (return merchandise authorization)
                            valid request,    number which tags one or more items on
                            authorize return. one or more bills from one customer as
                                              being authorized for return. RMA# is given
                                              or emailed to customer
                                              Assumption: Business rules for return in
                                              Supplementary Specification
Return CD(s)       Staff    To return         Staff enters RMA # for a returned
                            (authorized)      shipment, system generates list of items
                            CDs to            that were authorized to be returned. Staff
                            inventory when checks physical items against list. For all
                            they are          items physically returned on list, staff
                            physically        directs system to process returns. System
                            returned          returns items to inventory, EXTEND
                                              Authorize Refund. For in store returns,
                                              staff scans CD ID NUMBER. If any CD is
                                              defective and customer wants replacement,
                                              staff enters order for new copy/copies.
                                              [EXTEND Enter Order] (In store: If CD is
                                              in inventory, staff replaces the defective
                                              CD)
Enter Order        Staff    To create orders Staff performs data entry of customer
                            for phone and     information (address, phone, credit card) to
                            mail orders, and generate order placed by phone or mail.
                            returned CD       Replacement CDs for returns use previous
                            replacement       order information, unless otherwise
                                              specified. New order details recorded
                                              include CD IDs, shipping option, date, and
                                              credit card authorization number. Vendor
                                              orders for non-inventory CDs are
                                              automatically generated.

                                             EXTEND Authorize Credit, EXTEND
                                             Order from Vendor Automatically
Authorize Refund   Staff    Steps for credit Customer’s Credit card information and
                            card refund from charge amount is sent to CC company.
                            external CC      Returns CC refund confirmation number or
                            authorization    0 for not authorized.
                            system
Order stock from   Staff    Used by staff to Staff member begins vendor order by
vendor                      replenish or     selecting from a vendor list. System returns
                            increase store’s screen with options for browsing and
                            stock of CDs by searching; and option to view and re-order
                            placing order to previous order. Staff selects view previous
                            various CD       order. System returns CDs order
                            suppliers        previously, Staff member can select all
                                             none or some to reorder, places order.
                                             System records order information and

                                       p. 5 of 40
       Ralph Johnson         A & D Project: ONCD        Info 620        Spring 2006
                                               sends order to appropriate vendor. Order
                                               format determined by vendor (email,
                                               secure connection, fax, mail etc). System
                                               displays order confirmation message.
                                               Provides functionality for importing CD
                                               data from vendor database (titles, price,
                                               sound files, photos etc)

Order from          System    To provide          During Purchase CD(s) and Enter Order
Vendor                        immediate           system places each ordered non-inventory
Automatically                 backordering of     CD id number in queue for automatic order
                              CDs purchased       generation to appropriate vendor. Order
                              that are not in     format determined by vendor (email,
                              inventory           secure connection, fax, mail etc).
                                                  Performed daily by system.

                                                  Note:
                                                  This use case is distinct from the previous
                                                  one (Order stock from vendor) in that it is
                                                  an automated process initiated by orders by
                                                  customers of CDs not in inventory rather
                                                  than a manual process which focuses on
                                                  staff decisions and “felt” needs.

Generate shipping Staff       To provide list     Staff generates daily list of CDs purchased,
report                        of purchased        customer addresses and shipping types (or
                              CDs to              “Hold for in-store pickup”)
                              physically ship
Customize CD        Staff     To allow staff to   Staff edits and uploads CD web pages
pages                         enhance CD          adding reviews, additional photos, news,
                              web pages           links etc.
Generate            Staff     To provide sales    Staff generates static and customizable
Inventory reports             totals, vendor      reports on inventory giving sales totals,
                              order totals, top   vendor order totals. Reports can be
                              selling CDs         customized by date range, web/ in store
                                                  sales, genre




                                        p. 6 of 40
          Ralph Johnson                   A & D Project: ONCD                        Info 620             Spring 2006


          Ralph Johnson      A & D Project  Info 620 Spring 2006
          Online CD Sales System (OnCD) Domain Use Case Diagram




                                                                      <<extend>>


                             Search for CD(s)                        <<extend>>       Edit Shopping Cart



Customer                                                                             <<extend>>
                             Browse for CD(s)


                                                                        <<extend>>
                                                                                       Purchase CD(s)
            Generate shipping report                   <<extend>>


                                        Enter Order           Order fr Vendor Auto
                                                                                                             CD vendor

                                                                        <<extend>>

                                                                                              <<include>>




  Staff                                                Order stock from vendor         Authorize Credit
                                             <<extend>>
                                                                                                              Credit Card
                                                                                                            Authorization Co


                                                                <<extend>>
                                        Return CD(s)                                   Authorize Refund




                               Authorize Return of CD(s)




                        Customize CD pages




           Generate Inventory reports




                                                           p. 7 of 40
          Ralph Johnson          A & D Project: ONCD           Info 620        Spring 2006

USE CASE #              1
USE CASE Name           Search for CD(s)
ACTOR                   Web Customer
Purpose (1 phrase)      To enable customer to access information about CDs via search.
Overview and scope      customer searches web interface by entering text, and selecting field to
                        search [title, artist, song]. Customer may view information on a CD,
                        including music samples for each song, artist information, photographs.
                        Customer may add CD to shopping cart [EXTEND Edit Shopping Cart]
Level                   Primary
Preconditions           Customer has accessed web site. If the customer’s hard drive contains a
                        cookie that has not expired, the contents of their shopping cart from their
                        previous session are restored. Web site and search interface are functional,
                        CD indexes up to date. Customer browser must have cookies enabled.
Postconditions in words Customer has accessed search results pertaining to their search interest,
                        and viewed information about particular CDs
Trigger                 Customer begins search via web interface
Included Use Cases
Extending Use Cases     Edit Shopping Cart
MAIN SUCCESSFUL Actor Action                               System Action
SCENARIO in             1. Customer enters free text in 2. System compares search string against
numbered sequence       search interface, selects type     index of CDs for the search type
                        of search [CD title, artist,       selected. If there are matches, system
                        song]. Customer starts search returns a list of matching results which
                        (“go” “enter” “search”)            display CD title, artist, song and links to
                                                           a page with more information about each
                                                           particular CD.

                           3. Customer selects a CD to      4. System displays information on that
                           view additional information      particular CD, including music samples
                                                            for each song, artist information (history,
                                                            well-known performances), photographs,
                                                            professional, staff and user reviews.
                                                            Indicates if a CD is “In stock.” System
                                                            displays option to add to shopping cart.

                           5. Customer adds CD to           6. System sets cookie on customer’s hard
                           shopping cart                    drive (or updates it if it already exists)
                                                            storing an automatically generated
                                                            session-use-ID-number.

                                                            7. System adds CD ID to shopping cart
                                                            (System stores contents (any CD IDs) of
                                                            shopping cart along with the session user
                                                            ID number.)

                                                            8. Extend Edit Shopping Cart

                                              p. 8 of 40
          Ralph Johnson          A & D Project: ONCD        Info 620      Spring 2006
OTHER                     Step                            Branching Action
SUCCESSFUL                3a - 5a                         Customer may return to any
SCENARIOS                                                 immediately-preceding step
                          3b                              Customer adds a CD to shopping cart
                                                          directly from search results
                          5b.                             Customer may listen to sample(s) of any
                                                          song(s) on CD page
                          3c At any time customer may     Extend Edit Shopping Cart
                          view shopping cart
UNSUCCESSFUL              Conditions                      Actions
SCENARIOS                 2a. If no results from search   System suggests customer retype search
                                                          string in case of typos or misspelling
                          *d Customer exits web
                          interface
Priority in scheduling    First
Frequency                 1000+ times a day
Other non-functional      Cookies expire in 7 days.
requirements
Developer                 Ralph Johnson
Creation date and last    May 2, 2005, Last Mod May 30
modified date
Other Comments            *means the step can occur at any point in use case. CD Line items are
                          used for ordering from vendors, so “In stock” CDs refers to CD Line
                          items that are in the store’s inventory




                                            p. 9 of 40
          Ralph Johnson         A & D Project: ONCD          Info 620       Spring 2006

USE CASE #              2
USE CASE Name           Edit Shopping Cart
ACTOR                   Web Customer
Purpose (1 phrase)      To create, maintain and edit list of CDs customer may later commit to
                        purchasing
Overview and scope      Customer adds a CD to shopping cart, or clicks “view shopping cart.”
                        Cart shows running total of CDs in cart [not including shipping]. CDs
                        can be deleted, incremented or decremented. Customer returns to Search
                        for CD(s) or Browse for CD(s) or moves on to Purchase CD(s).
Level                   extended
Preconditions           customer has added one or more CDs to shopping cart.
Postconditions in words CDs are removed or quantities increased as indicated by customer.
                        System creates Temporary CD_Line_Item for each CD that is not in
                        inventory. Updated total amount due (before shipping and taxes) is
                        shown. Customer returns to Search for CD(s) or Browse for CD(s) or
                        moves on to Purchase CD(s).
Trigger                 Customer chooses to view shopping cart.
Included Use Cases
Extending Use Cases     Purchase CDs
MAIN SUCCESSFUL Actor Action                               System Action
SCENARIO in                                                1. System displays CDs customer has
numbered sequence                                          added to shopping cart, with cost of
                                                           each CD x quantity and total amount
                                                           due (before shipping and taxes).
                                                           Options are given to remove any or all
                                                           CDs, or change quantity of any CD in
                                                           the cart.
                        2. Customer removes any CDs 3. System removes from shopping cart
                        he no longer wants in cart,        list CDs marked by customer as
                        changes the quantity on any        “remove” or which now have a
                        CD in the cart (Changing           quantity of 0. System records quantities
                        quantity of a CD to 0 has the      of CDs for which the customer has
                        same effect as removing it).       changed quantities, and updates and
                        Customer updates shopping          displays running total to reflect any
                        cart.                              changes. The system stores CD id #s in
                                                           association with the session-user-ID-
                                                           number from the cookie stored on the
                                                           customer’s hard drive when customer
                                                           added a CD to the shopping cart.
OTHER                   Step                               Branching Action
SUCCESSFUL              1a. Customer may decide to         Changes made to cart are only recorded
SCENARIOS               return to searching or browsing if the customer has chosen to update
                          for CDs at any time.             the cart before returning to
                                                           search/browse. Last search or browse
                                                           screen is then displayed.


                                            p. 10 of 40
         Ralph Johnson        A & D Project: ONCD            Info 620        Spring 2006
                         1b. Customer does not have        System displays request that customer
                         cookies enabled                   enable cookies before proceeding.
                         1.c.                              System creates CD_Line_Item for each
                                                           CD that is not in inventory.
                         *b. customer can purchase         Extend Purchase CD(s)
                         cd(s) in shopping cart - “check
                         out” (cannot check out if no
                         CDs are in shopping cart)

UNSUCCESSFUL             Conditions                    Actions
SCENARIOS                1a. Customer has not added    1a. System displays the fact that
                         any CDs to shopping cart when Customer has not added any CDs to
                         they attempt to view shopping shopping cart
                         cart.
Priority in scheduling   First
Frequency                1000+ times a day
Other non-functional     Customer browser must have cookies enabled in order for shopping cart
requirements             to track CDs.
Developer                Ralph Johnson
Creation date and last   May 2, 2006 , Last Mod May 30
modified date
Other Comments           *means the step can occur at any point in use case




                                           p. 11 of 40
                Ralph Johnson         A & D Project: ONCD           Info 620       Spring 2006

USE CASE #           3
USE CASE Name        Purchase CD(s)
ACTOR                Web Customer
Purpose (1 phrase)   To purchase CDs in shopping cart
Overview and scope   Customer checks out from shopping cart view, enters name, shipping and billing address,
                     selects shipment options System returns shipping fee and total due, Customer enters
                     credit card info. System authorizes credit card transaction [INCLUDE Authorize Credit],
                     removes CDs from store inventory (if “In Stock”) and generates list of CDs to order
                     from Vendor(s) (if not “In Stock”). System generates and stores order confirmation
                     number, stores customer name and billing information, returns order confirmation screen
                     with an order confirmation number.
Level                Extended
Preconditions        Customer has added one or more Cd(s) to shopping cart. Customer has enough credit on
                     card to cover cost of purchase.
Postconditions in    Customer name, address and credit card information has been entered and stored in an
words                order which has been created. Order includes shipping type, shipping charges and total
                     due. Customer credit card has been charged the total due. One CD for each in the order
                     has been added to order. The status of In-stock CDs (preexisting CD_line_items) has
                     been changed to sold, the order number has been recorded in each CD record. System
                     has created CD_Line_Item for each CD that is not in inventory. CDs ordered that are not
                     in inventory have been had their status changed to order from vendor. (This will place on
                     an order list which will be added to vendor orders the next time staff orders CDs from
                     vendors.)
Trigger              Customer decides to “check out” CDs in their shopping cart.
Included Use
Cases                Authorize Credit; Calculate Shipping
Extending Use        Order from Vendor Automatically
Cases
MAIN                 Actor Action                       System Action
SUCCESSFUL           1. Customer decides to “check      2. System displays form for customer entry of billing
SCENARIO in          out” CDs in their shopping         address: customer last and first name, address, city,
numbered             cart.                              state, zip and phone number, Order contents and total
sequence                                                due before shipping and tax. Customer can designate
                                                        that billing and shipping address are different (They are
                                                        the same by default)
                     3. Customer enters last and        4. System checks that data is complete and valid.
                     first name, address, city, state
                     and zip for billing address.
                                                        5. System displays shipping options [in-store pick up,
                                                        standard ground, express] and prices for each.

                     6. Customer selects shipping       7. System displays order, shipping type, and total
                     option.                            including shipping charges with form for credit card
                                                        input: CC#, Exp date
                     8. Customer enters CC#, Exp        9. INCLUDE Authorize Credit
                     date

                                                   p. 12 of 40
               Ralph Johnson         A & D Project: ONCD         Info 620       Spring 2006
                                                     10. System stores order number, customer name,
                                                     address, phone and credit card type and CC
                                                     confirmation #.
                                                     11. System changes status of each in stock
                                                     CDline_item to ordered and assigns the order number
                                                     to each (This information will be reported to staff when
                                                     they generate daily shipping report)
                                                     12. System displays order confirmation screen with an
                                                     order number, CD titles, and CD ID #, prices, shipping
                                                     charges and total.
OTHER                Step                            Branching Action
SUCCESSFUL           3a. Customer selects ship to       System displays form for customer entry of billing
SCENARIOS            address other than billing         address: customer last and first name, address, city,
(Specify any         address                            state zip and phone number; and shipping address:
successful                                              recipient last and first name, address, city, state zip and
variations of the                                       phone number.
normal execution
path, including
extension points
using                4a. address form data missing      System returns to step 2, highlights problem or missing
EXTEND               or invalid                         info
eus_name)            7a. If order is for in-store       System calculates tax instead of shipping, and adds it
                     pickup,                            to total
                     12a. If Authorize Credit is        Return to step 8, add error message that CC
                     unsuccessful (returns 0)           information as entered could not be processed and tell
                                                        customer to re-enter or try a different credit card
                     13a. If one or more CDs are        13a.1. Each new CD_Line_Item is placed on order
                     not in inventory                   from vendor status.
UNSUCCESSFUL         Conditions                         Actions
SCENARIOS            4b. address form data missing      Abort order process, display error screen informing
(erroneous           or invalid more than twice         customer to call the store.
situations)                                             Delete temporary CD_Line_Items
                     12a. If Authorize Credit is        Abort order process, display error screen informing
                     unsuccessful three times           customer to check with their credit card company
                                                        Delete temporary CD_Line_Items
Priority in          First
scheduling
Frequency            100 times a day
Other non-           Web interface must use secure connection for every step of this use case.
functional           Shipping options and rates for each to be included in supplementary specification.
requirements
Developer            Ralph Johnson
Creation date and    May 5, 2005, Last Mod June 10
last modified date
Other Comments




                                                   p. 13 of 40
          Ralph Johnson          A & D Project: ONCD          Info 620       Spring 2006

USE CASE #              4
USE CASE Name           Authorize Credit
ACTOR                   Web Customer
Purpose (1 phrase)      Included in Purchase CD(s), System steps for credit card approval from
                        external CC authorization system
Overview and scope      Customer’s Credit card information and charge amount is sent to CC
                        company. Returns CC confirmation number or 0 for not authorized.
                        INCLUDEd in Purchase CD(s).
Level                   included
Preconditions           Customer’s name, credit card type, credit card number and expiration date
                        have been received in Purchase CD(s). Total due has been calculated.
Postconditions in words Customer’s credit card has been charged for total due, system has received
                        CC confirmation number from CC company.
Trigger                 Customer enters credit card info in Purchase CD(s)
Included Use Cases
Extending Use Cases
MAIN                    Actor Action                      System Action
SUCCESSFUL                                                1. System sends Customer’s name, credit
SCENARIO in                                               card type, credit card number, expiration
numbered sequence                                         date and charge amount (total due) to
                                                          credit card authorization system
                                                          2. System receives charge authorization
                                                          code (positive number for confirm or 0 for
                                                          deny)
                                                          3. System returns authorization code
OTHER                   Step                              Branching Action
SUCCESSFUL
SCENARIOS
UNSUCCESSFUL            Conditions                        Actions
SCENARIOS
Priority in scheduling   First
Frequency                100 times a day
Other non-functional     authorization code specification dependent on industry standard
requirements
Developer                Ralph Johnson
Creation date and        May 5, 2006
last modified date
Other Comments




                                            p. 14 of 40
           Ralph Johnson                A & D Project: ONCD             Info 620            Spring 2006
TCM Noun analysis

                   Nouns                  Class Elimination Rules      Class Categories Applied(Step N3)   Class
                                             Applied (Step N2)
  artist                                 CER7: Attributes (of CD)
  artist history                         CER7: Attributes (of
                                         background information)
  available (in stock) CDs               None                        CC3: Physical Things                   x
  available Data formats                 PDN
  average ratings                        CER7: Attributes (of
                                         background information)
  back order                             none                        CC11: Containers of other things       x
  background information                 none                        CC11: Containers of other things       x
  billing address                        none                        CC2: Places.                           x
  CC authorization system                CER6: Meta-language
  CC charge authorization code           CER7: Attributes
  CC#                                    CER7: Attributes
  CD(item)                               none                        CC6: Transaction Line Items.           x
  CDs                                    none                        CC8: Specification                     x
  city                                   CER7: Attributes
  classification (cd genre)              CER7: Attributes
  complete address                       none. combine with “valid   CC10: Rules/Policies.                  x
                                         address”
  computer based inventory               CER6: Meta-language
  cookie                                 none                        CC5: Events (Transactions).            x
  credit authorization                   CER1: Redundant classes
  credit card refund amount              CER7: Attributes
  credit card authorization              CER7: Attributes
  credit card input form                 CER5: Implementation
                                         constructs.
  Customer                               none                        CC1: Roles of People                   x
  customer reviews                       CER7: Attributes
  database                               CER5: Implementation
                                         constructs.
  defective product                      none                        CC3: Physical Things.                  x
  employee id                            CER7: Attributes
  error message CC information as        CER4: Operations
  entered could not be processed
  Exp date                               CER7: Attributes
  express                                CER7: Attributes
  field search [title artist song]       CER5: Implementation
                                         constructs.
  first name                             CER7: Attributes
  free text                              CER3: Vague classes
  GUI                                    CER5: Implementation
                                         constructs.
  index                                  CER5: Implementation
                                         constructs.
  in-store CD orders                     CER1: Redundant classes.
  in-store pick up                       CER7: Attributes
  inventory identification               CER1: Redundant classes.
  last name                              CER7: Attributes
  link to more information about each    CER7: Attributes <FK>
  particular CD
  list price                             CER7: Attributes
  local CD store                         none                        singleton                              x
  name                                   CER3: Vague classes.

                                                    p. 15 of 40
              Ralph Johnson         A & D Project: ONCD              Info 620            Spring 2006
                                     CER1: Redundant classes
no results from search               CER5: Implementation
                                     constructs
on-line CD orders                    none                         CC5: Events (Transactions).          x
Options (delete, increm, decrem)     CER7: Attributes.
order                                CER3: Vague classes.
order confirmation number            CER7: Attributes.
order confirmation screen            CER5: Implementation
                                     constructs
order numbers                        CER7: Attributes.
out of stock items                   CER9: Derived classes
                                     (from instance of CD
                                     record without a physical
                                     instance of the CD)
passwords                            CER7: Attributes.
phone number                         CER7: Attributes.
previous search screen               CER5: Implementation
                                     constructs
price                                CER7: Attributes.
professional reviews                 CER7: Attributes.
purchase                             CER1: Redundant classes
                                     (order)
quantity of 0                        CER7: Attributes.
running total of CDs in cart [not    CER4: Operations
including shipping] each CD x
quantity= total amount due
sales date                           CER7: Attributes.
sales reports                        none                         CC11: Containers of other things     x
sales system                         CER6: Meta-language.
(a) search                           CER5: Implementation
                                     constructs
search functionality                 PDN
search results                       CER5: Implementation
                                     constructs
secure connection                    PDN
session-use-ID-number                CER7: Attributes. (cookie)
shipping address                     none                         CC2: Places.                         x
shipping charges                     CER7: Attributes.
shipping options                     none                         CC14: Lookup/References.             x
shipping reports                     none                         CC11: Containers of other things     x
shopping cart                        none                         CC11: Containers of other things     x
sku                                  CER7: Attributes.
Sound sample files                   CER7: Attributes.
staff                                none (has PW, username)      CC1: Roles of People                 x
staff customization                  PDN
staff reviews                        CER7: Attributes.
standard ground                      CER7: Attributes.
state                                CER7: Attributes.
street address                       CER7: Attributes.
Summary reports on sales             CER1: Redundant classes
                                     (sales reports)
summary sales reports                CER1: Redundant classes
                                     (sales reports)
tax rate                             CER8:Values
timestamp                            CER7: Attributes.
title                                CER7: Attributes.
track (song)                         CER7: Attributes.
transaction dates                    CER7: Attributes.
                                                 p. 16 of 40
             Ralph Johnson      A & D Project: ONCD             Info 620          Spring 2006
unsuccessful CC authorization    PDN
usernames                        CER7: Attributes.
valid address                    none. combine with          CC10: Rules/Policies.              x
                                 “complete address”
vendor                           none                        CC4: Organizations                 x
vendor catalogs                  CER2: Irrelevant classes.
vendor id                        CER7: Attributes.
vendor price                     CER7: Attributes.
Web interface                    CER6: Meta-language.
well-known performances          CER7: Attributes.
zip                              CER7: Attributes.




                                             p. 17 of 40
                  Ralph Johnson              A & D Project: ONCD                  Info 620       Spring 2006
TCM VERBS
Verbs                                Transformed verbs           Verb Elimination Rules   V4, V5, V65, V7?

(systen) calculates shipping         shipping calculation        VER3: Actions.
automated back-ordering              back order (already in               -
                                     nouns)
(system) calculates total amount     total amount                VER3: Actions.
                                     calculation - different
                                     from noun “running
                                     total”
                                       includes shipping
staff replaces (defective product)   defective product           comprehension
                                     replacement by staff        association
(customer) adds CD to shopping       shopping cart CD            none                           no             association
cart                                 addition
(system) compares search string      search string               VER3: Actions.
(against index)                      comparison
Customer selects CD (to view         customer cd selection       comprehension
additional information)                                          association
(System) updates (customer)          customer cookie             none                           no             association
cookie (user session-userID)         update
(customer) listens to sample         sample (track)              comprehension
                                     playback                    association
(customer) views shopping cart       customer’s shopping                     -
                                     cart (already in
                                     nouns)
retype search string                 search string retyping
Cookie expires                       expiration of cookie        comprehension
                                                                 association (cookie
                                                                 information expires on
                                                                 system without
                                                                 association with
                                                                 customer’s cookie)
commit to purchasing (items in       purchase commitment         PDR
shopping cart)
(customer) deletes cds               cd deletion                 VER3: Actions
(customer) increments cd             cd incremented              VER3: Actions
(customer) decrements cd             cd incremented              VER3: Actions
update shopping cart                 shopping cart update        VER3: Actions
cookies enabled                                                  VER1: Irrelevant
                                                                 Associations
Customer checks out (from            shopping cart check         none                           no             association
shopping cart view)                  out
(system) removes CDs from            cd inventory removal        VER3: Actions.
store inventory (if “In Stock”)
(system) generates list of CDs to    generated vendor order
order from Vendor(s) (if not “In     list (NOT the same as
Stock”)                              back order – cds are
                                     added to vendor order
                                     list)
Order CDs from Vendor                automatic CD order                      -
Automatically                        (from vendor) [back
                                     order (already in
                                     nouns)]
(System) Aborts order (form          order aborted                VER3: Actions
data missing or invalid more
than twice)


                                                               p. 18 of 40
             Ralph Johnson                   A & D Project: ONCD                   Info 620            Spring 2006
Applying Check List (Step N6)

                Need-to-know   multiple     more       Always-      Always-     Domain-      Not       Meaningfu    A single-    A single-
                               attribute   than one    applicabl    applicabl   based        merely    l            personalit   sentence
                               s           object in   e            e           requiremen   derive    operations   y            definition
                                           a class     attributes   operation   ts           d                      definition
                                                                    s                        results
available (in        •             •           •           •            •           •           •          •            •            •
stock) CDs
back order           •             •           •           •            •           •           •          •            •            •
background           •             •           •           •            •           •           •          •            •            •
information
billing              •             •           •           •            •           •           •          •            •            •
address
CD(item)             •             •           •           •           •            •           •          •            •            •
CDs                  •             •           •           •           •            •           •          •            •            •
CD store             •             •           X           X           X            •           •          X            •            •
cookie               •             •           •           •           •            •           •          •            •            •
Customer             •             •           •           •           •            •           •          •            •            •
defective            •             •           •           •           •            •           •          •            •            •
product (CD)
on-line CD           •             •           •           •            •           •           •          •            •            •
order
sales reports        •             •           •           •            •           •           •          •            •            •
shipping             •             •           •           •            •           •           •          •            •            •
address
shipping             •             •           •           •            •           •           •          •            •            •
options
shipping             •             •           •           •            •           •           •          •            •            •
report
shopping cart        •             •           •           •            •           •           •          •            •            •
staff                •             •           •           •            •           •           •          •            •            •
complete             •             •           •           •            •           •           •          •            •            •
valid address
vendor               •             •           •           •           X            X           •          X            •            •


CD_line_item (Transaction Line Item) ISA CD (specification)
defective_CD (Physical Thing) ISA CD_line_item (Transaction Line Item) ISA CD (specification)
in_stock_CD (Physical Thing) ISA CD_line_item (Transaction Line Item) ISA CD (specification)

billing_address ISA complete valid address
shipping_address ISA complete valid address
these could be the same or different

Notes:

I used the TCM process above as a guideline for discovering classes, but when working with the class
diagram, felt that either the process was not adequate, or I had not done it completely or correctly. Quite a
number of nouns I had classified as attributes needed to become classes in the diagram, because they would
have been multi-valued attributes.

I believe I should add classes for the included use case Order from Vendor Automatically since I have added
the class Automatic Vendor Order, which is part of a new class Aggregate Vendor order. I have yet to do
this.
                                                               p. 19 of 40
Analysis Class Diagram
             Ralph Johnson              A & D Project: ONCD               Info 620      Spring 2006
Sequence Diagram development:

1. initiating actor and initiating event:

        Web Customer begins search via web interface

2. primary display screen needed for implementing the use case.

        search screen Primary boundary object = SearchScPBO

3. use-case controller (primary control object) to handle communication between the primary boundary
object and domain objects.

        Search for CD(s) primary control object = Search_for_CD(s)PCO

4. one secondary control object for each included or extended use case.

Edit Shopping Cart secondary control object
Purchase CD(s) secondary control object
Authorize Credit secondary control object

5. One secondary boundary object and secondary control object for each major screen necessary to
implement the use case.

                   Screen                     secondary boundary object                secondary control object
Main search screen                      SearchScBO                              SearchScCO
Search results screen                   SearchResultsScBO                       SearchResultsScCO
CD information screen                   CDinfoScBO                              CDinfoScCO
View Shopping cart Screen               CartScBO                                CartScCO
Purchase customer data entry screen     CustDataEntryScBO                       CustDataEntryScCO
Shipping options screen                 ShipOpScBO                              ShipOpScCO
Order summary screen                    OrderSumScBO                            OrderSumScCO
credit card input screen                CCinputScBO                             CCinputScCO
order confirmation screen               OrderConfScBO                           OrderConfScBO


6. all domain classes participating in the use case.

Background_Information                      CDStatusLookup                           Shipping_Address
Billing_Address                             Complete_Valid_Address                   Shipping_Options
CC_Charge                                   Customer                                 Shopping_Cart
CD_Line_Item                                CustomerReview                           Sound file
CD_Order                                    Photograph                               staff review
CD_Spec                                     Pro Review                               track




Page 21 of 40
             Ralph Johnson       A & D Project: ONCD                Info 620        Spring 2006
Sequence Diagram development continued:

7 Classes. (block labels (Column names) in the sequence diagram.)

- The primary boundary stereotype: SearchScPBO
- The primary use case controller: Search_for_CD(s)PCO

- Domain classes (list in the order of access):

CD_Spec
         Background_Information
         CustomerReview
         Photograph
         Pro Review
         staff review
         track
Sound file
CD_Line_Item
         CDStatusLookup
Shopping_Cart
Customer
Billing_Address
Shipping_Address
Shipping_Options
CC_Charge
CD_Order

- Secondary control objects and secondary boundary objects in the order of access
SearchScPBO
SearchScCO
SearchResultsScBO
SearchResultsScCO
CdinfoScBO
CDinfoScCO
CartScBO
CartScCO
CustDataEntryScBO
CustDataEntryScCO
ShipOpScBO
ShipOpScCO
OrderSumScBO
OrderSumScCO
CcinputScBO
CCinputScCO
OrderConfScBO
OrderConfScBO



8 Identify all problem-solving operations based on the following classifications:
8.1 Instance creation and destruction

create All control Objects:
         create SearchScCO
         create SearchResultsScCO
         create CDinfoScCO
         create CartScCO
         create CustDataEntryScCO
Page 22 of 40
              Ralph Johnson      A & D Project: ONCD                          Info 620          Spring 2006
        Sequence Diagram development continued:
        create ShipOpScCO
        create OrderSumScCO
        create CCinputScCO
        create OrderConfScBO

create Shopping_Cart()
create Customer()
create Billing_Address()
create Shipping_Address()
create CC_Charge()
create CD_Order()
create CD_LineItem
destroy CD_Line_Item() (temporary)
destroy? All control Objects
destroy Shopping_Cart()

8.2 Association forming
        Shopping_Cart / CD_Line_Item (can’t do this if CD is not in stock or ordered – fixed use case)
        Shopping_Cart/ CD_Order
        Customer / Billing_Address
        Customer / Shipping_Address
        Customer/ CD_Order
        CD_Order /CC_Charge

8.3 Attribute modification:
        8.3.1 Calculation (and comparison)
                Shopping_cart. totaldue()
                Count_per_CD()
                Check_instate()
                check_complete_valid_adrs()


        8.3.2 Change States
                readCookie()
                add CD()
                deleteCD(s)
                incrementCD(s)
                decrementCD(s)
                update cart()
                view cart()
                read cookie()
                set cookie()
                Set session-user-ID()
                Set cart Exp date()
                check out()
                custId#
                set lastname
                set firstname
                set homephone
                set workphone
                set Bill_Address.streetaddress
                set Bill_Address.City
                set Bill_Address.State
                set Bill_Address.Zip
                set ship_Address.streetaddress
                set ship_Address.City

Page 23 of 40
                Ralph Johnson              A & D Project: ONCD            Info 620   Spring 2006
                set ship_Address.State
                Sequence Diagram development continued:

                set ship_Address.Zip
                set Shipping.equals.billing?
                set ShipInstate?
                CheckShipzip()

                For CC authorization
                get lastname
                get firstname
                get homephone
                get Bill_Address.streetaddress
                get Bill_Address.City
                get Bill_Address.State
                get Bill_Address.Zip

                Set CC#
                Set Exp date
                Set charge amount
                Set confirmation#
                Set date
                Set time
                Set charge?=true



       8.3.3 Display or reporting requirements

                Get_search_category()
                Get_search_STR()
                Request_retype()
                EnableCookiesMessage()
                Soundfile.play()
                Shoppingcart.return_to_search()
                GetSearchSc()
                GetSearchResultsSc()
                GetCDinfoSc()
                GetCartSc()
                GetCustDataEntrySc()
                Check_ship.equals.bill() (if not get ship address also)
                Send_Address_invalid_message()
                GetShipOpSc()
                GetOrderSumSc()
                GetCCinputSc()
                SendCCfailMessage()
                GetOrderConfSc()
                createCDlineItem()

8.3.4 Interface with external objects or systems

CC authorization Co PBO




Page 24 of 40
             Ralph Johnson        A & D Project: ONCD                  Info 620         Spring 2006
System Sequence Diagram




                                                                    OnCD System
                             Customer : <Actor
                                  Name>
                                                 submit search()
                                        Return SearchResultsScreen()

                                                  Select CD()

                                            return CdinfoScreen()                 cookie contains
                                                                                  session-user-id which is
                                         add CD() (to shopping cart)              associated with shopping
                                                                                  cart
                                                  set cookie()
                                                                                  display cart contents and
                                             return CartScreen()                  total

                                                  update cart()

                                                   check out()

                                          return CustDataEntryScreen()

                                            Enter Customer Data

                                            return ShipOpScreen()                   display order details &
                                                                                    totalDue
                                           select shippingOption()

                                        return OrderSummaryscreen()

                                            return CCinputScreen()
                                                                                             CC
                                             enter CC#, Exp date                       Authorization Co

                                                                           Send CC_Charge

                                                                           Return Authoriz #



                                                        Store Order info


                                         update CD_line_Item Status

                                       return orderConfirmationScreen()




Page 25 of 40
                      Ralph Johnson   A & D Project: ONCD   Info 620   Spring 2006

8 SEQUENCE DIAGRAMS




Page 26 of 40
                                                                            Ralph Johnson                   A & D Project: ONCD                             Info 620               Spring 2006




                                                                                                                                   : Background_Info                 : CustomerReview       : Pro Review   : staff review   : photo
        customer : <Actor Name>           : SearchScPBO          : SearchScCO         : CdinfoScBO            : CDinfoScCO

                        15.   select cd

                                                    16.
                                                  get CDinfo Screen()

                                                                        17.
                                                                        get CDinfo Screen()

                                                                                              18.
                                                                                               create CDinfoScCO()

                                                                                              19.
                                                                                               get CDinfo Screen()

                                                                                                                         20.
                                                                                                                     get all BGround info()


                                                                                                                                              21.
                                                                                                                                                    get cust rev()


                                                                                                                                              22. get pro rev()


                                                                                                                                              23. get staff rev()


                                                                                                                                              24. get photo()
                GoTo
                03 seq diag
                                                                                25.    CDinfo Screen
                add CD (to shopping
                Cart)




Page 27 of 40
                                      Ralph Johnson                           A & D Project: ONCD                                   Info 620                 Spring 2006




                                                                                                                                                : Shopping_Cart                : CD_Line_Item
           customer : <Actor Name>        : SearchScPBO               : SearchScCO            : CartScBO
                                                                                                                             : CartScCO

      system has returned
      CDinfo Screen             26.
                                add cd to cart()
                                                    27.
                                                     add cd to cart()

                                                                                  28.
                                                                                 add cd to cart()

                                                                                                       29.
                                                                                                        create CartScCO

                                                                                                       30.
                                                                                                        add CD to Cart()

                                                                                                       31.
                                                                                                             read cookie()


                                                               32.    read cookie()
                                                                                                       [cookie exists]

                            [cookie exists, cookies enabled]         33.   cookie data

                                                                                                       [cookie exists]
                                                                                               34.      cookie data

                                                                                                                                         [cookie exists]
                                                                                                                                   35.
                                                                                                                                     retrieve cart( )
                                                                                                        [cookie exists=F]
                                                                                             36.     create Shopping_Cart()

                                                               [cookies disabled]
                                                    37.         enable cookies message


                                                          38.        cookies enabled


                                                               39.     set cookie()


                                          [cookies disabled]         40. abort
                                                                                                                                    [cookie exists=F]
                                                                                                                             41.   new Shopping_Cart( )


                                                                                                                             42. Set session-user-ID( )


                                                                                                                             43.    add CD to cart( )

                                                                                                                                                            [CD not in inventory]
                                                                                                                                                      44.    new CD_Line_Item( )


                                                                                                                                                      45.   [CD not in inventory]
                                                                                                                                                                setStatus(temp)

                                                                                                                                                      46.   [CD in stock]
                                                                                                                                                              setStatus(in cart )


                                                                                                                                                      48.    set sessionUserId(this)

                                                                                                                               49. Count_Per_CD( )

                                                                                                                                    50.
                                                                                                                                     calc totaldue( )


                               Go to                                                                                               51. view cart( )
                               04 seq diag
                               update cart
                                                          52. Shopping cart screen




Page 28 of 40
                                    Ralph Johnson                         A & D Project: ONCD                              Info 620                Spring 2006




                                                                                                                                    : Shopping_Cart               : CD_Line_Item           : CDStatus Lookup
               customer : <Actor Name>              : SearchScP BO       : SearchScCO           : CartScBO      : CartScCO

                             53.    update cart()

                                                              54.
                                                              update cart()

      system has returned                                                         55.
      Shopping cart screen                                                          update cart()
                                                                                                      56.
                                                                                                      update cart()
                                                                                                      [cd decremented] 57.
                                                                                                                        decrementCD()

                                                                                                                            58.
                                                                                                      [cd incremented]    incrementCD()

                                                                                                                                             59. (see steps 44 - 48)
                                                                                                                                              new CD_Line_Item( )

                                                                                                                          [cd deleted]
                                                                                                                         60. deleteCD()




                                                                                                                                             [cd deleted/cd decrem to 0]
                                                                                                                                       61.    set sessionUserId(-1)



                                                                                                                                             62.   getStatus( )


                                                                                                                                                                           63. lookup status( )


                                                                                                                                             [status=temp & sessionUserId=-1]
                                                                                                                                                    64. destroy

                                                                                                                65.      Count_P er_CD( )


                                                                                                                66.       calc totaldue( )


                                                                                                                 67.        view cart( )


                                                    [totaldue=0] 68. Shopping cart empty screen


                                                                     69. Shopping cart screen


                              go to 05 seq diag
                              check out




Page 29 of 40
                                                                       Ralph Johnson                       A & D Project: ONCD                                  Info 620                  Spring 2006


       system has
       returned updated
       Shopping c...

                                                                                                                                                      : Shopping_Cart             : CD_Line_Item            : CDStatus Lookup   : CD_Order
              customer : <Actor Name>             : SearchScP BO      : SearchScCO         : CustDataEntryScBO    : CustDataEntryScCO

                              70.   check out()

                                                             71.
                                                             check out()

                                                                              72.
                                                                                    check out()

                                                                                                        73.
                                                                                                   create CustDataEntryScCO()


                                                                                                                                74.    check out( )


                                                                                                                            generate order#()
                                                                                                                      75.


                                                                                                                                  76.    order#


                                                                                                                                                              77. getStatus( )


                                                                                                                                                                                            78. lookup status( )

                                                                                                                                             [status=in cart] 79.
                                                                                                                                                               setStatus(check out )

                                                                                                                                          [status=temp]        80.
                                                                                                                                                              setStatus(checkout/temp )

                                                                                                                                                               81.
                                                                                                                                                                  set order#( )
                                                                                                                                 82.      done


                                                                                                                                83. get totaldue( )


                                                                                                                                84. new order( )


                                                                                                                                                                        85.        set order#( )


                                                                                                                                                                        86.       set total due( )


                                                          87. customer data entry screen



                    go to 06 seq diag
                    enter cust data




Page 30 of 40
                                                                                                              Ralph Johnson                            A & D Project: ONCD                                          Info 620             Spring 2006




                                                                                                                                                            : Customer                    : Bill_Address                : Ship_Address      : CD_Order                                                                         :
                 customer : <Actor Name>                : SearchScP BO     : SearchScCO       : CustDataEntryScBO     : CustDataEntryScCO                                                                                                                       : ShipOpScBO              : ShipOpScCO
                                                                                                                                                                                                                                                                                                                       Shipping_Options
                                88.    cust data form

                                                                  89.
                                                                 cust data form
                                                                                       90.
                                                                                      cust data form
          system has just returned
                                                                                                           91.
          customer data entry screen
                                                                                                           create customer()


                                                                                                                           92.          new customer( )


                                                                                                                               93.        set custID#( )

                                                                                                                               94.       set Lastname( )


                                                                                                                           95.           set firstname( )


                                                                                                                           96.            set Hphone( )


                                                                                                                           97.           set wkphone( )


                                                                                                                                                        98.              new bill adrs( )


                                                                                                                                                           99.          set streetAdrs( )


                                                                                                                                                        100.               set City( )


                                                                                                                                                           101.            set state( )


                                                                                                                                                            102.            set zip( )


                                                                                                                                                           103.         set shipEqBill( )


                                                                                                                                                   104.           check_complete_valid_adrs( )

                                                                                                                                                 [bill address.zip="P A" & shipequalsbilling]
                                                                                                                                                      105.         set shipInState(T )




                                                                                                                                     [bill adrs not comp/val]
                                                                                                                                     106.     [shipequalsbilling=F]
                                                                                                                                                                       107.        new ship adrs( )


                                                                                                                                                                          108.            set streetAdrs( )


                                                                                                                                                                                             set City( )
                                                                                                                                                                          109.

                                                                                                                                                                            110.             set state( )

                                                                                                                                                                            111.             set zip( )
                                                  [ship and/or bill <> complete valid adrs]
                                                                                                                                                                       112.      check_complete_valid_adrs( )

                                                                                                                                                                       [ship address.zip="P A"]
                                                                                                                                                                       113.         set shipInState(T)

                    return to top - customer                                                                                   114. [ship adrs not comp/val]
                    re-submits cust data form

                                                        115.   customer data entry screen - re-enter


                                                                                                                                     [ship and bill = complete valid adrs]                 116.        set custID#( )

                                                                                                                                                                                           117.     get Ship options screen

                                                                                                                                                                                           118.
                                                                                                                                                                                                            shipInState?
                                                                                                                                                                                                                                                                          119.
                                                                                                                                                                                                                                                                          create ShipOpScCO()


                                                                                                                                                                                                                                                         120.   get sub Total( )


                                                                                                                                                                                                                                                                                                     121. get all rates( )


                                                                                                                                                                                                                                                                                                    calculate rates
                                                                                                                                                                                                                                                                                                                      122.

                                                                                                                                                                                                                                                                         123.
                                                                                                                                                                                                                                                                        get Ship options screen()

                                                                                                                                              124.
                                                                                                                                                           ship options screen
                       go to 07 seq diag select
                       ship options




Page 31 of 40
                                                                               Ralph Johnson                     A & D Project: ONCD                                  Info 620            Spring 2006




                                                                                                                                                  : CD_Order                                                        : Customer                       : Bill_Address   : Ship_Address
            customer : <Actor Name>              : SearchScPBO          : SearchScCO          : ShipOpScBO           : ShipOpScCO                                       : CcinputScBO     : CCinputScCO

                       125. shipping option selection


                                                  126. shipping option selection


          system has                                                    127. shipping option selection
          returned ship
          options screen                                                                    128.    shipping option selection
                                                                                                                                   129.
                                                                                                                                  set ship type( )

                                                                                                                                130.
                                                                                                                                 set ship charge( )

                                                                                                                                131. set tax( )


                                                                                                                     132.        calc_total_due( )


                                                                                                                     133.       get CC Input Screen()


                                                                                                                                                                        134. create CCinputScCO()

                                                                                                                                                                                                    135.
                                                                                                                                                                                                     get lastname( )

                                                                                                                                                                                                    136.
                                                                                                                                                                                                     get firstname( )

                                                                                                                                                                                                    137.
                                                                                                                                                                                                      getHphone( )


                                                                                                                                                                                                    138.     get all( )

                                                                                                                                                                                                                                 139.
                                                                                                                                                                                                    [billingEqualsShipping=F]           get all( )

                                                                                                                                                               140.   get sub Total( )


                                                                                                                                                               141.   get ship type( )


                                                                                                                                                               142.   get shipcharge( )


                   go to 08 seq diag                                                                                                                           143.      get tax( )
                   enter CC
                                                                                           144.    CC Input Screen




Page 32 of 40
                                                                           Ralph Johnson                        A & D Project: ONCD                                    Info 620                   Spring 2006




                                                                                                                                              : CC_Charge
              customer : <Actor Name>              : SearchScP BO      : SearchScCO         : CcinputScBO       : CCinputScCO                                       : CC Auth Co BO               CC Auth Co Control : <Actor Name> : OrderConfScBO : OrderConfScCO
                           145.    enter cc form


                                                            146. cc form
       system has
       ...                                                                       147. cc form

                                                                                                        148.
                                                                                                      authorize CC()


                                                                               first, Last Names, billing adrs & phone
                                                                                       149.                                 150.
                                                                                                                          new CC_charge( )


                                                                                                                         151. set CC#( )

                                                                                                                 152.
                                                                                                                            set expDate( )


                                                                                                                 153.    set chargeAmount( )

                                                                                                                 154.     set charge? (true)


                                                                                                                 155.      set cardtype( )
                                                                                                                                                        message includes CC form data:
                                                                                                                156.            set date( )             first, last Names, billing adrs & phone
                                                                                                                                                        and all data "set" in CC Charge

                                                                                                                 157.            authorize()


                                                                                                                                                                                  158.      authorize()

                                                                                                                                                      159.      confirmation#

                           [CC conf# = -1]         160.      resubmit CC form screen


                                  [CC conf# = -1] 3 times      161.
                                                                           abort transaction screen
                                                                                                                         162.set conf#( )


                                                                                                                                                                     163.       confirm order()


                                                                                                                                                                                                                                   164. create OrderConfScCO()


                                                                                                                         165.     order confirmation screen




Page 33 of 40
                                                      Ralph Johnson                A & D Project: ONCD                 Info 620           Spring 2006


                                                                                                State Chart: CD_Line_Item

                                                 set_status(temp)
                    Customer adds NOT_in_stock CD to shopping cart
                                                                                                                                                  Store receives ship notice from vendor
                                                  new CD_Line_Item.b                customer checks out               ordered_from Vend
                                                        temp                  set status(ordered_from Vend)                                                 set_status(sold)

                                                 Customer removes CD from cart
                                                                                                                     Credit card NOT authorized
                                                   [set sessionUserId(null)                                          Destroy
                                                   IF status=temp]
                                                   destroy




           ordered from vendor

           new CD_Line_Item         received by store            in_stock                                              damaged            damage report / destroy
                                   set_status(in_stock)

         set_status(ordered_from Vend)
                                                                                                                 set_status(damaged)
                                                                                    set_status(in_stock)
           Customer adds CD to Shopping ...                                                                       returned damaged                   destroy
                                                                                     returned not damaged

                                   Customer removes CD from cart          set_status(in_stock)
                                                                                                                            sold
        set session-userID()                                        credit card not author...
                                                                                                 set_status(sold)
                                                                                                 CD_Order complete
                                                                                                                        not returned
                 in_cart                  Customer checks out                          check_out

                                              set CD_order#()




Page 34 of 40
                                                                               Ralph Johnson                             A & D Project: ONCD                                  Info 620       Spring 2006
Design Class Diagram




                                                                                                              CD_Spec_Index                            : CD_Spec                   : track
           customer : <Actor Name>              : SearchScPBO                                                                                                                                       : SearchResultsScBO                    : SearchResultsScCO
                                                                               : SearchScCO

                        1.    submit Search()
                                                        2.
                                                             create SearchScCO()




                                                        3.      search_STR


                                                        4.      search_categ


                                                                                      5.      get matches()

                                                                                                                               [#s 6 - 10 repeat for matches]
                                                                                      6.      get_artist()


                                                                                           7. get_title()


                                                                                                8.                get store price()


                                                                                                             9.                   get track_title()


                                                                                                             10.                      get length()


                                                                                                                                 11.            get Search Results screen()
                                                                                                                                                                                                                 12.
                                                                                                                                                                                                                   create SearchResultsScCO()


                                                                                                                                                                                                               13. get Search Results screen()



            Go To Seq Diag                                                                                                                       14.     Search Results Screen
            02 : Select CD




Page 35 of 40
                  Ralph Johnson   A & D Project: ONCD   Info 620   Spring 2006
DATABASE SCHEMA




Page 36 of 40
                  Ralph Johnson        A & D Project: ONCD              Info 620   Spring 2006

              ON CD
              Deployment Diagram



          ONCD System

          Application                            OO Database
            Server                                  server


      preemptive




                                                               Router

    Printer             image         bar code
                       scanner        scanner




                                   In-House               TO INTERNET
                                      PC                  ~> ~> ~>




Page 37 of 40
               Ralph Johnson        A & D Project: ONCD         Info 620             Spring 2006
Evaluation of the Analysis and Design, Lessons Learned, Not Learned.

I chose this topic because I knew I could, to some extent, reverse engineer systems to which anyone can have
ready access. I don’t think I realized how complicated these systems are – even though they occasionally
give one a “server not found” message, or are not entirely intuitive, it is amazing what we take for granted.

There were some limitations on the project due to lack of specific domain knowledge anyway. For example,
questions about how an online CD sales system interacts with its suppliers’ databases may not have been
pertinent to the system in the long run, but I didn’t know that at the beginning, so I spent time trying to
answer such things anyway.

My own personal limits of knowledge about the intricacies of (semi) large scale development of an object-
oriented system caused some difficulties and unanswered technical questions. Especially at the end, when I
was trying to generate JAVA code – although I am a decent JAVA programmer, there were far too many
options for me to be confident that I was getting the correct results – so I backtracked and added reference
attributes etc manually. At least I understood what I was doing that way, although I am not sure I completed
the job to my own satisfaction. That is, to my own satisfaction when I look at this a week from now. I am
sure someone with more advanced knowledge will spot the many deficiencies pretty quickly!

Rational Rose was rather unweildy at first, and somewhat confusing of course. I found that the Quatrani
book could not answer some of my questions, and the IBM Rational web pages were not very novice-
friendly. I did find part of a Rose manual there that was more helpful than Quatrani or the help files, at least
for whatever I was looking for at the time. In the end, I was comfortable with my knowledge of navigating
and reusing objects, but there is still a huge amount of daunting material that would need to be learned in
order to feel confident that I “knew” how to use the program.

I never could find anything in the Rose help files or anywhere else for that matter on how to indicate those
nice UML2 iteration graphics that we saw in class. And the notion I got somewhere that one should indicate
a boolean attribute with a “?” was not acceptable to the interface later in the development. Neither was being
casual with attribute names, as sometimes seemed to be the case in class – for instance, I was typing in so
many attributes and methods etc that I began use “#” for number, as in “employeeID#” – which of course
JAVA does not like very much.

I think a tip sheet would be in order for Rose (and Visio, although I didn’t use it much) indicating some very
handy features such as right clicking a message in a sequence diagram will call up the methods that are
allready available in the class diagram for the target class. If you want to make sure that those method calls
get into the class diagram, this is a very good time to do it – just keep the class diagram open, when you
don’t find the method that you need by right clicking in the sequence diagram, go add it to the Class diagram
and then come back – it will then be selectable from within the sequence diagram.

UML is fine. I couldn’t tell if it was somewhat imprecise, or if my understanding of it was. Use cases
obviously have to be in a somewhat gray area, because, as I pointed out it my paper, that is where the domain
and the UML first meet. I would have liked to push the homeworks UP a bit, in order to get earlier feedback
for subsequent use in the project. That would also allow more time to work on the project towards the end of
the quarter, which would be very helpful.

I chose not to include earlier iterations of diagrams because there were so many in the end that I figured they
wouldn’t be looked at anyway. Also, as I feel that the entire project has only been through one full and a few
partial iterations, any diagram or method presented here still carries significant vestiges of mis-direction,

Page 38 of 40
               Ralph Johnson      A & D Project: ONCD            Info 620      Spring 2006
dead-ends and incomplete development that indicate places where there was not enough time to go much
beyond the first stages.

There are so many things I could have done differently that I would be impossible to list them. One thing I
did not get to do much of was return to the use cases to update the terminology to match later developments,
specific method names, etc. I had them on hand when I was doing the sequence diagram of course, and
couldn’t believe some of the assumptions I had made early on, but most changes to the uses cases at that
point were to the logic/steps/scenarios, so you will find quite a bit of discrepancy in terminology.

I can only justify my chosen method and model by saying that I worked hard and tried to figure it all out.
Unfortunately, without true iteration, once some things were done, there was no going back. There are some
things that don’t work, some that are not completely developed, and a few that are completely missing. (Just
for example, although not significant, you will find no use case or methods for a customer to register, log-in
and enter “user reviews.”)

One of my more significant problems was trying to enable both customers and staff to have cds orders placed
to vendors, but through different processes and with different goals. The customers only place their CDs on
order from vendors when the status of a CD is NOT in inventory, but they have nothing to do with the order.
The staff needs to actively resupply the inventory (presumably according to some business rule or
organizational vision) but it made no sense to have the system place a separate order to a vendor for every
individual out of stock CD that every customer wants (Vendors probably would not work that way anyhow).
So whatever has been ordered by staff or customer, is accumulated and sent out each day by the system. I
guess there might have been constraints put on this too – such as authomatic vendor orders will not be sent
until a given vendor has x CDs on the list, or >$1000 worth etc.

Well I think that is about enough. If I had more time I would be working on the model rather than writing
about it. Even three weeks ago I felt like I hadn’t learned enough for UML to be useful to me, but I now feel
differently, and am looking forward to learning more.


Below is a sample of notes I made to myself about changes and questions I had as I went along, just so you
get the flavor of it.


Notes:

Change use case class names to names used in class diagram

Some confusion here:
Add instock attrib to cd line item (CD line items are not created until order –possibly change relationship between CDlineitem,
InstockCD and CDspec) (in stock CDs exist before order, can BECOME cd line items. IF CD line items can become InStockCDs
then maybe it is just an attribute – status? In stock, on order, ordered, shipped etc.

ADDED CDStatus Lookup class

Add order numb to CD line item

Remove “CDs ordered that are not in inventory have been placed on an automatic order list which will be
added the next time staff orders CDs from vendors.” From Purchase CD(s) postcondition (derived data)

CDs ordered that are not in inventory have been had their status changed to order from vendor. (This will
place on an order list which will be added to vendor orders the next time staff orders CDs from vendors.)
Page 39 of 40
                 Ralph Johnson               A & D Project: ONCD                Info 620          Spring 2006

Remove cookie from class diagram – comprehension assoc.
Remove relationship between customer and shopping cart comprehension assoc.




rjavar~1.exe

add shipping=billing attribute to complete valid address

Unsure about cardinality of index for CD specification – technically there should be more than one index, which is selected when
searching by the search type (artist, title etc)

I discovered when I was doing the state diagram for CD_Line Item that the use case was not really complete until the status of CDs
ordered from vendors was changed to received by store, or a ship notice from vendor was received. I did not have time to go back
and add this everywhere.

One of the few things that really annoyed me about Rational Rose was not being able to figure out how to have a class in a class
diagram, but still show it in the use case diagram as an actor.

Also. Manual step numbering inSeq diagrams – created more confusion than the diagrams by themselves. Plus I could not find out
how to put in the UML2 loop / if structures

Could not figure out (at the end) how to delete unused mehtods I’d added during the the class diagram design, which had to be
added elsewhere, and were therefore redundant.




Page 40 of 40