|
|
|
The qSDS Software Engineering ProcessIntroductionThis document describes a process for the work of creating and deploying software. As such, it is one of the most important parts of the qPrise Software Development System (qSDS). As a process description, this document is quite general in its scope. It does not include step-by-step procedures, or specific instructions. It is intended to be applicable to a diverse range of technologies and techniques. This document includes a number of definitions for terms that have a specific meaning in this context, and also defines the roles of personnel involved in the process. In creating this document, it is assumed that the reader has a basic understanding of software engineering. DefinitionsThe following terms have specific meanings in the context of this process.
Process OverviewSequence of WorkThe software development process is executed in five distinct phases, executed sequentially:
Each of these phases builds on the output of the previous phases, and must be consistent with them. Traceability is the work of ensuring that all parts of the work are consistent and valid in the context of the stated requirements. This is a key quality assurance technique. RolesThere are a number of distinct personnel roles or parties in the software engineering process:
AnalysisIn software engineering, analysis is the work of determining and formally defining what is required of the end result of the project. It is beyond the scope of this document to discuss the multiplicity of approaches and methodologies for analysis that exist, but the overall result must be a set of requirements that:
This means that everyone should be able to understand the requirements, that conformance to them can be easily demonstrated, and that there is no redundancy. Ideally, the list of requirements should be formed such that if the system demonstrates every behaviour specified, it may be passed into the production environment, and that if one or more behaviours are not demonstrated, it may not be passed into the production environment. In practice, this is rarely achievable - specifications often include features that are 'nice to have', or requirements that, if violated individually, might not cause the rejection of the system, but when taken with a number of other failures, might cause the system to be rejected. Thus, requirements are assigned a criticality as follows:
The list of requirements comprises the first part of the traceability matrix. Consult the section on traceability for more information. The Project Sponsor must ratify the list of requirements, confirming that they do, in fact, describe the system to be built. DesignThe design phase is essentially for proposing a solution to the requirements determined in analysis. All decisions of how the system is to be implemented (that are not mandated by requirements) are made during this phase. These normally include:
In practice, certain decisions are sometimes deferred to the implementation phase. Of course, the qSDS development philosophy promotes a predictive understanding of software engineering, which means that the nature of a problem and its solution should be thoroughly understood before it is executed, but it is recognised that in the 'real world' this is sometimes not practical. However, a real effort should be made to keep such situations to a minimum. The system design must be clearly communicated (normally through the medium of documentation) to all participants in the project. It is reviewed against the requirements as part of the traceability activity. The design is finally ratified by the Project Manager, who is ultimately responsible for ensuring that it is internally consistent and both conforms to and covers the requirements. During the design phase, changes to requirements must be handled using the change management procedures. ImplementationIdeally, the implementation phase is simply the work of executing the design. As stated above, all major implementation decisions should have been made during the design phase, making implementation a 'paint by the numbers' exercise. In practice, issues do arise during implementation that invalidate elements of the design, or even the requirements. These must be handled using formal change management procedures. Normal implementation activities include:
The implementation is reviewed against the design as part of the traceability activity. This may take the form of code inspections and informal testing (including unit testing). Naturally, this does not replace, or mitigate the need for, a formal testing phase. The Project Manager takes overall responsibility for the conformance of the implementation to the design. TestingTesting is the work of formally verifying and demonstrating that an implemented solution conforms to its requirements. This is the final stage of the traceability activity. The first part of this phase is to create the test procedures. This can actually done after the requirements have been determined, but it is often useful to understand the design and implementation of the system when creating tests. Compliance with every requirement from the analysis phase must be demonstrated in at least one test procedure, and tests that do not exercise a requirement should be avoided. Test procedures should include the following information:
The Project Manager and Project Sponsor must both ratify the test procedures, agreeing that:
In the second part of testing (execution), the test procedures are executed as specified. It is important to take an objective and dispassionate approach to this exercise, to obtain an accurate demonstration of the system's conformance to requirements. The third part of testing is to analyse the test results. Assuming traceability has been fully maintained between test procedures and requirements, it is reasonable to assert that the system conforms to all requirements if it passes all tests. If the system does not pass all tests, the traceability information can be used to isolate the exact area of non-conformance. Non-conformances may be handled in one of two ways:
In the event of non-conformances being evaluated as faults, further action must be taken to address these faults. To ensure that repairs have not introduced new non-conformances, the entire set of test procedures must be executed again. This exercise is called Regression Testing. Acceptance Testing is the execution of test procedures in the presence of the Project Sponsor, as a demonstration of conformance. Factory Acceptance Testing is acceptance testing executed in the development environment. Site Acceptance Testing is acceptance testing executed after deployment, in the production environment. Acceptance testing is not necessarily mandated in all situations. However, the Project Sponsor must ratify the test results, and participate in and ratify the analysis of the test results. DeploymentIn the deployment phase, the completed system is moved from the development environment to the production environment. Depending on the complexity of the system, this work can take many different forms. In general, systems developed for a specific end-user are simpler to deploy, because the production environment is the single environment in which the system will actually be used. By way of contrast, systems developed for mass distribution will be used in a wide range of environments, and so require more effort in deployment. An extended discussion of these issues is beyond the scope of this document, and will be addressed in specific procedural documentation. Ancillary IssuesThe following sub-sections discuss a number of issues ancillary to the software engineering process. TraceabilityTraceability is the mechanism or activity of linking the various aspects of software development work to core requirements. During the work of analysis, requirements are isolated in a formal and objective way. Traceability links these requirements to two other specific pieces of information:
The following benefits are derived:
Traceability activities will be outlined in specific procedural documentation. DocumentationThe software engineering process requires that a great deal of information be communicated and understood between people in various roles. For example, the Project Sponsor, the Project Manager and all Software Engineers must have a common understanding of the system requirements. The most common mechanism by which this communication is achieved is through documentation, and although this process does not mandate documentation as the means of communication, it is highly recommended. Documentation may be in any form or medium that complies with the basic requirements of being commonly accessible and persistent. Change ManagementOne of the biggest threats to the integral quality of an engineered solution is unmanaged or poorly managed changes to requirements or design during the development process. Having said this, most projects are subject to such changes, and the software engineering process must allow for them in a formal way. Changes are managed by a careful integration process that first analyses the highest level at which the change must be effected. That is, the most 'primitive' information affected by the change must be isolated. The traceability information is then used to the implied changes in dependent information. For example, a change that invalidates a requirement must first be integrated into the body of requirements, followed by corresponding changes to design and test procedures, whereas a change that affects the design but not the requirements may be integrated directly into the design. |
|
This site is under construction. Please check back with us again soon. In the meantime, enquiries may be directed to enquiries@qprise.com. Except where explicitly noted, all information on this site, qprise.com is copyright (c) 2001 qPrise. Reproduction is only by permission of qPrise. |