Professional Documents
Culture Documents
CSW QMS 2002 SDP 0909 Software Development
CSW QMS 2002 SDP 0909 Software Development
SOFTWARE DEVELOPMENT
PROCESS
INTEGRATED MANAGEMENT SYSTEM
DATE: 2016-09-29
PROJECT CODE: QMS
DOC. REF.: CSW-QMS-2002-SDP-0909
STATUS: APPROVED
PAGES: 26
ACCESS: CONFIDENTIAL CRITICAL
VERSION: 09
APPROVAL
ACCESS LIST
INTERNAL ACCESS
Public
EXTERNAL ACCESS
Confidential
The contents of this document are under copyright of CRITICAL Software S.A., released on condition that it shall
not be copied in whole, in part or otherwise reproduced (whether by photographic or any other method) and
therefore shall not be divulged to any person other than the addressee (save to other authorized offices of his
organization having need to know such contents, for the purpose for which disclosure is made) without prior
written consent of the CSW Quality Department.
REVISION HISTORY
02, Draft 1.18 2003-07-28 Remove section 2. CRITICAL Software Rui Cordeiro
background and section 7. Standards from
v01 to QM process document. Section 5.2.6
Audit process from v01 was changed to refer
the Quality Management process instead of
Quality Assurance process.
Approved version 02 will include definition of
life cycle models for development and non-
development projects.
TABLE OF CONTENTS
1. INTRODUCTION ..................................................................................................................................5
1.1. Objective .......................................................................................................................................5
1.2. Scope ............................................................................................................................................5
1.3. Audience .......................................................................................................................................5
1.4. Definitions and acronyms ..............................................................................................................6
1.5. Document structure .......................................................................................................................8
1.6. Applicable documents ...................................................................................................................9
1.7. Reference documents ...................................................................................................................10
2. DEVELOPING SOFTWARE PROJECTS ............................................................................................11
2.1. Project types for software development ........................................................................................11
2.2. Tailoring the software development life cycle ...............................................................................12
2.3. Tailoring the software development process ................................................................................12
2.4. Roles and responsibilities .............................................................................................................12
3. SOFTWARE DEVELOPMENT LIFE CYCLE PHASES .......................................................................13
3.1. Description of phases....................................................................................................................14
3.1.1. System engineering phase ....................................................................................................15
3.1.2. Requirements engineering phase ..........................................................................................16
3.1.3. Design engineering phase .....................................................................................................18
3.1.4. Validation phase ....................................................................................................................19
3.1.5. Acceptance phase .................................................................................................................20
3.1.6. Operations and maintenance phase ......................................................................................21
3.2. Constraints ....................................................................................................................................22
3.3. Processes invoked in all phases ...................................................................................................23
4. SOFTWARE LIFE CYCLES SPECIFICS .............................................................................................24
5. SOFTWARE DEVELOPMENT PROCESSES .....................................................................................25
TABLE OF TABLES
Table 1 – Definitions ..............................................................................................................................6
Table 2 – Acronyms ...............................................................................................................................8
Table 3 – Applicable documents ............................................................................................................9
Table 4 – Reference documents ............................................................................................................10
Table 5 - Primary life cycle processes vs. life cycle phases ..................................................................25
TABLE OF FIGURES
Figure 1 – Software life cycle phases (full scenario) ..............................................................................13
Figure 2 – System Engineering phase ...................................................................................................15
Figure 3 – Software requirements engineering phase ...........................................................................16
Figure 4 – Design engineering phase ....................................................................................................18
Figure 5 – Validation phase ...................................................................................................................19
Figure 6 – Acceptance phase ................................................................................................................20
Figure 7 – Operation and maintenance phase .......................................................................................21
Figure 8 – Software life cycle constraints ..............................................................................................22
1. INTRODUCTION
1.1. OBJECTIVE
This document details the Software Development Process (SDP) used by CRITICAL Software including the
definition of project types, the processes and their sequence/phasing. It provides the necessary level of guidance
for project members, and confidence to stakeholders, improving the ability to produce results in the scope of
project’s requirements and expectations.
This document also covers systems engineering aspects which are described throughout the document (if
applicable)1.
Nowadays software business demands effectiveness and efficiency, thus managers and developers must
understand from the very beginning which methods and practices they shall apply to solve the problem they face.
Assuming this challenge, the Software Development Process document describes development phases,
processes and the project life cycle organisation, providing all the relevant information to the project team. This
software development process may be applied to (almost) all kind of software projects.
The software development process is a key component of CRITICAL’s Quality Management System. Its effective
application contributes directly to the company’s ability to meet the requirements of the ISO9001 standard for
Quality Management [RD-5].
The software development process described in this document is CRITICAL’s interpretation of the ISO12207
standard for Software Life Cycles [RD-6], ESA ECSS standards [RD-2][RD-3] and ISO13407 standard for Human-
centred design processes for interactive systems [RD-7], plus the experience acquired with past software projects.
1.2. SCOPE
This document covers several software process disciplines and shall be seen as internal standard for software
engineering, supporting and organisational software project activities. The purpose is to provide processes,
procedures and specific requirements for conducting a repeatable software development process within CSW’s
software projects.
The main objective of software development process is to provide adequate guidance to project team, and
confidence to customers that the end product or service satisfies project requirements and expectations. The
ultimate goal is to improve substantially CSW effectiveness and efficiency.
1.3. AUDIENCE
The audience of this document are all CSW members that participate in the CSW projects including: project
managers, technical managers, principal engineers, software product assurance engineers and other technical
project team members (including developers and testers). It also relevant to quality managers, delivery managers,
business development managers, etc.
1
References to phases, processes, procedures and tasks used for software development can most of the times be directly
applied for system (hardware + software) development.
The content of this document is property of CRITICAL Software, SA and distribution to external entities (such as
customers and subcontractors) is not allowed unless there is a written authorisation from the head of the quality
department.
Name Description
Table 1 – Definitions
Table 2 presents the list of acronyms used throughout this document. The acronyms presented in [AD-1] are also
applicable.
Acronym Description
AD Applicable Document
AR Acceptance Review
CTR Contract
Acronym Description
NA Not Applicable
QR Qualification Review
TBC To Be Confirmed
TBD To Be Defined
TS Technical Specification
Acronym Description
UX User Experience
Table 2 – Acronyms
Section 2. Developing software projects, introduces the guidelines used to mentor CSW’s software development
process.
Section 3. Software development life cycle phases, presents the software development phases considered in the
CSW software development process, including their processes, states, reviews, milestones and baselines.
Section 4. Software life cycles specifics, presents the specifics in the life cycle of each project type identified within
software development framework.
Section 5. Software development processes, identifies the primary life cycle processes considered in the Quality
Management System and indicates in which life cycle phases their usage is more relevant.
[AD-12] Integrated Management System website (QMS Portal) [ Quality > QMS ]
2
SPiCE for Space (S4S) Assessment Model (ISO/IEC 15504 Conformant Method for the Assessment of Space Software
Processes).
The software development brand of projects is vast enough to have a unique life cycle. For instance, the
development of a software component to be used by other programmers is much more demanding in terms of
technical documentation than developing a user application. Also, the development of a project in cooperation
with entities outside the organization demands an extra care in management and communication activities.
In the scope of software development, it is needed to consider different project types in order to find a way to
manage the unique characteristics of the projects. The CSW project types within the software development are
identified in the next section.
The following project types are considered within the software development framework (these are defined as high-
level project types in the Project Life Cycles document [AD-2]):
• Software Development: A project that requires a full or partial life cycle focused on development of a
new or updated software system;
• Agile Software Development: A project using Agile methodologies focused on incremental and iterative
development of a software system or product;
• Platform/Product Development and Support: A project that aims to develop a new software product
that will be commercialised by CSW in a COTS model. The main difference from Software Development
project types is the additional requirements that are needed to handle specific product characteristics
and a multi customer environment. Typically, product development instantiates an Agile SW
Development process or methodology;
• Proof of Concept / Prototyping: A project that is typically a prototyping activity to provide a proof of
concept or to de-risk planned development activities;
• Support & Maintenance: A project that aims to provide a customer service based on maintaining an
existing product. This product may be developed by CSW or by a third-party;
• Research & Development: Project that typically has an internal customer only (although it may resort
to external funding sources or sponsors), and focuses specifically on R&D activities;
• Outsourcing: Project related to management of outsourced CSW collaborators;
• Verification & Validation: A project that focus on V&V activities. V&V is the process of checking that a
software system meets specifications and that it fulfils its intended purpose. This type of project is
intended to validate product outputs from another project, customer or third party organization, and
therefore typically follows the validated project’s life cycle. A V&V project typically applies only specific
phases or processes of the Software Development life cycle;
• QMS Improvements: An internal program or project associated to a Quality Management System
(QMS) Process Improvement, Organizational Change and/or Strategic Process Initiative, which is
typically composed of a multi-disciplinary team, and crossing several Departments or Functions in the
organization (e.g. CMMI, LeanQMS, Agile@CSW Initiatives, etc.);
• Service: If the project does not fit in any other type it is considered as a generic consulting service.
Each level 2 process document contains a “Process Tailoring” section that presents approved tailoring
considerations relevant to each process.
Additionally, specific Pre-Tailoring Process Guidelines are also defined for the following types of projects:
The approach to software life cycle phases followed by CSW is inspired in ECSS [RD-3] and it is compliant with
the abstract life cycle definition described in [AD-2]. Figure 1 presents the phases considered in the software
development process.
Phases are an indicator of the focus of a project in a moment in time. For example, in the beginning of a project
it is expected that most of the resources are allocated to requirements definition but it does not mean that no other
activities can be going on. Some design activities or even construction ones (validating prototypes, etc.) can be
carried out before closing the requirements development.
The SDP formally starts with the System Engineering Phase, prior to project execution and the project kick-off
milestone (typically overlapping with the bidding/proposal phase). This recognizes the fact that key software
engineering activities are conducted in this phase, at a high-level, which reflect and have a decisive impact on
following activities and follow-up phases (e.g. technical solution definition or selection, features identification,
make or buy decisions, etc.)
These phases should be organised in a life cycle, the most common life cycle is the waterfall (cascading) but
other life cycles may be used (e.g. incremental or evolutionary).
SYSTEM DESIGN
ENGINEERING ENGINEERING ACCEPTANCE
PHASE PHASE PHASE OPERATIONS AND
REQUIREMENTS
VALIDATION MAINTENANCE
ENGINEERING
PHASE PHASE
PHASE
FUNCTIONAL STATE SPECIFIED STATE DEFINED STATE QUALIFIED STATE ACCEPTED STATE
The documentation of the main key processes involved in SDP phases can be found at the QMS portal [AD-12]
where the most up to date versions of process definitions such as the following can be found: ENG.1
Requirements Analysis Process [AD-7], ENG.2 Software Design Process [AD-8], ENG.3 Software
Construction Process [AD-9], ENG.4 Software Testing Process [AD-10] and ENG.5 Maintenance Process [AD-
11].
The System Engineering phase consists on the elaboration of the initial and high-level version of the Technical
Specification (TS), which is the “response” to the customer needs. The initial
version of the Technical Specification contains a high-level definition of the
features/functions, main components, that may include user interfaces The System Engineering phase consists in
(mock-ups), and high-level solution and design of the system to be the initial specification of the system/software
to be developed including the features list,
developed. It represents the initial understanding of the system to be
architectural design (high-level design) and –
developed and serves as input for the next Requirements Engineering if applicable - first user interaction solution
phase. previews (form and behaviour).
A major activity during this phase is the selection (or definition) of the
Architectural Design based on pre-existent organizational Reference Models, Architectures and Frameworks. If
required, formal decision making is utilized to select alternative solutions during this phase.
The work products produced during this phase, including the Features List/High-Level requirements, High Level
Architectural Design and initial Interaction Solution Previews are present or described in the Proposal document,
which is delivered to the customer. The Technical Solution – Decision Analysis Report (TS-DAR) is produced in
relevant situations where the organization has no standard, pre-selected or well-known Technical Solution / SW
Architecture guidelines for the problem being analysed. The SRR milestone typically coincides with the project
kick-off but may occur before or after this milestone.
The requirements engineering phase consists on the elaboration of the technical specification (TS), which is the
“response” to the customer needs. The technical specification contains a precise and coherent definition of
functions, user interface, performances, cost, schedule and implementation plans for all levels of the software to
be developed. It also ensures that the requirements and specifications are
feasible, complete, and consistent, and that the customer and
development team understand them in the same way. Therefore a major The requirements engineering phase consists
activity during this phase will be the discovery of unknown (or non- in the specification of the software to be
developed including the software
apparent) requirements at this point in time and on the experimentation
requirements, architectural design (high-level
of multiple solutions, by means of low-fidelity and/or high-fidelity design) and user interaction solution previews
prototyping (e.g. from simple sketches to functional prototypes). The (form and behaviour)
preliminary interface control specification (ICS) is generated by this
phase.
This phase is mostly run with Software Engineers/Architects and User Interaction Designers working closely to
Subject Matter Experts and representative users, if available. The UX Designer is responsible not only for running
the appropriate “client and user needs” investigation activities but also for materializing (e.g. sketching) the team’s
overall envisioned solution. Is also responsible for running the appropriate usability tests required to confirm
interaction design options and to minimize uncertainty at later project phases.
The Requirements Engineering phase – User Interaction technical component - is framed by the ISO 13407 -
Human-centred design processes for interactive systems [RD-7].
The software requirements engineering phase is completed by the Preliminary Design Review (PDR). The inputs
to the preliminary design review are: the software requirements specification, system architecture, the preliminary
interface control document and Solution Previews (e.g. mock-ups, lo-fi and/or hi-fi prototypes), all part of the
technical specification. The software architectural design and the User Interaction Solution Previews are reviewed
at the preliminary design review (or in a previous meeting). If the preliminary design review is completed
successfully the specified state is announced and the technical specification baseline is set.
During the preliminary design review the technical specification members of the development team (and external
members, if any) carefully study the software requirements, specification documents and Solution Previews. They
itemise and categorise each statement in the documents to uncover omissions, contradictions, TBDs, and
specifications that need clarification or amplification [RD-1].
Given the importance of the full set of technical specifications for the construction of the software
product, the PDR ends with the Client’s commitment and approval for the next project stage, upon review
of the documentation (SRS and User Interaction Solution previews, at bare minimum).
For systems engineering deliverables include the System Requirements Specification (YRS) and the System
Architecture Specification (YAS) (this last only if tailored in at this phase).
The validation phase includes a Qualification Review (QR). The state of the software project after qualification
review is called qualified state.
The purpose of the validation phase is to verify the end-to-end functionality of the system in satisfying all
requirements and specifications (mainly system testing), including system usability verifications. During this
phase, the system test team executes the tests specified in the system. Usability tests are run by the project UX
Designers. The results obtained during test execution are documented, and the development team is notified of
any discrepancies. Repairs to software are handled by members of the development team in accordance with
stringent configuration management procedures. Corrected software is retested by the system test team, and
regression tests are executed to ensure that previously tested functions have not been adversely affected [RD-
1].
The acceptance phase includes an Acceptance Review (AR). The state of the software project after acceptance
review is called the accepted state.
The purpose of the acceptance phase is to demonstrate that the system meets its requirements in the operational
environment. The testing conducted during this phase is performed under the supervision of an independent
acceptance test team (on behalf of the customer) and follows the procedures specified in the acceptance test
plan. The development team provides training and support to the test team. They also correct any errors
uncovered during testing and update the system documentation to reflect software corrections [RD-1].
The operations and maintenance phase starts after completion of the acceptance review of the software. This
phase is very important since the success of software products is dependent on the level of operations that it can
provide to the customer organisation.
The maintenance process [AD-11] is activated when the software product undergoes any modification to code or
associated documentation as a result of correcting an error, a problem or implementing an improvement or
adaptation. Triggers to the maintenance process include bug reports and change requests.
The operations and maintenance may be invoked within warranty period or by a maintenance contract and ends
with the retirement of the software product, with the end of maintenance contract or with the end of warranty
period.
RESULTING MILESTONE: NA
RESULTING STATE: NA
RESULTING BASELINE: NA
3.2. CONSTRAINTS
The constraints to be considered when instantiating a life cycle for a project are basically precedence constraints
(e.g., affecting the execution of some phases, processes or activities). Figure 8 presents the constraints
recommended for organising life cycle phases.
The software requirements engineering phase of the software development process consists on the elaboration
of the technical specification, which is the supplier’s response to the requirements baseline. This phase may start
in parallel or after the elaboration of the requirements baseline.
The design engineering phase shall not start before the System Requirements Review. It can start before the
Preliminary Design Review (PDR), but it is after the Preliminary Design Review that the results of the software
requirements engineering phase are reviewed and baseline to be used as inputs to the Design Engineering phase.
Given its importance on system design and project planning, the PDR requires an explicit client’s “Go/No
Go for next stage” approval.
The validation phase can start after the preliminary design review (e.g. unit testing will be executed during the
source code implementation). Only after the Critical Design Review (CDR) the validation of the technical
specification (system testing) should be performed.
The acceptance phase should start only after the validation phase is executed.
The operations and maintenance phase typically starts after acceptance review but it must not start before
qualification review.
Start constraint
REQUIREMENTS
ENGINEERING PHASE
DESIGN
ENGINEERING
PHASE
VALIDATION
PHASE
ACCEPTANCE
PHASE
OPERATIONS AND
MAINTENANCE
PHASE
To be effective some milestones in the software development process are mandatory. The mandatory milestones
are KOM, PDR, QR and PCM. These milestones may be performed with different levels of formality depending
from the complexity of the project but evidences of their execution shall be provided. Note: PCM and AR are
typically combined, but may also be performed independently.
Nevertheless, these examples may not answer to all projects and other life cycle models may be created if
considered more convenient according to the project objectives and characteristics.
The support, management and organisational processes (not shown in Table 5) may be invoked at any time in
any phase of the life cycle. The list of all QMS processes is presented in the Quality Management document [AD-
3] and/or in the QMS Portal [AD-12]. Details on specific processes and its activities may be found on level 2
documents [AD-7][AD-8][AD-9][AD-10][AD-11] .
CUS.1 Purchasing X X X
CUS.2 Delivery X
CUS.3 Contract X X X X X X
Management
ENG.1 Requirements X
X
Analysis
ENG.3 Software X
Construction
ENG.5 Maintenance X