Software quality attributes — Maintainability, Usability and Accessibility | by Kaushal Prajapati | Technical Guides | Medium

Software quality attributes — Maintainability, Usability and Accessibility

Below are the attributes you might need to consider during the initial design. Depending on requiremnts one can be focused over others.

  1. Maintainability
  2. Usability
  3. Availability
  4. Portability
  5. Interoperability
  6. Testability

Maintainability:

comes into picture once the software is in operation. Types of maintenance used in industry are

  • Corrective: most common where you analyze the bug and fix it. You divide the bugs into several categories such as critical, high, medium and low. Another common classification is P0, P1, P2, P3 and P4 where P0 is the lowest.
  • Perfective: Is when you add/implement or improve the existing feature.
  • Adaptive: Moving from SQL to NoSQL.
  • Preventive: To avoid problems in future and how can you do that. The answer is easy but difficult to achieve, writing efficient and bug-free code with proper tests to cover all the cases or by improving the quality attributes such as high availability, maintainability and reliability.

Let’s dive deeper into how do you design the system for maintainability.

Designing a system for high maintainability:

Let’s get straight, it’s difficult to maintain the system with high complexity. It’s difficult to understand, test and maintain.

Techniques used to achieve high maintainability are:

  • Reduce Size: Reduce the size of individual modules.
  • Increase Cohesion: You can increase cohesion by not allowing too many separate elements.
  • Reduce coupling: Coupling means how dependent individual components are on each other. Coupling and cohesion goes on hand to hand.

How do you measure maintainability:

  • Lines of code (LOC): More line of code is difficult to maintain than those with fewer lines of code.
  • Depth of inheritance: Look inheritance is good feature and it provides reusability but at the cost of maintainability it’s not worth.
  • Cyclomatic Complexity: It is a quantitative software matrix and has a complex formula. CC= E — N + 2P. Don’t worry about it but try using the below-given plugin in your project.

Check out this plugin on VSCode which creates the matric for you.

Usability:

It,s nothing but describes how easy it is for users to perform basic tasks on the system. Which involves attributes like:

Learnability : providing proper howto and faq documents or automated flow on UI when they login to the system for the first time

Feedback: Proper validation messages, tooltips and feedback for long-running processes such as progress bar.

Accessibility:

A lot of online plugins allows you to test your site for accessibility. Accessibility provides features that makes it easier for people with disabilities.

Xổ số miền Bắc