Software Development Life Cycle (SDLC)

This page is published under the terms of the licence summarized in the footnote.

 

Abstract

This paper expands on what happens in the Delivery step of Avancier Methods, addressing these terms and concepts:

 

“You” in this guide is the architect employed to support a solution development team.

This paper is about your role in the SDLC.

The paper concludes with some comments under the heading “People matter too”.

Contents

Introduction

One size doesn’t fit all

Waterfall methods (aka sequential methods)

Iterative (delivery early) methods

Agile (formerly RAD) methods

What most SDLC processes have in common

Roles

Principles

Phases and milestones

Activities within phases

Iterative development

Prototyping

The architect’s role in the SDLC

People matter too

 

 


Introduction

The SDLC is a process for the development, testing and deployment of a software system.

Most large IS/IT organizations have their own SDLC, or use a variant of a well-known one like RUP or DSDM.

The architect needs ongoing oversight of the SDLC; should monitor adherence to plan, interaction between components, specification changes, systems build; should maintain, review and refine architecture documentation accordingly.

 

The life cycle of a project is a process, or a collection of related processes.

Underlying any formal description of an SDLC are assumptions that:

 

Our various guides to planning and management, also sponsors, stakeholders and inputs, amplify on several of the points made above.

One size doesn’t fit all

Process improvement approaches like Six Sigma, Lean and CMMI are all about repeated processes.

A process becomes repeatable when instances:

 

Trouble is, across the industry, the software development process fails the criteria above.

The search for a repeatable software development process is frustrated by the findings that:

 

And within the world of software development:

 

A process that is repeatable in all those circumstances has to be a generalised abstraction.

Most people find it too vacuous in practice.

 

Off-shore software development can be a relatively repeatable process.

Especially if it is limited to short-cycle work for which there is a detailed specification, and ideally pre-defined test cases.

Even there, the process can vary due to reasons above, different organisation structures and contractual or commercial agreements.

 

Mature enterprises have concluded that one size doesn't fit all, there is no single formula for success.

Using one prescriptive process for all projects can bring more costs than benefits.

Most define variations of their sequential process for different kinds of work, and define process tailoring guidelines.

This is the assumption underlying process improvement schemes like CMMI.

 

The following sections describe a range of process variations from waterfall at one end to agile at the other.

Waterfall methods (aka sequential methods)

Waterfall methods are based on the classic sequence of activities in a mechanical or hardware engineering project.

The “waterfall” appears in a Gantt chart representation.

Sequential development

Analyze

Analyze

 

 

 

 

Design

 

Design

 

 

 

Build

 

 

Build

 

 

Test

 

 

 

Test

 

Roll out

 

 

 

 

Roll out

 

The assumption is that the activities, roles and artifacts of a project are predetermined in the initial project plans.

The process determines the project life cycle.

 

The trouble is, you don’t learn what’s wrong with the requirements or the product until it is released.

Software engineering isn’t like hardware engineering.

Software products are more difficult to envisage up front.

Software remains malleable even after delivery.

 

Moreover, you don’t learn what’s wrong with your process until the end.

 

Few if any SDLC processes are strictly sequential.

Modern methods like RUP and the MSF process are better described as waterfall iterative.

Even where a sequential process is imposed on a project, managers and architects will strive to proceed as iteratively as constraints allow.

Iterative (delivery early) methods

An iterative method divides a large project into a series of smaller, often overlapping, projects that yield successively more complete versions of the desired product.

Iterative development

Initiation

High-level architecture

Ongoing development and refinement of the architecture

Product v1

A, D,

B, T, R

 

 

 

Product v2

 

A, D,

B, T, R

 

 

Product v3

 

 

A, D,

B, T, R

 

Product v4

 

 

 

A, D,

B, T, R

 

Iteration enables part of the desired solution to be delivered earlier, and lessons to be learned from this.

Some allow that an iteration may last 6 months.

In agile approaches, an iteration lasts no more than 90 days.

In the agile method “Scrum”, an iteration is a 30 day sprint.

 

Iterative development can make projects small enough for the classic waterfall method to be applied in a sequential fashion from start to end of each iteration.

 

Iterative development can be subdivided into two kinds:

Agile (formerly RAD) methods

Introducing iterative development reduces the difficulties of large projects.

But it does not make a project agile - as agilists mean it.

Agile methods are not just iterative.

 

First, the attitude to requirements is different. Agilists observe that:

 

Second, the attitude to process is different. Agilists believe it is best that:

 

What does agile mean? Among other things:

 

Q) Do agile methods apply only to small projects?

