Professional Documents
Culture Documents
Imagine you are buying a car. What essential features do you need in
it? A vehicle should deliver a person from point A to point B. But
what we also check in it is Safety, Comfort, Maintainability, Ease of
repair or Better mileage. You may also look for an electric version or
better speed. Why? To limit the surprises which may occur in
delivering the primary function, i.e., take a person from Point A to
Point B.
Similarly, just like a car, motorcycle, or House, the software has its
non-functional requirements called “Architectural Characteristics”.
Be it a website, a mobile or a desktop app; it should have a set of
quality attributes to meet end-user needs.
Scalability:
The ability for the system to perform and operate as the number of
users or requests increases. Scalability is achievable with Horizontal
or vertical scaling of the machine or simply attaching
AutoScalingGroup.
Traffic Pattern: Understand the traffic pattern of the system. It’s
not cost-efficient to spawn as many machines as possible, even if it is
underutilisation.
Availability
Extensibility
Consistency
Design Patterns:
Learnability: How easy users can learn how to use the software?
Observability
Security
Legality:
Compliance: Adhere to data protection laws like GDPR, CCPA,
SOC2, PIPL or FedRamp.
Durability
Agility
Conclusion
Once you get the functional requirement, try to find the bottleneck
in the system which may add obstacle to primary function. And how
to find the bottleneck? Try answering few of such questions: