You are on page 1of 7

Bài tập về nhà tuần 4: Software process models

1. Waterfall model:
a. Concept:
Waterfall model, aka linear-sequential life cycle model, is a system development
life cycle (SDLC) model in which each phase of it must be completed before
begin the next phase and there’s no overlapping in the phases
The waterfall model describes the software development process in a ​linear
sequential​ flow, which means you have to complete the previous phases before
moving onto the next phase.
If you got any problems with the present phase which related to the previous
phase, you have to stop everything and go back to check them, if those problems
didn’t occur in the previous phase, you have to go back to the previous phase of
that phase, keep going until you solved the problems and than you can continue
with the next phase, keep fixing until you reach the present phase.
b. Design:
The following illustration is a representation of the different phases of the
Waterfall Model:

These phases include:


● Requirement analysis​: T ​ he product development team analyzes the
requirements, and fully understands the problems. This is a research
phase that includes no building. The team attempts to ask all the
questions and secure all the answers they need to build the product
requirement.
● System design:​ The software developers design a technical solution to
the problems set out by the product requirements, including scenarios,
layouts and data models. This phase is usually accompanied by
documentation for each requirement, which enables other members of the
team to review it for validation.
● Implementation:​ Once the design is approved, technical implementation
begins. This is often the shortest phase because research and design
have been done in advance.
● Testing:​ Upon completion of full implementation, testing needs to occur
before the product can be released to customers. The software testing
team will use the design documents, personas and user case scenarios
delivered by the product manager in order to create their test cases.
● Deployment​: Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the
market.
● Maintenance:​ There are some issues which come up in the client
environment. To fix those issues, patches are released. Also to enhance
the product some better versions are released. Maintenance is done to
deliver these changes in the customer environment.
c. Application:
Some of the most common use of waterfall model situations are:
● Requirements are very well documented, clear and fixed.
● Product definition is stable.
● Technology is understood and is not dynamic.
● There are no ambiguous requirements.
● Ample resources with required expertise are available to support the
product.
● The project is short.
d. Advantages:
Some major advantages of waterfall model are:
● 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.
● Process and results are well documented.
e. Disadvantages:
Some major disadvantages of waterfall model are:
● No working software is produced until late during the life cycle.
● 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)
2. V-shaped model:
a. Concept:
The V-shaped model is an SDLC model where execution of processes happens
in a sequential manner in a V-shape. It is also known as the ​verification and
validation​ model.
The V-shaped model is literally a waterfall model, or more specific it’s a variant of
the waterfall model. It consists of a testing phase for each corresponding
development stage. This means that for every single phase in the development
cycle, there is a directly associated testing phase. This is a highly-disciplined
model and the next phase starts only after completion of the previous phase. And
just like the waterfall model, the next phase starts only after completion of the
previous phase.
b. Design:

V-shaped model’s phases are:


