We base our solution designs on rigorous analysis of all customer requirments, as well as the complex dynamics of the environments in which our products work.
Prior to designing any new software, or even changes to existing software products, we analyse all known requirements. We then create a “User Requirements Specification” to describe these requirements in as much detail as possible. The URS includes Business Requirements, Stakeholder Requirements, Functional and Non-Functional Solution Requirements, and Transition Requirements.
To learn more about how we manage requirements, click here.
By analysing requirements, we get a clear picture of what to develop. The solution design covers many areas, from the technical architecture to the technologies and components we use to build a solution.
- Conceptual use cases
- Architecture of the solution
- Data Model
- Deployment model
- Management model
We formalize our understanding of the solution in a document known as a “Functional and Design Specification.”
The Functional and Design Specification provides a complete and highly-detailed description of the product that we plan to develop.
But where the Functional Specification addresses the Functional Requirements of the product, the Design Specification addresses the non-functional requirements. In this way, focuses on the overall solution design.
The Design Specification provides detailed information about the solution architecture, data model, supporting services, and the components that we will use to build the product. It clarifies what technical interfaces and services are needed to support the required its data flows.
The data model, in particular, accounts for all data flows within the application as well as to and from other systems. When a solution is connected to a separate system, the specification includes integration services.
Both the solution architecture, data model, and required services influence (and are influenced by) the required deployment model. The deployment model addresses such questions as:
- Will the solution be delivered as native applications or accessed via web browsers?
- For native applications, on which devices and operating systems do they need to run?
- Do its features need to be available offline, or delivered as service via the internet?
- If offline use is required, what scope of data and which features need to be available?
- What security measures are needed to protect data on the devices, and in transit?
- What type of personal data is being handled and how does it impact data privacy?
All of these considerations impact the deployment model that we design. They also impact the management model, which describes how the product will be managed (on a technical level) and administered (on user and data level).
Unlike the Design Specification, the Functional Specification responds to the Functional Requirements contained in the URS. It describes all features and functions of the product itself, detailing not just what features the product will have, but also how they will behave.
As such, the Functional Specification covers everything from from navigation options to data operations, and describes all of the fields and interactions that need to be supported by the user interface.
The Functional Specification is informed by the Design Specification in that its features need to be consistent with the solution architecture, as well as the data, deployment and management models. At the same time, the Functional Specification informs design decisions by way of the functional requirements it supports.
Finally, the Functional Specification clarifies how the technologies and components described in the Design Specification will be implemented and behave. In this way, the Functional Specification is a cornerstone of the development plan in that it describes how the product itself will be implemented.
While the Functional Specification includes various “design” elements, such as user interface feature (GUI designs) and the features that support the user experience (UX designs), it is more focused the product’s look and feel rather than the overall design of the solution.
Traceability to Requirements
To support complete traceability from requirements to the delivered product, each part of the Functional and Design Specification provides clear references to each corresponding requirement in the User Requirements Specification (URS). By this way, we guarantee that the solutions we deliver fully satisfy their requirements.