Why do we want to build a requirements virtualization platform?
Our ultimate objective is for a business analyst to be able to conduct a requirements meeting with business users/stakeholders and walk out of that meeting with a working implementation of the application.
We want to go from requirements to working application without any of that tedious software development!
How to increase in business value?
- Faster is generally better – if we can bring the new functionality to market faster it will generate more value. This is true whether we are developing new products/services or improving delivery of existing products/services.
- Flexible is generally better – we might not get it right first time and need to make changes. The easier it is to make changes, the more likely we are to hone in on the best solution and maximize the value.
- Business users and stakeholders know best – the people who actually do the work are most likely to know how to do it better. The more we empower the non-technical business users and stakeholders to define their own IT within a structured framework, the more likely we are to get the best solution and maximize value.
How to decrease the cost to build?
- Reduce the amount of code – virtualizing the user experience and Create, Read, Update and Delete (CRUD) functionality will eliminate the majority of the code needed to implement the desired functionality.
- Improve the quality of requirements – enabling non-technical business stakeholders to configure the actual user experience allows them to define the most efficient way to do the job.
- Focus our experienced technical team members on high value automation workflow deliverables – build loosely coupled services that implement the required functionality using well-defined standards and patterns.
Leveraging AI to go from requirements to application in one bound!
Given the quality spectrum and often inconsistency of most business requirements documentation, we think that it will be a very long time until an AI can use them to generate a working application. There are just too many issues with: incomplete or incorrect requirements; invalid assumptions; silent stakeholders; and conflicting requirements/priorities for an AI to be able to sort them all out. In truth, the issues with requirements ambiguity is the real reason why many projects fail even when they are given to human IT teams!
We do have a viable option though – we can use a requirements virtualization platform to gather and validate our business requirements as configuration data. The key difference is that the requirements configuration data is structured in such as way that we can use it to dynamically render an application immediately without having to go through the tedious process of developing software.
Within the requirements configuration data, we can identify areas where we could utilize generative AI to implement workflow commands using natural language. Although still in its infancy, this technology is rapidly advancing and if we can contextualize it within a more encompassing platform we can significantly simplify the problem.
A requirements virtualization platform enables us to deliver business applications faster and continuously evolve them as requirements change. They also provide an easy entry into adoption of AI for implementing complex business applications.
How do we build a requirements virtualization platform?
We have been perfecting a requirements virtualization platform for over a decade using mainstream components and architecture principles. We provide extensive documentation on how we did it, so that you can learn from us as you add this capability to your own enterprise application architecture.
Our key learning was to keep the platform as simple as possible and not over-complicate it to include edge-cases that never really arise. We focused on virtualizing the requirements of forms-based software applications. We wanted to be able to accommodate any data model, any security model, render any user experience, on any device, for any user.
The really great thing about the platform is that the technical choices we made have no impact on the requirements. This means that you can make different choices in your implementation to get the same business benefits. Over the years, we have made many technology changes in our own requirements virtualization platform without negatively impacting our clients.
The requirements virtualization platform breaks down into three key service components:
1. Data Agnostic Storage Service (DASS) that can securely store any data at the platform level. Data is no longer stored in silos associated with applications – it can be directly accessed by any authenticated user through any application or service. We implemented this in MS SQL Server by creating a hybrid database that combined the best performance aspects of document DB and SQL approaches.
2. A set of Dynamic Page Builders that can render any custom user experience on any device in real-time depending upon the role and access rights of the user. All data is stored in the DASS, including a set of configuration data that describes how each page should be rendered. Our current implementation is primarily C#/Blazor for web and hybrid MAUI/Blazor for native applications on desktops, tablets and phones.
3. A UX Creator application that is hosted in the requirements virtualization platform that is used by business analysts to configure the business functionality.
The combination of these three services enables the business analyst to work with business users/stakeholders to configure the majority of the business requirements in the meeting. Having a working application emerge during the meeting enables rapid consensus building and iteration of ideas towards an optimal solution.
There may still be a relatively small need to document requirements for workflow activities that will still need development and testing. Having a working application provides context that improves the quality and reduces mis-communication.
What are the benefits of building a requirements virtualization platform?
Requirements virtualization platforms decrease the risk of project failure
To understand project failure, we first need to define what we mean by success.
In general terms, a project’s success may be measured to the extent it meets the following three conditions:
1. It delivers the expected value
2. It is achieved within the expected costs (for development, production operations, and support)
3. The expected value is delivered within the agreed time line
All of these conditions can only be meet if we have a clear understanding of the business functionality required and how it will be built and deployed.
Failure to completely and correctly understand the requirements is a certain project failure. How can we build it if we don’t even know what it does? How can we accurately estimate our budgets and timeline if we don’t know what we are building?
We have tried to mitigate the requirements risk by adopting agile methodologies. We start with incomplete requirements and go through a series of iterations until we either achieve the desired outcome or run out of resources. An agile development lifecycle can help us deliver functionality sooner for end-user validation, but progress is partially an illusion because a typical development project can have between 20 to 40% time and effort wasted on refactoring code as requirements evolved. Did we actually get all of the expected value out of the solution, or did we compromise on functionality to meet budget and timeline?
When implementing the functionality we compound our failures in budget and timelines by either:
1. Building a custom application from scratch. This means that we are reinventing architecture and infrastructure as well as building out a complete software application.
2. Customizing SaaS. We rarely know the true cost of customizing a SaaS application at the start of the project and often seem to get dragged into a sunk cost fallacy that just keeps us investing in an increasingly expensive money sink.
We can mitigate these risks of project failure by doing three relatively simple things:
1. Deploy a requirements virtualization platform. This means that we know exactly how we will build and deploy our business functionality. It enables us to share known and well understood support costs across multiple projects. It also decouples business functionality from technology.
2. We gather the business requirements as configuration data that can be interpreted by the requirements virtualization platform to render a functional application. The application functionality can be used to immediately validate the requirements with our business users at the start of the project. This is a low risk/low cost way of quickly understanding what the business needs and how it adds value.
3. We identify all of the other requirements that require our development team to create (workflows, reporting, etc.) so that we can accurately estimate required budget and time line.
Future proofing your business applications
Technology is advancing ever more rapidly, increasing the frequency with which organizations need to modernize applications. As architects, we need to build solutions using component frameworks that allow us to upgrade a component’s technology without incurring the cost of significant rewrites.
Many frameworks provide basic code generators for CRUD that can transfer data from a page to a table using a specific technology. Implementing the logic for dealing with record state, or user roles, usually requires some manual coding effort. All of this source code is dependent upon the underlying technology. If we want to upgrade or modernize the technology, we have to rewrite the source code, which incurs a substantial cost.
Most organizations evolve their data models, user experience, and workflow over time. This means that we need a platform that allows an organization to easily evolve over time without a complete rewrite or refactoring code.
A requirements virtualization platform easily adopts new technology as it becomes available. We just rewrite the page builder component without having to re-implement the form definition data model. This enables the organization to rapidly realize the benefits of innovative technology without incurring the cost of significant rewrites.
At greatideaz, we are the creators of trellispark – the most advanced requirements virtualization platform ever made.
If you would like to discuss the content and ideas raised in this blog please reach out to me: Tony@GreatIdeaz.com I’d love to talk to you!
We can help you fast track requirements analysis with a real application