A) No. Perversely: Sequential/waterfall processes work better on smaller projects, and agile principles are valuable on, even necessary for, larger projects.

 

The philosophy is that an agile method must and will provide better value, because it is inherently a more cost-efficient process than a sequential/waterfall method.

The stated aim is that when the time or money runs out, the system will do what the users need most, what is possible and useful, rather than what might have been written down at the beginning.

 

For much more discussion of agile development: Top ten agile development principles

What most SDLC processes have in common

Most SDLC processes (and there are many to choose from) call somewhere between waterfall and agile extremes.

This section discusses what most SDLC processes have in common before discussing special features of agile methods.

The common features below are roles, principles, phases and milestones, iterative development and prototyping.

Roles

A SDLC usually comes with default role definitions.

E.g. The MSF process includes

also

 

Most SDLC processes encourage close user involvement

Principles

SDLC processes share many of their principles.

The more agile the method, the more prescriptive it is about the principles and techniques (rather than sequence of activities).

This table draws some correspondences between principles in different SDLC processes.

 

RUP - four imperatives

The MSF process - four main principles

DSDM - nine principles

focus on architecture

 

 

develop iteratively

iterative

iterative/incremental development

 

milestone-driven

frequent delivery of products

 

phase-based

 

continuously ensure quality

 

base-lining of requirements at a high level

 

 

testing thru the lifecycle

 

 

focus on fitness for business purpose

manage change & assets.

 

reversibility of changes

 

allow for feedback and creativity.

empowered teams

 

 

active user involvement

 

 

a collaborative and co-operative approach between all stakeholders.


Phases and milestones

A SDLC is usually divided into four or five phases.

This applies across the board from relatively sequential/waterfall methods to an agile method like DSDM.

IBM/Rational - RUP

Microsoft - MSF Process

DSDM

Inception

Envisioning

Feasibility/Business Study

Elaboration

Planning

Functional prototype

Construction

Developing - Stabilising

Design prototype

Transition

Deploying

Implementation

 

Each phase ends at a stop/go milestone.

Imposing stop/go reviews at pre-defined milestones helps managers spot and stop a runaway train.

Note that agilists argue that reviewing abstract specifications is never adequate; it simply doesn’t reveal enough, so there must be some directly testable product.

 

Within each RUP phase, one plans a limited number of iterations, each yielding a tested system generation.

Activities within phases

The table below our version of the SDLC, with activities grouped under four phases as in RUP.

SDLC phase

Usual activities and products

Inception

Outline solution (architecture version 1)

Requirements catalogue

Business architecture version 2

IS development architecture version 2

IT operations architecture version 2

Elaboration

Development guidelines (patterns and standards)

Functional specification (use cases, UI design, business services, domain/data model)

Data migration (if needed)

Test strategy

Transition plans: including migration paths

Construction

Detailed design: software & data

Build: test documentation, Unit & link tested code

System test: test documentation, System tested code

Transition

Acceptance testing, Acceptance tested code

Transition into operations, Procedures & training

Transition into maintenance, Maintenance procedures

Cross-phase

Requirements management and traceability records

 

The more waterfall the method, the more prescriptive it is about the activities within a phase and the sequence of those activities.

Nevertheless, the SDLC is a very complex and flexible process.

This complexity means that the SDLC is not readily captured in a flow chart.

Iterative development

Even where a sequential/waterfall process is imposed on a project, managers and architects will strive to proceed as iteratively as constraints allow.

For some, an iteration may deliver only a prototype, and may last 6 months.

 

Agilists are more rigorous and disciplined about iterative development.

An iteration must deliver a tested solution – however limited.

An iteration may last from 30 to 90 days.

In the agile method “Scrum”, an iteration is a 30 day sprint.

Prototyping

Prototyping is used in all kinds of approach.

In the agile method DSDM, it is promoted as one of the four main techniques (requirements prioritization, time-boxing, facilitated workshops, and prototyping).

 

A prototype is a working model of the thing to be built, not full-scale, not fully-featured.

Even a Power Point presentation can be turned into a working UI prototype.

 

People build various kinds of prototypes at various times in the SDLC.

 

Throw-away or evolutionary prototype?

 

Horizontal or vertical prototype?

 

Functional or non-functional prototype?

·         A technology solution prototype tests the feasibility of the specified technology solution. It proves that the chosen technologies can talk to each other and work together without significant problems. It may test the integrity of data passed between each component of the architecture. It may also be a performance prototype.

