#7 Life Hacks: Meet Architectural Drivers
We often base our software architecture on feelings. What if we could use some tricks that would help us to focus on concrete constraints and attributes? Meet architectural drivers.
Every project differs in many ways, including various economic sectors, size, purpose, capabilities, etc. This means that every time you think about software architecture, it will differ from the one you did in the past. Looking for a one-size-fits-all architecture is like requiring an alchemist to find a way to produce gold.
It is impossible.
Microservices will be the best solution for one project and a monolith for another. Event Streaming will help us in one case but will not be useful in the other.
That’s where architectural drivers can support us. They are factors that help shape a software system’s overall architecture. There are four main architectural drivers:
Functional Requirements define the specific actions or operations a software system should perform to meet its intended purpose and address user needs. These requirements are typically described in clear, concise statements outlining what the system must do rather than how it will be achieved.
Example: Users shall be able to search for content A using specific keywords or Risk should be assessed for every new customer before signing a contract.
Business Constraints refer to the limitations, guidelines, or directives imposed by an organization on a software development project due to budget, timeline, resources, or market conditions. These constraints help ensure the solution aligns with business objectives and goals while considering various external factors that may impact its success.
Example: We must implement it before the ABC event in 2 weeks (time constraint), or Only 3 developers can be used for this project (resource constraint).
Technical Constraints refer to limitations caused by technology, infrastructure, or other technical considerations when developing a software solution. They help to ensure that the resulting product is compatible with existing systems or industry standards.
Example: We have to use a platform built internally, or the Solution has to be implemented using C# because other systems are also based on it.
Quality Attributes define the characteristics or qualities of a software system to ensure that it meets user expectations and business needs.
Example: System has to be available at least 99.5% of the year (availability attribute), or Generation of the ABC report shall not take more than 7 seconds (performance attribute).
By understanding and leveraging architectural drivers, we can tailor our system design to fit each project's unique requirements.
Do you use architectural drivers in your projects?