Software Development Lifecycle
This is a collection of notes on SDLC. This is a work in progress and will be updated regularly.
Software Development Lifecycle Introduction
Software Development Lifecycle (SDLC), also referred to as the application development life-cycle, is a process for planning, creating, testing, and deploying an Software application.
It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software.
The aim of SDLC is to
- Produce a high-quality software that meets or exceeds customer expectations (MVP, MLP)
- Reaches completion within times and cost estimates.
Importance of SDLC
- Poor collaboration/communication among team members
- Poor (or no) estimation of time to complete project
- Missing or poorly planned features or functionality
- Poor or no prioritization of features
Stages of SDLC
Requirement Analysis Phase
It is performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry.
- Brainstorming
- Market Analysis
- Focus Group
- Interview
- Survey/Questionnaire
Design Phase & Phototype
- High level design
People involved in this phase are Project Manager, Business Analysts, Senior members of the team
- Low level design
UI and UX development
Development Phase
- Acceptance test driven development
- Test driven development
- Behavior driven development
Testing Phase
Deployment and maintenance Phase
SDLC Models
Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high quality softwares.
- Waterfall Model
- Iterative Model
- Spiral Model
- V-Model
- Big Bang Model
- Agile Model
Waterfall Model
The waterfall model is a breakdown of project activities into linear sequential phases, where each phase depends on the deliverables of the previous one and corresponds to a specialisation of tasks.
- System and software requirements: captured in a product requirements document
- Analysis: resulting in models, schema, and business rules. Software specification document the output of the phase.
- Design: resulting in the software architecture. End product will be Design specification document or wirefames
- Coding: the development, proving, and integration of software
- Testing: the systematic discovery and debugging of defects
- Operations: the installation, migration, support, and maintenance of complete systems
Thus the waterfall model maintains that one should move to a phase only when its preceding phase is reviewed and verified.
In common practice, waterfall methodologies result in a project schedule with 20–40% of the time invested for the first two phases, 30–40% of the time to coding, and the rest dedicated to testing and implementation.
Case study
Benefits
- Provides a structured approach
- It places emphasis on documentation (such as requirements documents and design documents) as well as source code
- Time spent early in the software production cycle can reduce costs at later stages
Criticism
- Clients may not know exactly what their requirements are before they see working software and so change their requirements, leading to redesign, redevelopment, and retesting, and increased costs.
Agile
Agile meaning able to move quickly and easily.
Agile software development values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The Manifesto for Agile Software Development is based on twelve principles:[23]
- Customer satisfaction by early and continuous delivery of valuable software.
- Welcome changing requirements, even in late development.
- Deliver working software frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective, and adjusts accordingly
Agile frameworks
- Scrum
Scrum is an agile framework for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies. It is designed for teams of ten or fewer members, who break their work into goals that can be completed within timeboxed iterations, called sprints, no longer than one month and most commonly two weeks. The Scrum Team track progress in 15-minute time-boxed daily meetings, called daily scrums. At the end of the sprint, the team holds sprint review, to demonstrate the work done, and sprint retrospective to continuously improve.