Software Quality attributes and their impact on business
The hidden reality
Many of us may always wonder that the customers are looking for some great designed application which led us to always focus on its capability and behaviour leading to a shortsighted visibility of business requirements whereas the reality is that the customers are most affected by the reliability,security and scalability of any application or a system that they are using.
And all these factors are collectively termed as the quality attributes of a software/application or a system.
Analysing software quality attributes should always be the first step
Software quality attributes are understood to be invisible until things go wrong. Organization delay in analysing software quality attributes and focus more on the critical functional requirement . The hour of the need for Software architects is to understand the design in terms of its quality attributes and not just the functional requirements.
Reasoning about Quality Attributes
Quality Attributes can be referred as measuring the “goodness” of a product along some dimension of interest to a stakeholder. Characterizing the various quality attribute requirements applicable to the system will help us to analyse and evaluate the quality of any system.
For the same purpose that use cases are important in determining functional requirements, quality attribute scenarios are used to specify quality attribute requirements
Paving way for developing scalable, failure-resistant software?
A scenario describes a system response to a specific stimulus under particular conditions and the desired response.
The great way to start thinking about the need for the application to have a particular quality attribute is by defining scenarios and to measure what matters in a way that we can test it.
Such scenarios usually consist of 6 elements - Source of stimulus , Stimulus, Environment, Artifact,Response,Response measure
Digging deep into Quality attribute
After working on the clustered scenarios,a comprehensive list of Quality attribute is worked out with definitions as follows :
- Interoperability : It tells how good the application can communicate with other applications.
- Reliability :It tells the strength of my application to tolerate faults or its ability to respond correctly under given conditions.
- Availability : It indicates software’s accessibility and accountability to requests
- Usability :It denotes how easy it is for the user to use the application.
- Security :It covers the security aspect of the application and refers to confidentiality and authenticity.
- Performance :It denotes the measure of response time, efficiency, throughput,resource consumption,processing speed,latency.
- Scalability :It indicates how well a software can respond to changes.
- Extensibility : It indicates how well the system can be changed without affecting other parts of the application.
- Adaptability : It refers to the capability of the application to easily change with the changing requirement.
- Testability : It takes the responsibility of the system’s interaction with other components and the system as a whole.
- Auditability : It covers to assure that the system is able to perform audits of the system.
- Observability : It tells how well the system can reflect the changes in the system.
- Operability :It indicates the ease of operating the application and tests operability by creating error on purpose.
The impact of bad softwares on our business
There are various reasons like Weak technical manual,unclear responsibilities among engineering team, less responsible testing etc which affect the appearance of softwares and results in creating bad impact on the business as follows:
- Loss of users,customers
- Bad reviews
- Unwanted advantage to competitors
- Developing marketing tactics like discounts to bring back the clientage.
- Bad marketing,reviews and damage to brand value
- Loss of faith in IT
Finding the right way
Communication is the key to have a clear understanding goal from the beginning to the engineering team to make things easy for them.
Paying attention to the test results and focusing on continuous learning.
Planning efforts should be driven by considering both functional and nonfunctional requirements to keep our end users happy.
We shall always emphasize on designing applications based on facts and not on assumptions to achieve designing software in a better way.