3SDLC definitionSDLC abbreviation stands for “software development life cycle” SDLC is a structured methodology used in the development of software products and packages. This methodology is used from the conception phase through to the delivery and end of project delivering software product.
5Waterfall SDLC brief description The relationship of each stage to the others can be roughly described as a waterfall, where the outputs from a specific stage serve as the initial inputs for the following stage. During each stage, additional information is gathered or developed, combined with the inputs, and used to produce the stage deliverables. It is important to note that the additional information is restricted in scope; “new ideas” that would take the project in directions not anticipated by the initial set of high-level requirements are not incorporated into the project. Rather, ideas for new capabilities or features that are out-of-scope are preserved for later consideration. The waterfall provides an orderly sequence of development steps and helps ensure the adequacy of documentation and design reviews to ensure the quality, reliability, and maintainability of the developed software. While almost everyone these days disparages the "waterfall methodology" as being needlessly slow and cumbersome, it does illustrate a few sound principles of life cycle development.
6Waterfall pros and cons Easy to understand, easy to useProvides structure to inexperienced staffMilestones are well understoodSets requirements stabilityGood for management control (plan, staff, track)Works well when quality is more important than cost or schedule
7Waterfall pros and cons Waterfall Cons:All requirements must be known upfrontDeliverables created for each phase are considered frozen – inhibits flexibilityCan give a false impression of progressDoes not reflect problem-solving nature of software developmentIntegration is one big bang at the endLittle opportunity for customer to preview the system
9V-Shape SDLC brief description Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins. Testing is emphasized in this model more so than the waterfall model though. The testing procedures are developed early in the life cycle before any coding is done, during each of the phases preceding implementation. Requirements begin the life cycle model just like the waterfall model. Before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering. The high-level design phase focuses on system architecture and design. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together. The low-level design phase is where the actual software components are designed, and unit tests are created in this phase as well. The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.
10V-Shape pros and consV-Shape Pros:Simple and easy to useEach phase has specific deliverablesHigher chance of success over the waterfall model due to the development of test plans early on during the life cycleWorks well for small projects where requirements are easily understoodProject management can track progress by milestones
11V-Shape pros and consV-Shape Cons:Very rigid, like the waterfall modelLittle flexibility and adjusting scope is difficult and expensiveSoftware is developed during the implementation phase, so no early prototypes of the software are producedModel doesn’t provide a clear path for problems found during testing phases
13Spiral SDLC brief description The spiral model starts with an initial pass through a standard waterfall lifecycle, using a subset of the total requirements to develop a robust prototype. After an evaluation period, the cycle is initiated again, adding new functionality and releasing the next prototype. This process continues, with the prototype becoming larger and larger with each iteration. Hence, the “spiral.”The spiral methodology reflects the relationship of tasks with rapid prototyping, increased parallelism, and concurrency in design and build activities. The spiral method should still be planned methodically, with tasks and deliverables identified for each step in the spiral.Iterates cycles of these project phases:Requirements DefinitionRisk AnalysisPrototypingSimulate, benchmarkDesign, implement, testPlan next cycle (if any)
14Spiral pros and consSpiral pros:Strong approval and documentation controlImplementation has priority over functionalityAdditional functionality can be added at a later dateCritical high-risk functions are developed firstThe design does not have to be perfectUsers can be closely tied to all lifecycle stepsEarly and frequent feedback from usersAvoidance of risk is enhanced
15Spiral pros and consSpiral cons:Highly customized limiting of re-usabilityApplied differently for each applicationRisk of not meeting budget or schedulePossibility to end up implemented as the Waterfall frameworkDevelopers must be reassigned during non-development phase activitiesMay be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration
17RUP SDLC brief description RUP is based on a set of building blocks, or content elements, describing what are to be produced, the necessary skills required and the step-by-step explanation describing how specific development goals are achieved. The main building blocks, or content elements, are the following:Roles (who) – A Role defines a set of related skills, competencies, and responsibilities.Work Products (what) – A Work Product represents something resulting from a task, including all the documents and models produced while working through the process.Tasks (how) – A Task describes a unit of work assigned to a Role that provides a meaningful result.Within each iteration, the tasks are categorized into nine disciplines: six "engineering disciplines" (Business Modeling, Requirements, Analysis and Design, Implementation, Test, Deployment) and three supporting disciplines (Configuration and Change Management, Project Management, Environment).
18RUP pros and consRUP pros:Valuable and coherent portions of the system (use cases) are developed, providing business value to usersUsers can easily comprehend the project plan as it is based on things they doDevelopers learn the business while they implement use cases
19RUP pros and consRUP cons:Use cases are not complete definition of requirementsEnd-user is not directly involvedAll use cases aren’t equalRe-use is complicated
20Agile methods Continuum of Development methods Adaptive methods focus on adapting quickly to changing realities. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. An adaptive team can report exactly what tasks are being done next week, but only which features are planned for next month. Predictive methods, in contrast, focus on planning the future in detail. A predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive teams have difficulty changing direction.AdaptivePredictiveContinuum of Development methodsAGILELocationStaff knows
21Agile and other methods comparison Agile home ground:Low criticalitySenior developersRequirements change very oftenSmall number of developersCulture that thrives on chaosPlan-driven home ground:High criticalityJunior developersLow rate of requirements changeLarge number of developersCulture that demands order
22Agile usage Agile techniques are: Used to speed up or bypass one or more life cycle phasesUsually less formal and reduced scopeUsed for time-critical applicationsUsed in organizations that employ disciplined methodsImplementation examples (most popular):ScrumExtreme Programming (XP)Feature Driven Development (FDD)Rapid Application Development (RAD)