Software quality has two primary dimensions: Internal Quality and External Quality. External Quality is an attribute that relates the end-user experience. External Quality can be assessed and improved through defect prevention as well as black box testing.
Internal Quality is visible to various groups in the development team such as designers, developers, maintainers and technical reviewers. Internal Quality is invisible to the end-users. Internal Quality can be improved by means of defect prevention as well as defect detection followed by analysis and correction or defect fixing. Software inspection and reviews are the means to assess, control and assure Internal Quality. Although software inspection and reviews have operational differences, both are aligned towards the objective of examining work products to unearth defects.
Great focus on black box testing by means of well-documented test cases, multiple rounds of rigorous testing, defect fixing and defect verification is mandatory for successful deliveries. However, lack of focus on Internal Quality could pose serious consequences in the form of unexpected naive defects, technical issues and maintenance nightmares. Poor Internal Quality encompasses the root causes for issues related to External Quality. Thus, in order to improve Software Quality, Internal Quality must be improved.
I could identify seven critical milestones that are necessary to attain Code Quality Excellence through experiential learning and a list of five best practices that were useful in ensuring good coding practices and assurance of Internal Quality. My second paper on Code Quality ("Critical Milestones and Best Practices for Code Quality Excellence") provides a comprehensive coverage of these milestones and best practices.
As I wrote in my previous blog, Code Quality continues to be an unfading focus area in Software Engineering! Any thoughts?