CSA Explains… Quality Software Programming – Presentation Synopsis
I have heard people say “Quality isn’t very important, just look at the software produced by Microsoft.” Well, how important is quality? If quality is important, how should a firm implement a quality assurance program? And, in the quality assurance program, what is the role of automation versus manual testing?
Sean Chou of FieldGlass, Dave Dobson of FirstLogic, and Carl Franklin of Triton-Tek offered their insights into the value of quality software and the implementation of quality assurance programs at the CSA Explains…Quality Software Programming presentation on Friday, 21 February hosted by Cyborg Systems in Chicago.
Importance of Quality
During the software boom years, quality may have been a secondary issue to rushing products to market. However, during the current software industry early maturity phase, software quality has repeatedly been demonstrated as important for a business to capture customers and gain their loyalty.
For example, Mr. Dobson described an event wherein a competitor rushed poor quality software to market in order to take advantage of a new market requirement. FirstLogic however maintained its commitment to quality. As a result, FirstLogic gained market share while the competitor lost.
Once accepting that quality is important, firms must determine the dollar value they will place on the quality assurance program. Mr. Chou approached the decision calculus as an insurance issue. For businesses, the cost of the quality assurance program should be proportional to the financial ramifications of a software failure. For projects in either consulting efforts or product development, quality assurance routinely represents 30% to 50% of the cost. In markets where 9-nines reliability is required and logic permutations are high, as in telecom software, quality assurance represents up to 75% of the project costs.
Quality Assurance Implementation
Quality assurance begins with project scope definition and continues after project delivery. Early in the project effort, QA’s role includes defining and documenting project requirements and specifications. Throughout the project, QA participates as business analysts in clarify the project issues. Their broad knowledge of the business requirements for the software provides the QA with an important perspective into design issues. Near the end of the project, QA’s role shifts towards testing and uncovering system bugs. Following the project, quality assurance participates in project reviews for organizational building and architecture improvements in future releases.
Producing quality software requires clear, upfront, system architecture. Once defined, the entire team must follow the roadmap of the system architecture to ensure reuse and to minimize bugs. Terms like “cowboys” or “plumbers” describe team members that code outside of the defined architecture. These individuals put the entire project at the risk of coder-specific bugs which are difficult to uncover.
Both the technical and business architecture must be determined prior to detailed design and coding. Technical architecture defines issues of persistence, workflow, and message queuing. Separately, business architecture defines the business logic of the system. Mr. Dobson noted that the business architecture and technical architecture should be independent to allow a change in the business logic without altering the technical architecture. Some technological means to managing changing business logic include the use of plug-ins and APIs.
A major issue in managing software quality is selecting platforms and core technologies that are embedded within the product or project deliverable. Shortened product lifecycles and continual improvements can cause difficulties over the course of a project lifecycle. To manage the risk of changing platforms, the panel all agreed to the need for locking down the version numbers of system components. As for the risk of new technologies, Mr. Franklin stated that he views new technologies as probably broken. The question is whether the team can live with the problem or otherwise mitigate the risk. Through longevity or use, the risks associated with new technologies can be assessed.
While quality assurance programs are required throughout a software project, they have a special role in testing. Software that meets the requirements as demonstrated in testing is, in many circles, the definition of quality software.
The testing method and quality assurance method is determined by the objective of the effort. Integrity testing is useful for ensuring that the system has all the correct components and component versions. Regression testing is useful for demonstrating system validity on multiple platforms or ensuring a change in one component didn’t affect the interaction with others. Manuel testing is most valuable for checking business logic and uncovering unique bugs in unusual scenarios. For some industries, performance testing is necessary to benchmark the system’s processing capabilities.