What is Software Development Life Cycle?


Once upon a time, software development consisted of a programmer writing code to solve a problem or automate a procedure. Nowadays, systems are so big and complex that teams of architects, analysts, programmers, testes and users must work together to create the millions of lines of custom-written code that drive our enterprises. The System Development Life Cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system.

Software Development Life Cycle or SDLC is a model of a detailed plan on how to create, develop, implement and eventually fold the software. Software Quality activities are conducted throughout the project life cycle to provide objective insight into the maturity and quality of the software.

Software Life Cycle

Software system is huge and complex in nature. It is difficult to carry them without some guidelines. Software passes through different phases having different roles. These phases are part of life cycle of the process. Every software process has its life cycle. For the development of software the software life cycle model is the base model having following purposes:

  1. It helps in organizing, planning, staffing,budget, schedule and managing software project work.
  2. Prescriptive outline for documents of interest for delivery to client.
  3. Basis for determining most appropriate software engineering tools and methodologies to support different life cycle activities.
  4. Framework for analyzing or estimating patterns of resource allocation and consumption during the software life cycle.
  5. Basis for conducting empirical studies to determine what affects software productivity, cost, and overall quality.

Software development life cycle model – history and origin

Software Development Life Cycle is the process of creating or altering systems, and models and methodologies that people use to develop software systems.

What Is a Software Development Life Cycle ?

SDLC is a process by which systems analysts, software engineers, programmers, and end-users build systems. It is a project management tools, used to plan, execute and control systems development projects.

Explicit models of software evolution date back to the earliest projects developing large software systems in the 1950’s and 1960’s. Overall, the apparent purpose of these early software life cycle models was to provide a conceptual scheme for rationally managing the development of software systems. Such a scheme could therefore serve as a basis for planning, organizing, staffing, coordinating, budgeting, and directing software development activities.

Since the 1960’s, many descriptions of the classic software life cycle have appeared and originated the formulation of the software life cycle using the now familiar “waterfall” Model. These classic software life cycle models usually include some version or subset of the following activities.

  1. System Initiation
  2. Requirement Analysis and Specification
  3. Functional Specification or Prototyping
  4. Partition and Selection
  5. Architectural Design and Configuration Specification
  6. Detailed Component Design Specification
  7. Component implementation and Debugging
  8. Software Integration and Testing
  9. Documentation Revision and System Delivery
  10. Deployment and Installation
  11. Training and Use
  12. Software Maintenance

1. System Initiation: Where do systems come from? In most situations, new feasible systems replace or supplement exiting information processing mechanisms whether they were previously automate, or informal.

2. Requirement Analysis and Specification: identifies, the problems a new software system is suppose to solve, its operational capabilities, its desired performance characteristics, and the resource infrastructure needed to support system operation and maintenance.

3. Functional Specification or Prototyping: identifies and potentially formalizes the objects of computation, their attributes and relationships, the operations that transform these objects, the constraints that restrict system behavior, and so forth.

4. Partition and Selection (Build vs. Buy vs. Reuse): given requirements and functional specifications, divide the system into manageable pieces that denote logical subsystems, then determine whether new, existing, or reusable software systems correspond to the needed pieces.

5. Architectural Design and Configuration Specification: defines the interconnection and resource interfaces between system subsystems, components and modules in ways suitable for their detailed design  and overall configuration management.

6. Detailed Component Design Specification: defines the procedural methods through which the data resources within the modules of a component are transformed from required inputs into provided outputs.

7. Component Implementation and Debugging: codifies the preceding specifications into operational source code implementations and validates their basis operation.

8. Software Integration and Testing: affirms and sustains the overall integrity of the software system architectural configuration through verifying the consistency and completeness of implemented modules, verifying the resource interfaces and interconnections against their specifications, and validating the performance of the system and subsystems against their requirements.

9. Documentation Revision and System Delivery: packaging and rationalizing recorded system development descriptions into systematic documents and user guides, all in a form suitable for dissemination and  system support.

10. Deployment and Installation: providing directions for installing the delivered software into the local computing environment, configuring operating systems parameters and user access privileges, and running diagnostic test cases to assure the viability of basic system operation.

11. Training and Use: providing system users with instructional aids and guidance for understanding the system’s capabilities and limits in order to effectively use the system.

12. Software Maintenance: sustaining the useful operation of a system in its host/target environment by providing requested functional enhancements, repairs, performance.

Leave a Reply