Home
        The Future of Use Cases
         Contents
1.   Language Support for Changeable Large Real Time Systems     OOPSLA86  ACM  Special Issue  of Sigplan Notices  Vol  21  No  11  Nov  1986     Rational    the software development company 7    2002 Rational Software  11 26 2002    idea  In the Objectory tool  we supported reuse through    text objects     reusable objects  consisting of a piece of text  These text objects could only be changed by the person responsible  for the text object  not by someone else using  or reusing  the object     Text objects could be reused in multiple places  for example in different text descriptions of use  cases  Like Rose XDE  which has a model element for each class that could be shown   differently if needed  in multiple diagrams  text objects could be shown in multiple documents   The beauty was that all the text objects were kept in one place  so they were easy to find  change  and manage  and all references were automatically kept in sync  Very powerful     I think that the solution we had was right at that time  when we feared that use cases would be  viewed as just another way to do functions  This problem persists today among system analysts   although not among methodologists     Two Classes of Extension Inclusion Use Cases    When extension use cases originally were introduced I had basically only one kind of extension  or inclusion in mind  the small reusable use case fragment  I didn   t foresee the need for being  able to extend or include concrete complete use cases  This is 
2.  During the    execution    of  the base use case  that is when a use case instance of the base runs  it will  under certain  conditions  interrupt the flow described in the base use case and instead follow the flow as  specified by the extension or the inclusion use case  When the use case instance has come to the  end of the extension or the inclusion use case  it will return to the base use case and to the  position in the flow described in the base use case  where it left off  This is true for both  complete use cases and fragment use cases     The major difference between extension and inclusion use cases is the way the use case instance  is instructed to interrupt the base use case and instead follow the extension or inclusion use case     e In the case of inclusion  the base flow itself explicitly instructs the use case instance to  obey the inclusion use case     e In the case of extension  the base flow doesn   t specify the interruption  rather the  extension use case specifies where in the base use case the use case instance shall make  the interruption     The extension use case references an extension point  which specifies a unique location  in the base use case  In OOSE and Objectory  extension points belonged to the extending  use case  In the work on UML 1 1 Jim Rumbaugh suggested that extension points should  belong to the extended use case  The argument was for encapsulation   the extending use  case should not see the details of the base use case  just the
3.  Rational    the software development company 11    2002 Rational Software  11 26 2002    The Register Failures fragment  see Figure 2  has collapsed to a dot and its name has  disappeared  The semantics of the dot would be that while executing Conduct Transaction  and  when reaching the extension point  something specified by the dot will happen  an extension will  be executed  The Inspect Transaction Failures use case will use the extension to perform its  responsibilities     The dot represents an extension fragment   the Register Failure fragment   let   s call it    E     E is  not part of the real use case Inspect Transaction Failures  called UC2  that needs the extension   Since E is only needed by UC2 we don   t need to give it a name  Instead we attach it to UC2 by  attaching the dot to the use case symbol  However  it must be clear that the use case  UC2  that  needs the extension E doesn   t  lt  lt extend gt  gt  the other base use case Conduct Transaction  UC1   or the extension E  Thus it would be completely wrong from a language point of view to have  use case UC2  lt  lt extend gt  gt  UC1  Without the dot or something similar we wouldn   t be able to  properly explain the desired semantics     The dot would be expanded  by    clicking the dot     to a new compartment of the use case  We  could name the new compartment    Extensions     and use it to describe the extensions needed by  the use case     In the example we only have one extension  Register Failure
4.  The paper  was not accepted  probably because I already had another paper for that conference  or because  most people in the program committee were programming language experts   However  the  paper was accepted for OOPSLA   87  This paper introduced many of the key ideas in use case  modeling     What Was a Use Case in 1987    According to the OOPSLA   87 paper    a use case is a special sequence of transactions   performed by a user and a system in a dialogue     This is pretty similar to our current  informal   definition  I developed a separate model for describing an outside perspective of a system and I  called it a use case model  By outside  I meant a black box view of the system   the internal  structure of the system would be of no interest in this model  Some people have misunderstood  the term    outside    and believed it to be a synonym for user interface   which it was not  Instead  it represented a model of the functional requirements of the system     At this time the use case model also included entity  domain  objects  thus we could show how  use cases could  lt  lt access gt  gt  entities  Use cases and entities were class like  with operations  and  not data  The other relation in the use case model was  lt  lt built on gt  gt  which was described as    an  extended form of inheritance relation  Multiple inheritances are common     In fact  the built on  relation was a combination of the generalization relationship and the  lt  lt extend gt  gt  relatio
5.  are needed by some other use case   usually a concrete or a  generalization use case  For example  in Figure 2  assume that the base use case is a bank  transaction Conduct Transaction  Every time a transaction fails the bank wants to register this  event to make it available to some other concrete use case  in this case  an administrative use    7 We called them text items   8 At this time   we were primarily Gunnar Overgaard  Patrik Jonsson  Karin Palmkvist  and myself     The example is provided by Kurt Bittner  Thanks     Rational    the software development company 8    2002 Rational Software  11 26 2002    case Inspect Transaction Failures  One obvious traditional solution would be to change the  transaction use case and thus explicitly in its description show that a failure message has been  registered  However  this would require changing the base and complicating its understanding   The change has nothing to do with the base use case Conduct Transaction  it   s only there to  register some information to the other use case  One such change may not be disturbing  but  when you have several of them it gets to be quite messy  To avoid cluttering the base we instead  use an extension use cases to add the change on top of the base use case  We would add a third  use case   a very small use case fragment called Register Failures  Ina similar way we may  have small procedure call like inclusion use cases that are shared between two or more concrete  use cases  Assume that 
6.  extension points  If you  change the extended use case  only that use case would know the new location  I agreed  with him     Thus extension and inclusion use cases are very similar  in fact  they could be considered the  inverse of each other  Actually  when working on UML 1 1  Jim and I discussed that this should  be reflected in how the two dependencies were named  However  he was not crazy about my  proposal that  lt  lt include gt  gt  should be named  lt  lt inverse extend gt  gt   and I don   t think anyone else  would have been either        Fragments are Not Use Cases   Neither extension use case fragments nor inclusion use case fragments are use cases  and they  should not be treated as use cases  Cleaning up this    defect    has long been overdue  It means that  we need to make some minor changes to UML  by adding some minor notational elements     Methodology users have the right to question any new notation  In my own experience I have  struggled with    homegrown    methodologies that introduce notation for everything  Most of these  methodologies didn   t differentiate between syntax  notation  and semantics  and their authors  had no education in classic language design   programming language or modeling language     Rational    the software development company 10    2002 Rational Software  11 26 2002    Thanks to the work on SDL in 1981  and now UML  we have come a long way in developing  more precise modeling languages     Very simply  Classical language 
7.  modeled the different     functions    we needed to carry out all of the calls  A function was some loosely defined piece of  software  Functions had no interfaces  They had beginnings and endings  but they were not well  defined  A function could interact with the outside world  The general feeling was that we didn   t  really know what functions were  but we could give examples of them  and some people could  specify them     However  we did know how to realize functions  I had learned a diagramming technique that  described sequences of relay operations  In 1969 I translated this technique to software to  describe component interactions   to what is today called sequence diagrams   the same term  used when they were introduced  We described how functions were realized by using sequence  diagrams  or collaboration diagrams for simpler interactions  in very much the same way that we  describe use case realizations today     Then  one day in spring of 1986  while working on traffic cases and trying to map them onto  functions  I suddenly got it  A traffic case could be described in terms of functions by using an  inheritance like mechanism  I changed the terminology and made traffic cases and functions both  use cases   the former became concrete or real use cases  the latter became abstract use cases     Rational    the software development company 1    2002 Rational Software  11 26 2002    I wrote a paper on this for OOPSLA   86  this paper is where I introduced use cases 
8.  paper  but the point is this  don   t think of extensions as useful for use cases only     I hope to address in a forthcoming aspect oriented paper how extensions could propagate through  activities other than use case modeling   activities such as analysis  design  implementation  and  test  This was as I said above actually already described in the OOSE book     Inclusions    When use cases were born  the need for two kinds of reuse was seen  Since I based use cases on  object orientation  I saw great value in subclassing  and in 1987 introduced what we called the     inheritance    relation between use cases  In 1992 we changed this to    uses    to make it less     techie    jargon and easier to adopt by analysts  In the UML it was later called    generalization      The other reuse need was simply a mechanism for factoring common flows of events  sharing   from use case descriptions  for cases where we currently use the  lt  lt include gt  gt  relation  This  shared behavior is what I here call an inclusion     I was very reluctant to introduce a relation like this  since I foresaw people misusing use cases by  applying them as they did functional decomposition  In fact  this is one of the threats to use cases  today  People misuse use cases by using them to describe functions as opposed to objects  and  then blame the use case concept for their problem  To get around this  we introduced another      I am happy to send copies to Rational employees      Ivar Jacobson    
9.  similar to join points       Ivar Jacobson  Martin Griss   amp  Patrik Jonsson  Software Reuse  Architecture  Process and Organization for  Business Success  Addison Wesley Longman  1997     Rational    the software development company 14    2002 Rational Software  11 26 2002    When using the RUP  within each iteration we specify use cases  we design them  and we test  them  Between design and test we must disrupt the use case flow in order to design  code and  test the components that together realize the use cases  Using AOP will simplify this  we   ll go  directly from use case design to use case programming and then to use case test  The work on  components will be supported by our programming environment  an AOPL   an OOPL    aspects   Thus AOP allows us to seamlessly implement use cases     Neither use case driven development  nor aspect oriented programming are silver bullets  They  represent two best practices only  However  I believe that integrating them will dramatically  improve the way software will be developed     Making Use Cases Run Time Entities   The most exciting future of use cases is that they will also have counterparts in the run time  environment  Being able to identify executing use cases  use case instances  in fact  in the  operating system can help us with many important features as discussed in my 1985 thesis   which had a semantic construct representing a use case instance  A use case instance was created  by an external event  it lived during
10.  some very simple basic  behavior  and then add more and more behavior without having to change the basics  Extensions  are not just a technique for describing optional behavior  optional  that is  from the customer   s  point of view   they are also intended for describing mandatory behavior in a structured way   Without a mechanism like extensions the base flow of a use case would become cluttered with  statements that have nothing to do with the base use case  even if the statements are important for  other use cases     A potential problem in using extensions is creating deep hierarchies of extend dependencies  To  avoid these we need guidelines  we usually never extend an extension  a fragment   since it  would make them difficult to understand       Those of you interested in aspect oriented programming  recognize that the intention of extensions are very similar  to the intention of AOP     Rational    the software development company 6    2002 Rational Software  11 26 2002    Another potential point of confusion is knowing when to use extensions and when to use  alternative paths when describing a use case  Again  we need guidelines  we usually only use the  extend relationship when the extension use case is completely separate from the extended base  use case   or  more precisely  when it is a separate concrete use case in itself  or when it is only a  small fragment also needed by another use case  The base use case must be complete by itself  and not require the ex
11.  the whole interaction with the user  e g   during the  telephone call   and it tracked all the objects that participated in the use case instance  With such  a construct  we could change installed software much more incrementally   one use case instance  at a time  The software system could be restarted in much smaller steps  in most cases by  restarting only the use case instance that was broken  And  we could simplify the programming  of use cases  With AOP we may achieve parts of this  It seems as we will at the least achieve  use case oriented programming        Final Words    Use cases have now been around for more than 15 years  We can move them a step forward by  cleaning up some minor defects  by separating use cases and fragments  This can be done  tomorrow     The day after tomorrow  there are many interesting ideas to expand on use cases  Many of the  ideas we have are just marginal improvements  However  two of the ideas are dramatic  enhancements  making use cases code modules and making them executable run time entities   Until then  enjoy use cases as they are today     Acknowledgements    I would like to thank Kurt Bittner  Gunnar Overgaard  Paul Szymkowiak for their feedback on an  early version of the paper  Thanks to Catherine Southwood for editing the paper       Ivar Jacobson     Concepts for Modeling Large Real Time Systems     Dissertation  Department of Computer  Systems  The Royal Institute of Technology  Stockholm  September  1985     Rational    th
12. L   s powerful classifier concept  What I  called    class like    in 1992 could now be formally explained by UML classifiers  We no longer  needed to only rely on the old definition that    a use case is a sequence of actions       Although  this is still a compatible definition from the user   s perspective  the definition based on classifiers  is what methodologists  process engineers  and tool builders need for clarity  Thus the UML  effort resulted in a much more precise definition of use cases  but it didn   t do much to evolve  them  Roughly speaking we only changed the    uses    relation to a generalization  and we added    Rational    the software development company 4    2002 Rational Software  11 26 2002     lt  lt include gt  gt    The    uses    relation in Objectory was previously called    inheritance    and was  never intended to be used as  lt  lt include gt  gt  fragments   In the past we didn   t allow developers to  model these fragments  but used another technique involving text objects instead  we   ll discuss  these later     I am very happy with the way our Rational Unified Process  RUP  team has correctly  implemented use cases and improved their practical use  No really dramatic changes have been  made  but use cases have evolved to be better explained  based on the experience of thousands of  customers and our own experts  In particular  a new book  Use Case Modeling     by Kurt Bittner  and Ian Spence  is now on the shelves  This is THE book on us
13. Rational    the software development company 12    2002 Rational Software  11 26 2002    With UML terms  a fragment should be a classifier with a notation that makes us think about tiny  things   but now I go too deep for the purpose of this paper  We also need a syntactic shortcut   syntactic sugar  to attach a fragment to a concrete use case  We still need to use fragments in a  pragmatic way     The Day After Tomorrow  The Future of Use Cases    Over the years there have been many ideas for improving use cases  There are so many ideas and  I don   t know of them all  but I   ll list some of them below  and introduce some others  I can   t  refrain from discussing the ones I am most excited about  making use cases code modules  through aspect oriented programming and making use cases run time entities  Here are possible  directions for the    future    of use cases     e Stereotype use cases  There are many ways to classify use cases  There are primary  secondary  etc  use cases   there are business use cases  software use cases  system use cases  etc   business use cases  are supporting  managerial or operational         Stereotyping is a UML mechanism for  classification which would help developers in modeling of use cases     e Clarify relationship between patterns and use cases  Many design patterns are    template    realizations of reusable use cases  Such patterns are  usually described using sequence diagrams or collaboration diagrams  A pattern is a  solution to a 
14. Use Cases   Yesterday  Today  and Tomorrow    By Ivar Jacobson    An Introduction    No other software engineering language construct with as much  impact as use cases has been adopted so quickly and so widely as  use cases have  I believe this is because use cases  although a simple  idea  play a role in so many different aspects of software  engineering  So many people have asked me how I came up with the  use case idea that I will briefly describe it here  PII also summarize  what we have achieved so far with use cases  then suggest a few  improvements for the future        Yesterday  In The Beginning    Use cases have now been around for more than 16 years  When I  first used the term in 1986  they were the evolution of work ongoing since 1967     Getting to Use Cases   It was 1986  I was troubled by how to model telephone calls  A modern switch at that time  offered so many types of telephone calls  local calls  outgoing calls  incoming calls  and transit  calls  There were many kinds of local calls  and many kinds of outgoing calls  calls to a neighbor  switch  to a domestic switch  to an international switch  And  on top of this  each one of these  calls could be carried out with different signaling systems     We had discovered the problem of multiplicity and diversity many years ago  We didn   t model  each type of call   there were too many  and there was a lot of overlap between them   we just  listed and named all of them  we called them traffic cases  Instead  we
15. Validate User is such an included use case fragment  shared with some  other real use case             Inspect Transaction    Register Failures  K                Failures    Validate User    Figure 2  Concrete and Abstract Use Cases    A part of a use case model with two concrete use cases  Conduct Transaction and Inspect  Transaction Failures  and two abstract use cases  fragments   Register Failures and  Validate User     I have introduced a dependency between the concrete use case Inspect Transaction Failures and  the extension use case Register Failures  Since this dependency is special and required only to  attach an extension fragment to the use case that needs it  it may be a good idea to define a  unique dependency stereotype  maybe  lt  lt need gt  gt    for it  But that is a separate issue     The first class of use cases   concrete use cases in themselves   is fine  we don   t need to do  anything special about it  Concrete use cases can extend a base use case or be included in a base  use case     Rational    the software development company 9    2002 Rational Software  11 26 2002    The second class of use cases   the use case fragments  as I will call them   will be discussed  below and some changes will be suggested  However  before doing so let   s discuss a related  subject  the relation between extension and inclusion use cases     Extension and Inclusion Use Cases Have a Lot in Common    Extension and inclusion use cases are both related to a base use case 
16. e cases  I strongly recommend  everyone involved in software engineering and requirements development read it  Also Kelli  Houston   s RUP work on user experience design with use cases is a great improvement on our  earlier work in this area  and is very much in line with the original use case concept     Thus  now may be the time to take some steps forward to grow  clarify and extend  the idea of  use cases  But first  a word of warning about formalizing use cases     Use Caution When Formalizing Use Cases   Over the years people have criticized use cases for not having a formal enough description in the  UML  Although several of my papers discuss techniques for formalizing use cases  such as using  sequence diagrams to show how an actor interacts with a use case  or using activity diagrams or  state charts to describe a single use case  I warned against using these techniques  After all  the  use case model is intended for communicating with customers and users  Formalizing use cases   using mathematics  has never been a problem  I had already done it in 1986  In fact  any  computer science student could do it  By making use cases classifiers in UML  you have the tool  to formally describe use cases to basically any depth you want     The difficulty is  however  to use what is available in UML in the most pragmatic way  J am still  reluctant to suggest that system analysts describe use cases more formally than in some textual  form  Avoid trying to specify the internals of 
17. e software development company 15    2002 Rational Software  11 26 2002    
18. each use case with diagrams such as activity  diagrams or state charts  You may describe the interactions between a use case and actors using  sequence diagrams or activity diagrams with swimlanes  I think there are better ways to become  more precise about requirements  the internals of a use case  than introducing more formalism in  the use case model  This is the role of analysis   but that is the subject of another paper     Tomorrow  Potential Next Steps    Over the last decade  the way use cases were written has remained quite stable  Of course  over  these years I have wanted to make improvements  however  as soon as a change was discussed   everything was questioned and things became too unsettled  Therefore  I felt it safer to leave it as  is  until people become more familiar with the use case construct  Also  we needed to allow time  for use cases to be used in the field  and for their implementation to evolve and become  established  In this section  I will raise a couple of issues with the current application of use  cases  and indicate some proposed changes          Kurt Bittner  and Ian Spence  Use Case Modeling  Addison Wesley Professional  2003  ISBN 0 201 70913 9    Rational    the software development company 5    2002 Rational Software  11 26 2002    Some Context for the Proposals  A use case model of a software system contains basically four kinds of use cases     e concrete use cases  can be instantiated  abstract ones can   t   e generalization use case
19. general problem and it can be applied in different contexts  There is thus an  interesting relationship between a pattern and the generic  reusable use case that specifies  the problem  Clarifying this relationship would be very helpful to developers     e Using use cases within Human Computer Interaction  HCI   HCI is a science  There is a way of designing a user experience by understanding the user  community  its habits  and its metaphors  I was introduced to this technology by working  with companies that were developing large commercial Web sites for huge user  communities  Use cases would be an important concept to integrate software  development and HCI approaches     e Cost estimations based on use cases  In 1994 Magnus Christerson lead Gustaf Karner   s master   s thesis    which resulted in a  paper on project estimations based on use case points  derived from function points   To  my knowledge this is still an interesting paper  With all the experience we have today  about use cases and project estimations  we should be able to modernize these ideas     10 In the Object Advantage book we described them in layers  The Object Advantage  Business Process  Reengineering with Object Technology  by Ivar Jacobson  Maria Ericsson  and Agneta Jacobson  Addison Wesley  Longman  1994       Gustav Karner     Use Case Points   Resource Estimation for Objectory Projects     Objective Systems SF AB    copyright owned by Rational software  1993     Rational    the software develop
20. ment company 13    2002 Rational Software  11 26 2002    e Reusable use cases  This is a huge topic  Reuse of business software should start from understanding its use  cases   both the use cases of the business  and the use cases of the software to be used   This is the depth of the Software Reuse book     that I wrote with Martin Griss and Patrik  Jonsson back in 1994 97  It is more relevant than ever today when a company   s IT  support is built by integrating enterprise applications  whether these are legacy systems   packaged solutions  new applications  or Web services  Further discussion can be found  in my RUC 2002 talk    Closing The Gap  Business Driven Enterprise Application  Integration      I would be happy to send this to Rational employees      Making Use Case Scenarios First Class Citizens   It would be helpful to be able to identify and enumerate use case scenarios  and to show  dependencies between these scenarios  Recall that a scenario is a use case instance that we  choose to model  This is probably more of a process issue than a language issue  There are  probably many kinds of dependencies     Iteration Dependencies    Each project iteration is driven by a number of use case scenarios  Usually a use case is not  completed within a single iteration  but is worked on over several iterations  I would like to be  able to show how iterations are made up of scenarios  how a scenario grows over several  iterations  and how several different scenarios over seve
21. n     Use cases were not just specified  but also designed and tested     You create as many processes   we would today say activities  as there are use cases  The conceptual model of the use cases is  translated seamlessly into a new model showing how each use case is implemented by means of  the identified blocks  a block would today be subsystem  class  or component      This sounds  pretty much like collaborations     Each use case is tested separately to safeguard that the system  meets the requirements of the user  Please  note that the use cases constitute the key aspect  through the entire development activities        Sequence diagrams were used to show the interactions among the blocks components  This is no  surprise since sequence diagrams had shown their value in practice for almost twenty years by  then     What Was a Use Case by 1992    In 1992 the OOSE book  Object Oriented Software Engineering   a Use Case Driven Approach      was published  During 1987 and 1992 the Objectory process had been in practical use by about  twenty customers for important new product development  These customers were involved in  many different kinds of systems  management information systems  defense systems  pilot   counter measure  C31   and telecom systems  POTS  mobile   What was presented at  OOPSLA   87 was theory  now we had a lot of practical experience behind the idea  Over these  five years use cases had matured       Ivar Jacobson  Magnus Christerson  Patrik Jonsson  am
22. nts  but it binds together all the activities within a project     whether this project is a miniproject like a single iteration  or a major project resulting in a new  product release     The current definition of use cases basically goes back to 1994  To strike a balance between  defining too many use cases or too few  I added a requirement that a use case must give a     measurable value    to a    particular actor     As a rule of thumb  I suggested that a large system  supporting one business process should have no more than  say  20 use cases  I realized that  giving any such number could lead people to take undesirable actions to get the    right    number   If they had less than 20 use cases  they might split some of them get up to a count of 20  or  if  they had more than 20 use cases  they might combine separate use cases to get down to a count  of 20  But that is the wrong approach  I have seen good use case models for commercial systems  with as few as 5 use cases and some with as many as 40 use cases  However  I have also seen  use case models with as many as 700 use cases   obviously these were unsound models  My  suggested 20 use cases are concrete  real  use cases and not generalizations  or  extension inclusion fragments     Use cases have become part of the Unified Modeling Language  UML   Because the UML is  precisely defined  the meaning of use cases and associated concepts  such as use case instance   UCI   could also be precisely defined thanks to the UM
23. p  Gunnar Overgaard  Object Oriented Software Engineering   A Use Case Driven Approach  Addison Wesley  ISBN  0 201 54435 0  1992     Rational    the software development company 2    2002 Rational Software  11 26 2002    Thus  use cases took much of their current shape  syntax and semantics  before 1992  At that  time we had use cases  actors  use case models  the relationships    inheritance     now replaced by     generalization     and  lt  lt extend gt  gt   I didn   t like what we today call the  lt  lt include gt  gt  dependency  since I thought it would damage modeling by inviting functional decomposition     To increase clarity we made it an important issue to distinguish between a use case  as a class   like thing   an instance of a use case  and a description of a use case     The depth of the use case model was in its use cases  Each use case description contained the  following     a brief description   a flow of control   base flows and alternative flows   subflows  reusable at many places within the same use case description   preconditions and postconditions    However  use cases were more than a requirements technique  Use cases were like the hub of a  2  wheel        Requirements       Architecture       Analysis  amp  Design    Iteration Planning  Business    User Interface Design    Figure 1  Use Cases Were Like the Hub of a Wheel      In this paper use cases are the focus of our discussion  Their importance in relation to other best practices   architectu
24. ral iterations together make up a  complete use case  You should be able to show  for instance  that you may have to develop less  important scenarios first just to be able to develop more important instances later  As a concrete  example  you may need to first develop a use case scenario that allows a telephone system  operator to make a subscriber a valid user  before that subscriber can make any telephone calls     Test Case Dependencies    There are other reasons for dependencies between scenarios  One is for testing  Integration  testing is built up test case by test case in very similar way to how iterations are built up    We would be able to trace use case scenarios to test cases  A good use case scenario is a good  test case  The relationship between a use case approach and a test first approach would become  more streamlined     Use Cases and Aspect Oriented Programming   One of the most exciting    new    movements today is Aspect Oriented Programming  AOP   AOP  was the buzzword of the year at OOPSLA  And for very good reasons  This article cannot get  into any depth about AOP  However  I can   t refrain from giving some hints why AOP will make  the future of use cases fantastic  The whole idea with extension use cases  that is to add  behavior to an existing system without changing it  is very similar to the whole idea of  aspects  Use case realizations are implemented as aspects  Extension use cases will be realized as  aspects  Extension points are semantically
25. re first  iterative development  may therefore seem unbalanced     Rational    the software development company 3    2002 Rational Software  11 26 2002    Use cases were traceable to analysis  to design  and to implementation and test  For each use case  in the use case model we created a collaboration  a view of participating classes  in analysis and  design  Each use case resulted in a set of test cases  Use cases were important to design user  interfaces and to structure the user manual  Use cases also moved into the space of business  modeling  since they perfectly matched the definition of business processes     We coined the term use case driven development for our approach of software development     first identifying all use cases and specifying each one of them in requirements  analyzing and  designing each one of them in analysis and design respectively  and finally testing each and  every one of them in test     We had all this before 1992     Today  A Lot Has Happened Since Then    The adoption rate of use cases has surprised me  they were embraced almost immediately by all  methodologists  and basically adopted worldwide  Other important techniques such as  component based design and object oriented modeling were much more controversial and  needed a much longer adoption time  Probably this is because use cases are basically a simple  and obvious idea  they work well with objects and object thinking  Using use cases is not just a  technique for managing requireme
26. s  needed by Inspect Transaction  Failures  Thus in the extension compartment of Inspect Transaction Failures we would describe  the Register Failures use case  Since we only have one extension  we didn   t name it  but if there  were multiple extensions  we might name the dots     Sometimes an extension fragment is needed by several use cases  of type UC2   In these cases  the extension fragment must be named uniquely within the use case model  The dot representing  the extension fragment must be    free    from one particular use case  but related  via  dependencies   preferably using the new stereotype  lt  lt need gt  gt  or something similar  to all the  use cases that need it  An extension fragment of this kind is a kind of classifier with an extension  compartment     Figure 3 also has an inclusion fragment   the Validate User fragment  Inclusion fragments are  not real use cases  they are reusable pieces of use case descriptions or    text objects     Inclusion  fragments are elements separate from the use cases that include them  thus they are semantically  similar to extension fragments needed by several real use cases     There is an important difference between inclusion fragments and extension fragments     e An inclusion fragment will be    executed    by the use case instance that also    executes     the real use case  the one that includes it      e An extension fragment will be    executed    by a use case other than the use case instance  that needs it     
27. s  to support reuse of use cases    e extension use cases  add behavior to an existing  or presumed existing  use case  without  changing the original use case    e inclusion use cases  add behavior to other use cases  and do so by changing them     Generalizations    These use cases are abstract and generalizations of concrete use cases  through the  generalization relationship  or other abstract use cases  The generalization use case  the  parent use case  and its sub use cases  children  should be of the same type to obey the principle  of substitutability   you should be able to use an instance of a child whenever you expect an  instance of the parent  Now  this is not quite true for use cases  or any state driven classifier    since a child use case can require some extra interaction with the actors  However  the basic idea  is the same  the child should be of the same type  classification  as the parent  For example   Make a Local Call and Make a Wake Up Call are both generalized to the abstract use case Make  a Call     Extensions    Recall that extension use cases serve a very special purpose  they add behavior to an existing   or presumed existing  use case  and do so without changing it   Using extensions is a  technique to get easy to understand descriptions  First you describe the basic  mandatory   behavior  then you add extra  mandatory or optional  behavior   behavior that is not needed to  understand more basic behavior  In this way you can start by describing
28. something we learned during the  first four years of practical use  Many times we    discussed the need for two kinds of extension  use cases  However  we didn   t want to make use case modeling more complex  During the UML  1 1 work we  primarily Jim  Gunnar and I  touched on this subject  but for the same reason we  didn   t follow through  Maybe now is the time     There are two classes of extension inclusion use cases     1  ones that are concrete  complete  use cases in themselves  2  ones that are just fragments of a use case    Extensions inclusions that are concrete use cases in themselves  These use cases interact with  actors and can be said to provide value to an actor  As an example     consider a    surveillance     system that reports intruders  The base  concrete use case  monitors the surveillance area  and  perhaps even does some other work  such as maintaining a constant building temperature  The  extending use case  also a concrete use case  reports unusual events   security breaches or  fires   to the appropriate authorities  police  fire  building management   This illustrates that the  base use case has some significant behavior  as does the extending use case   they are both  concrete use cases  and they can both be instantiated     Extensions inclusions that are just fragments of a use case  This is a far larger class of use  cases  but each member is usually very small  These use cases are abstract in that they cannot be  instantiated separately  They
29. specifications  1  start from a concrete syntactic construct  a  notational element in UML   which is  2  mapped into an abstract syntactic construct  and which  in turn is  3  mapped onto a semantic element  The semantics specifies the meaning of the  syntax  Most interesting syntactic constructs have a unique semantic correspondence   The  opposite is not necessarily true  since designed languages usually have many semantic elements   dynamic semantics  that don   t have a syntactic correspondence   Thus I think it is standard  language design practice to make every unique semantic element mappable from a unique  syntactic construct  Natural languages are much more complex  but since we are creating the  UML language ourselves  we don   t need to complicate things     Since fragments are NOT use cases  they should NOT be represented by the use case syntax  It  makes it harder for analysts to distinguish between important elements  Fragments should be  treated as they deserve to be treated   as less important than real use cases     Note  I have no good proposal for what the new notational elements should look like  To suggest  something  I have chosen an icon that indicates a tiny element   a dot  However  an icon that  indicates a fragment would be more intuitive  Figure 3 is an example of what I mean        Inspect Transaction  Failures                lt  lt include gt  gt                      Validate User    Figure 3  Treat Fragments Appropriately    As Tiny Elements   
30. tension  Otherwise  you must use alternative paths to describe additional  behavior     Extensions can help a lot in managing software development over the entire software  development lifecycle  For example  a large class of extensions could be added without  requesting regression tests for the base   you would only need to test the extensions and their  cooperation with the existing base  Let me qualify this  First  extensions as language constructs  need to propagate through design and implementation  they need to be added to the design  model  the implementation model  the executable code  and so on   For further information look  up    extends    in the OOSE book   Second  only extensions that don   t access other use cases     objects  more correctly  extensions that don   t modify objects shared with other use case  realizations  would  for instance  belong to this class  When such conditions are fulfilled we  could prove that some extensions wouldn   t be able to damage the existing software     I proposed the idea of extensions back in 1978 at Ericsson  Developers didn   t embrace the idea  until 1991  They were first published at OOPSLA 86      But the idea had merit  Ericsson even  applied for patents to support extensions  Extensions to C   and to the operating system   in  fact  also to the computer architecture   were suggested by our infrastructure team  Extensions  would lower the development costs significantly  Further discussion is out of the scope of this 
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Adaptec 29320LP SCSI Card  Les COV dans les produits de la construction  recto verso  Mozart CD - Bedienungsanleitung  George Foreman GR50 Use & Care Manual    Copyright © All rights reserved. 
   Failed to retrieve file