Misconception: There is only one SDLC.

The industry standard for life cycle activities is ISO/IEC/IEEE 12207, which defines 30 life cycle activities, each with a purpose, outcomes, and representative tasks. The ISO/IEC 29110 standard defines a lighter weight set of activities that are suitable for small organizations. Other groups of activities are even lighter, with between 5 and 9 key activities.

Each team or organization may have its own SDLC. Some organizations may have various life cycles in use at a time, sometimes with an SDLC framework to supply consistency across the organization. An organization may even apply different SDLCs to different subsystems or components.

Misconception: A SDLC is not necessary to build software systems.

Analysis leads to an understanding of the problem.  Someone writes code. Release and deployment allow others to use the software. Testing ensures that the system solves the problems at hand. As more people become involved, coordination of work becomes necessary. Each of these is an example of a life cycle activity.

Each of these is an example of a life cycle activity. Each activity has inputs and outputs, and there are often feedback loops. How these activities are ordered and connected is the software development life cycle.

Even without a formally documented SDLC, an observer can watch the team carry out the life cycle activities and see the relationships between the activities.

Misconception: An SDLC must have distinct stages or phases.

There are two related misconceptions about SDLCs and stages or phases.

Sometimes, this misconception is phrased as a comparison between “the SDLC” and Agile methods. “SDLC” doesn’t imply a specific life cycle model. Waterfall is one software development life cycle model. Other models are semi-sequential, with parallel tracks of execution for some activities that split and merge. Some models are highly iterative in nature. A development organization’s processes can be ad-hoc and not structured in any discernable way. An SDLC can be based on any model for how the activities are structured.

In other cases, the misconception centers around the existence of phase-gates. Even in an iterative or incremental model, stages or phase-gates are not a requirement of a software development life cycle. Although some teams or organizations may find it useful to have defined phases for projects or products to move through, this isn’t a requirement of an SDLC.

Misconception: An SDLC is rigid or inflexible.

A team or organization should continuously improve the methods used to build software.

ISO 9001, CMMI, and the Manifesto for Agile Software Development, among others, all include the idea of continuous improvement. Improvement may be small adjustments to one or two life cycle activities or wholesale changes to the life cycle model. Organizations that have moved from plan-driven, sequential models to the highly iterative and incremental approaches favored in Agile Software Development have seen some of the most drastic life cycle changes.

The SDLC is a representation of software development at a given moment in time. The life cycle may evolve over the life of the software product as the developing organization learns.

Leave a Reply