Role of Use Cases in System Analysis and Development: How effective it is today ? Presented to Dr. Vicki Sauter, Professor, Information Systems, CoBA - UMSL. |
Dhiraj Kumar IS 6840, Fall 2011 University of Missouri - St. Louis |
IntroductionA use case shows the behaviour or functionality of a system. It consists of a set of possible sequences of interactions between a system and a user in a particular environment that are related to a particular goal.(Hoffer, George & Valacich, 2008). In Software Engineering,a use case is used to describe the steps between an user and a software system which guides the user to useful output. The user (also called an actor) could be a human user, an external hardware,software sysytems,or other subjects.
Technically speaking use cases are software modeling technique which helps Architects and Analysts to put together the features to implement and how to fix the errors in simple pictures. Due to its simplicity in conveying its ideas to customers, technical gurus and executives a like it is very popular and often considered powerful. A use case can identify,clarify and organize system requirements in simple steps and can help avoid scope creep. Systems Analysts tries to put a set of all possible sequences of interactions between systems and actors in a particular environment related to a specific goal.It consists of a group of elements that can be used together in such a way that will have an effect larger than the sum of the separate elements combined. A use case can be thought of as a collection of all possible scenarios related to a specific goal. No wonder why use cases are so popular but use case modeling, when used in isolation and performed incorrectly, may lead to certain types of problems.(Armor & Miller, 2000) One of the argument behind the popularity of use cases is that it is easy to read. People may mistake that easy-to-read also means easy-to write, but that is a mistake.It could be terribly hard to write easy-to-read stories.Use cases are stories, prose essays, and so bring along all the associated difficulties of story writing in general.(Adolph, Bramble, Cockburn & Pols, 2002). When Ivar Jacobson came up with this concept in 1986 it was based upon many years of work in component based system development. There were many different techniques then but they were overlapping or had gaps.(Armor & Miller, 2000). Tweny five years after though although Use cases are still relevant but it has evolved and being used with a lot of help from web based technology. Now a days Computer aided project planning & management tools, computerized system diagraming tools, data dictionary, code generators and data bases for software changes make us wonder that are we using use cases concept as it was developed by Ivan twenty five years ago ? There are several methodologies like Structured design techniques, Structured coding standards, Object Oriented design techniques,object oriented Languages, Prototyping and of course Traditional System Development Techniques(IRMA,1992 ). This paper dives deep and tries to find out how effective use-cases are in system Analysis and software development today.
Back to top
The software development process used by a company today would highly be dependent upon the development methodology
being used in the company. Similarly the degree to which Use case is exploited would also depend upon the
"the belief level" of the Systems Analyst and the Architect in use cases technology itself.
In certain development methodology, only a brief use case usage could be limited to a simple survey for requirements
gathering whereas in other development methodologies,use cases evolve in complexity and remarkable change in
character as the development process moves forward. Moreover,there are some methodologies that may begin as brief
business use cases but that could evolve into more detailed system use cases,and then finally develop into highly
detailed and exhaustive test cases.
Requirements Gathering: A requirement is something that a computer application must do for its users.
(Kulak & Guiney, 2000).Requirements are generally categorised into functional and non-functional requirements.
The functional requirements specify the input and output behaviour of a system. Nonfunctiona requirements specify
the other qualities that the system must have, such as those related to the usability, reliablity, performance, and
supportability of the system.(Bittner & Spence, 2003).
Analysis and Design: Use cases are realized in analysis and design models. Use-case realizations are created
that describe how the use cases are performed in terms of interacting objects in the model. This model describes the
different parts of the implemented system and how the parts need to interact to perform the use cases. Analysis and
design of the use cases matures them through the states of Analyzed and Designed. These states do not change the
description of the use cases, but indicate that the use cases have been realized in the analysis and design of the
system.
Implementation: During implementation, the design model is the implementation speci-fication. Because use
cases are the basis for the design model, they are implemented in terms of design classes. Once the code has been
written to enable a use case to be executed, it can be considered to be in the Implemented state. It suggest
iterative prototypes for spiral development.
Testing: During testing, the use cases constitute the basis for identifying test cases and test procedures;
that is, the system is verified by performing each use case. When the tests related to a use case have been
successfully passed by the system, the use case can be considered to be in the Verified state. The Accepted state
is reached when a version of the system that implements the use case passes independent user-acceptance testing.
Back to top
As we compare the use case with other councurrent models and try to establish its' relevance in concurrent development
techniques it is important to reflect on the way use cases are structured today.Most popular model today UML provides
generalization, include and extends as three possible relationships.A generalization relationship between use cases implies
that the child use case contains all the
attributes, sequences of behavior, and extension points defined in the parent use case, and participates in all
relationships of the parent use case. The child use case may define new behavior sequences, as well as add behavior
into and specialize existing behavior of the parent use case.
Back to top
Alistair Cockburn identified three levels of detail in writing use cases-
It consists of a few sentences which summarize the use case. It can be easily inserted in a spreadsheet cell, and
allows the other columns in the spreadsheet to record priority, duration, a method of estimating duration, technical
complexity, release number, and so on.
It consists of a few paragraphs of text, summarizing the use case. A casual use case should be conversational in
nature, written in terms of a generic user role rather than specific people. They should have a title identical to
what is listed in the user/task table. The casual use case should be two paragraphs. The first paragraph starts
"An X wants to do Y in order to achieve Z. They have already done W." The casual use case continues with sentences
that describe the interaction and information flow between actors.The paragraph ends with the successful achievement
of the goal.
Fully dressed use cases show more detail and are structured they are useful order to obtain a deep understanding of
the goals, tasks, and requirements.
Back to top
The Use case diagram is used to define the core elements and
processes that makeup a system. The main purpose of a use case diagram is to show what system functions are performed
for which actor.
There are two types of actors in use case diagram viz. active actors & passive actors.Active actors initiate
interaction with the system. This can be shown by placing an arrow on the association from the actor pointing
toward the use case.Interaction with passive actors is initiated by the system. This can be shown by placing an
arrow on the association from the use case pointing toward the actor.
Back to top
A key attitude in use case work is to focus on the question"How can using the system provide observable value to the user
, or fulfill their goals ?", rather than merely thinking of system requirements in terms of a "laundry list"
of features or functions.(Larman,2005).So if the system usages is unique then Use-cases could be
unique as well. And may be that's why although use cases are part of UML, there is no template for writing use
cases. There cannot be just one template for a use case. Some teams will do just fine with a short use case style,
in which the main story is presented in a simple paragraph of prose, and the failure handling is in a few follow
ing paragraphs. Other teams will need detailed templates and careful writing conventions.(Cockburn,2002)
The following is the guidelines for standards from
Derek Coleman around use case template (Coleman, 1998), with some minor m
odifications.
Each use case should have a unique name suggesting its purpose. The name should express what happens when the
use case is performed. It is recommended that the name be an active phrase, e.g. complete order. It
is convenient to include a reference number to indicate how it relates to other use cases. The name field should also
contain the creation and modification history of the use case preceded by the keyword history.Each use case should
have a description that describes the main business goals of the use case. The description should list the sources
for the requirement,preceded by the keyword sources.
Optionally, an actor may be indicated as primary or secondary. Actors are characterized not by the identity of the
user or other, but rather by the role played by the actor. One person can be several different actors in different
roles.One actor can be played (at different times) by several different persons .An entire committee could be one
actor. An actor need not be a living thing; it could be another subsystem.
Assumptions are conditions that must be true for use case to terminate successfully.
Each assumption should be stated in a declarative manner, as a statement that sums to either true or false.
Steps are the interactions between actors and system that are necessary to achieve the desired goal.
Non-functional keywords include, but are not limited to Performance, Reliability, Fault Tolerance, Frequency,
and Priority .
Issues include list of issues that remain to be resolved & list of issues awaiting resolution.
Back to top
Use case techniques has been extended to be used in several purposes during the software development cycle.
Use Case Points(UCP) method is a software sizing and estimation based on Use Case document.(Koirala,2004).
UCP method has been proposed to estimate software devlopment effort in early phase of software projects and used
in a lot of software organizations.(Kusumoto,2004).There are several steps involved during the
estimation. Following are the major steps:
Each factor is assigned a value between 0 and 5 depending on its assumed influence on the project. A rating of
0 means the factor is irrelevant for this project; 5 means it is essential.
TCF = 0.6 + (.01*TFactor)
The Environmental Factor (EF) is calculated accordingly by multiplying the value of each factor (e1... e8) by its
weight and adding all the products to get the sum called the Efactor.
EF = 1.4+(-0.03*EFactor)
The adjusted use case points (AUCP) are calculated as follows:
AUCP = UUCP*TCF*EF
Back to top
One of the more remarkable aspects of use cases is that they have achieved such wide currency
despite an almost complete lack of precise definition.(Constantine & Lockwood, 1999). No doubt it is remarkable
but it also creates uncertainity due to lack of standards.When it comes to documenting the interaction between the actors and the system Use cases is the way to go and these
are excellent tools. But these could not be taken as solution to all the system design and architectur problems .Use cases are a relatively informal description of system behaviour and usage, which is
designed to show how a system provides some value for the user when it is used (Overgaard & Palmkvist,2005).
Following are some of the short comings:
Back to top
As we saw in the above discussion,Use cases provide several and very useful advantages and no doubt are these are
powerful tools that every
architects, systems analysts, designers, and testers can harness at different stages of software life cycle.
It stands out due to its simplicity and easiness to convey the ideas.But in concurrent and modern development processes
which are highly bject-oriented focussed it could be a mistake to blindly use it as it is more functional oriented.
Also easy-to-read is not always easy to write and writting a complex use case could also take time.While use cases, in general, and their current detailed formulations, in particular, provide useful information to manual test design, no current
use case formulation is adequate for automated test design that includes result checking.(Gelperin,2004).
But like any other technological models the risks related to use case modeling can be lessened if right training and experience
is provided. Use cases should compliment other models.Use cases should be only one of several ways of capturing user requirements. Use cases are useful in dealing with
functional requirements, and as such they play a primary role in product definition.
(Malan & Bredemeyer, 2011). Saying that "use cases will be used on the project" is therefore an insufficient phrase, and any
recommendation or process definition that simply says, "use use cases" is incomplete. A use case
valid on one project is not a valid use case on another project. (Cockburn,1999). An architecturally relevant subset of the use cases for each of the
products to be based on the architecture also plays a valuable role in architecting. They direct the architects to
support the required functionality, and provide the starting points for collaboration diagrams (or sequence diagrams).
Back to Top
Armour, F., and Miller, G.,"Advanced Use Case Modeling: Software Systems," Addison-Wesley Professional,Reading,MA May 2000. Adolph, S., Bramble, P., Cockburn, A., and Pols, A.,"Patterns for effective use cases," Addison-Wesley Publishing, Boston, MA,August 2002. Bittner, K. and Spence, I. "Use case modeling," Addison-Wesley Publishing,Boston, MA,August 2003. Cockburn, A., "Use cases,ten years later,"STQE magazine,March/April 2002 Cockburn, A., "Writing Effective Use Cases",Addison-Wesley,Reading,Boston, MA, April 1999. Coleman, D., "A Use Case Template: Draft for discussion", Fusion Newsletter, April 1998. Constantine, L., and Lockwood, L., "Design for Use", Addison Wesley,Boston,MA,USA,1999. Denney, R., "Succeeding with Use Cases: Working Smart to Deliver Quality", Addison-Wesley Professional,Reading, MA,2005. Gelperin, D. "Precise Use Cases", www.livespecs.com,2004. Jacobson, I., "The Object Advantage : Business Process Reengineering With Object Technology", Addison Wesley,Reading, MA,1995. Kulak, D., and Guiney, E., " Use Cases: Requirements in Context", Addison Wesley,Reading, MA,2000. Malan, R., and Bredemeyer, D., "Functional Requirements and Use Cases",www.bredemeyer.com,Bredemeyer Consulting,Bloomington, Indiana,USA, 2011 Overgaard, G., and Palmkvist, K.,"Use cases: patterns and blueprints",Addison-Wesley,Reading, MA,2005. Jacobson, I. and Ng, P., "Aspect-oriented software development with use cases",Addison-Wesley,Reading, MA,2005. Schneider, G., and Winters,J.,"Applying Use Cases: A Practical Guide (Google eBook)",Que Publishing, 2001. Meyer, B.,"Object Oriented Software Construction ",Prentice Hall,Englewood Cliffs, NJ,1997. Koirala, S., "How to Prepare Quotation Using Use Case Points", www.codeproject.com, 13 Dec 2004
Back to top
APPENDIX Table1:Abbreviations and Terms Table2:Classification of Actors for UCP(Source:www.codeproject.com) Table3: Adusted Use Case Weight (Source:www.codeproject.com) Table4: Environmental complexity fact (Source:www.codeproject.com)
Table5:Environmental factors(Source:www.codeproject.com) |