From: Tomasz on
I'm new to both Use Cases and Use Case Point Estimation.
I've ben reading some articles about it and found the following
(recommended as a reference on this site as well):
http://www.geocities.com/shiv_koirala/fp/usecasepoints.html

As a person that learns best on practical examples I liked the approach
taken in this article.

However:
1. The final estimate seems to me a bit excessive for such a simple
application.
2. As I understand from other articles this estimate includes:
Analysis, Design, Implementation and Unit Testing, it does not include
Testing effort which would add another 90 hours of effort.
3. The use case presented there seems a little to detailed (I mean it
goes down to almost pseudo code) and the resulting estimate is very
large.

Can anyone give me their practical comments on this example?
I mean is this use case correct? If not how would a correct use case
look like?
Is the estimate correct? If not which parts should be modified?

Regards,

Tomasz

From: tomasz on
A couple of other interesting issues:

1. If you assume his use case is not correct and the transactions you
should count are: Add, Update, Delete, Call API - which will change
your use case from complex to simple the result you will get will be 87
hours (development) not 200 - quite a big difference.
2. The same guy has an article about Function Point estimation. In this
article he estimates almost exactly the same program. However this time
his estimate (for development only I presume) is only 56 hours (7
days*8 hours).

Overall none of this seems to make sense unless I'm missing something.

Regards,

Tomasz

> I'm new to both Use Cases and Use Case Point Estimation.
> I've ben reading some articles about it and found the following
> (recommended as a reference on this site as well):
> http://www.geocities.com/shiv_koirala/fp/usecasepoints.html
>
> As a person that learns best on practical examples I liked the approach
> taken in this article.
>
> However:
> 1. The final estimate seems to me a bit excessive for such a simple
> application.
> 2. As I understand from other articles this estimate includes:
> Analysis, Design, Implementation and Unit Testing, it does not include
> Testing effort which would add another 90 hours of effort.
> 3. The use case presented there seems a little to detailed (I mean it
> goes down to almost pseudo code) and the resulting estimate is very
> large.
>
> Can anyone give me their practical comments on this example?
> I mean is this use case correct? If not how would a correct use case
> look like?
> Is the estimate correct? If not which parts should be modified?
>
> Regards,
>
> Tomasz

From: AndyW on
On 20 Sep 2005 01:27:58 -0700, "Tomasz" <tomasz(a)01systems.com> wrote:

>I'm new to both Use Cases and Use Case Point Estimation.
>I've ben reading some articles about it and found the following
>(recommended as a reference on this site as well):
>http://www.geocities.com/shiv_koirala/fp/usecasepoints.html
>
>As a person that learns best on practical examples I liked the approach
>taken in this article.
>
>However:
>1. The final estimate seems to me a bit excessive for such a simple
>application.
>2. As I understand from other articles this estimate includes:
>Analysis, Design, Implementation and Unit Testing, it does not include
>Testing effort which would add another 90 hours of effort.
>3. The use case presented there seems a little to detailed (I mean it
>goes down to almost pseudo code) and the resulting estimate is very
>large.
>
>Can anyone give me their practical comments on this example?
>I mean is this use case correct? If not how would a correct use case
>look like?
>Is the estimate correct? If not which parts should be modified?
>
>Regards,
>
>Tomasz

I get the feeling that work is not the authors own stuff. I've seen
quite a lot of that in other books.


There are 7 requirements. Of these, 3 are just validations, 1 is the
actual functional requirement (what needs to be developed), 1 is a non
functional requirement, 1 is a business requirement (which when
examined hides another functional requirement) and the last is some
esoteric environmental constraint.

Of the two functional requirements you have the operator to perform
CRUD activites (this may be an already existing feature) and the other
is to make one or more API calls (both need requirements analyssis
performed to confirm this).

So you are looking at at least 2 man days work minimum, considering
its unlikely a foreign API actually works as intended - especially one
from ericsson [grin]. Try thinking in the ballpark of a minimum of
about 5 man days.

I dont know a programmer who works 25 days (effectively a month) for
only $840. Thats about $28 per hour. I assume US currency - thats a
bit low, I would expect perhaps $70/hr would be a more reasonalble
rate.

[Note: I dont know the actually going rates in the US, but thats close
to a rate I used in the last US company I worked for].

