SDLC - OverviewSDLC - Overview •Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high quality softwares. •The SDLC aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates. •SDLC is the acronym of Software Development Life Cycle. •It is also called as Software Development Process.
Slide3•SDLC is a framework defining tasks performed at each step in the software development process. •ISO/IEC 12207 is an international standard for software life-cycle processes. •It aims to be the standard that defines all the tasks required for developing and maintaining software.
Slide6•SDLC is a process followed for a software project, within a software organization. •It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. • The life cycle defines a methodology for improving the quality of software and the overall development process
Slide8•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.
Slide11•The Planning phase is the most crucial step in creating a successful system, during this phase you decide exactly what you want to do and the problems you’re trying to solve, by: •Defining the problems, the objectives and the resources such as personnel and costs. •Studying the ability of proposing alternative solutions after meeting with clients, suppliers, consultants and employees. •Studying how to make your product better than your competitors’. •After analyzing this data you will have three choices: develop a new system, improve the current system or leave the system as it is. 1- System Planning
2- System Analysis2- System Analysis •The end-user’s requirements should be determined and documented, what their expectations are for the system, and how it will perform. • A feasibility study will be made for the project as well, involving determining whether it’s organizationally, economically, socially, technologically feasible. •It’s very important to maintain strong communication level with the clients to make sure you have a clear vision of the finished product and its function.
Slide133- System Design •A general system design can be done with a pen and a piece of paper to determine how the system will look like and how it will function, and then a detailed and expanded system design is produced, and it will meet all functional and technical requirements, logically and physically. •The design phase comes after a good understanding of customer’s requirements, this phase defines the elements of a system, the components, the security level, modules, architecture and the different interfaces and type of data that goes through the system.
4. Software development4. Software development •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.
Slide165. Testing •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 •Unit testing (functional tests) •Integration testing •Performance testing •Security testing •The best way to ensure that tests are run regularly, and never skipped for expediency, is to automate them. Tests can be automated using Continuous Integration tools, like Codeship, for example. The output of the testing phase is functional software, ready for deployment to a production environment.
Slide17•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. •However, even in those cases it is best for the deployment itself to be fully automated in a continuous deployment model. Application 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 phase is the release to Production of working software. 6. Deployment
7. Operations and maintenance7. Operations and maintenance •The operations and maintenance phase is the “end 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 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.)