Software engineering process is a key thing that
sets our company apart from our competitors. We know that there is no way of
producing a high quality product if the production processes are not high
quality. From many years experience in the outsourcing business we have chosen
to use software engineering process that corresponds to IEEE 12207 standard and
has incorporated Software Engineering Institute Capability Maturity Model (SEI
CMM) in it.
To some companies word “process” often means
unnecessary overhead that the outsourcing vendor will be charging
for. Indeed following to the clearly defined process
is some overhead compared to the coding/testing mode of development.
The only reason for having that overhead is that there is no way of delivering
a quality product. Not possible to make the on time and on budget delivery
without the overhead that process brings.
Without process, managers will have no idea how
many percent the project is done until the deadlines
are postponed many times. At the end, there will be a delivery without a full
set of required functionality, and a delivered product with no maintainability
built into it. Project will have huge budget and duration overruns.
The process helps to have full control and
understanding where the project is at any given moment. It helps to have risk
management, clear accountability, high quality, managed schedule and
predictable deliveries.
There are the following main activities in the software engineering process:
Initiation.
Initial Planning and Proposal Preparation.
Contract.
Official start of the project.
Planning, Process Tailoring.
Requirements engineering.
Test Planning.
Architectural design.
Detailed Design.
Coding.
Integration.
Delivery and Delivery support.
Project Close Out
There are the following supporting activities in the software engineering process:
Quality Assurance.
Configuration Management.
Project Management.
Documentation.
Verification and Validation.
Joint Review.
During various activities in the project development time, we produce the following
artifacts:
Vision document.
Software Development Plan.
Software Requirements Specification.
Software Testing Plan.
Software Architecture Document.
Software Design Document.
Integration Build Plan.
Source Code.
Executables.
Supplementary documentation (installation instructions, user’s manuals and so
on).