Sunday, August 15, 2010

How to identify the 'Use Cases' in a complex domain


The Standish Group reported that forty percent of the software projects fail due to poor requirements management; incorrect definition of requirements from the start of the project and poor requirements management throughout the software development lifecycle. One way to help ensure the success of a project is to implement an effective requirements management process. Requirements management offers numerous benefits such as improved predictability of a project's schedules and deliverables, reduced project costs and delays, improved software quality, better team communication, greater compliance with standards and regulations.
The objective of this approach is to identify and capture the business requirements in the form of 'Use Cases' in a domain or system that is like a ‘black box’ to the analyst. The first five steps listed below shall be overlooked if you have a great understanding of the domain or system, in a sense you will intuitively do those steps in your mind. For example, if you already knew the sales processes and want to build a system to process sales leads, you could quickly identify the scope and the use cases by thinking of the processes  or tasks that users would need to accomplish in the system. You could quickly come up with: Enter Lead, Edit Lead, Route Lead, Cancel Lead, Work Lead, Print Lead, Sell Lead etc., so you can jump into the 6th step directly; whereas this approach is a generic one, it will be helpful in a domain or system that's like a 'black box' for the analyst.
  • Follow the steps to capture the business requirements as Use Cases: 
  1. Identify all the stakeholders of the proposed system.
  2. Identify the roles and responsibilities of each stakeholder. 
  3. Identify the primary flow in the system, and divide the primary flow into multiple stages.
  4. Identify all the major activities of the identified stakeholders, their major inputs and corresponding major outcomes, for each stage.
  5. Identify the interrelationships of the major inputs and the major outcomes w.r.t the identified stakeholders in each stage.
  6. Identify the major transactions in each stage through the proposed system, which is a subset of major inputs and major outcomes.
  7. For each identified transaction in each stage, identify the primary actor and their goals, along with the secondary actors.
  8. All the identified goals in each stage will form the cloud level use case (each goal will be a separate use case).
  9. Start writing the use cases for each stage, and limit the basic flow to a maximum of 7 steps.
  10. Hence split each cloud level use cases into user or sea level use cases for each stage.
  11. Draw the UML diagrams based on the interrelationships of the sea level use cases for each stage.
  12. Identify the missing use cases from the logical disconnect (if any) of the sea level use cases through UML diagrams, in each stage.
  13. Identify the missing use cases (if any) w.r.t the roles and the responsibilities of each stake holder within in the proposed system.
  14. Write the use cases for the newly identified use cases, go to step 9 (continue the loop till it's sufficient to cover all transactions through the proposed system).

No comments:

Post a Comment