Quality Attributes, measurements, and implementation strategies


The system should be easy to use.
The system should be flexible and scalable.
The system should be secured.
….
….
The system should be portable.

Did you read any requirements document and found one of the requirements statement mentioned above? Then, you started to think, what does it mean to make the software ease of use, how can I make that feasible, if I implemented that feature would the software became more usable? would it be acceptable from the customer? What are the metrics and acceptance criteria for that? How to transform these intangible requirements to something tangible can be implemented and measured.

Through the life cycle process and project implementation, you will encounter different types of qualitative requirements, for example, availability, maintainability, scalability, and a lot more, all of these “ilities” which are mainly know as non-functional requirements, define the Software Qualities that are factors that affect system behavior and have a significant impact on the software architecture of a system and its characteristics.

Computer systems are being used in all areas of our lives and become a foundation stone for any business, and they became used in all domains and critical industries which cannot afford failure or failure can cause loss of life, or cause a disaster. Imagine, that you have a software braking system which it took like 1 minute to respond or a missile launch software which it has a different unreliable precision every time. That will be a disaster, right? The role of quality attributes is critical and it shapes the main characteristics of the system and ensures that we will have a workable product we can depend on it during the operation phase of the system.

What are software quality attributes?

Quality attribute requirements are part of an application’s nonfunctional requirements, which capture the many facets of how the functional requirements of an application are achieved. All but the most trivial application will have nonfunctional requirements that can be expressed in terms of quality attribute requirements.

The nonfunctional requirements define these aspects about the system. (The nonfunctional requirements are sometimes referred to as “nonbehavioral requirements” or “software quality attributes.”)

Non-functional requirements, as the name suggests, are requirements that are not directly concerned with the specific services delivered by the system to its users. They may relate to emergent system properties such as reliability, response time, and store occupancy. Alternatively, they may define constraints on the system implementation such as the capabilities of I/O devices or the data representations used in interfaces with other systems.

As we can notice from these definitions a non-functional property (NFP) is about the criteria that can be used to judge the operation of a system, rather than specific behaviors. Moreover, some quality properties can have an impact on the system behavior in the operations of the system, for example, you can apply security rule dynamically on the system if there is a security threat, for example, limiting some functionalities.

Although all quality attributes are important and someone can say, I will ask for all of them on my requirements document to have a superb system. There is nothing like that, you will have to do trade-off analysis between different qualities because some of them are dependent on each other.

Software engineering institute mention that no one has systematically and completely documented the relationship between software architecture and quality attributes at one its technical reports and this is due many reasons summarized as below:

  • No precise definition for most of the quality attributes, for example, modifiability, security, and usability.
  • Attributes are not isolated. For example, availability is an attribute in its own while, it affects the security attribute as well (Denial of service attack could limit availability) and usability attribute (Users require no downtime and always available).
  • Standardization of Attribute analysis, it is difficult to decide which situations or patterns to analyze for what quality.
  • Analysis techniques are designed in silos to map to a particular attribute. Therefore, it is difficult to understand how the various attribute-specific analyses interact.

That should inspire us to think about interdependencies between our selected quality attributes and also apply the tradeoffs between them.

Moreover, as we have a software development process, we should apply the software quality process to ensure the applicability and existence of the selected qualities.

I draw the below process to analyze and plan for quality attributes, I think this can be integrated with software quality process and apply some checklist with each deliverable if the deliverable is fulfilling these qualities.

Quality process.png

The quality attribute analysis process

Common Quality Attributes examples

Here are some samples of quality attributes, what are the most common requirements for them, also some metrics and strategies to achieve them.

Availability

Availability defines the proportion of time that the system is functional and working. It can be measured as a percentage of the total system downtime over a predefined period. System errors, infrastructure problems, malicious attacks, and system load will affect overall system availability.

Requirements The system should be highly available
General scenario
  • The system should have 99,9% available time per month with maximum monthly 43m 49.7s downtime
  • The system should notify users if there is an issue affects the availability or may cause downtime.
  • In case upgrade or maintenance, the maintenance window will be out of business hours.
