The Software Development Life Bicycle (SDLC) is a terminology used to explain how software is delivered to a customer in a series if steps. These steps take software from the ideation phase to delivery.

Nosotros've broken downwardly everything yous need understand the SDLC from a high level, including:

  1. History of the SDLC
  2. What is the SDLC, and why did it evolve?
  3. How does the SDLC work?
  4. Benefits of the SDLC
  5. The seven phases of the SDLC
  6. Seven phases of the SDLC infographic
  7. Popular SDLC models
  8. SDLC best practices
  9. SDLC direction systems

History of the SDLC

The profession of "software developer" has existed since the first computers, and their operators, equally far back as the days of ENIAC and vacuum tubes. Practices and methods for developing software have evolved over the decades since the invention of the computer.

Those methods have adapted to the country of the art in computer hardware, development tools, and modernistic thinking most the organizational management of software development teams. With this progress, new methods of software evolution take grown out of private and public software evolution efforts around the world.

These methods vary widely in approach, however they share a common goal: to develop software as cheaply, efficiently, and effectively equally possible.

What is the SDLC?

Software is a circuitous product that is adult and delivered through a series of steps. That is the one matter all the various methods accept in common: ane way or some other, software, similar all products, starts equally an idea. The thought then becomes a certificate, or peradventure a epitome, depending on the method in use.

Whether a document, diagram, or working software, the antiquity created in one step becomes the input to the next footstep. Eventually, the software is delivered to the customer. The sequence of steps used by these methods is commonly referred to as the Software Development Lifecycle (SDLC.)

How does the SDLC work?

The procedure of software development is a never-ending cycle. The first release of a software awarding is rarely "finished." In that location are almost always additional features and bug fixes waiting to be designed, developed, and deployed.

Reports from error monitoring software about usability and bugs feed back into the procedure of software development, and become new feature requests and improvements to existing features. This is why the Software Development Life Bike is the most general term for software development methods. The steps of the procedure and their order vary by method. Regardless of method, they typically run in cycles, starting over with each iteration.

Benefits of the SDLC

"If you neglect to plan, you lot are planning to neglect" - Benjamin Franklin

It's very difficult to carry out a complex, team effort such equally software evolution without some kind of plan. Each software development methodology (several will be detailed beneath) is a programme framework for how to develop software. At that place is much argue about which method is best overall, which is best suited to a detail type of software, and how to measure success in software development. One affair, even so, is sure: any plan is better than no program.

Without some kind of structured plan, software development teams tend to devolve into a "herd of cats." Developers don't know what they're supposed to create. Projection managers have no idea how much progress is made towards completion of a project. Without a plan, the business doesn't fifty-fifty have a way to make up one's mind whether the final production meets their requirements.

A formally defined method for software development in the form of the SDLC achieves a number of benefits:

  • A common vocabulary for each step
  • Defined advice channels between development teams and stakeholders
  • Articulate roles and responsibilities among developers, designers, business organisation analysts, and project managers
  • Clearly-defined inputs and outputs from one step to the next
  • A deterministic "definition of done" that tin be used to confirm whether a step is truly complete

The Vii Phases of the SDLC

Click here to spring to the seven Phases of the SDLC infographic.

These steps are (very) roughly the same from one methodology to another. They tend to occur in this gild, though they can also be mixed together, such that several steps occur in parallel.

As we'll discuss later, Agile methods tend to "wind together" all of these steps into a tight, speedily-repeating wheel. Waterfall methods tend to take each of these steps in turn. Outputs from one get inputs to the post-obit step.

ane. Planning

The planning phase involves aspects of project and production management. This may include:

  • Resource allocation (both human and materials)
  • Capacity planning
  • Project scheduling
  • Toll estimation
  • Provisioning

The outputs of the planning phase include: project plans, schedules, cost estimations, and procurement requirements. Ideally, Project Managers and Development staff collaborate with Operations and Security teams to ensure all perspectives are represented.

2. Requirements

The business must communicate with Information technology teams to convey their requirements for new development and enhancement. The requirements phase gathers these requirements from business stakeholders and Subject Affair Experts (SMEs.)

Architects, Development teams, and Production Managers work with the SMEs to certificate the business processes that need to be automated through software. The output of this phase in a Waterfall projection is normally a document that lists these requirements. Agile methods, by contrast, may produce a backlog of tasks to be performed.

3. Blueprint and prototyping

Once the requirements are understood, software architects and developers can brainstorm to pattern the software. The blueprint process uses established patterns for application architecture and software development. Architects may utilise an architecture framework such every bit TOGAF to compose an application from existing components, promoting reuse and standardization.

Developers use proven Pattern Patterns to solve algorithmic issues in a consistent manner. This phase may also include some rapid prototyping, too known as a spike, to compare solutions to notice the best fit. The output of this phase includes:

  • Design documents that list the patterns and components selected for the project
  • Code produced past spikes, used equally a starting point for evolution

four. Software evolution

This phase produces the software under development. Depending on the methodology, this phase may be conducted in fourth dimension-boxed "sprints," (Agile) or may proceed equally a single block of attempt (Waterfall.) Regardless of methodology, evolution teams should produce working software as chop-chop as possible. Business stakeholders should be engaged regularly, to ensure that their expectations are existence met. The output of this stage is testable, functional software.

