"Be a yardstick of quality. Some people aren’t used to an environment where excellence is expected.”— Steve Jobs
Everybody loves to avoid a disaster, but there is a “proactive” effort to do activities that can prevent a disaster from happening. Most of the executives do not want to “get involved” in such “proactive” efforts, simply due to the love of fixing urgencies Or having a mindset that it’s not important.
I remember, when once I was working with the Quality Assurance team on a product. The development team simply refused to spend efforts on the most essential “unit testing” for their developed components! The intent was to release the software to the QA team as soon as possible and focus more on so-called “core development”.
Over the years, looking at multitude of projects failing in-spite of highly
experienced resources, reasonable time and the intent, I have uncovered that, prevention
is the “Most Important” and “Ignored” part of software development.
Why should we focus on Prevention?
As already stated in the above example, the development team didn’t intentionally not want to do “unit testing”. They wanted to avoid this activity to quickly move to next feature. This is where, the management’s role is paramount to enforce good-practices and create a culture, where quality is considered core for achieving “excellence”. A top-down approach always ensures, that the team doesn’t take the most important procedures for-granted and surpass these for their own personal benefits.
What is Prevention in SDLC (Software Development Life-Cycle)?
Prevention…, also an important part of the “Verification Phase”, involves activities or procedures, that can help a software team prevent (and fix) issues / defects well before doing development (or coding).
These issues or defects, that can be prevented could be in –
- Requirements (or Scope)
- Architectural Design
- Module Design and
- Coding (or core development)
When should we do prevention activities?
Prevention activities are done before the testing phase starts (i.e. before developed code is “unit tested”), during…
- Requirements gathering and elicitation
- Designing the right frameworks / architecture
- Designing modules for features
- Coding (or Core Development)
How do we do prevention activities?
Some of the examples of prevention or verification activities are –
- Requirements gather and elicitation – Performing requirement reviews (or Ambiguity Analysis) and using requirement elicitation checklists
- Architectural design – Performing design reviews
- Module design – Performing design reviews
- Coding (or core development) – Perform static code reviews, code walkthroughs and using industry best practices of using reusable tested components
Who should be involved to do these?
All project stakeholders should be part of prevention activities with the requisite owners of every phase of development.
Lastly, prevention is easier, but fixing defects at a later stage (or applying a cure) takes high-amount of efforts and adds a lot of risk for the project.
- Written by Anand Nanavati (SupraDigit Solutions)
Comments
Post a Comment