Smart is an proven agile software development process / methodology that was developed by Sander Hoogendoorn and his team over the past ten years. Smart originated as an implementation for doing RAD and DSDM projects, but over the years grew out to be a fully agile project life cycle, and matches or blends in quite well with other agile methodologies, such as Scrum and XP. Smart's best practices and techniques can add more body to your agile projects, and will answer questions that some other processes leave untouched, such as:
- Project proposal. What's the role of setting up a project proposal?
- Project plan. When do we write the project plan?
- Software architecture. When does software architecture become important, and what role does software architecture play in your agile projects?
- Requirements. How do we formulate and structure project requirements?
- Estimates. How do we estimate the total size and complexity of our project?
- Products. What other products do we deliver in our projects besides working software?
- Design. Do we still design the functionality of the software and if yes, how do we model this design?
- Testing. What's the role of testing and testers in agile projects?
Smart is used by a growing number of organizations, and is also used in projects that are run using the accelerators of the Accelerated Delivery Platform (ADP) at Capgemini.
Joint modeling in a Smart project
Benefits of Smart
- Smart is an proven methodology which is extremely productive in collaboration with the use of MDA and Smart use cases
- Smart is used by a growing number of organizations, and is also used in projects that are run using the accelerators of the Accelerated Delivery Platform (ADP) at Capgemini.
- Smart accelerates the delivery of initial business value.
- Smart embraces easy adapting to changing requirements.
- Smart is an easy to use methodology and simple to learn
Agile characteristics in Smart
Smart is characterized similar to other agile methodologies by:
- Close collaboration. Smart projects are delivered in a close collaboration with the customers, and with the different roles in the project team, inclusing developers and testers.
- Smart use case driven. Most agile methodologies apply a small and equal granular unit of work. Both extreme programming (XP) and Scrum apply stories, feature FDD uses features. In Smart projects, we use smart use cases, next to what we call core project activities.
- Apply short iterations. Projects are run in 2 (or 4) week iterations. There are different types of iterations, which include Propose, Scope, Realize, Finalize and even Manage for application management. Each of these iteration types adds a number of work items to the backlog. All iterations are executed using Smart's iteration cycle.
- Test driven. In Smart projects two types of tests are defined. Smart testing is a technique to define and run functional tests on smart use cases using scenarios, often based on activity diagrams. Unit testing is a well known technique to define, and run code tests.
- Delivery driven. Deliver working software to the customer, as soon as possible and as frequent as possible. In Smart software can be delivered daily (per smart use case), at iteration end, or in releases (most often in 3 month releases).
===Additional Smart characteristics===
In additional to these more general agile characteristics, Smart projects in general apply a number of beneficial techniques:
- Types of iterations. Smart projects are executed in a pragmatic model that defines different types of iterations, each having the same iteration cycle, but each with a different emphasis. The Smart lifecycle contains the iteration types Propose, Scope, Realize, Finalize and Manage. In the generation of agile processes, Smart is unique in that it runs from writing the very first project proposal to application maintenance.
- Product driven. Smart projects are essentially product driven (as are other agile processes such as Scrum, FDD and OpenUP). During each of the iterations, the team delivers working products. These products fall into a few categories. The body of products is formed by smart use cases, small discrete pieces of functionality that drive development. However, additional products are suggested by Smart in each of the iteration types that help drive the projects to success. These products might include project proposal and non-functional requirements. Although these product are not mandatory, they are considered good practice, and over the years have been produced in numerous Smart projects. Using these standard suggested products, organizations get an even better grip on the projects at hand.
- Smart use cases. Smart use cases is a technique to rapidly model your functional requirements at a equal-granular level. Smart use case supply a small and very useful unit of work, and furthermore serve as the main unit of estimation, planning, but also drive realization, testing and even delivery.
- Roles. Smart introduces a limited set of roles. Not as few roles as more lightweight processes such as Scrum and extreme programming define, but an awful lot less roles than Rational Unified Process (RUP) or DSDM describe.
- Smart estimation. Smart estimation describes a simple and early applicable estimation technique, that does not require much additional knowledge, but is rathed based on the smart use case model.
- Agile dashboarding. Smart projects apply agile dashboards, sometimes just combining post-its and the product life cycle, and sometimes in online dashboards, in combination with burn down charts to easy monitor project progress and alert on issues as early as possible.