Re: Let's put this to rest
- From: AndyW <foo_@xxxxxxxxxxxxxxxx>
- Date: Wed, 21 Jun 2006 13:08:08 +1200
On Tue, 20 Jun 2006 16:42:12 +0100, "S Perryman" <a@xxxxx> wrote:
"Robert Martin" <unclebob@xxxxxxxxxxxxxxxx> wrote in message
news:2006062010534584492-unclebob@xxxxxxxxxxxxxxxxxx
On 2006-06-15 11:55:12 -0400, "S Perryman" <a@xxxxx> said:
2. Does anyone on comp.object think that this :
1 R1 <<ordered>> *
[A] ---------------------- [B]
looks like UML specification for any stack entity that they have ever
seen
or used in a software system ??
Is this an appeal to popular opinion? I thought you wanted the
specification of a stack. The above is consistent with a stack; although
it leaves out the FIFO nature of a stack.
1. Then it is not a stack is it, if it cannot express the *LIFO* property.
That's what the 'ordered' means.
Consider in the standard template library for C++, you have the
concept of a container - something that holds something. The contents
are pulled out in random order unless some order is applied. Now look
at the diagram above. It's a container with order applied. Now look
at a stack, it's a container with order applied (LIFO/FIFO).
To me whether the container is a vector, dequeue, list, bit array,
set, map, bag, multi-set, hash-set, string, stack or queue is mostly
irrelevant in analysis and to the basic fact that they are always
containers with or without order.
As I have said in a couple of other posts - analysis is breaking
something down into component pieces - at what level you stop breaking
things down is related to the problem being solved and whether you
need to know if its FIFO or LIFO at analysis or can defer it until
design. Further decomposition can often be delayed until it is
required - often specifically to avoid creating an "implementation
constraint" which is a nasty thing to have when you don't yet have any
idea of what the implementation may be.
An example of where further decomposition can be delayed is a CRM
application processing customer requests. It's likely to be FIFO but
the actual policy can be left to design when that particular business
rule is decided by the customer - it may be they choose a priority
queue for special customers. An example of where it might not be
delayed is perhaps when one is performing analysis of a
telecommunications switch - its nature FIFO/LIFO is often fundamental
to its working.
To me, using a programmer defined term such as 'stack' is not only
creating an implementation constraint, but is likely to massively
harden the architecture because that concept will often flow thru
analysis to design without anyone asking the question 'why was it like
that'.
For myself I will often leave it in its generic state 'ordered
collection' and leave it up to the designers to ask the question -
what type of ordered collection is it to be.
If further decomposition is required because of the special nature of
the problem one might change the stereotype to either <<ordered fifo>>
or <<ordered lifo>> or <<ordered bag>>. But it seems to me doing so
relies on the designers having the smarts to ask whether that
constraint is carried forward to the new system, whereas leaving it
out kind of requires to ask what type it is and why (hopefully). I
would prefer not to use an implementation term like stack, instead I
would just leave it as the analysis pattern <<ordered xx>>
Also, I would suggest that humans use abstractions so that they don't
have to "sweat the detail" to use a well known term. This is one of
the tricks of analysis - knowing when to sweat and knowing when to
pass the buck to someone else - like a designer :
.
- Follow-Ups:
- Re: Let's put this to rest
- From: Dmitry A. Kazakov
- Re: Let's put this to rest
- References:
- Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: S Perryman
- Re: Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: S Perryman
- Re: Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: S Perryman
- Re: Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: S Perryman
- Re: Let's put this to rest
- From: Robert Martin
- Re: Let's put this to rest
- From: S Perryman
- Let's put this to rest
- Prev by Date: Re: OO versus RDB
- Next by Date: Re: OO versus RDB
- Previous by thread: Re: Let's put this to rest
- Next by thread: Re: Let's put this to rest
- Index(es):
Relevant Pages
|