Having been slacking for the last few months, partly because of non-IT related pursuits and partly because of the new project I have been working on, I have decided to set myself the goal of releasing a new and improved version of my white paper on Solution Architecture. First up is an addition to the chapter on further developments in a project once the initial version of an architecture has been formalized: The Functional Design. So the remainder of this thought is the new information being added to the white paper:
Once the high-level requirements have been determined in a project, it is important that these requirements are fleshed out in an unambiguous structure so that they can be used by the development team to deliver the proper solution. It allows for early peer review of the underlying logic for the functionality and gives the developers a technical insight into its intended behavior. The most common way to elaborate requirements is to describe them with functional use cases. Once these use cases have been formalized, the next step is to write test cases that can verify whether a solution has correctly implemented the use case functionality.
|
While UML does have a use case diagram, this is only used to show an overview of all relevant use cases for a specific component or solution. Typically, a use case has the following elements associated with it:
In some agile contexts, we might even forego the use case detailing, and write test cases based on the acceptance criteria. These test cases than become the basis for development to create their solution. However, this approach strongly depends on the maturity of the implementation team and of the testing automation framework. Also, while this can work for smaller projects, once the complexity of a solution rises, this approach becomes increasingly ineffective.
Bear in mind that the decisions made during the architectural efforts before this elaboration might impact what liberties the functional analyst has when designing the functional solution. These limiting factors can be found in the Design Constraints section of the Requirements View and should be adhered to so that the implementation is not put in a tight spot. For example, if the decision has been made to use a Business Process Engine, the functional designs should be made in order to fit into the processes, and not design a case management-based functionality.
Thought | Document | Functional Analysis |