Hani Haham - CEO
Software/System Development Life Cycle (SDLC) in Brief
Practices and methods for developing software have evolved over the decades since the invention of the computer. These methods vary widely in approach, though all share a common goal: to develop a cheap, efficient and effective software as possible.
Software, like all products, starts as an idea. The idea then becomes a document, or perhaps a prototype, depending on the method in use.
Eventually, the software is delivered to the customer. The sequence of steps used by these methods is commonly referred to as the Software Development Life Cycle (SDLC.)
The process of software development is a continues improving cycle. The first release of a software application is rarely “finished.” There are almost always additional features and bug fixes waiting to be designed, developed, and deployed.
Bugs feed back sometimes become as a new feature requests and improvements to existing features. This is why the Software Development Life Cycle is the most general term for software development methods. The steps of the process and their order vary by method. Regardless of method, they typically run in cycles, starting over with each iteration.
The Software development methodology is a plan framework for how to develop software. There are several of methods to measure success in software development. One thing is certain: plan is better than no plan.
Without a plan, the Project managers have no idea how much progress is made towards completion of a project. Developers don’t know what they’re supposed to create. Business doesn’t have a way to decide whether the final product meets their requirements.
A formally defined method for software development in the form of the SDLC achieves a number of benefits: A common vocabulary, Defined communication channels between development teams and stakeholders, Clear roles and responsibilities among the project teams, Clearly-defined inputs and outputs from one step to the next, A deterministic “definition of done” that can be used to confirm whether a step is truly completed.
The Five Software Development Life-Cycle Phases
These steps are (very) roughly the same from one methodology to another. They tend to occur in this order, 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, rapidly-repeating cycle. Waterfall methods tend to take each of these steps in turn. Outputs from one become inputs to the following step.
1. Requirements (By Product Manager and Project Manager)
The requirements phase gathers requirements from business stakeholders and Subject Matter Experts (SMEs.)
The Product Manager writes a Product Requirement Document (PRD), that contains all the product's requirements. It is written in order to explain what the product should do from a user's point-of-view.
This phase also includes aspects of project and product management. such as: project plans, schedules, cost estimations, resource allocation and procurement requirements. Project Managers and Development staff should collaborate with Operations and Security teams to ensure all perspectives are represented.
2. Analysis and Design (and Prototyping)
Once the requirements are understood, software architects and developers can begin to design the software.
The output of this phase in a Waterfall project is usually a Software Requirements Document (SRS) written by the developers which explains in details how the software product should function. In an Agile methods a backlog of tasks to be performed.
3. Software Development (by R&D Teams)
This phase produces the software under development. Depending on the methodology, this phase may be conducted in time-boxed “sprints,” (Agile) or may proceed as a single block of effort (Waterfall.) Regardless of methodology, development teams should produce working software as quickly as possible. Business stakeholders should be engaged regularly, to ensure that their expectations are being met. The output of this phase is testable, functional software.
4. Testing (by QA Teams)
The testing phase of the SDLC is arguably one of the most important. It is impossible to deliver quality software without testing. There is a wide variety of testing necessary to measure quality: Code quality, Functional, Integration, Performance and Security testing.
5. Evaluation and Deployment (By DevOps Teams)
The deployment phase is, ideally, a highly automated 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 process involves some manual approvals.
Software must be monitored constantly to ensure proper operation. Bugs and defects discovered in Production must be reported and responded to, which often feeds work back into the process. Bug fixes may not flow through the entire cycle, however, at least an abbreviated process is necessary to ensure that the fix does not introduce other problems (known as a regression)
For any question or assistant please feel free to contact me.