|
Application Software Quality - CAST
Application Software Quality
As companies conduct more of their critical business activities online, concern
over the quality of IT applications has moved from the IT department to the boardroom.
Downtime on a retail e-business Website can be measured in lost sales. Compromised
customer records can be measured in customer defections. Corrupted financial data
can be measured in restatement costs. All three can be measured in lines of bad
press.
The types of application problems that most frequently cause these disasters are
not defects in functional logic -'what the application is supposed to do'. Rather
they are caused by the non-functional defects that result from poor design and coding 'how
the application does it'. Most functional defects are detected during development
through reviews and testing. The non-functional defects often lie hidden beneath
the surface of an application until they are triggered during ordinary business
operations and cause embarrassing calamities.
Poor application quality can introduce many hidden costs into IT and business operations.
For example:
- Telesales reps having to restart customer transactions due to system brownouts
- E-commerce websites losing customers due to timeout issues
- Inability to complete transactions due to system outages, causing account receivables
to slip into the next quarter
Application Software Quality is more than high availability and low latency. It includes the speed with which the application can be
modified to meet a pressing business need, and the inherent strength of the software
to repel security attacks. Application Software Quality goes beyond present-day
performance to include a measure of future performance -- how well an application
meets future business needs.
Hundreds of Decisions, Independently Made
Throughout the course of development, a large number of developers, architects,
IT workers, business users, and managers make hundreds of independent decisions
which need to come together in a coherent fashion for the end product to work well.
"Software design is not an orderly top-down process. It is a collection of multiple
decisions made at varying levels of abstraction, brought together to satisfy an
overall business goal." (Dr. Bill Curtis, CAST’s Chief Scientist)
As the code base grows linearly, architectural complexity grows exponentially! Performance
bottlenecks multiply but become very hard to detect. There is no human or team of
humans capable of having a comprehensive end-to-end view of how the application
is put together to satisfy its long list of continually-evolving requirements.
Performance Testing Is Necessary, But Far from Sufficient
Performance testing only scratches the surface. Here’s why.
- It’s usually done too late to be meaningful and is quickly curtailed due to schedule
pressure. And it’s often too costly to replicate a true production environment
- Even when plenty of time is available, doing it right is more art than science –
what to test, how to replicate the production environment, knowing how much is enough
– these are all difficult issues that require a considerable amount of expertise.
It is very difficult to make it repeatable.
- Even if it is repeatable, performance testing doesn’t tell you how something will
perform in a few months when production conditions have inevitably changed. It won’t
tell you how easy it will be to modify the software to meet pressing business needs.
And it won’t tell you how difficult it will be to transfer the maintenance of the
software to another team (internal or external).
"We cannot write a test case to verify a system’s reliability…The ability to associate
code to non-functional properties can be a powerful weapon in a software engineer’s
arsenal." (Diomidis Spinellis, author of Code Quality)
So, we have a dilemma. How something is built has a direct causal impact on how
well it performs, which in turn affects business productivity and TCO. Visible outage
is only a small fraction of performance problems -- but it's not clear how to measure
the other part, let alone monetize it.
The unfortunate result: when software is sub-optimally engineered, business performance
dies the death of a thousand cuts.
The CAST Solution
The CAST Application Intelligence Platform is an objective and repeatable way to
measure and improve the Application Software Quality of mission-critical applications.
Application Software Quality is more than high availability and low latency in the
production environment. It includes the speed with which the software can be modified
to meet a pressing business need, and the inherent strength of the software to repel
security attacks. Application Software Quality goes beyond present-day performance
to include a measure of future performance -- how well an application can meet future
business needs.
CAST enables you to measure and improve quality from the very start of the application
development phase all the way through an application’s useful life.
Application Software Quality describes among other attributes, the soundness of
an application’s architectural design and the extent to which its implementation
follows proven coding best practices. Application Software Quality is not measured
by passing test cases that were mostly designed to verify the functional correctness
of an application. Rather, measures of Application Software Quality are measures
of the internal structure and engineering of its code.
Through extensive research and industrial experience CAST has identified five areas
of Application Software Quality that most affect business outcomes and TCO. These
five areas, or ‘health factors’, are similar but not identical to the high level
software quality measures defined in ISO 9126. Each of these five areas can be assessed
by measuring numerous attributes of the software, and then aggregating the results
into a summary health factor for that area (see the table below). These health factors
summarize Application Software Quality at a level that can be related to business
outcomes and value.
|
Health Factor |
Description |
Business Benefits and/or
Hard IT Cost Reductions |
|
1. Transferability |
Attributes that allow new teams or members to quickly understand and work with an
application |
- Speedy transfer of development or maintenance to external resources
cuts IT costs
- Problems are fixed faster resulting in lower maintenance costs
- Vendor lock-in is avoided resulting in better prices due to
increased negotiating power
|
|
2. Changeability |
Attributes that make an application easier and quicker to modify |
- Reduces speed to market, increases business revenue, and decreases
the pay back period
- Reduces total cost of ownership
|
|
3. Robustness |
Attributes that affect the stability of the application and the likelihood of introducing
defects when modifying it |
- Increases the number of business transactions completed in
a given time period, resulting in higher business revenue
- Reduces the risk of business performance degradation
- Customer satisfaction improves
- Decrease in risk
- Reduces risk of loss in customer confidence or financial damages
|
|
4. Performance |
Attributes that affect the performance of an application |
- Increases the number of business transactions completed in
a given time period, resulting in higher business revenue
- Increases business productivity
- Reduces total cost of ownership (TCO)
|
|
5. Security |
Attributes that affect an application’s ability to prevent unauthorized intrusions |
- Protects proprietary intellectual property
- Reduces risk of loss in customer confidence or financial damages
- Reduces legal risk of non-compliance with security-related
standards and mandates
|
A 360-Degree Measure of Application Software Quality
The CAST Application Intelligence Platform covers not just the business logic layer
but the presentation, middleware, and database layer as well. All four come together
to determine the engineering quality of a software system. Leaving one or more of
these out can lead to dangerous false negatives about the quality of software. In
other words, when it comes to software quality, the holistic, 360-degreee view is
a must; the whole is greater than the sum of its parts.
Company Overview
|
Application Software Quality
|
Software Factory Performance
|
Management Visibility
|