Escolar Documentos
Profissional Documentos
Cultura Documentos
http://www.codeproject.com/gen/design/pusecase.asp
Introduction
The foundation of a good application begins with a good design and the foundation of a good design
begins with good use cases. Of all the artifacts produced from a software design, use cases are the most
important. Use cases capture the business process and, collectively, describe the software application’s
functionality from the user’s perspective.
This article overviews use cases and the challenges associated with them, offers tips in their creation and
suggests a structured approach to produce them.
What are Use cases?
Use cases are a necessary artifact of object-oriented application system design and development.
Actually, more than that, they provide the foundation for the design of the entire application since
application classes and their relationships emerge from the use cases.
At its simplest, a use case is simply a structured narrative of a domain process that describes the
requirements of a software system. Dr. Alistair Cockburn, one of the industry's use case Gurus describes
use cases as “sequences of interactions between the system and its external actors, related to a
particular goal.” The idea is that users (and systems) have domain goals that need the help of computer
systems to achieve them. Examples of goals are registering students, recording sales, and determining
baselines. The point is to express the requirement in a way that is simple and understandable to anyone
within the problem domain.
The vocabulary of the use case must be expressed in the terminology of the business domain.
Strictly speaking, use cases are not object-oriented artifacts and can be used with any software
development paradigm. However, they are typically associated with UML Use Case Diagrams that depict
associations (or relationships) between the actors of a system, their responsibilities (or goals) and their
boundaries. The use case diagrams provide a visual table of contents, an overview, of the system's actors
and use cases.
While UML Use Case diagrams graphically depict use cases, they do not define them.
The real value of a use case lies in its textual description, or its scenario. A scenario is a sequence of
action steps the use case takes in order to achieve its goal including any pre and post conditions. A goal
can either be successful or it can fail. The use case contains scenarios that describe the goal’s successes
and failures. A success scenario is one in which the goal is achieved, a failure scenario is one in which
the goal fails but still protects the interests of the stakeholders.
The main success scenario is the typical or normal success path.
Think of the scenario as the execution model (the object instance) of the use case. Use case scenarios,
then, provide the foundation for test cases. Additionally, scenarios provide the basis for system
documentation and User Manuals.
Use cases, are strategic goals that consist of scenarios that provide value to a business domain.
Stakeholders
A stakeholder is someone of some "thing" with a vested interest in the behavior of the system. Not all of
the stakeholders are present while the system is executing but the system must protect and satisfy the
stakeholders interests at all times. Examples of the stakeholders include company shareholders,
customers, vendors, and government regulatory and reporting agencies.
A use case describes the behavior that protects and satisfies the stakeholder’s interests.
Actors
An actor is anyone or any "thing" that interacts with the system to achieve the system’s goals: individuals,
organizations, and other computer systems. Actors are stakeholders who interact with the system.
Typically, Actors have behavior and are represented by the roles they play in the use cases; ex: Student,
Instructor, Software Developer, etc.. However, Actors are not job descriptions - ex: Programmer I,
Manager II - unless the business domain requires it.
Actors have goals that are achieved by use cases.
An Actor stimulates the system by providing input or receiving something from it. The primary actor is the
stakeholder that initiates or triggers an interaction with the system to achieve a goal. The primary actor
will be the user sitting at a computer or another computer system.
The primary actor is the one that initiates the use case's main success scenario.
Supporting actors are actors that assist the primary actor to achieve the goal. They interact with the use
case but do not trigger it. They are often external systems or third party components.
An actor can be the primary actor for one use case and the secondary actor for another.
Use case identification
Identifying use cases is not as simple as it might initially seem. Several issues need to be considered that
can be tricky and crucial to the successful modeling of the business domain. In no particular order, some
of them are:
• Finding the boundaries of the system.
• Searching for actors and their responsibilities, or goals.
• Establishing the scope and level of the use case.
• Searching for exceptional and failure situations
• Linking use cases (one use case's post-condition is another's pre-condition).
Moreover, different types of use cases exist and are described by different people in different ways.
However, most begin with high level use cases - call them System or Essential use cases - and proceed
from there to define more detailed types of use cases.
Use cases can be identified using several methods:
• Identify all the actors in the system and define their roles and responsibilities.
• Identify and partition the system into major areas of functionality.
• Identify and relate all the events in which the system needs to respond.
Regardless of the method used (or combination), the process usually starts with a brainstorming session,
at the high level, and, iteratively, drills down to the details - in other words, breadth-first. Iterations
encourage focus. Each iteration focuses on one aspect of the use case. Working too quickly and
attempting to capture too much can quickly lead to unrealistic use cases with too much complexity that
don't reflect the actual needs of the domain users.
Breadth-First approach
Using the breadth-first approach insures the entire system is covered, if only at a high level. At a
minimum, the breadth-first approach identifies all the features of the system from the requirements.
Some of the benefits are:
• Complexity is gradually developed and better understood.
• Initial use cases are developed quickly.
• Tight schedules can produce as much as needed.
• Works well with all development methodologies; eXtreme Programming, Agile, etc..
• Design is reusable and extensible; later releases will increase depth; each level is a new iteration
(or series of iterations).
So, for example, a typical iteration might look like the following:
• Iteration 1: Identify the stakeholders, the primary actors and their goals.
• Iteration 2: For each goal identified in iteration 1, define the main success scenario.
• Iteration 3: For each success scenario identified in iteration 2, define the alternate scenarios.
• Iteration 4: For each scenario identified in iteration 3, define the exception conditions.
In Figure 1, the iterations proceed from the right and move down. As they do, problems will surface that
provide the motivation to forming new use cases, linking existing use cases, and discarding and
combining use cases. In this sense, use cases are refactored during each iteration.
Problems in the early iterations are good and to be expected, but, as the iterations continue, beware of
the becoming too focused on the implementation. Use case names that begin with, "Perform..." or
"Process..." indicate the use case was written from an implementation perspective rather than from a
domain user Perspective.
Use cases are not function calls.
Domain charts
As the use cases are identified, related use cases will emerge. In the Model Driven Architecture
approach, related use cases are grouped together into application domains from which a Domain Chart is
developed. Domains are autonomous entities logically grouped by their function. Domain charts depict the
system as distinct, independent domains that work together to provide the application’s functionality.
In Figure 2, related use cases for a Book store have been grouped together that shows, at a glance, the
major domains in the application. Each domain contains subsystems that implement the domains
functionality.
Domain Charts encourage parallel design and development.
Validation
Validation determines the credibility of the use cases and it critical to capture the business process. As the
use cases are refactored, ask the following questions:
• Does the use case capture the business process?
• Are there any details that need to be added?
• Will the actor's goal be met?
• Can the use case be simplified?
• Are there any additional goals that are not addressed?
• Are there any additional actors that are not represented (directly or indirectly)?
Use Case formats
Many use case formats exist and some provide more content than others. There is no single use case
format that exists for all projects. Some projects follow a lightweight development methodology that
requires less documentation, perhaps because of a tight schedule, other projects are heavyweight and
require more documentation, perhaps for mission critical projects.
In Writing Effective Use Cases, Dr. Cockburn describes the following formats:
• Fully Dressed: The most elaborate. This template describes the actors, stakeholders, protection
of stakeholder’s interests, performance issues, pre- and post conditions, exceptions, notes and
annotations. Used when formal and complete documentation is required.
• Casual: Written in paragraph style, a few paragraphs at most. Less formal and contains less
content than the fully dressed format.
• Brief: One paragraph that summarizes the business process. It mentions only the significant
steps in the main success and failure scenarios.
Additionally, two other formats can be considered:
• Normal: This would be the normal methodology that specifies and defines the design model in
more detail than the casual format, but still less than the fully dressed format. Design reviews
would be tighter and less forgiving than the Agile approach (below) and more precision and rigor
would be applied.
• Agile: Projects using this format would practice an Agile Modeling and Development methodology
to produce the software very quickly but still contain an acceptable design. The UML artifacts,
while complete, would contain less detail than for the normal development methodology and
would be oriented more towards the higher level perspective. Smaller projects or projects with
tight deadlines might fall within this scenario.
Choose the format that best fits the project.
Modeling Create, Read, Update, Delete (CRUD)
Ideally, CRUD functionality is expressed in terms of a business process - the action the user performs.
The semantics in use cases are extremely important and should be expressed in the language of the user
– not in the language of the developer, the functionality of the system or in database modeling terms.
Good design perceives the system from the user perspective.
The problem with CRUD use cases is that they describe the technical implementation without explaining
how this is valuable to the user. At best, it is a low level goal that is fulfilled within the context of the use
case scenario.
Consider the use cases for a Word Processor. Which states the business case best: Create Style, Update
Style, Import Style, Delete Style, or Insure Consistent Formatting within a Document? The latter
expresses the goal of the user best. While Create Style, Update Style, Import Style, and Delete Style
reflect the functions that occur within the business domain, they don’t express the user’s goal to format
her document. Instead the goal has been decomposed into discrete functionality.
Resist the tendency to decompose use cases into functions.
Or, consider another example. For security purposes, its typical for users to login to an application.
However, logging in is not a business goal of the user. In other words, the user of say, an inventory
system, doesn’t say to herself, “Today, my goal is to login and logout of the inventory system in the most
efficient manner possible.” Moreover, the user isn’t evaluated by how well she logs into the system. She
won’t get a raise for logging in 45 times in a single day.
Rather than including CRUD and ancillary functionality (like Login) with the business use cases, separate
them into system use cases that separately exist at a level of detail lower than the business use cases.
State the system process in technical terms.
Its natural for developers to think in terms of implementation. Yet, this tendency needs to be resisted and
continually guarded against for the business use cases. Moreover, developers should not force users to
adopt implementation language. Its the developers who need to adopt the user’s language, not the other
way around.
State the business process in terms of the user.
Producing Use Cases
The following steps suggest a structured outline to produce use cases. They are meant to be followed in a
group session and attended by the members of the development team - and customer representatives, if
possible. The design session atmosphere is open and relaxed and discussion, even vigorous, is
encouraged. Ideally, the session facilitator is experienced in summarizing and clarifying the ideas
presented by the group into coherent statements.
Materials needed: Markers, whiteboard (for brainstorming), flipcharts
Note: The steps assume the requirements have already been collected.
1. Produce an initial Actor-Goal list from the requirements.
The Actor-Goal list describes the behavior of the application at the highest level. Still, each
primary actor has been identified and associated with its goals. The goals will eventually result in
use cases.
o Identify the stakeholders and their interests.
o From the stakeholders, identify and list primary actors. If necessary, begin with brief
narrative to identity initial actors and goals.
o For each actor, identify goals, refactoring as necessary.
2. Verify Actor-Goal list and produce project narrative.
o In group discussion, slowly step through a narrative, capturing the essential steps in
written form on a whiteboard.
o Referring to the narrative, insure that the Actor-Goal list captures the narrative’s. All of the
actors and their goals should be evident in the narrative. If not, refactor the Actor-Goal list
as necessary.
o When finished, each team member should understand and be able to repeat the narrative
Note: If the narrative has already been produced prior to step 2, revisit it with the entire group.
Undoubtedly, it will change and improve as questions and critiques arise.
Focus on the primary actors and their main success scenarios in the first iteration. In later
iterations, add the detail necessary for the desired use case format.
Select the Actor-Goal from the verified Actor-Goal list that significantly influences the core
o
architecture.
o Express the goal in terms of the business process; address the user's need, not the
implementation of it.
o Avoid CRUD terminology. The use case must be expressed in the business vocabulary -
it should make sense to the business user. For example, instead of "Create Student",
perhaps, "Register Student to a Class" is more appropriate. CRUD Use case are more
appropriate as "system" Use Cases...not "user" use cases.
o Avoid determining Use cases by functionality.
4. Produce Domain chart
o Partition Use cases into related, autonomous domains.
o Consider that each domain can be designed and even implemented independently.
Conclusion
Use cases are the first step towards designing and ultimately delivering quality software that works the
way the user desires. Since use cases capture the business requirements from the user perspective, no
other design activity has a larger return on investment. Similar to the specifications for a house, use cases
provide the specifications for software applications. From these specifications, design artifacts are
produced that are used in the construction of the system. Ultimately, application design, construction and
user acceptance of the software rests on solid use cases. Don’t neglect this essential step in the lifecycle
of the software application.
Introduction
Object-oriented applications frequently rely on Use Cases to describe the business processes of a
software application. Since use cases consist of the strategic goals and scenarios that provide value to a
business domain, they can also provide insight into an application’s complexity. Deriving a reliable
estimate of the size and effort an application needs, is possible by examining the actors and scenarios of
a use case. Use Case Points is a project estimation method that employs a project’s use cases to
produce an accurate estimate of a project’s size and effort.
Use Case Points
Use case modeling is an accepted and widespread technique to capture the business processes and
requirements of a software application. Since they provide the functional scope of the application,
analyzing their contents provides valuable insight into the effort and size needed to design and implement
the application. In general, applications with large, complicated use cases take more effort to design and
implement than small applications with less complicated use cases. Moreover, the time to complete the
application is affected by:
• The number of steps to complete the use case.
• The number and complexity of the actors.
• The technical requirements of the use case such as concurrency, security and performance.
• Various environmental factors such as the development teams’ experience and knowledge.
Use Case Points (UCP) is an estimation method that provides the ability to estimate an application’s size
and effort from its use cases. Based on work by Gustav Karner in 1993, UCP analyzes the use case
actors, scenarios and various technical and environmental factors and abstracts them into an equation.
The equation is composed of four variables:
Each variable is defined and computed separately, using perceived values and various constants. The
complete equation is:
UCP = TCP * ECF * UUCP * PF
The necessary steps to generate the estimate based on the UCP method are:
1. The Unadjusted Use Case Weight (UUCW) based on the total number of activities (or steps)
contained in all the use case Scenarios.
2. The Unadjusted Actor Weight (UAW) based on the combined complexity of all the use cases
Actors.
UUCW
Individual use cases are categorized as Simple, Average or Complex, and weighted depending on the
number of steps they contain - including alternative flows.
UAW
In a similar manner, the Actors are classified as Simple, Average or Complex based on their interactions.
Table 1.0
Acronym Full form Definition
Use Case Points method is a software sizing and estimation
UCP Use Case Point
based on Use Case document.
A numeric sum of value of actors after giving the classification
Unadjusted Actor and before multiplying the technical complexity factor of the
UAW
Weights system. (When you go through steps of how to calculate UAW,
this will be more clear.)
A numeric sum of value of Use Cases after classifying and
Unadjusted Use before multiplying the technical complexity factor of the system.
UUCW
case Weight (When you go through steps of how to calculate UUCW, this will
be more clear.)
Unadjusted Use
UUCP Sum of UAW and UUCW
Case Points
Application
Application programs used for accessing services provided by
API Programming
some lower-level module (such as operating system).
Interface
Graphical User A computer terminal interface, such as Windows, that is based
GUI
Interface on graphics instead of text.
Use Case It's an atomic set of activities that are either performed entirely
Transactions or not at all.
Total of all technical factors. See for more details in Steps in
Tfactor Technical Factor
estimation. See table 4.0 for more details.
Factor which defines the complexity of the project. For more
Technical
TCF details, see steps for UCP estimation. TCF is calculated from
Complexity Factor
Tfactor.
EF Environment Factor This is multiplying factor.
Adjusted Use Case This is the value obtained after multiplying with Efactor and
AUCP
Points Tfactor.
Lines of code is a counting metrics to measure the volume of a
LOC Lines of Code
software product.
A programming technology in which program components are
Object Oriented
OOP put together from reusable building blocks known as objects.
Programming
[Glossary]
Stands for Unified Modeling Language. UML is a standard
notation and modeling technique for analyzing real-world
objects, developing systems, and designing software modules in
Unified Modeling
UML an object-oriented approach. UML has been fostered and now is
Language
accepted as a standard by the group for creating standard
architecture for object technology, OMG (Object Management
Group). [Definition taken from here]
Unadjusted Use
UUCFP Details are provided in this article.
Case Flow Points
A sizing methodology for software projects based on functions of
FP Function Points
the software.
Assumptions:
1. Readers have basic knowledge of how to write Use Cases. This tutorial does not cover Use
Cases and is only limited to estimation by "Use Cases". So if you are reading this article with out
a clear concept of Actor, Role, Scenarios, it's better not to read.
2. Use Case structure varies from organization to organization which can seriously impact the
estimation. This tutorial has used Alistair Cockburn's template from Writing Effective Use Cases
(**PRE-PUB. DRAFT#3**): Alistair Cockburn Humans and technology.
Scope
This tutorial is only till understanding Use Case points and does not get in to details of how to write Use
Cases. This article will not concentrate on how to write Use Cases. There are lots of tutorials on the
Internet. And also in the References section of this article, a list is provided.
History and Definition of Use Case Points
Working in Ericsson in the late 1960s, Ivar Jacobson devised Use-Case Documents. Thanks to Ivar
Jacobson to come out with such a wonderful way of communication by using Use Case Documents.
Later, Use Case Documents became a subset of UML. In 1994, Alistair Cockburn constructed the 'Actors
and Goals conceptual model' while writing Use Case guides for the IBM Consulting Group. It provided
guidance as to how to structure and write Use Cases. It’s the document which can stand not only for
programmer or architect, but also for the stake holders. It's a document which stands between the
Customer and Programmers/Architects/Business analysts/etc. It also serves as handover when any new
programmer comes in the project. Use Case Document also serves as a valuable input to the design of
software. In short, it serves in the whole life cycle of software development. Karner identified that this
document can also be used to measure and estimate effort. This tutorial will make a walk through of
Karner's work and give one simple example. So, let’s start with the definition.
Use Case Point is software sizing and measurement based on Use Case Document. "Use Case Point" is
based on work by Gustav Karner in 1993. It was written as a diploma thesis at the University of Linkoping.
This work is a modification of work by Allen Albrecht on function points.
Steps for UCP (Use Case Points) Estimation
1. Determine the UAW (Unadjusted Actor weight): The first step is to classify all the actors in to the
following classification. Table 2.0 will give you a clear idea of how to classify the actors. Second
column is the litmus test for making a decision of which type of actor falls in which category. The
last column provides the factor of complexity:
Table 2.0
Classification Litmus test to recognize classifications Value/Factor
Simple actors Simple actors are those which communicate to 1
system through API.
Average actors Average actors are recognized if they have the 2
following properties:
8. Efactor = SUM(e1...e8).
9. Calculating Environmental Factor = EF = 1.4 + (-0.03 * Efactor).
10. AUCP (Adjusted Use Case Points). Finally, calculating the Adjusted Use case points: AUCP =
UUCP * TCF * EF
11. Multiplying by Man/Hours Factor: AUCP * Person/Hours/AUCP.
Karner[13] proposed a factor of 20 staff hours per Use Case point for a project estimate. While
Sharks states that field experience has shown that effort can range from 15 to 30 hours per Use
Case point.
Schneider and Winters proposed number of staff hours per Use Case point depends on the
environmental factors. The number of factors in E1 through E6 that are below 3 are counted and
added to the number of factors in E7 through E8 that are above 3. If the total is 2 or less, the
general idea is to use twenty staff hours per UCP; if the total is 3 or 4, use twenty-eight staff hours
per UCP. If the number exceeds 5, it is usually recommended that changes should be made to
the project so the number can be adjusted, because in this case, the risk is unacceptably high.
Another possibility is to increase the number of staff hours to thirty-six per Use Case points.
Table 6.0
Use Case # DATAENTRYPROJECTCUST-1009
Use Case name Maintain Customer
Description This Use Case depicts full maintenance of customer from project "Data
Entry".
Scope and level • Data Entry System (Internal)
Table 9.0
XYZ SOFTWARE COMPANY
To:
TNC Limited, Western road 17, California.
Quotation number: 90
Date: 1/1/2004
Customer ID: - 20090DATAENTRY
Quantity Description Discount Taxable Total
1 Data Entry Module 0% 0% $840
Quotation valid for 100 days
Goods delivery date within 25 days of half payment
Quotation prepared by: XYZ estimation department
Approved by : SPEG department XYZ
In this quotation, I have taken Karner's value, that’s 25 days. One programmer will sit on the project with
around $1000 salary. So his 25 days' salary comes to 840 dollars approx. The upper quotation format is in
its simplest format. Every company has its quotation format accordingly. So no hard and fast rule for
quotation templates. But still if interested, Microsoft has a good collection of decent templates.
Use-Case Structure Matters:
The structure of Use-Case matters a lot. According to (Bente Anda, Hege Dreiem, Dag I.K Sjoberg and
Magne Jorgensen), the following aspects of structure have an impact:
• The use of generalization between actors: If two actors have 80 percent in common, put them in
generalization relationship and count them only once. This will increase the accuracy of the
estimate.
• The use of included and extending Use Case: Karner recommends that included and extending
Use Case should not be counted. But Bente Anda, Hege Dreiem, Dag I.K Sjoberg and Magne
Jorgensen have a different opinion in their practical experience. In some Use Cases, they found
include and extended Use Cases as essential functionalities, and reducing them will reduce steps
and hence the estimation.
• The level of detail in the Use Case description (this is dependent on the guy who writes the Use
Case): The level of detail and transaction in Use Case impact the Use-Case estimation a lot. If
you see the Use-Case above, I have written steps like user switches on the PC etc. The
transaction would have increased and hence estimation. So if that transaction step is not adding
business value, do not add it as transaction step. This will also increase the estimation to a good
level.
Including the above recommendation by Karner and (Bente Anda, Hege Dreiem, Dag I.K Sjoberg
and Magne Jorgensen), here are also my inputs which can be followed to make an estimate
better:
• Use-Case Splitting and Merging: Simple Use-Case masters matter a lot. Writing Use-Cases, for
example “Adding Country Master". User can write three different Use Cases for Add, Update,
Delete; or he can write one Use-Case and put the Update and Delete in alternate scenarios. If the
Update and Delete do not have different business validations, put them in one Use-Case. During
my counting, I had seen that accuracy increases if for simple master we put them in one Use-
Case.
Advantages of Using Use-Case Points
• Automation: Use Case document if structured properly for a company (uniformly), we can use
automation tools. In case of FP, this is difficult.
Disadvantages of Using Use-Case Points
• Cannot be used during initial phase: Estimations are normally done at earlier stage of projects.
When we say earlier, it means during the first and second meetings with the client. Use Case
documents are mostly prepared after the project sign off. So during earlier stage, this document
will not be available. Preparing Use Case document during first and second meeting with the
client means wasting your resources in case you do not get the project. For initial phase of
project, you can use “Function points”. For function points, no formal document is needed. My old
tutorial on function points.
• No Standard Use Case Document: The document structure of use is not standard still. It varies
not only from company to company but also from project to project. So the estimation has
significant variance according to the structure of Use Case documents. Even the writing matters
to a large extent. And also, how one identifies Use-Case and the transaction associated with it.
Free textual descriptions may lead to ambiguous specifications [AP98].
• Maintenance estimation problems: Function point [article] failed for maintenance projects. It will
be difficult from Use Case Points to do maintenance estimation.
• Actor identification need technical details: In order that the actor be classified, we need to
know technical details like which protocol the actor will use. So estimation can be done by
technical guys. FP is not technical dependent [article].
Other General Practical Factors
The below points are not related to Use Case as such, but general while making estimation:
• Change of psychology: Estimator should not be biased. If you are an employee of the company,
do not add extra charge or subtract extra charges. These things will be handled at the negotiation
table between the software company director and the customer. An estimator's job is to show the
real cost of the software to the company. In short, an estimator should not be bothered about
negotiation phase and whether the company gets this project or not? Leave that work to the
company's director. And if you are the director of the company, think about that thing after the
estimation is over.
• Sixth Sense Approach: Any of the software measurement ways (Use Case, Function points,
LOC etc.) are evolving and under practice. After looking at the figure, try to give sixth sense
based on your past experience. Some times, estimation will be fair if going the ad hoc way.
• Modular Estimation: In huge projects with 100s of modules, it's better to estimate module wise.
Example, if a client is asking for a customer module, supplier module and accounts module,
estimate them differently so that on negotiation table with client, you can show him the complete
break up. Second, this approach is very useful for phase wise estimation. Client can decide either
to not take the module (due to financial concerns) or move it to phases.
• Information Creep and Grey Areas: Estimation is normally done at the initial phase itself.
Probably with one or two meetings with the client, we have to give the estimation. But naturally, in
many of the areas there can be creep. The best way for such situations is to think about the
maximum possibility and estimate. Example, if a customer says that he needs a chat module and
no clarification is made about what the depth of it is, estimate to maximum possibility of how can
a chat application be made. Later in the negotiation table, show the client the estimation basis. So
according to the client's financial budget, changes will be made.
• Other Costing: None of the software estimation methodologies give cost for non-software factors.
o If the software is using any third-party component, example Crystal Reports etc., estimate
them in a ad hoc way.
o Example, if in the project, company is also providing web hosting, domain name,
hardware etc., put them separately.
o If any training is involved, estimate them separately.
• Assumptions: As estimation is done at the initial stage, there can be lot of creep and gray areas.
Gray areas estimation has to be supported by proper assumptions.
• Review from Third Party: Before sending the costing to the client, review it internally from a third
person who is not involved in the project.
• Iterations: Iterate it as many as times possible and at various phases. Example, use function
points to iterate during scoping phase, that's initial phase, and Use Case Point during the system
requirement phase. This gives a good idea before implementing that the costing is proper.
• Two teams estimation: During estimation, have two teams which will do the estimation. So that
cross verification can be done on the error percent of the estimation.
References
It would be selfish on my part to say that the whole article is my own wisdom. So I have provided all the
links I have referred to prepare this article. If any of the link is copyright and not to be produced, please
email me at shiv_koirala@yahoo.com. I will see to my best that I preserve the copyright.
• I work presently in Ag-technologies. Thanks to www.ag-technologies.com for providing me a role
in the estimation phase.
• Estimating, Software development effort based on Use Case experiences from industry (Bente
Anda, Hege Dreiem, Dag I.K Sjoberg and Magne Jorgensen)
• Use Case Points.
• Use Case Points.
• Writing Effective Use Cases (**PRE-PUB. DRAFT#3**): Alistair Cockburn Humans and
technology.
• For dictionary meaning of quotation.
• If your are looking at test effort using Use Case Points, have a look at the paper by Cognizant
Technology Solutions in the Quality Week 2001, San Francisco, California, USA, June 2001 by
Suresh Nageswaran.
• In this paper, they experimented using UUCFP (Unadjusted Use Case Flow Points) for accuracy.
By Gautam Banerjee (Annual IPML Conference 2004)
• Excellent quotation templates at Microsoft.
• Templates. Not necessary to follow exactly as it is but just for reference.
• Estimation using Use Case points
• http://heim.ifi.uio.no/~kribu/oppgave.pdf
• Basics of UML.
• My old function point tutorial.
• International Function Point user group.
• An Introduction to Function Point Analysis.
• A good PDF tutorial.
• Master thesis by Sofia Nystedt.
• Good thesis which has details about McCabe's complexity, Henry and Kafura’s Information Flow,
and Halstead measurement of complexity.
• Definition of UML.
• Definition of Object Oriented Programming.
Last Words
Software war for the best estimation has been going on for years. I am not pointing in this article that Use
Case Point is the best way to do estimation. So you will find I have introduced the advantages and
disadvantages section. But definitely, we have to measure. One day, we have to unify on a common
measurement principle. If we can say in real life, city "xyz" is 100 kilometers far, why can not we say this
project is of 1000 complexity, 200 function points or 650 Use Case points? Different languages, different
compliers, different processes companies follow have made it difficult to come to common grounds and
common measurement. But the largest hurdle we see is the software companies' attitude to come to
common conclusion of how to measure. If software can automate human complexity, then software
measurement also can be automated.
"We should no longer ask if we should measure, the question today is how?" - Dieter Rombach
Eurometrics 1991"
"Do not quote too less that programmers work for over night, you lose the project or end doing social
service, or loss. Do not quote too high that you lose the project. Be fair to yourself and your customer."