·         A performance prototype demonstrates whether the performance targets can be met. It should include code to exercise known bottlenecks. It may stress a specific bottleneck. It may trial a specific performance tuning method. It may test the solution scalability and performance under a realistic load.

·         A development prototype tests class libraries and design standards, it tests the invocation of infrastructure components and evaluates the performance thereof.

 

Spike development: Systems integration projects increasingly depend on components that are distributed over a wide-area network and/or over the internet.

The more distributed the components the harder it is to predict the performance of the overall system.

The higher the risks, the more effort you should spend on “spike development” to reach the stage where you can run a realistic test in a realistic test environment.

 

Lessons:

Projects can get stuck in paralysis by prototyping.

·         Some prototypes cannot be scaled up to work in the real enterprise.

·         That’s why agilists propose an iteration should deliver a solution the customer can use right away.

Manage customer expectations.

·         A prototype built to prove one thing does not prove another.

·         Most prototypes are best thrown away.

Further effort is needed to harvest the results.

·         Lessons learned must be fed back to the developers.

·         Some code elements may be re-usable within the main development.

·         There needs to be training, standards, and a design authority to implement them.

The architect’s role in the SDLC

The table below shows the main elements of a typical SDLC, which elements you focus on and which you keep an eye on.

SDLC phase

Process step, with products

Focus

Interest

Inception

Outline solution (architecture version 1)

Focus

 

Requirements catalogue

 

Interest

Business architecture version 2

Focus

 

IS development architecture version 2

Focus

 

IT operations architecture version 2

Focus

 

Elaboration

Development guidelines (patterns and standards)

Focus

 

Functional specification (use cases, UI design, business services, domain/data model)

 

Interest

Data migration (if needed)

 

Interest

Test strategy

 

Interest

Transition plans: including migration paths

Focus

 

Construction

Detailed design: software & data

 

Interest

Build: test documentation, Unit & link tested code

 

Interest

System test: test documentation, System tested code

 

Interest

Transition

Acceptance testing, Acceptance tested code.

 

Interest

Transition into operations, Procedures & training.

Focus

 

Transition into maintenance, Maintenance procedures

 

Interest

Cross-phase

Requirements management and traceability records

 

Interest

 

Your goal in supporting a solution development process is to implement a new and working solution at a time, cost and quality that is acceptable to the business.

At the same time, you are concerned to implement overarching enterprise principles and standards.

 

You may have other goals within the solution development process.

Make sure your manager defines your role in oversight of a programme or project.

Are you responsible for delegating work to others? When should you take an interest in and/or contribute to something that someone else is responsible for? You may be asked to:

People matter too

In a survey, we asked project team members to apportion the blame for project difficulties between process, people and technology.

They apportioned blame in that order – suggesting process is the biggest challenge.

But many managers will tell you people are the most important factor.

This section includes some noteworthy advice from one such manager.

 

“I have supported aggressive, dog -eat-dog clients for the last 7 years now and I have accumulated many battle scars and lessons learned to help out anyone who finds themselves in similar situations.

As project manager, assuming that you have a software background, that the project has been approved , funded and the initial charter elements have been defined , ...

“Follow the ten commandments below

1.      Understand and believe in the proposed solution and value proposition.

2.      Identify who all of the stakeholders are, what their individual definition of success is, and then figure out who outranks who.

3.      Once you have an idea of who the political fat cats are, figure out what desired outcomes are important to each - to arrive at your best guesstimate on what the definition of success is. This is key.

4.      Inspect your context.

5.      No matter what the organizational context and culture are, subscribe to a proven project management methodology - like PMI.

6.      Communicate, communicate, communicate.

7.      Establish a very strong and trusting relationship with your business sponsor and leads.

8.      If you're lucky enough to pick your own team and you are skilled at ensuring the identification of top talent, take all measures to ensure that the highest levels of quality are built into your screening and hiring processes.

9.      Manage team performance, especially dynamics like a hawk.

10.  Never take yourself too seriously, try not to eat lunch alone, and take your entire team, your business clients and partners included, "out for beers" on a frequent basis.”

 

From: "rmcdevit" to <development-projectmanagement@Groups.ITtoolbox.com>

 

 

Published under the Creative Commons Attribution-No Derivative Works Licence 2.0                                      05/02/2015 23:46

Attribution: You may copy, distribute and display this copyrighted work only if you clearly credit “Avancier Limited: http://avancier.co.uk” at the start and include this footnote on each page.

No Derivative Works: You may copy, distribute, display only complete and verbatim copies of this paper, not derivative works based upon it – unless you have permission from the author.

For more about the licence, see http://creativecommons.org.