A Smart project realizes the required software according to the user requirements. There are three
categories of requirements: smart use cases, non-functional requirements and supplementary specfications.
Smart use cases are the
main unit of work in Smart projects. Smart use cases represent the requirements of your projects, and are easy to model, and easy to estimate, using the straightforward
smart estimation technique.
Different levels of use cases
Use cases exist at different levels of granularity. Alistair Cockburn, leading authority on use cases, describes
five levels of granularity, known as
Cloud level,
Kite level,
Sea level,
Fish level and
Clam level.
Smart use cases comprise both use cases at Sea level (also known as user goal level, and matching elementary business processes very well) and fish level (also known as sub-function level). In general, dealing with use cases can be done using eithe one of two different approaches:
regular use cases and
smart use cases.
Regular use cases
Use cases are identified at user goal level. Here, each use cases typically captures a single elementary business process. Normally for this use case the successful scenario is described (also called the happy day scenario), and additionally all deviations to this scenario are described as alternative flows.
 Regular use case |
Using this approach, very limited use is made of the UML use case diagram modeling technique. Requirements are captured in text, and are mostly described in Word documents.
Smart use cases
Alternatively, when the use cases at user goal level are identified (even better: the elementary business processes for the project have been identified), it is possible to use the use case diagram technique to add use cases at fish level to the diagram.
 Smart use case diagram |
Using this approach each of the elementary business processes is modeled out in such as diagram as one single user goal level use cases, and a number of accompanying use cases at sub-function level. The collection of these use cases (at both levels) is referred to as smart use cases. Again, for each of these smart use cases a description is written. However, these are much more lightweight than in the previous scenario and often do not contain any alternative flows. This approach is much more graphically oriented.
===A pragmatic approach to function requirements===
Smart use cases are a highly efficient and standardized approach to modeling functional requirements, they extend traditional use cases and use the graphical representation in UML to a much larger extend. Smart use cases have been applied successfully over the last decade in a wide variety of projects types, such as .Net, Java, service oriented, BI, SharePoint, and even SAP implementations. Smart use cases offers a number of accelerators, that are re-used in the Accelerated Delivery Platform. These accelerators include:
- Identifying and modeling. A clear and highly pragmatic approach to identifying and modeling smart use cases from business processes, existing applications of functional documentation.
- Stereotypes. High level of standardization through smart use case stereotypes
- Smart estimation. A simple repeatable estimation scale, including techniques such as quick estimation and smart estimation poker
- Code generation. We generate code for smart use cases in a variety of scenario’s and technologies.
- Testing. A clear approach towards testing smart use cases.
- Agile. Smart use cases fits very well in an agile scenario, for example in DSDM, XP, Scrum and more specifically Smart projects. However, smart use cases have also been applied in more traditional methodologies, including RUP and waterfall styled projects.
- Learning. A number of popular courses are available on these subjects.
About the use of smart use cases:
- Historically we used RUP (in a waterfall approach). Within RUP the requirements were written down in use cases.
- Smart use cases extend on the RUP use cases and do have the benefit that re-use can be detected early in the project.
- Smart use cases are easily to understand and use in requirement sessions / brainstorms with a business user / customer / partner.
Stefaan van Royen. MediaMine