The following sections present an overview of the requirements for software development at ReliaSoft.
Theoretical
Formulation and Theory Development
[Top]
All theory and formulations
created or implemented by ReliaSoft Corporation must be
theoretically sound/correct and accepted by academia and
industry experts and also must be thoroughly validated before
becoming part of a standard software package (SSP).
Theory and formulations
that are not created by ReliaSoft
must meet the following standards:
-
Must have been published
in reputable academic journals or textbooks and must
have had sufficient time for peer review.
-
Must have been re-derived
and validated by ReliaSoft scientists to assure correctness
of the original work.
-
All assumptions made
during the formulation must be scrutinized, well
documented and understood.
-
Must be reviewed and
approved by ReliaSoft’s theoretical review board and
by at least one other independent academic expert on the
subject.
Theory and formulations
that are developed by a ReliaSoft scientist
must meet the following standards:
-
Must document all assumptions
made during the formulation.
-
Must be reviewed and
approved by ReliaSoft’s theoretical review board and
at least two other independent academic experts on the
subject.
-
If release of the formulation
is not considered to be a competitive advantage, then
it should be published in reputable academic journals
for peer review or, if a competitive advantage exists,
then it should be published after the product release
either in journals or in ReliaSoft textbooks.
Code Development
[Top]
All products and product
components developed by ReliaSoft must adhere to the
industry-wide accepted standards for developing Windows-based
object-oriented applications, including industry standards
for graphical user interfaces (GUIs). Multiple authors, including Microsoft and Microsoft
press publications, offer a wide range of articles and
books that detail accepted practices. Additionally,
such code development must adhere to the guidelines
for software development per ReliaSoft's internal document
"Coding Practices and Procedures for SSP Software,"
and to current practices, methods and documents
as posted in the Development section of ReliaSoft’s
Intranet.
Microsoft guidelines
for developing Windows applications (as detailed in
several documents, such as "Application Specification
for Microsoft® Windows® 2000") are adhered to. Deviation, if any, from these guidelines must be approved by ReliaSoft’s
technical review board and reasons for the deviation
must be documented.
Periodic design reviews
are conducted with members of the code development team,
technical writers and quality assurance. In
addition, theoretical and technical review boards
are conducted.
Source Code Management
[Top]
The guidelines implemented by ReliaSoft for
source code management are as follows:
All source code, including
modifications to code, is tracked and controlled through
the use of third party source control software.
Under no circumstances may code not tracked through
source control be introduced into the application.
All product builds
are versioned using a standard Major.Minor.Revision
(e.g. 3.1.2) numbering scheme.
All compiled code
(components) used in ReliaSoft applications are controlled
through ReliaSoft’s configuration and version control
processes. All components are capable (through an event
or property) of identifying their version and build
to a host application.
QA and Testing Procedures Overview
[Top]
ReliaSoft has always adhered to the highest quality and reliability standards for all of its software products and services. The Quality Assurance (QA) and testing procedures for all ReliaSoft products, including custom software, are based on ReliaSoft's commercial Standard Software Products (SSP) practices and methods. The procedures involve detailed and comprehensive testing efforts by multiple personnel/teams over time; thorough documentation of all issues identified during the general testing phase; and independent validation of all methods, theory and calculated results.
Unit Testing
[Top]
Most of the low-level testing (i.e. unit testing) is done during development and, at the lowest level, when code is written or changed. Testing is also done at higher-level modules as the product is assembled. This unit testing ensures that components and models function as intended and also ensures robustness. This testing is the responsibility of the individual developers and it involves a test-analyze-and-fix (TAAF) process.
Integration Testing
[Top]
Integration testing involves testers looking for bugs within the relationships and interfaces between a pair of components or group of components. An example is how
Weibull++ is integrated into
ALTA. Integration testing is not required if the application is made up of individual utilities that do not share data or invoke one another. However, if the software uses API, shares data or passes control from one component to another then integration testing becomes an important method to verify that the components are working together properly. Integration testing requires that the tester have a firm understanding of how the components are intended to work together.
System Testing
[Top]
Once all modules/components have been tested, compiled and linked without any errors or warnings, wider testing is implemented on the complete application or system. Formal logs of application testing activities are kept in ReliaSoft's internal
XFRACAS (an internal system that tracks all issues found on a product, along with their formal resolution). In general, any and all issues found are corrected as they are identified and testing resumes immediately with the corrected version to assure that the fix did not create any new issues. Special emphasis is given to the component or issue that was corrected. This is repeated through Alpha.X, Beta.X and Release Candidate.X phases.
Release Decision and Quantitative
Reliability Growth Monitoring
[Top]
After all issues have been resolved, a release decision is made. This decision is based on the number and frequency of issues found and on formal reliability growth analysis (using reliability methods, including ReliaSoft's own
RGA reliability growth and repairable systems analysis software) and target reliability goals.
Installation and Environmental
Testing
[Top]
The last phase of testing is installation testing and configuration. This is done in-house on multiple test systems including most versions of Windows (e.g. 95/98/NT/2000/Me). When appropriate, feedback from outside testers is also obtained. In the case of software that will reach foreign markets, foreign OS (operating system) testing (e.g. Chinese Windows, Korean Windows, etc.) is also performed.
Results Validation Testing
[Top]
In parallel with the software functionality testing, multiple engineers, scientists, and statisticians working independently perform testing and independent validation of all calculated results. Validated results are thoroughly documented and many of the examples are then illustrated in textbooks that are released with the software. Any issues found are corrected, re-tested and re-validated using multiple data scenarios.
Custom Systems
[Top]
When ReliaSoft releases a product, it has been
thoroughly tested and ReliaSoft is highly confident of
its quality and reliability. In the case of custom
systems, we expect the client to test the product to
assure that the system is functioning as intended in the
client environment. For systems that incorporate a
non-ReliaSoft database to support functionality and
calculations, the client is responsible for taking steps
to maintain the integrity of the data stored in the
database. An overview of the testing procedures employed
by ReliaSoft is presented in the next table.
Software Testing (QA) Summary Table
[Top]
|
Testing
Phase
|
Testing Type
|
Responsibility
|
Testing Details
|
|
Development
Phase
|
Unit
Testing
Integration Testing
|
Development
Team
QA Team
Theoretical
Team
|
Perform ongoing
unit testing during development. This will involve
testing individual components as they are developed.
At this stage, individual components will be
tested for correctness of calculations as well
as interaction with other components.
|
|
General Testing
Phase
|
Process Testing
Integration Testing
System Testing
|
QA
Team
Development Team
Theoretical
Team
Documentation
Team
Alpha/Beta
Sites
|
Validate process
results for correctness. Track the occurrence
and resolution of all anomalous issues. Test
the performance of components when they are
fully integrated.
|
|
Installation
Testing Phase
|
Installation
and Environmental Testing
|
QA
Team
Development Team
Alpha/Beta
Sites
|
Test the system
internally/externally under various installation
environments. For custom systems, work with
the client to test the system at the deployment
location.
|
|
Calculation
Validation Phase
|
Calculation
Validation
|
Theoretical
Team
|
Validate a
representative sample of system calculations
by performing identical calculations independently
and comparing the results.
|
|
Release Phase
|
Final Testing
|
QA
Team
Development Team
Theoretical
Team
Documentation
Team
Alpha/Beta
Sites
|
Unit, process,
integration and functionality, usability and
deployment testing.
|
Testing in each phase is
cyclical utilizing a test-analyze-and-fix (TAAF) process.
Problems are communicated, documented and resolved utilizing
XFRACAS, a state-of-the-art incident/issue
management system developed
by ReliaSoft. All issues after the initial development phase
are managed through the system.
Issue Tracking and Resolution
Process
[Top]
ReliaSoft’s internal
XFRACAS system
tracks all issues encountered for each product from the
development phase and throughout its life cycle. This integrated
system forms the basis of our QA procedures.
It was designed by ReliaSoft and is currently being marketed as a solution for other companies that
may have the same stringent quality tracking requirements
that we do.
![XFRACAS New Incident Tracking Utility [Click to Enlarge]](images/XFRACAS_sm.gif)
[Click to Enlarge]
All issues are logged into XFRACAS as incidents and are tracked from creation to resolution. Each incident is logged for the appropriate software entity. Each software product has its own entity and this entity structure allows ReliaSoft to maintain an organized structure for all of our software products. Incidents can include suggestions from customers or ReliaSoft employees, bugs found during testing, etc. Once the incident has been addressed, it must be tested by the QA group to ensure that the resolution employed correctly addresses the issue and does not introduce any additional problems into the software. XFRACAS facilitates teamwork between developers, theoretical experts, technical writers, QA and management to create a reliable and robust application. In addition, the software product scheduling and completion dates can be more closely monitored.
Software Deployment
[Top]
A software application is not deemed ready for
deployment until the release candidate has been accepted
by the QA group. The QA group must be satisfied with the
current state of the application based on the results of
the testing.
Once a product is ready for deployment:
-
A master is built for
subsequent duplication.
-
The source control
system is updated to include the final configuration
for the product and source code for the build and is
then frozen.
-
Backups of the source
code, build components and machine configuration used
for the release build are made, and component versions
documented (including non-RS components). Storage and
location of redundant backups is done according to ReliaSoft’s
Disaster Recovery Protocols.
-
The machine used for
the build is then isolated and frozen (and may not be
used for any purpose other than subsequent builds
(revisions) of the same version of the application).
Independent Software Evaluations
[Top]
ReliaSoft
maintains validation records for all current versions of
commercially released applications, including detailed
records of all modifications and issues found and
addressed during the testing phase and subsequent
deployment. These records are treated as “Proprietary
and Confidential” and are not made available to the
general public. In special circumstances, ReliaSoft is
willing to make such records available to clients or
other third parties (at ReliaSoft's sole discretion)
under the following conditions:
Review of such records is at ReliaSoft's Corporate Headquarters (Tucson, AZ) and in the presence of ReliaSoft personnel.
If needed (depending on the nature/amount of the disclosed information) a "Non-Disclosure Agreement" is executed.
Depending on the amount of time required, a fee may be charged to cover ReliaSoft's costs.