SE

 

SDLC Models in Detail:


1. Waterfall Model:

- This is the basic/classic SDLC model

- The phases happen in a strict linear sequence - requirements, design, implementation, testing, deployment, maintenance

- Each phase must be completed fully before moving to the next phase

- It is like a "waterfall" of progress flowing steadily downwards

- Easy to understand and use, but very rigid and no room for revisions once a phase is over


2. Iterative Waterfall Model: 

- Provides a feedback path to previous phases to allow changes/revisions

- For example, if an issue is found in testing, you can loop back and rework the design

- More flexible than the basic waterfall, but still quite rigid and sequential


3. Incremental Model:

- The product is built and delivered in incremental releases

- For example, an email app may release basic emailing first, then add calendaring, contacts, etc. in later increments  

- Each increment goes through the full SDLC cycles

- Allows faster delivery of core functionality to users

- Users can use and evaluate the early increments


4. Prototyping Model:

- A basic working prototype is built quickly with minimal requirements

- The prototype is reviewed and reworked based on feedback until an acceptable final system is achieved

- Useful when requirements are unclear or likely to change

- Allows user evaluation and feedback from the beginning


5. RAD (Rapid Application Development) Model:

- Uses powerful tools/technologies to build software extremely quickly in 60-90 day "timeboxes"

- Focuses on reusable components and accommodating changing requirements  

- Suitable for projects with modular components and skilled, experienced teams


6. Spiral Model: 

- Combines prototyping and incremental approaches

- Works in multiple spiral cycles of planning, risk analysis, engineering, and evaluation

- The "spiral" represents progressively more complete versions of the software 

- Focused heavily on risk analysis and resolution


7. Agile Models:

- Iterative and incremental approaches are core principles 

- Uses short sprints/iterations to frequently release working increments

- Emphasizes customer involvement, responding to change over rigid plans

- Examples are Scrum, XP, Lean, Crystal


SDLC Stages in Detail:


1. Planning and Requirement Analysis

- Understanding why the software is needed, what it should do, for whom 

- Conducting a feasibility study on whether it can actually be done


2. Defining Requirements

- Taking the high-level requirements and detailing them out fully

- Creating clear, comprehensive documentation like the Software Requirements Specification (SRS)


3. Design and Prototyping

- Deciding on the architecture, components, interfaces of the system

- Building a prototype based on core requirements for evaluation


4. Implementation/Coding 

- The actual programming and production of the working software

- Following coding standards and practices


5. Testing

- Running the developed software through various tests 

- Like unit tests, integration tests, system tests, acceptance tests


6. Deployment

- Delivering the final working software into the production environment for use


7. Maintenance  

- Fixing issues, enhancing features, adapting to changes after deployment


Software Crisis Explanation:


In the 1960s-70s, many software projects started failing due to issues like:


- Going over-budget and missing deadlines 

- Delivered software was unreliable, low-quality and hard to maintain

- Growing gap between software's complexity and developers' ability to build it


The root causes included:


- Inaccurate time/cost estimation upfront

- Lack of proper processes and engineering principles

- Rapidly changing/unclear requirements

- Lack of documentation and communication

- Increasing technical complexity beyond skills


The proposed solution was:


- Treat software development as an engineering discipline 

- Adopt defined processes, specifications, validation and evolution practices

- Use layered models like Waterfall to structure and control development


This aimed to transform the ad-hoc coding efforts into an organized, controlled process.


Software Characteristics Explained:


1) Functionality, Reliability, Efficiency, Usability, Maintainability, Portability

- These are key quality attributes software must possess


2) Software is engineered, not manufactured

- Software is developed and grown over time, unlike physical goods being manufactured


3) Software doesn't "wear out" physically like hardware

- No environmental impacts that degrade hardware 

- But software can deteriorate as requirements change over time


4) Most software is custom-built vs reusable 

- Though software reuse is increasing, most is still custom developed for specific needs


5) Software is flexible but not replaceable

- Features can be changed easily compared to hardwares

- But no "spare parts" - any issues require reworking the software itself


Let me know if any part needs any further explanation!

Comments

Popular posts from this blog

2.16 - 2.20

Synchronization