Main "-ilities" of Software Engineering
Maintainability
Software code has a high degree of maintainability, meaning it is easy to maintain, modify, and correct. Additionally, it can be read and understood with maximum ease.Extensibility
The code allows for easy extension, presenting the least risk and effort. Every software will undergo changes and corrections throughout its life cycle, so it should always be adaptable.Testability
Quality software should be built in a way that allows thorough testing from all angles. Tests are the primary and essential quality assurance that can be offered to the customer.Reusability
Reusability, besides being very useful, also helps ensure quality and facilitates maintenance. All software should be modularized/componentized to allow maximum reusability, as long as it does not negatively impact other principles.Scalability
It should be possible to scale a software solution to meet increased consumption demand. With this premise, we ensure that the product can serve more customers more efficiently without excessively burdening costs.Reliability
The reliability of software brings satisfaction and security to the customer, who can trust in this solution. The software must have high availability, low or no failures, be secure, and always reliable.Consistency
Consistency, in parallel with reusability, enhances the user experience and facilitates software use. All interfaces should follow a standard across modules, ensuring universal consistency.Performance
The performance of a software solution should be proportional to its consumption to ensure stability and responsiveness. It must ensure that the solution operates stably, without deadlocks, and is thread-safe.Portability
Portability contributes to the timely and transparent deployment of the solution, corrections, and new versions.Usability
Last but not least, usability ensures easy access to features by the end user. The system should be user-friendly, easy to learn, and control.
References: