What is SDLC model?
A framework containing the process, activities and the tasks involved in the development, operation and maintenance of a software project spanning the life of the system from the definition of its requirements to the termination of its use.
Types of SDLC Models.
- Waterfall model
- Spiral Model
- Prototype Model
- Rapid Application development Model
- Iterative and incremental development model.
- Agile Model.
- WaterFall Model
Also known as ‘classic life cycle model’/’linear sequential model’
This model suggests a systematic and sequential approach to software development that begins at requirement analysis and progresses through all life cycle phases sequentially.
- Development activities carried out sequentially
- Review and approval of each phase outputs (Deliverables)
- Model does not permit going back and forth.
- If any defects found, go back to the originating phase and start traversing sequentially all over again.
Suitable for projects where
- Requirements are clearly defined.
- Small and medium term durations
- Familiarity with the domain and development environments.
- Spiral Model
- In a spiral model, software is developed in series of incremental releases
- Suitable for large projects with multi-location implementation.
- Each spiral consists of a deliverable product
- Customer can start using the system after every spiral
- Feedback of each spiral is incorporated in the next spiral
- Each spiral consists of a waterfall model
- Useful for large projects
- Customer requirements change over a period
- Early availability of usable system
- Prototype Model.
- Identify basic requirement. A prototype is developed based on the initial understanding of the customer requirements.
- Develop initial prototype—the initial prototype is developed that includes only user interfaces
- Review—the customers, including end-users, examine the prototype and provide feedback on additions and changes.
- Revise and enhance the prototype—using the feedback both the specifications and the prototype can be improved.
- Rapid Application Development Model.
- RAD enables creation of fully functional software within a very short time.
- If the requirements are well understood and defines, and the project scopes is constraint, the RAD process enables a development team to create a fully functional system within very short time period.
- Iterative and Incremental Development Model
- The basic idea behind iterative enhancement is to develop software system incrementally.
- At each iteration; design modifications are made along with adding new functional capabilities.
- In an incremental development, the system is developed in different stages, with each stage consisting of requirements design, development and test phases. In each stage, new functionality is added.
- This type of development allows the user to see a functional product very quickly and allows the user to impact what changes are included in subsequent releases.
- Agile Model
- In agile model, project is divided into various Sprints.
- Each sprint contains highest priority requirements
- A time period for sprint is typically 2—4weeks.
- In agile model, daily scrum meetings with team to share status and potential issues.
- Each sprint is ‘Release’ to customers
- Used for time-critical applications.
- 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 Agile Manifesto is based on twelve principles.
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered 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 principal 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
- Self-organizing teams
- Regular adaptation to changing circumstances
Software engineering is technological & Managerial. Both disciplines concerned on development & maintenance of software projects & products, on-time & within cost estimates.
There are 3 important factors in software development.
Developing a quality software with budget & within cycle time
One of the important characteristic of software engineering is ‘Reusability’.
Advantages of Reusability
- Productivity is increased.
- Project development & testing time is reduced—budget is saved (within budget/estimated costs
- A sequence of steps performed for a given purpose
- A set of activities, methods & transformations; practices that people use to develop & maintain a system.
- Commitments are missed.
- Late delivery
- Last minute Crunches
- Quality Problems (of process)
- Too much rework
- Functions do not work correctly
- Customer complaints after delivery
- People frustrated (End Users)
- Early defect remedy (verification)
- Reduced rework & rejections
- Control of cost
Process: A process is a set of practices performed to achieve a given purpose. It may include tools, methods, materials and/or people.
The quality of a product is largely determined by the quality of the process that is used to develop and maintain it.
What is a process model?
A model is a structural collection of practices that describe characteristics of effective process.
SEI—Software engineering institute at Carnegie Mellon University initiated by the US-Department of Defence to help improve software development process.
CMMI—CAPABILITY MATURITY MODEL INTEGRATION.
CMM—the capability maturity model for software has been retired & CMMI replaces it and it is developed by SEI. It’s a model of 5 levels of process ‘maturity’ that determines effectiveness in delivering quality software.
Organisations can receive CMMI ratings by undergoing assessments by qualified auditors.
CMMI for Systems Engineering & Software Engineering
- Quantitatively managed—quantification
- Optimizing—process improvement
- Structure of the model
- Maturity levels, common features
- Understanding the model
- Using the model
- Managed—Basic Project management
- Requirements Management
- Project Planning (PMP)
- Supplier Agreement Management
- Measurement & Analysis
- Process & Product quality assurance (Audits)
- Configuration management (VSS/SVN)
- Defined—Process Standardization
- Requirement development
- Technical solution
- Product integration
- Organizational process focus
- Organizational process definition
- Integrated project management
- Integrated supplier management
- Organizational training
- Risk management
- Quantitatively Managed—Quantitative Management
- Organizational process performance
- Quantitative project management.
In Level 4
Metrics are used to track productivity, process and products. Project performance is predictable and quality is consistently high.
- Optimizing—Continuous Process Improvement.
- Organizational innovation & deployment (OID)
Role of SEPG—Software Engineering Process Group.
- Does organizational process improvement planning & monitoring.
- Oversees process definition
- QMS maintenance.
- Facilitating deployment of process/technology innovations
Role of SQA
- Facilitating project quality planning
- Process consulting to projects.