Basic Interview Questions: Project Management Part -4
Q8. Explain Different Software Development Life Cycles
Ans. SDLC (System Development Life Cycle) is overall process of developing information systems through multistep process systems from investigation of initial requirements through analysis, design, implementation and maintenance.
Now a days Systems have become complex, huge team members are involved, architects, analyst, programmers,
testers, users etc. To manage this number of SDLC models have been created.
Below are the are popular models listed:-
- Waterfall Model.
- Spiral Model.
- Build and Fix model.
- Rapid prototyping Model.
- Incremental Model.
This is the oldest model. It has sequence of stages; output of one stage becomes input of other. The waterfall development model originates in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development.
The first known presentation describing use of similar phases in software engineering was held by Herbert D. Benington at Symposium on advanced programming methods for digital computers on 29 June 1956. This presentation was about the development of software for SAGE. In 1983 the paper was republished with a foreword by Benington pointing out that the process was not in fact performed in a strict top-down fashion, but depended on a prototype.
Following are stages in Waterfall model:-
- System Requirement: – This is initial stage of the project where end user requirements are gathered and documented.
- System Design: – In this stage detail requirements, screen layout, business rules, process diagram, pseudo code and other documentations are prepared.
This is first step in technical phase.
- Implementation: – Depending on the design document actual code is written here.
- Integration and Testing: – All pieces are brought together and tested. Bugs are removed in this phase.
- Acceptance, Installation and Deployment: – This is final stage where software is put in production and runs actual business.
- Maintenance: – This is least glamorous phase which runs forever. Code Changes, correction, addition etc are done in this phase.
Waterfall is suited for low risk in areas of User Interface and performance requirements, but high risk in budget and schedule predictability and control. Waterfall assumes that all requirements can be specified in advance. But unfortunately requirement grows and changes through various stages, so it needs feedback from one stage to other.
- Easy to understand, easy to use
- Provides structure to inexperienced staff
- Milestones are well understood
- Sets requirements stability
- Good for management control (plan, staff, track)
- Works well when quality is more important than cost or schedule
- All requirements must be known upfront
- Deliverables created for each phase are considered frozen – inhibits flexibility
- Can give a false impression of progress
- Does not reflect problem-solving nature of software development – iterations of phases
- Integration is one big bang at the end
- Little opportunity for customer to preview the system (until it may be too late)
Spiral Model removes the drawback of waterfall model, by providing emphasis to go back and reiterate earlier stages a number of times as project progresses. On broader level
it’s a series of short waterfall cycles, each producing an early prototype representing a
part of entire project. It also helps demonstrate a Proof of Concept at early software life
Spiral Model Strengths:
- Provides early indication of insurmountable risks, without much cost
- Users see the system early because of rapid prototyping tools
- Critical high-risk functions are developed first
- The design does not have to be perfect
- Users can be closely tied to all lifecycle steps
- Early and frequent feedback from users
- Cumulative costs assessed frequently
Spiral Model Weaknesses:
- Time spent for evaluating risks too large for small or low-risk projects
- Time spent planning, resetting objectives, doing risk analysis and prototyping may be excessive
- The model is complex
- Risk assessment expertise is required
- Spiral may continue indefinitely
- Developers must be reassigned during non-development phase activities
- May be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration
Build and Fix Model
This is the most way free-lancers work Write some code and keep modifying it until the customer is happy. This approach can be quite dangerous and risky.
Rapid Prototyping Model
This model is also called as Rapid Application Development. The initial emphasis is on creating prototype that looks and acts like the desired product. Prototype can be created by using tools which is different from those used for final product. Once the prototype is approved, its discarded and real software development is started from scratch. The problem with this model is that sometimes the prototype moves ahead to become the final live
product which can be bad from design point of view. It’s a effective model but can have higher costing than other models as you require programmers during the initial phase of the software cycle.
In this model we divide products in to builds, where section of product are created and
tested separately. Here errors are found in requirement phase itself, user feedback is taken
for each stage and code is tested after it’s written.