software process models
A process model provides
guidance for both developers & managers.
Which model to use depends on the size & complexity of the project.
the waterfall model,
parallel development, two types of prototyping, Evolutionary throwaway.
We’re going to study the agile development & the spiral model.
Waterfall model
waterfall model, which is a linear model, which means a sequence of phases without feedback. As you can see in this figure, this model phase should be completely finished before starting the next phase.
This model places a lot of
effort on analysis & design. It produces many document, it requires a rigorous planning of each phase. With this model, the software is delivered to
the customer only after its completion. What are the advantages of using the waterfall model? Well defined phases help in planning and monitoring.
Bc all the development
activities are planned
precisely & the progress
is measured against the plan, the problem requirements are
identified long before implementation begins.
Bc this model spends a lot of effort on requirement analysis, conflict between parties or stakeholders are resolved at early stages.
We have several disadvantages of the waterfall model. The rigid sequence of phases is rare in real life, which means this model does not
fit the real word
scenario of software development. The model does not consider
incorrect requirements since there are no feedback between phases. This model works well when
requirements are well understood & does not change. The customer may wait a long time before seeing a program. Also, this model requires a comprehensive planning
from the early stage, which can be difficult in the real world. This model generates many documents, can be important to understand the software behavior,
but too much documentation may waste the developer time,
especially when some documents are hardly
used to fix the issue of the waterfall model
Modified waterfall model
to fix the issue of the waterfall model, the modified waterfall model was introduced rather than being a rigid model. The new model incorporates
feedback between phases.
Backtracking is needed bc of errors discovered
during the development process. We reduce the possibility of errors in the requirement we include in the modified waterfall model two task, the software validation. & the software verification
validation checks if the program meets the requirements as stated in the requirement specification document.
Here we are checking if
we are developing the right software. However, the verification task checks if
the producer document
satisfy the stated requirements. Here we are checking if we are developing the software in the right way
Parallel development
parallel development. How does it work? Once the software architecture is built, the rest of the development is divided into several sub projects. Each sub project is designed,
implemented, and tested independently. All the projects are then
composed at the end to obtain the final software as
depicted in the figure of the next slide. What are the pros and cons of this model? Since subjects
are developed at the same time, we will definitely improve the timeliness of the development process.
We have seen that meeting
the deadline was a critical issue in software management.
However, the subject
are not completely independent. Some design decision made in one project can affect the other project. This may cause problems when sub projects are composed.
To fix this issue, the developers need to
meet frequently during the development.
Prototyping
We have two types of prototyping, evolutionary prototyping, and throw away prototyping. The first type refers to an incremental software development, however.
The second type can be used as a tool for the requirement analysis to
better understand the problem requirements.
The difference between the two types is evolutionary prototype evolves
into the final software
by successive refinement of the prototypes. However, a throwaway prototype
does not evolve into a complete software.
It is thrown away with the evolutionary prototyping,
we first develop the initial prototype based on a subset of requirements that are well understood.
Then we evolve the prototypes as new requirements are added.
The new subset of
requirement is called an increment. For each increment, we improve the previous version with
a subset of well defined requirement and develop a new version. The increments are shown to
customers and users as they are developed.
This model support
a continuous validation from the customer.
The throwaway prototyping is used to understand the problem requirements and
develop a much better
requirements specification document more precisely here. Throw away prototyping is used to get
clarity regarding vague and poorly defined requirements. To this end, we develop a prototype to assess those requirements and check how the application will look like and how it will behave.
Usually, it’s a good idea to use a programming language like Polo to build the prototype much faster.
The customer users can
then provide feedback on the prototype. The prototype is used temporarily and provide enough feedback to the developers on the requirement, as you can see in this figure. First we conduct the software feasibility study. Then in the analysis phase, we identify those poorly defined requirements.
We analyze them and specify them. We design a solution to those requirements will be the prototype, and then we evaluate the behavior of the prototype. Once those requirements are very well understood, we threw away the prototype. And then we continue with the analysis.
Design phase, implementation and testing phase. What are the advantages of prototyping?
It allows detecting errors in
the requirement early in the process, since we are building a prototype to evaluate them. Second, since prototypes are
provided to the customer
early in the process, this model enables early and continuous validation
from the customer side.
This model also allows
an extensive involvement of the end users. Users provide feedback on the prototype before a large investment is made to develop a wrong system.
This will increase the chance of acceptance
of the system from the
customer and end users.
Planning is limited to get the project started. What are the disadvantages of prototyping? Documentation is cut back because the focus is on developing prototypes.
With this model, performance can suffer as the focus is more on the system functionality and less on software qualities.
Spiral
cyclic not linear.
It is also called the risk driven model bc in each cycle we identify high risk problems related to the project & eliminate those problems or those risk via prototyping. The spiral model is based on risk analysis, which consists of identifying possible risk that may cause the project to go beyond deadline or over the budget. Here I included two possible risks
that are very well known,
poorly understood requirement due to their complexity. & the second risk is changing requirement. One way to solve the risks is to develop
a prototype to reduce or eliminate those risk. eg, if the user interface is seen as the possible risk for the project, then we develop a prototype for it. The spiral model is based on four cycles. In the first cycle, we
conduct the risk analysis
prototyping, requirement
elicitation planning. In the second cycle, we again conduct the risk analysis
prototyping for the requirement elicitation.
We perform the requirement specification,
then planning. In the third cycle, again we conduct
the risk analysis prototyping from the requirement specification.
We perform the design &,
develop the system test plan. In the first cycle, we conduct again the risk analysis prototyping and the reminder of the waterfall model as you can see here. In the inner cycles, we perform risk analysis and prototyping.
In the outer cycle, the
classical development process. What are the benefits of the spiral model? Early risk elimination, bc a prototype is produced early in the process. This model responds very well to changing requirement.
Indeed, if changing requirement is an identified risk for the project, the model is able to manage it via phototyping, early user involvement by showing them prototypes. This model is intended for large or complicated project.
Also, when we are developing new product because there is a risk to be rejected from the market, the disadvantages.
Examining the risk of a project requires high expertise. As you can see, the life cycle of this model is complex. We can view the spiral model as a meta model because it can accommodate the three other models regarding the waterfall model. If the problem is to obtain a robust documentation of the project, we just need to follow the spiral once for prototyping, if the requirement represent the highest risk, we follow the spiral a few times until
the problem be solved For evolutionary, if we are developing a software incrementally, then we follow the spiral a number of times, once for each increment.
Agile Development Model
based on the following principles. The software is deployed to the customer in small parts. The model consists of several mini projects. This model should satisfy the customer via
frequent delivery of the software in terms of weeks instead of months. Here the mini projects are of small sizes. The working software or the program is used to measure the progress of the development. Lastly, this model is usually used for
handling changing requirement. Two other principles are the customer and developer should work together closely using
face to face communication. We need to provide individuals with
adequate environment and support. This model is suitable for large projects where each project split into mini projects. We have two common Agile method,
Extreme Programming, and Scrum. What are the advantages of the Agile Model? The model responds to changes even late in the process.
Changes are handled.
Because of the iterations,
developers can leave some decisions for later until more information are available. We have high customer interaction,
importance of stakeholders and their interactions later.
We see in class that the Agile is more successful than the waterfall model.
What are the disadvantages
of the Agile Model? It is difficult to assess the effort that is required at the beginning of the process
because we are focusing
on small projects at a time
and we don’t see the whole picture, which means there is a lack of focus on the overall software development. There is a limited planning to start
the process opposed to the waterfall model. There is a lack of formal documentation and this can lead to misinterpretation among the stakeholders. There is too much testing done by the customer, which may slow down the process.