Friday, May 30, 2014

Ensuring Software Quality | A pragmatic approach in current dynamics

Ensuring software quality is a challenging task in the current dynamics with aggressive timelines, changing business requirements, increasing enterprise-level constraints and demanding user experience expectations.
These challenges make the development team's task more demanding and often there is a dilemma on how to balance between software cost (more time for ensuring quality) vs. software quality.

In this blog, I am sharing my thoughts based on my experience & research on this subject area.

How do we define Software Quality?

"the degree to which a set of static attributes of a software product satisfy stated and implied needs for the software product to be used under specified conditions" - (ISO 25010)

As we have both functional (critical to business stakeholders) & non-functional (critical to technical stakeholders) aspects when assessing quality of software system, it can be expressed as:

In this blog, focus is on improving the structural quality of software, which eventually impacts functional quality aspects as well.

How do we define Structural Quality?

"the degree to which non-functional attributes of a software product such as maintainability, modularity, robustness, etc. satisfy stated & implied needs for the software product"

Some structural quality attributes such as performance & security can be measured using static/dynamic code-metrics tool, whereas few attributes like modularity & maintainability might require manual review process.

What are the focus areas to ensure Software Quality?

Often, we are reactive as opposed to being proactive in addressing quality. Quality starts early & hence process needs to be established across all phases of SDLC:
  • Requirements
  • Architecture
  • Design 
  • UI Development (considering increasing focus on user experience, this is a must to consider it as a SDLC phase)
  • Development 
  • Testing
  • Maintenance
Each SDLC phase needs to have clearly defined quality process with transparent entry/exit criteria based on ETVX (Entry/Task/Verification/Exit) model & supported by following:
  • Templates – Aims to make sure agreed skeleton for artifacts
  • Standards & Guidelines – Aims to make sure actions are predictable, detailed & repeatable
  • Checklist – Aims to make sure there is consistency in completeness
  • Tools – Aims to support & bring efficiency in process and also bring consistency in usage across

What are the metrics & tools to measure Software Quality?

How do we provide governance to keep check on Software Quality?
  • Governance needs to be very simple & effective. A very complicated structure & complicated process does not go well with team and often people tend to deviate from it.
  • A periodic checkpoint with team as part of governance model is must and needs to be informal to assess actual health of the software system.
  • Finally, a simplistic viewpoint (either using any tool) or even manual dashboard can  bring transparency & visibility to the system (clearly defined KPIs to track quality parameters)

Do we have any future vision (as-is & to-be map)?

  • Moving from Subjective Development Quality towards Measurable Development Quality is very important. If we don't know how to measure quality, then it can't be measured against any internal/external benchmark.
  • Quality Governance Model is often ignore and not well established or not followed. Having Architecture Review Board, Design Review Board & Quality Review Board (on periodic basis) is a big plus and needs to be supported by Senior Leadership.
  • Automation is the key to meet aggressive timelines challenge & usually it is less prone to errors. Whether it is code generation, build generation or quality reports automation, it holds key to success.
  • Having Uniform & Consistent Methods to apply during SDLC phases ensures success with certitude.
  • Finally, establish benchmarks in your organization to compare quality score of each project. Without knowing where you stand, it's impossible to achieve the targeted goal.

All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.