1205 S '03
Lectures
 
Lecture 1
Lecture 2
Lecture 3
Lecture 4
Lecture 5
Lecture 6
Lecture 7
Lecture 8
Lecture 9
Lecture 10
Lecture 11
Lecture 12

Stories and Concepts


Where do we begin? We write up a story about the problem and its
context.

The Story
----------------------------------------

What do customers want? (They don't really know.)
What is the context of the software system, how do the two
interact.

Write up a short concise story of their requests.

This helps us identify the important concepts and the connections
among the concepts. It also helps us understand what the stimuli
are and what the system's responses are.

To describe the systems stimuli---external and internal events
that trigger actions---and the system responses---actions of the
system on the context, we need to develop an understanding of
both. We start from the core, work our way out until we have
nothing else to add, and then restrict ourselves to that portion
of the world that matters. To do this effectively, we should also
draw some pictures and then break the system into little stories
("use cases").

Next we translate this story and conceptual diagrams into a
specification, that is, we describe what the system consists of
(specification model) and what it should do (use cases,
interaction diagrams).

Example
----------------------------------------

Let's consider a store and its ordering system. Just imagine
something like Amazon but with the ability to deal with both
industrial and individual customers. The former expect a bill,
assuming they are in good standing. The latter pay up front. Of
course in the beginning this is just the kind of concept that we
can summarize with "customer".

Here is a list of concepts:
- customer
- catalog
- products
- warehouse
- ordering department
- orders
- shipping department
- billing

Let's draw a diagram for these things and let's see which concept
relates to which other concepts.

Here is a first draft:

+----------+ +----------+
| customer | --------------- | ordering | ----+
+----------+ +----------+ |
| | |
| | +-------+ +---------+
+-----| |------+ | order | ---- | billing |
+----------+ +-------+ +---------+
| catalog | |
+----------+ +----------+
| | shipping |
| +----------+
| |
+---------+ +-----------+
| product | ----- | warehouse |
+---------+ +-----------+

Now we need to ask ourselves, what's missing? Are there any
concepts that are missing? Are there any connections that are
missing? The first iteration isn't enough.

Since we have boxes for each of the concepts that we mentioned, we
can move to the questions about connections. Clearly, we should
expect that orders mention products. Otherwise an order doesn't
make sense. Also, orders should also be connected to customers,
but this immediately shows that there is actually a concept
missing, namely, the concept of representing the customer in our
system.

Second draft:

%
% +-------------+
% | customer |
+---------------------- | description | ---+
| % +-------------+ |
| % | |
+----------+ % +----------+ |
| customer | --------------- | ordering | ----+|
+----------+ % +----------+ || connect to
| % | || customer
===========|==== | || description
| | +-------+ +---------+
+-----| |------+ +--- | order | ----- | billing |
+----------+ | +-------+ +---------+
| catalog | +-----+ |
+----------+ | +----------+
| | | shipping |
| | +----------+
| +-----------+ |
| | orderline | |
| +-----------+ |
| |
| |
+---------+ +-----------+
| product | ------------- | warehouse |
+---------+ +-----------+

In this second draft, we can draw the line between the context and
the system.

See ====%%%

But there are also some meta-concepts missing. For example,
- how many customers does ordering talk to
- how many customer descriptions per customer?
- how many customer descriptions per order?
etc

Third draft:

%
% +-------------+
% 1 | customer | 1
+---------------------- | description | ---+
| % +-------------+ |
| % *| |
1| % 1| |
+----------+ * % 1 +----------+ 1 |
| customer | --------------- | ordering | ----+|
+----------+ 1 % +----------+ || connect to
| % | 1 || customer
===========|==== | *||* description
| 1 | +-------+ +---------+
+-----| |------+ +--- | order | --- | billing |
+----------+ | +-------+ +---------+
| catalog | +-----+ |
+----------+ | +----------+
| | | shipping |
| | +----------+
| +-----------+ |
| | orderline | |
| +-----------+ |
| |
| |
+---------+ +-----------+
| product | ------------- | warehouse |
+---------+ +-----------+


Little Stories, Use Cases
----------------------------------------

What can happen?
- Customer places an order from ordering.
- Customer revises an order.
- Shipping sends out (a portion of) an order.
- Billing sends a bill for a completed order.
We can use the concepts in the diagram, and we can use the
connections to create descriptions of these little stories.

Example: "known customer places an order for several products"
customer calls ordering
ordering looks up customer
ordering opens order and links it with customer
ordering adds lines to the order for product/quantity pairs
orderline looks up cost of product and price policy
for customer and quantity
ordering finalizes order

Exercise: Write "stories" for the other use cases.


last updated on Tue Jan 11 13:12:34 EST 2005generated with PLT Scheme