Moving Quality Upstream

During each phase of the development life cycle, quality practices guide program managers, developers, and testers toward the best end product they can collectively produce:

  • At the beginning of the development life cycle, the focus is on gathering customer insights and feedback, conducting detailed planning, feature specification, and overall system design.

  • During the implementation phase of the life cycle, developers focus on applying quality techniques to the code they develop, through use of standards, code sharing and optimization, and unit testing.

  • Prior to release, testers perform broad system and integration testing to ensure the end-to-end product is of high quality.

This perspective implies that the integration of quality practices should be pervasive across all phases of the SDLC. This is not always the case, however:

  • Waterfall promotes ensuring quality through up-front planning and broad spectrum testing after coding.

  • Agile promotes quality in the middle of the life cycle and relies on specific practices to ensure code quality remains high through the entire project.

In waterfall methods, developers write code and hand it off to testers to evaluate that code for defects. In this model, as developers continue to add features and complexity at a rapid rate, the scope and burden of testing the entire application grows significantly. This accumulation of test work late in the project cycle adds risk to the quality of the software and can have a crippling effect on new feature development and long-term maintainability of the system. Simply stated, the more code that is written, the more difficult the software is to test.

Note

Note

In Debugging Microsoft .NET 2.0 Applications (Microsoft Press, 2006), John Robbins asserts that "feature creep" is perhaps the largest contributor to poor quality in software. Make no mistake; adding features late in the development cycle is a recipe for trouble. However, there will be circumstances where you will succumb to project or business pressures and accept these late additions. It’s important to establish strong quality processes for all features, regardless of when you commit to delivering them.

Moving quality practices like testing upstream or earlier in the development life cycle, as agile methods like XP suggest, reduces the risks of releasing bug-ridden software. Additionally, by ensuring that each feature has been verified and tested prior to being checked in to a source tree, the agility of the development team actually increases due to fewer build breaks, lower bug counts, and a more repeatable and stable feature development process. In principle, feature development and coding should only proceed as fast as it can be verified through testing. This allows software development to progress forward at a more consistent and manageable rate, with a higher degree of output quality. This is evident in how agile methods like XP promote inherent testability of code and recommend investments in automated test frameworks like that of VSTS or NUnit for developing and continuously executing suites of automated tests against your code.

Applying quality practices upstream in the development life cycle promotes early discovery of issues in the code, which ultimately increases the ability of software developers to respond to those issues, alter their designs as needed, and meet schedule commitments. Accountability for quality of the software becomes shared across developers and testers, and the SDLC becomes more agile and predictable. This philosophy not only encourages the tactical application of better quality practices but also promotes a culture of quality within engineering teams. This union of quality and agility is achieved when great engineering practices are combined with a culture of quality and a project delivery rigor and rhythm that best fits your organization’s needs.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.149.254.103