What is a Life-Cycle Model?
A series of steps (or phases), to be performed while a software product is developed and maintained.
Deliverables
- Phases have their own project deliverables
A project deliverable can be:
- a document
- a product
- a result
- equipment
- software
- an approval
Example: Deliverables for Website Development
- Customer requirement specification
- web design proposal
- website content
- user training session
- finished project
Example: Deliverables for Software Projects
- requirement specification (document)
- UI
- Backend development
- Set up of Test Environment
- Set up of Production Environment
- Data migration
Code and Fix Life Cycle Model
Developers implement the product without requirements or specifications nor any attempt at design. They throw code together and rework as many times as necessary
- Highly problematic
- Good for programming-in-the-small
- Bad for programming-in-the-large
Waterfall Life Cycle Model
Series of phases where no phase is complete until:
- documentation for that phase has been completed
- products of that phase have been approved by the QA team Necessity that testing is complete during every phase
Rapid Prototyping Life Cycle Model
Rapid Prototype - a working model that is functionally equivalent to a subset of the product Starts off by building a prototype and letting the client/future users test and interact with for feedback until they are satisfied After you know the client it satisfied, you begin constructing the specification documents
Strength:
- development of product is essentially linear
- feedback loops seen in waterfall cycle are less likely to be used
- clients have a better understanding of the product thatn they would reading through documents they may not understand
Essential aspect
- Rapid prototyping is constructed as fast as possible (Rapid)
- internal structure of prototype is not relevant
Agile Life Cycle Mode
approaches development requirements and solutions through the collaboration of self-organizing and cross-functional teams. In agile you break product development work into small increments that minimize the amount of up-front planning and design
Sprint
- short time frame (1 week, 2 week, etc.)
- At end of every sprint, a working product is presented to stakeholders Agile is good because it minimizes overall risk and allows the product to adapt to changes quickly. Note: multiple sprints may be required to release a product or new features
**Advocates: **
- adaptive planning
- evolutionary deployment
- early delivery
- continual improvement
Cross-function team Agile involves a cross-functional team that works in all functions like planning, analysis, design, developer, unit testing, etc. There should also always be a customer representative where this person is agreed by stakeholders to act on their behalf and make a personal commitment to being available for developers to answer questions throughout the sprint. At the end of each sprint, stakeholders and customer representative get together to review progress and re-evaluate priorities with a view to optimizing the ROI and ensuring alignment with customer needs and company goals.
Daily Stand-Up Common activity in Agile is the daily stand-up which is a brief session where team members report to each other explaining what they did the previous day, what they intend to do today, and any roadblocks that may have occurred or see in the future.
***Advantages: ***
- adaptable to fast changing requirements
- delivery of working software frequently
- close daily cooperation between business personnel and software engineers
Disadvantages:
- Demands time and energy due to constant interaction between devs and customers
- Difficult to estimate cost and schedule