So i'd be looking at about $2800 for 5 days work. And that would
assume no setup costs/time.

Sods law dictates that someone is going to have to manipulate some
code in the customers system and thats going to generate some effort
involved in learning how to do that and creating a duplicate
development environment.

Once you start adding in all these environmental factors, testing and
all that, you get somewhere between 15 and 20 man days effort at
whatever cost that works out to - more than $840 anyhow.

As you can see I've already given a variation between 5 days and $2500
and 20 days at $10k. The reason for the difference is that the lower
end would be a likely scenario of it was in-house development or you
already had a development relationship with the customer. The higher
end would be more likely if the customer walked in off the street.
(not that the use case in the example also had a stated variation of
+/- 40%).

Creating the Use case is a good idea, but I tend (for personal
reasons) to use function point analysis using hystorical metrics for
job costings - its way more accurate.

A common industry mistake for such a trivial piece of work (and one
often made by programmers) is to say they could do it in a day. There
is a lot of environmental uncertainty in that job, hence I've given a
range estimate that includes risk rather than a more acurate single
figure value - you'd do a normal job costing with. The author hasnt
taken risk into account. Instead, under environmental factors, its
been deemed a simple project which is a classic example of the mistake
in action. No-oe would make that classification without performing
some form of business environment and/or risk analysis first - that
information isnt on that website. Without first quantifying the risk,
your on a hiding to nothing should something unexpected happen.

Just my thoughts.




From: Phlip on
tomasz wrote:

> 1. If you assume his use case is not correct and the transactions you
> should count are: Add, Update, Delete, Call API - which will change
> your use case from complex to simple the result you will get will be 87
> hours (development) not 200 - quite a big difference.
> 2. The same guy has an article about Function Point estimation. In this
> article he estimates almost exactly the same program. However this time
> his estimate (for development only I presume) is only 56 hours (7
> days*8 hours).

Right. These are both examples of the following techniques leading to longer
estimates and longer actuals:

- specify many features before implementing them
- manually test after implementation
- make each use case big, so it is complete

Your back-of-the-envelop math has perfectly revealed how those techniques
are very sensitive to early mistakes. These tend to conflate and
intertwingle easily. (Apologies I recently saw those two words online
somewhere.) A small variation in estimating, multiplied over many line items
of many use cases, will cause a huge change in the total estimate.

That is why teams tend to use these practices these days:

- only specify high-value features and immediately implement them
- estimate the features in hours or half-days, and re-estimate
for each new story. Don't estimate in huge batches
- draw a "burn down chart" of the feature counts
implemented
- specify tiny-bite sized features with only a very few
fields of each of those "use case" templates filled out
- write automated tests before writing the tested code

Using those techniques, the person empowered to specify stories can control
the system by learning how to reduce each feature to an estimatable size.
This provides great stability for a team, and allows the empowered person to
review the live program as it grows, and _censor_ features and line items
that should not affect the schedule.

Then, the slope of the burn-down chart becomes the schedule estimate. _Not_
the total of all the estimates of a huge batch of fat user stories. Teams
should never think only complete and detailed user stories will lead to
fully useful programs.

--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!!


From: tomasz on
Thanks for the reply.

So far I've been using functional decomposition and estimation on a
fine grained level based on previous experience. I've combined it with
an estimation for a minimum and maximum effort to get an idea of
possible risk. We usually do the estimates in a group and then discuss
the differences to find the holes in our assumptions as well. However
finally on a low level it is based on judgement and experience and does
not seem to be accurate as much as we would like. Based on this
approach I've been thinking that expected effort would be around 1 week
with maximum of 2 weeks (with fully perfect documentation, etc.) and
possibly 2-3 days if we were under real pressure. Thus I was really
surprised when I've seen the 200-300 hours estimate.

I would like to ask you a couple of questions:
1. It seems to me that use case estimation is based on processing
(transactions) and ignores complexity of data. I mean let's assume you
have the same use case, same transactions, but instead of capturing 4-5
fields you need to capture 100 (no special processing just simple
validation). How will this affect use case estimate?
2. Can you recommend a good book or even better good online training
(best with assessment or exam) for Function Points or Use Case Points
estimation?
3. How do you estimate effort for the RFP responses - when you do not
have enough details to perform Use Case or Function Points analysis?

Regards,

Tomasz