CSA Explains…
Quality Software Programming – Presentation Synopsis
by Tim Smith, PhD, 03-05-2003
<back ||
next>
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.
Testing Methods
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.
---
Tim Smith, PhD is a principal at Wiglaf, a Market Research and Sales
and Marketing Strategy consultancy serving tech-driven businesses
operating in business markets. Small and medium sized businesses
select Wiglaf for our quantitative and fact driven approach to intelligent
revenue growth. www.wiglaf.biz.
<back ||
next>
|