5. Testing

The testing stage of the SDLC is arguably one of the most important. Information technology is incommunicable to evangelize quality software without testing. At that place is a broad diverseness of testing necessary to measure out quality:

  • Code quality
  • Unit of measurement testing (functional tests)
  • Integration testing
  • Functioning testing
  • Security testing

The best mode to ensure that tests are run regularly, and never skipped for expediency, is to automate them. Tests can exist automated using Continuous Integration tools, like Codeship, for case. The output of the testing phase is functional software, fix for deployment to a production environment.

6. Deployment

The deployment phase is, ideally, a highly automatic phase. In high-maturity enterprises, this phase is almost invisible; software is deployed the instant it is ready. Enterprises with lower maturity, or in some highly regulated industries, the procedure involves some manual approvals. However, even in those cases it is best for the deployment itself to be fully automatic in a continuous deployment model. Awarding Release Automation (ARA) tools are used in medium and large-size enterprises to automate the deployment of applications to Production environments. ARA systems are usually integrated with Continuous Integration tools. The output of this stage is the release to Production of working software.

vii. Operations and maintenance

The operations and maintenance phase is the "terminate of the beginning," so to speak. The Software Development Life Cycle doesn't end here. Software must be monitored constantly to ensure proper operation. Bugs and defects discovered in Product must be reported and responded to, which often feeds work back into the procedure. Bug fixes may not flow through the entire cycle, however, at least an abbreviated procedure is necessary to ensure that the fix does not introduce other problems (known equally a regression.)

Software Development Life Cycle infographic

software development lifecycle infographic Employ this infographic on your weblog mail service

The two best-known methodologies within the SDLC are Waterfall and Agile. Below is a brief explanation and how they chronicle to the SDLC.

Waterfall

Software Development lifecycle waterfall

The Waterfall method of software evolution follows a rigid, predetermined path through a fix of phases. This method was adapted from traditional engineering. Ironically, the paper credited as the origin of the Waterfall method, describes it equally existence fundamentally flawed. The method that is known today as "Waterfall" was mistakenly derived from a misunderstanding of this original work. Despite that fact, Waterfall became a very common, even standard methodology for large projects around the earth.

Waterfall methodology begins with long planning and design phases. Once developed, the software and so goes through phases of testing, and is finally deployed for use. Waterfall is considered by many to be too rigid to adapt to irresolute requirements. It does not support feedback throughout the procedure, leading to the implementation of requirements that may accept changed during the development effort. This weakness in Waterfall led to the development of more flexible methodologies, such equally Active.

Agile

Software Development Lifecycle Agile Manifesto

The Manifesto for Active Software Development was drafted and signed by a group of software developers in 2001. Reading the manifesto, you lot can see clearly the contrast between Waterfall, then the de-facto standard for evolution methods, and Agile, the newer method.

The Manifesto addresses central problems with Waterfall that led to challenges in software delivery. Where Waterfall tends to be a "one-way road," Active is a more flexible framework that allows for uncertainty. Active emphasizes teamwork, prototyping, and feedback loops that can change the direction of the evolution effort in response to irresolute requirements.

Several variants of Active have emerged since the signing of the Manifesto. Scrum defines specific roles and events, known as ceremonies, as part of its do. Kanban is simpler, with fewer prescriptions and more flexibility. Agile teams often combine these together to adapt a bespoke process that fits them best.

SDLC Practices

Waterfall is still used by many companies around the world, yet, Agile is rapidly gaining footing. Regardless of the method used, at that place are practices that reduce risk and increase the chances of success.

Source control

The importance of a cardinal source control repository cannot be overstated. Development teams that practise not use source control are taking risks, both with the code, and their process. Using source control reduces risk past ensuring that work (code) is gathered together in a unmarried place, on a regular basis. If a developer workstation or file server fails, the central repository saves the day. Modern Source control systems also support Continuous Integration.

Continuous integration

The purpose of Continuous Integration (CI) is to go on the software in a functional state. Prior to the common utilise of CI, development teams would write thousands of lines of code, so try to integrate them. This integrating that much work all at once is tiresome, painful, and decumbent to error. CI is an automation that builds software every time the code changes. If there is a problem, the CI system alerts the developers. Following proper CI practices, no further work is done until the build is successful. This prevents errors and defects from progressing into software that should exist as bug-free every bit possible.

SDLC Direction systems

Large, complex software development efforts tin can be unwieldy and difficult to track. An entire class of software systems has grown around this problem: Awarding Life Bike Management. The larger the effort, the more than indispensable these systems become. They offering features in work management, problems tracking, and analytics to assist in determination making.

Conclusion

All software begins every bit a concept, and flows through a serial of phases until a release is developed and deployed. The Software Evolution Life Cycle of an application or system continues, with updates and new features, until the day it is decommissioned or replaced. Several methods for software development have evolved over the decades.

Waterfall methods are still common, though Agile is chop-chop overtaking it in companies large and small. Whichever method you choose, use the right tools for the job. Software is hard to commitment reliably without them. At that place is no perfect method, but it's far better to utilise some method than none.

Related links:

Software intelligence

Software development tools

Solving software errors