Unit Ii Project Life Cycle and Effort Estimation: Waterfall Model
Unit Ii Project Life Cycle and Effort Estimation: Waterfall Model
Unit Ii Project Life Cycle and Effort Estimation: Waterfall Model
Software process and Process Models – Choice of Process models - mental delivery – Rapid Application
development – Agile methods – Extreme Programming – SCRUM – Managing interactive processes –
Basics of Software estimation – Effort and Cost estimation techniques
– COSMIC Full function points - COCOMO II A Parametric Productivity Model - Staffing Pattern
Waterfall model:
Waterfall Model is a design process that is used in software development.
It is a linear sequential model that is most effective when the problem statement is well defined and
highly structured and all the requirements are known before the commencement of the project.
All the essential activities that comprise the software development process are listed in a sequential
manner.
Development of software thus happens from one phase to another through a series of non-
overlapping phases.
Also known as one-shot or once-through model.
Managers can review project progress to see whether the business case for the project is still
valid.This is sometimes referred to as the stage-gate model.
Requirement Analysis & Definition:
All requirements of the system which has to be developed are collected in this step.
Like in other process models requirements are split up in functional requirements and constraints
which the system has to fulfil.
Requirements have to be collected by analysing the needs of the end user(s) and checking them for
validity and the possibility to implement them.
The aim is to generate a Requirements Specification Document which is used as an input for the next
phase of the model.
System Design:
V - Model is an extension of the waterfall model and is based on association 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 next phase starts only after completion of the previous phase
Spiral model:
Extends waterfall model by adding iteration to explore/manage risk
Project risk is a moving target.
Each loop of the spiral is divided into four quadrants,indicating four stages in each phase.
In the first stage of a phase,one or more features of the product are analysed
Those features are identified and resolved through prototyping.
In the third stage identified features are implemented using waterfall model.
In the fourth and final stage,the developed increment is reviewed by the customer .
In 1988 Boehm developed the spiral model as an iterative model which includes risk analysis and risk
management.
Key idea: on each iteration identify and solve the sub-problems with the highest risk.
Advantages
1. Realism: the model accurately reflects the iterative nature of software development on projects with
unclear requirements
2. Flexible: incoporates the advantages of the waterfall and evolutionary methods
3. Comprehensive model decreases risk
4. Good project visibility.
Disadvantages
1. Needs technical expertise in risk analysis and risk management to work well.
2. Model is poorly understood by nontechnical management, hence not so widely used
3. Complicated model, needs competent professional management. High administrative overhead.
Incremental Delivery:
The incremental build model is a method of software development where the product is designed,
implemented and tested incrementally (a little more is added each time) until the product is finished.
It involves both development and maintenance. The product is defined as finished when it satisfies
all of its requirements. This model combines the elements of the waterfall model with the iterative
philosophy of prototyping.
The product is decomposed into a number of components, each of which is designed and built
separately (termed as builds). Each component is delivered to the client when it is complete. This
allows partial utilization of the product and avoids a long development time. It also avoids a large
initial capital outlay and subsequent long waiting period. This model of development also helps ease
the traumatic effect of introducing a completely new system all at once.
The incremental model applies the waterfall model incrementally.[1]
The series of releases is referred to as “increments”, with each increment providing more
functionality to the customers. After the first increment, a core product is delivered, which can
already be used by the customer. Based on customer feedback, a plan is developed for the next
increments, and modifications are made accordingly. This process continues, with increments being
delivered until the complete product is delivered. The incremental philosophy is also used in the
agile process model (see agile modeling).[1]
The Incremental model can be applied to DevOps. In DevOps it centers around the idea of
minimizing risk and cost of a DevOps adoption whilst building the necessary in-house skillset and
momentum.
Advantages
1. After each iteration, regression testing should be conducted. During this testing, faulty elements of
the software can be quickly identified because few changes are made within any single iteration.
2. It is generally easier to test and debug than other methods of software development because
relatively smaller changes are made during each iteration. This allows for more targeted and
rigorous testing of each element within the overall product.
3. Customer can respond to features and review the product for any needed or useful changes.
4. Initial product delivery is faster and costs less.
Disadvantages
Models of Prototyping
There are two main models for prototypes:
The throwaway model is designed to be thrown away once the review process has been completed. It
is just a look at what the end product may look like, and it's typically not well defined and may only
have a few of the publisher's requirements mapped out.
The evolutionary model for prototyping is more complete and is incorporated into the final product.
The revisions in step four are made directly to the prototype in order to get it to the final stage.
Rapid Application development:
o Rapid Application Development model relies on prototyping and rapid cycles of
iterative development to speed up development and elicit early feedback from
business users.
o After each iteration, developers can refine and validate the features with
stakeholders.
o RAD model is also characterized by reiterative user testing and the re-use of software
components. Hence, RAD has been instrumental in reducing the friction points in
delivering successful enterprise applications.
o WaveMaker makes use of the RAD model to provide a Rapid Application
Development platform to create web and mobile applications.
o The following diagram depicts WaveMaker RAD platform architecture, based on the
MVC (Model-View-Controller) pattern. Open standards, easy customization and
rapid prototyping are central to the platform.
requirements and analysis (1.5 months)
20% of their time on design (2 months)
40% on coding (4 months) and unit testing
20% on System and Integration testing (2 months).
At the end of this cycle, the project may also have 2 weeks of User Acceptance testing
by marketing teams.
In this approach, the customer does not get to see the end product until the end of the
project, when it becomes too late to make significant changes.
Agile development methodology –
o In the Agile methodology, each project is broken up into several „Iterations‟.
o All Iterations should be of the same time duration (between 2 to 8 weeks).
o At the end of each iteration, a working product should be delivered.
o In simple terms, in the Agile approach the project will be broken up into 10 releases
(assuming each iteration is set to last 4 weeks).
o Rather than spending 1.5 months on requirements gathering, in Agile software
development, the team will decide the basic core features that are required in the
product and decide which of these features can be developed in the first iteration.
o Any remaining features that cannot be delivered in the first iteration will be taken up
in the next iteration or subsequent iterations, based on priority.
o At the end of the first iterations, the team will deliver a working software with the
features that were finalized for that iteration.
There will be 10 iterations and at the end of each iteration the customer is delivered a working
software that is incrementally enhanced and updated with the features that were shortlisted
for that iteration.
Extreme Programming:
Extreme Programming technique is very helpful when there is constantly changing
demands or requirements from the customers or when they are not sure about the
functionality of the system. It advocates frequent "releases" of the product in short
development cycles, which inherently improves the productivity of the system and also
introduces a checkpoint where any customer requirements can be easily implemented. The
XP develops software keeping customer in the target.
Scrum Master
Master is responsible for setting up the team, sprint meeting and removes obstacles to
progress
Product owner
The Product Owner creates product backlog, prioritizes the backlog and is responsible for the
delivery of the functionality at each iteration
Scrum Team
Team manages its own work and organizes the work to complete the sprint or cycle
Product Backlog
This is a repository where requirements are tracked with details on the no of requirements to
be completed for each release. It should be maintained and prioritized by product owner, and
it should be distributed to the scrum team. Team can also request for a new requirement
addition or modification or deletion
Process flow of Scrum:
Process flow of scrum testing is as follows:
Each iteration of a scrum is known as Sprint
Product backlog is a list where all details are entered to get end product
During each Sprint, top items of Product backlog are selected and turned into Sprint
backlog
Team works on the defined sprint backlog
Team checks for the daily work
At the end of the sprint, team delivers product functionality
Managing interactive processes
Models are defined as explicit representations of some portions of reality as perceived by
some actor. A model is active if it influences the reality it reflects; if changes to the
representation also change the way some actors perceive reality.
Model activation is the process by which a model affects reality. Activation involves actors
interpreting the model and adjusting their behaviour to it.
This process can be Automated, where a software component executes the model, Manual,
where the model guides the actions of human actors, or Interactive, where prescribed
aspects of the model are automatically interpreted and ambiguous parts are left to the users
to resolve, with tool support.
Fully automated activation implies that the model must be formal and complete, while
manual and interactive activation also can handle informal and evolving models.
The process of defining and updating an interactive model is called articulation.
b, c are constants for each category of software products
Tdev is the estimated time to develop the software, expressed in months
Effort is the total effort required to develop the software product, expressed in person
months (PMs)
The effort estimation is expressed in units of person-months (PM). The value of the constants
a, b, c are given below:
Intermediate COCOMO model:
The basic COCOMO model assumes that effort and development time are functions of the
product size alone. However, many other project parameters apart from the product size
affect the development effort and time required for the product.
Therefore, in order to obtain an accurate estimation of the effort and project duration, the
effect of all relevant parameters must be taken into account.
The intermediate COCOMO model recognizes this fact and refines the initial estimate
obtained using the basic COCOMO expressions by using a set of 15 cost drivers
(multipliers) based on various attributes of software development.
For example, if modern programming practices are used, the initial estimates are scaled
downward by multiplication with a cost driver having a value less than 1.
Each of the 15 attributes receives a rating on a six-point scale that ranges from "very low" to
"extra high" (in importance or value) as shown below. An effort multiplier from the table
below [i] applies to the rating. The product of all effort multipliers results in an Effort
Adjustment Factor (EAF).
Ratings
Cost Drivers Very Low Nomina High Very Extra
Low l High High
Product attributes
Required software reliability 0.75 0.88 1.00 1.15 1.40
Size of application database 0.94 1.00 1.08 1.16
Complexity of the product 0.70 0.85 1.00 1.15 1.30 1.65
Hardware attributes
Run-time performance constraints 1.00 1.11 1.30 1.66
Memory constraints 1.00 1.06 1.21 1.56
Volatility of the virtual machine environ
0.87 1.00 1.15 1.30
ment
Required turnabout time 0.87 1.00 1.07 1.15
Personnel attributes
Analyst capability 1.46 1.19 1.00 0.86 0.71
Applications experience 1.29 1.13 1.00 0.91 0.82
Software engineer capability 1.42 1.17 1.00 0.86 0.70
Virtual machine experience 1.21 1.10 1.00 0.90
Programming language experience 1.14 1.07 1.00 0.95
Project attributes
Application of software engineering met
1.24 1.10 1.00 0.91 0.82
hods
Use of software tools 1.24 1.10 1.00 0.91 0.83
Required development schedule 1.23 1.08 1.00 1.04 1.10