The High Level Aims
For many software development organisations,
including commercial software houses, the key requirements for the
organisation are the dual aims of:
- deadlines: delivering software
dependably to schedules (and preferably, with short lead times)
- quality: software delivered to
customers is with known levels of completeness and quality (eg. freedom from
defects), and accurately meets its functional and performance requirements
In other words, software organisation wants
to be confident that the software delivered to customers is of a quality that
meets customer expectations and is done within budget; no unpleasant surprises
for anyone!
A Real-Life Example
The diagram below gives a high level view of
a software design, development and delivery process we developed and implemented
with a client organisation - a commercial software house developing large-scale,
off-the-shelf software component products for sale to the financial services market.
In this example, the software house had a
well-deserved reputation as a technology leader and had very capable technical
staff. However, the organisation's difficulties were in servicing its
customers. Despite a lot of effort, the organisation was finding it
practically impossible to work to any timetable for delivering software with
complete functionality.
Deadlines were being missed and the product
development plans were slipping month-by-month. The software was functionally
complex and the organisation found it difficult to have well-founded
confidence in the completeness, stability or freedom from defects (quality)
that it did produce for customers.
The process described below was developed over a number of
months to address the shortcomings of the situation. The technical staff adapted well to the working practices embedded
in the process.
The process itself provided the basis for
close management of every stage of the end-to-end development stages. We were
able to establish and operate a management system which enabled regular,
dependable planning and scheduling of the development process and activities.
Within a few months, the delivery cycle was reliably and regularly delivering
high quality software, to 2-weekly published delivery schedules
Development Process for dependably meeting
Customer Deadlines
There are some comments to make on
implementing and operating this kind of process in a software development
organisation.
The diagram below shows software
architectural design work being released - at the left hand end - into a
stage-by-stage process through which each scheduled piece of development work
passes.
Each piece of work was planned, by backwards
scheduling from required completion dates, taking resource constraints, task
dependencies and process choke-points into account. The completion dates
represented the deadlines required for release and shipment to a customer of a
tested and packaged piece of software.
The process was designed with the express
purpose of meeting scheduled completion deadlines, with required quality and
within resource constraints. In this particular case, we found that a release
of completed software every 2 weeks, for shipment to the customer, was a realistic and acceptable
service level for the software house and its customers. (Prior to
our engagement, the organisation had been unable to meet delivery schedules
and software which was released, was of an unknown quality and completeness).
Software Delivery Process:
Incorporates rigorous Inspection at Review Points to improve process delivery performance.
|