● Project and Requirements Planning – allocate resources.
● Product Requirements and Specification Analysis – complete
specification of the software system.
● Architecture or High-Level Design – defines how software functions fulfill
the design.
● Detailed Design – develop algorithms for each architectural component
● Coding – transform algorithms into software.
● Unit testing – check that each module acts as expected.
● Integration and Testing – check that modules interconnect correctly.
● System and acceptance testing – check the entire software system in its
environment.
● Production, operation and maintenance – provide for enhancement and
corrections.
c. Application:
V-shaped model application is almost the same as the waterfall model, as both
the models are of sequential type. Requirements have to be very clear before the
project starts, because it is usually expensive to go back and make changes.
Some suitable scenarios to use the V-shaped model are:
● Systems requiring high reliability – hospital patient control applications.
● All requirements are known up-front
● When it can be modified to handle changing requirements beyond
analysis phase
● Solution and technology are known.
● The project is short.
d. Advantages:
The V-shaped model has some advantages such as:
● Emphasize planning for verification and validation of the product in early
stages of product development
● Each deliverable must be testable
● Project management can track progress by milestones
● Easy to use
● Easy to manage because each phase has specific deliverables and
a review process.
e. Disadvantages:
The V-shaped model has some disadvantages such as:
● Does not easily handle concurrent events
● Does not handle iterations or phases
● Does not easily handle dynamic changes in requirements
● Does not contain risk analysis activities
● Very expensive to make changes
● Poor model for long and ongoing projects.
3. Prototype model:
a. Concept:
Prototyping is used to allow the users evaluate developer proposals and try them
out ​before​ implementation. It also helps understand the requirements which are
user specific and may not have been considered by the developer during product
design.
b. Steps:
● Identify basic requirements: ​This step involves understanding the very
basics product requirements especially in terms of user interface.
○ Including input and output info.
○ Details (e.g., security) generally ignored
● Develop an initial prototype: the very basic requirements are showcased
and user interfaces are provided.
○ UI first.
● Review: The prototype developed is then presented to the customer and
the other important stakeholders in the project
○ Customers/end –users review and give feedback
● Revise and enhance the prototype & specs: The feedback and the review
comments are discussed during this stage.
○ Negotiation about scope of contract may be necessary. The
changes accepted are again incorporated in the new Prototype
developed and the cycle repeats until the customer expectations
are met.
c. Applications:
Some of the best uses of prototype model are:
● Most beneficial for systems that will have many interactions with end
users.
● The greater the interaction between the computer and the user, the
greater the benefit of building a quick system for the user to play with
● Especially good for designing good human-computer interfaces.
d. Types:
There are different types of software prototypes used in the industry. Following
are the major software prototyping types used widely:
● Throwaway prototyping: Once the actual requirements are understood,
the prototype is discarded and the actual system is developed with a
much clear understanding of user requirements.
● Evolutionary Prototyping: The evolutionary prototype forms the heart of
the new system and is added to and refined. The goal is to build a very
robust prototype in a structured manner and constantly refine it.
● Incremental prototyping: ​build multiple functional prototypes and then
integrating all the available prototypes to form a complete system.
● Extreme Prototyping:
○ Often used for web applications
○ Development broken down into 3 phases, each based on the
preceding 1:
■ Static prototype consisting of HTML pages.
■ Screens are programmed and fully functional using a
simulated services layer.
■ Services are implemented.
e. Advantages:
● Reduced time and cost.
● Can improve the quality of requirements and specifications provided to
developers
● Early determination of what the user really wants can result in faster and
less expensive software
● Improved/increased user involvement
● User can provide better/more complete feedback and specs
● Misunderstandings/miscommunications revealed
● Final product more likely to satisfy their desired look/feel/performance
f. Disadvantages:
● Insufficient analysis
● User confusion of prototype and finished system
● Developer attachment to prototype
● Excessive development time of the prototype
● Expense of implementing prototyping
4. Spiral model:
a. Concept:
The spiral model was developed to deal with one of the biggest disadvantages of
the waterfall model: the waterfall model is not suitable for big, complex projects.
It’s a combination of different models and also solved some of their flaws.
Spiral = waterfall + prototype + risk analysis
In the spiral model, the product was developed based on incremental
development like a spiral.
b. Design:

The steps of the spiral model includes:


● Determine objectives, alternatives and constraints:
○ Objectives: functionality, performance, hardware/software
interface, critical success factors, etc
○ Alternatives: build, reuse, buy, sub-contract, etc.
○ Constraints: cost, schedule, interface, etc.
● Evaluate alternatives, identify and resolve risks:
○ Study alternatives relative to objectives and constraints
○ Identify risks (lack of experience, new technology, tight schedules,
poor process, etc.
○ Resolve risks (evaluate if money could be lost by continuing
system development
○ This is considered as the most difficult phase of the spiral model
since we can not always identify all the risks that can happened in
the developing process
● Develop next-level product: After identify the core and all the risks, we will
move on to develop that core.
● Plan next phase: Plan the next phase. After finishing developing the core
in the previous phase, we will go back to stage one, begin from the first
phase to final phase, keep repeating until the product is completed.
c. Application:
Some typical uses of the spiral model are:
● When creation of a prototype is appropriate.
● When costs and risk evaluation is important
● For medium to high-risk projects
● Long-term project commitment unwise because of potential changes to
economic priorities
● Users are unsure of their need
● Requirements are complex
● New product line
● Significant changes are expected (research and exploration)
d. Advantages:
● 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
e. Disadvantages:
● Time spent for evaluating risks too large for small or lowrisk 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

You might also like