Non-Functional Requirements
Imagine you're finding a house. You have the blueprints which show the different rooms, hallways, and the overall layout of the house. These blueprints represent the logical components of your house, just like the components that make up a software system. However, there's more to a house than just the layout. You also need to consider other characteristics that will determine how well the house functions and meets your needs. Is it in a good neighbourhood, are there schools nearby, does it get 24 hours water (important if you are in Bangalore!!), does it offer good sunlight, etc.
These characteristics are like the non-functional requirements or NFRs. NFRs are the system's capabilities that define how well it performs its intended functions. Just like a house needs to be sturdy, energy-efficient, and comfortable, a software system needs to meet certain requirements beyond its basic functionality.
We can think of NFRs as the "system's capabilities" that ensure it operates smoothly and effectively. These requirements can be explicitly stated in the system's specifications or can be implicit, like security, maintainability, or ease of use.
Some important NFRs or architecture characteristics to consider when building products in our world include:
- Availability: How often the system should be accessible and functioning. Just like you expect your house to be liveable and habitable at all times, you want your software system to be available whenever you need it.
- Performance: How efficiently the system uses its resources to meet timing requirements. If your house takes too long to heat up or cool down, it's not performing well in terms of energy efficiency.
- Scalability: How well the system can handle an increasing number of users or workload without compromising performance. Just like a house needs to accommodate a growing family or changing needs, a software system should be able to scale up or down as required.
- Usability: How easy and intuitive the system is to use. A house with a confusing layout or poorly designed features would be frustrating to live in, just like a software system with poor usability can be frustrating for users.
When designing or requesting a software system, it's crucial to consider and prioritize the top 5 to 7 architecture characteristics or NFRs that are most important for your specific use case. Just like a homeowner would prioritize different features for their house based on their needs and lifestyle, the priorities for a software system will depend on the business problem it's solving.
Comments
Post a Comment