Metrics The equation below is used to calculate the availability

A: Availability

MTBF: Mean Time Between Failures

MTTR: Mean Time to RepairOur target of this metrics to ensure that we will not have more 43 minutes downtime per month.

Our target of this metrics to ensure that we will not have more 43 minutes downtime per month.

Strategies to Achieve the quality metrics
  • Using cloud technologies based on different region as data center redundancy pattern.
  • Using redundant infrastructure components.
  • Avail availability status page, which our users can subscribe to receive availability status reports and incidents.
Side effects The cost of services will be higher to have a high available environment and have redundant hardware and licenses.

It also has trade offs with other quality attributes, for example, reliability.

Usability

Usability is the degree to which a software can be used by specified consumers to achieve quantified objectives with effectiveness, efficiency, and satisfaction in a quantified context of use, for example, easy to localize and globalize, providing good access for disabled users, and resulting in a good overall user experience.

Requirements
  • The system should be user-friendly
  • A new user can reach proficiency for core functions in a week.
General scenario
  • The solution will be designed to have enrollment steps for new users to introduce the system to them.
  • The number of mistakes by new users will be counted to measure was it easy for these users to do particular process or function easily or not.
  • The system will have a help manual to support users to know how to do a specific function.
Metrics
  • Completion rate: the rate of users who completed a task successfully
  • Number of errors: the number of errors the user faced while doing a task on the system
  • The duration time: the duration, the user spent to finish the task
  • Training: number of days required to train new users
  • User satisfaction surveys
Strategies to Achieve the quality metrics
  • The solution will use auto-completion algorithm to help the user fill the data easily. Any forms will take more than 5 minutes will be split to more than one form.
  • The navigation buttons will be designed according to usability standards.
  • Using behavioral analytics techniques to analyze the user behavior.
  • A/B testing.
Side effects Personalization and Usability are interdependent, some personalization requirements can be generated, for example, context aware applications which will affect usability as well.

The behavior data will be generated and collected on the run time, which need extra processing, storage, extra effort for visualizing and analyzing this data.

Performance

The degree to which a system or component accomplishes its designated functions within given constraints, such as speed, accuracy, or memory usage. It refers to responsiveness, either the time required to respond to specific events or the number of events processed in a given interval of time.

Requirements
  • The system should respond to a request or event in less than 10 seconds.
  • The system should able to handle 200 users.
General scenario
  • The solution will be designed to handle 200 users concurrently with average response time of 10 seconds.
  • Caching techniques will be used to enhance response time for the same type of queries.
Metrics
  • Latency: is the time taken to respond to any event
  • Throughput: is the number of events that take place within a given amount of time
  • Capacity: is the total demands can be handled by the system while continuing to meet latency and throughput requirements
  • Modes: having different resources or demand over time and system adaptation to that.
Strategies to Achieve the quality metrics

There are different strategies to enhance system performance, for example, caching techniques, data partitioning, load balancing, scalability, First Things First (FTF)

Side effects

Performance has a lot of tradeoffs, and relation with other quality attributes, for example, dependability. Also, special testing procedures shall be available to test the performance, for example, load testing.

It would be helpful as well to look at McCall’s and Boehm’s Quality Models. There are tens of quality attributes and you can find a good list in this link. If you need any help for better understanding of any of them, please do not hesitate to contact me 🙂

References

  • Barbacci, M., Klein, M. H., Longstaff, T. A., & Weinstock, C. B. (1995, 12). Quality Attributes. doi:10.21236/ada307888
  • Bass, L., Klein, M., & Moreno, G. (2001, 10). Applicability of General Scenarios to the Architecture Tradeoff Analysis Method. doi:10.21236/ada388958
  • Gorton, I. (2011). Essential software architecture. New York: Springer.
  • Sommerville, I. (2011). Software engineering. Boston: Pearson.
  • Stellman, A., & Greene, J. (2006). Applied software project management. Sebastopol, CA: O’Reilly.
  • (n.d.). Retrieved August 26, 2017, from https://msdn.microsoft.com/en-us/library/ee658094.aspx
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s