1

SOFTWARE DEVELOPMENT LIFE-CYCLE [SDLC]

Novatree eSoultions Pvt. Ltd.

4/12/16

Software
Engineering

Few Questions…  Why does it take so long to get software finished?  Why are development costs so high?  Why can’t we find all errors before we give the software to our customers?  Why do we spend so much time and effort maintaining existing programs?  Why do we continue to have difficulty in measuring progress as software is being developed and maintained? 2 .

our job is done.  If I decide to outsource the software project to a third party.  A general statement of objectives is sufficient to begin writing programs—we can fill in the details later.  Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down.Software Myths 3  We already have a book that’s full of standards and procedures for building software.  Once we write the program and get it to work. we can add more programmers and catch up. I can just relax and let that firm build it. Won’t that provide developers with everything they need to know?  If we get behind schedule. .

Stages of Software Development Feasibility Study  Feasibility Study  Requirement Analysis  Design  Coding  Deployment & Testing  Maintenance Maintenance Requirement Analysis Deployment & Testing Design Coding 4 .

Predictive vs Adaptive 5 Predictive:  Predictive method focus on planning the future in details  Predictive team can report exactly what features and tasks are planned for the entire length of the development process  Predictive team have difficulty changing direction. the plan is typically optimized for the original destination and changing direction can require completed work to be started over Adaptive  Adaptive methods focus on adapting quickly to change  When the project requirement change the adapted team also change  An adaptive team can not report exactly what tasks are being done next week  An Example of adaptive methods is Agile .

Software Development Process Traditional Waterfall Iterative Spiral Agile SCRUM Extreme programmin g 6 .

Traditional Software Development Methods  Waterfall  Clean Room  DSDM (Dynamic System Development Method)  Iterative Incremental  RAD (Rapid Application Development)  RUP (Rational Unified Process)  Spiral  V-Model  FDD (Feature Driven Development) 7 .

8 Waterfall Model  Is a sequential design process. Cut once. . often used in software development processes  Originates in the manufacturing and construction industries. highly structured physical environments  The idea behind the waterfall model is Measure Twice.

Waterfall Model Workflow 9 Requirement specification Maintenance Design Construction (Implementation ) Installation Testing & Debugging Integration .

each phase has specific deliverables and a review process. Cons:  No working software is produced until late during the life cycle.  Works well for smaller projects where requirements are very well understood.Waterfall Model Pros:  Simple and easy to understand and use  Easy to manage due to the rigidity of the model .  Poor model for long and ongoing projects. 10 .  Phases are processed and completed one at a time.  Clearly defined stages.  High amounts of risk and uncertainty.  Not a good model for complex and object-oriented projects.

Iterative & Incremental development  Developed in response to the weaknesses of the waterfall model  Starts with initial planning and ends with deployment with the cycle interactions in between  Iterative & incremental development is essential parts of the extreme programming & generally the Agile Development  The project is delivered through cross discipline work from the requirement to the deployment 11 .

Iterative & Incremental development  Requirements of the complete system are clearly defined and understood. some functionalities or requested enhancements may evolve with time.  A new technology is being used and is being learnt by the development team while working on the project. however.  Resources with needed skill set are not available and are planned to be used on contract basis for specific iterations.  There are some high risk features and goals which may change in the future. 12 .  There is a time to the market constraint.  Major requirements must be defined.

 Progress can be measured.  Parallel development can be planned.Iterative development Pros:  Some working functionality can be developed quickly and early in the life cycle.  Results are obtained early and periodically. 13 .  More management attention is required. Cons:  More resources may be required.  Although cost of change is lesser but it is not very suitable for changing requirements.  System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle.

Spiral Model 14  Identification  Design  Construct or Build  Evaluation and Risk Analysis .

15 .  Not suitable for small or low risk projects and could be expensive for small projects.  Large number of intermediate stages requires excessive documentation.  Allows for extensive use of prototypes  Requirements can be captured more accurately.Spiral Model Pros:  Changing requirements can be accommodated.  End of project may not be known early. Cons:  Management is more complex.  Development can be divided into smaller parts and more risky parts can be developed earlier which helps better risk management.  Users see the system early.  Process is complex  Spiral may go indefinitely.

Agile Software Development  What is Agile?  Introduced in 2001by Kent Beck  Group of software development methodologies based on iterative and incremental development  Requirements and solutions evolve through collaboration between self organizing. cross functional teams 16 .

 Enables concurrent development and delivery within an overall planned context.  Little or no planning required  Easy to manage  Gives flexibility to developers 17 .  Good model for environments that change steadily.  Resource requirements are minimum.  Functionality can be developed rapidly and demonstrated.  Minimal rules.Agile Pros  Is a very realistic approach to software development  Promotes teamwork and cross training.  Suitable for fixed or changing requirements  Delivers early partial working solutions. documentation easily employed.

 Transfer of technology to new team members may be quite challenging due to lack of documentation. functionality to be delivered. and adjustments to meet the deadlines.  More risk of sustainability. 18 .  Depends heavily on customer interaction. since there is minimum documentation generated.  An overall plan.  Strict delivery management dictates the scope. team can be driven in the wrong direction.Agile Cons  Not suitable for handling complex dependencies. so if customer is not clear.  There is very high individual dependency. an agile leader and agile PM practice is a must without which it will not work. maintainability and extensibility.

Any changes to be incorporated go through a strict change control management and prioritization.Agile Vs Traditional SDLC Models  Agile is based on the adaptive software development methods where as the traditional SDLC models like waterfall model is based on predictive approach. minimizing the risk of any major failures in future. Predictive methods entirely depend on the requirement analysis and planning done in the beginning of cycle. The agile teams work in close collaboration with each other and are most often located in the same geographical location. There is feature driven development and the team adapts to the changing product requirements dynamically. The product is tested very frequently. through the release iterations.  Agile uses adaptive approach where there is no detailed planning and there is clarity on future tasks only in respect of what features need to be developed.  Customer interaction is the backbone of Agile methodology.  Predictive teams in the traditional SDLC models usually work with detailed planning and have a complete forecast of the exact tasks and features to be delivered in the next few months or during the product life cycle. and open communication with minimum documentation are the typical features of Agile development environment. 19 .