Quality Attributes (*-ilities) In Application Development
*-ilities are group of quality attributes that defines the applications capabilities. All those quality attributes are of a name that ends with *ility*
Quality attributes of the system that describes a specific capability that is not related to a specific functional requirement. They are closely tight to non functional requirements. They describes what technical capabilities should be used to meet the non functional requirements.
Lets take this example,
The system must work under heavy load, but should not waste money or unused resources.
In order to make this works, we have to implement the scalability.
Once the quality attributes are set, the architecture must take them into account and make sure they are implemented.
The relationship between non functional requirements, quality attributes and architecture is as below,
- Non functional requirement define what the system should do with quality attributes.
- Quality attributes map those requirements to technical capabilities.
- The architecture describes how those capabilities will be designed and implemented.
There are lot of quality attributes. Lets take few mostly talked attributes in software development.
Scalability is the ability of the application to support adding computing resources in order to support additional load without any interruption of the application activity.
In other words, lets say an e-commerce application is deployed. Everything is running well and then Black Friday arrives. Then a huge load is expected and the current server is not expected handle such load. If the systems does not support scalability,
- We have to look for non-scalable code.
- Re-write non-scalable code
- Deploy the new set up.