0% found this document useful (0 votes)
16 views42 pages

Unit 1

The document outlines various software development life cycle (SDLC) models, including the Classical Waterfall, Iterative Waterfall, Prototyping, Evolutionary, Spiral, and Agile models, each with distinct characteristics and applications. It emphasizes the importance of project planning, estimation, scheduling, risk management, and software configuration management in successful project delivery. Additionally, it compares the Waterfall and Iterative models, highlighting their differences in flexibility, customer involvement, and documentation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views42 pages

Unit 1

The document outlines various software development life cycle (SDLC) models, including the Classical Waterfall, Iterative Waterfall, Prototyping, Evolutionary, Spiral, and Agile models, each with distinct characteristics and applications. It emphasizes the importance of project planning, estimation, scheduling, risk management, and software configuration management in successful project delivery. Additionally, it compares the Waterfall and Iterative models, highlighting their differences in flexibility, customer involvement, and documentation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 42

UNIT-1

2 Marks
1. Development Activities:
Development activities involve steps such as requirements gathering, system
design, coding, testing, deployment, and maintenance. These ensure the creation
of quality software systematically. Each activity contributes to the overall
software lifecycle.
Example: Developing an e-commerce site using agile methods.
2. Software Lifecycle Model:
Classical Waterfall Model
Iterative Waterfall Model
Prototyping Model
Evolutionary Model
3. Classical Waterfall Model:
A linear and sequential model where each phase is completed before the next
begins. No overlapping or iteration is allowed between phases. It's suitable for
well-defined and fixed requirements.
Example: Software for military defense systems.
4. Iterative Waterfall Model:
An enhanced version of the waterfall model allowing feedback between phases.
Errors can be corrected in previous stages based on testing feedback. It
maintains the structure of waterfall with added flexibility.
Example: Payroll management systems in companies.
5. Prototyping Model:
A prototype is built to understand unclear requirements. The model is refined
through user feedback before final development. Useful when user needs are not
fully known initially.
Example: Designing a new mobile banking app.
6. Evolutionary Model:
Software is developed in successive versions, each improving on the last.
Feedback is incorporated continuously in each iteration. Helps when
requirements evolve over time.
Example: Microsoft Word with frequent updates.
7.Spiral Model:
Combines iterative development with risk analysis at every phase. Each loop in
the spiral represents a development phase. Ideal for large, complex, and high-
risk projects.
Example: Flight control systems in aerospace.
8.Project Planning
Defines the scope, tasks, schedule, and resources of a project. It ensures clear
direction and feasibility of project execution. It’s the foundation of successful
project delivery.
Example: Planning modules for an online learning platform.

9.Estimation
Process of predicting time, effort, and cost of a project. Helps in budgeting,
scheduling, and resource allocation. Common methods include Function Point
and COCOMO.
Example: Estimating development time for a hospital system.

10.Scheduling
Organizes project tasks and assigns timelines to each. Ensures timely project
completion and task dependency management. Tools like Gantt charts or PERT
charts are used.
Example: Scheduling design, coding, and testing phases.

11.Risk Management
Involves identifying, analyzing, and mitigating potential risks. Helps prevent
delays or failures in project delivery. Includes technical, cost, and schedule-
related risks.
Example: Planning for server outages in a web app project.

12.Software Configuration Management (SCM)


Tracks and manages changes to software code and documents. Ensures
consistency and version control across the team. SCM tools like Git help
manage large codebases.
Example: Using GitHub to manage source code updates.

13. Project Management:


Software Project Management is the process of planning, organizing,
leading, and controlling software projects to ensure they are completed on
time, within budget, and meet quality requirements. It involves managing
resources, risks, schedules, cost estimation, and communication throughout
the project lifecycle.
 Project planning
 Effort and cost estimation
 Scheduling tasks
 Risk management
 Quality and configuration control

14.Difference b/w PERT and GANTT


11Marks
1.Software Development Life Cycle (SDLC)
Software development life cycle (SDLC) is a structured process that is used
to design, develop, and test good-quality software. SDLC, or software
development life cycle, is a methodology that defines the entire procedure of
software development step-by-step. The goal of the SDLC life cycle model is
to deliver high-quality, maintainable software that meets the user’s
requirements. SDLC in software engineering models outlines the plan for each
stage so that each stage of the software development model can perform its task
efficiently to deliver the software at a low cost within a given time frame that
meets users requirements. In this article we will see Software Development Life
Cycle (SDLC) in detail.
What is the Software Development Life Cycle (SDLC)?
SDLC is a process followed for software building within a software
organization. SDLC consists of a precise plan that describes how to develop,
maintain, replace, and enhance specific software. The life cycle defines a
method for improving the quality of software and the all-around development
process.

Stages of the Software Development Life Cycle


SDLC specifies the task(s) to be performed at various stages by a software
engineer or developer. It ensures that the end product is able to meet the
customer’s expectations and fits within the overall budget. Hence, it’s vital for a
software developer to have prior knowledge of this software development
process. SDLC is a collection of these six stages, and the stages of SDLC are as
follows:
The SDLC Model involves six phases or stages while developing any
software.
Stage-1: Planning and Requirement Analysis
Planning is a crucial step in everything, just as in software development. In this
same stage, requirement analysis is also performed by the developers of the
organization. This is attained from customer inputs, and sales
department/market surveys.
The information from this analysis forms the building blocks of a basic project.
The quality of the project is a result of planning. Thus, in this stage, the basic
project is designed with all the available information.
Stage-2: Defining Requirements
In this stage, all the requirements for the target software are specified. These
requirements get approval from customers, market analysts, and stakeholders.
This is fulfilled by utilizing SRS (Software Requirement Specification). This
is a sort of document that specifies all those things that need to be defined and
created during the entire project cycle.

Stage-3: Designing Architecture


SRS is a reference for software designers to come up with the best architecture
for the software. Hence, with the requirements defined in SRS, multiple designs
for the product architecture are present in the Design Document Specification
(DDS). This DDS is assessed by market analysts and stakeholders. After
evaluating all the possible factors, the most practical and logical design is
chosen for development.
Stage-4: Developing Product
At this stage, the fundamental development of the product starts. For this,
developers use a specific programming code as per the design in the DDS.
Hence, it is important for the coders to follow the protocols set by the
association. Conventional programming tools like compilers, interpreters,
debuggers, etc. are also put into use at this stage. Some popular languages like
C/C++, Python, Java, etc. are put into use as per the software regulations.
Stage-5: Product Testing and Integration
After the development of the product, testing of the software is necessary to
ensure its smooth execution. Although, minimal testing is conducted at every
stage of SDLC. Therefore, at this stage, all the probable flaws are tracked, fixed,
and retested. This ensures that the product confronts the quality requirements of
SRS.
Documentation, Training, and Support: Software documentation is an
essential part of the software development life cycle. A well-written document
acts as a tool and means to information repository necessary to know about
software processes, functions, and maintenance. Documentation also provides
information about how to use the product. Training in an attempt to improve the
current or future employee performance by increasing an employee’s ability to
work through learning, usually by changing his attitude and developing his
skills and understanding.

Stage-6: Deployment and Maintenance of Products


After detailed testing, the conclusive product is released in phases as per the
organization’s strategy. Then it is tested in a real industrial environment. It is
important to ensure its smooth performance. If it performs well, the organization
sends out the product as a whole. After retrieving beneficial feedback, the
company releases it as it is or with auxiliary improvements to make it further
helpful for the customers. However, this alone is not enough. Therefore, along
with the deployment, the product’s supervision.

Software Development Life Cycle Models


1. Waterfall Model
It is the fundamental model of the software development life cycle. This is a
very simple model. The waterfall model is not in practice anymore, but it is the
basis for all other SDLC models. Because of its simple structure, the waterfall
model is easier to use and provides a tangible output. In the waterfall model,
once a phase seems to be completed, it cannot be changed, and due to this less
flexible nature, the waterfall model is not in practice anymore.
2. Agile Model
The agile model in SDLC was mainly designed to adapt to changing requests
quickly. The main goal of the Agile model is to facilitate quick project
completion. The agile model refers to a group of development processes. These
processes have some similar characteristics but also possess certain subtle
differences among themselves.

3. Iterative Model
In the Iterative model in SDLC, each cycle results in a semi-developed but
deployable version; with each cycle, some requirements are added to the
software, and the final cycle results in the software with the complete
requirement specification.

4. Spiral Model
The spiral model in SDLC is one of the most crucial SDLC models that
provides support for risk handling. It has various spirals in its diagrammatic
representation; the number of spirals depends upon the type of project. Each
loop in the spiral structure indicates the Phases of the Spiral model.

5. V-Shaped Model
The V-shaped model in SDLC is executed in a sequential manner in V-shape.
Each stage or phase of this model is integrated with a testing phase. After every
development phase, a testing phase is associated with it, and the next phase will
start once the previous phase is completed, i.e., development & testing. It is also
known as the verification or validation model.

6. Big Bang Model


The Big Bang model in SDLC is a term used to describe an informal and
unstructured approach to software development, where there is no specific
planning, documentation, or well-defined phases.

What is the need for SDLC?


SDLC is a method, approach, or process that is followed by a software
development organization while developing any software. SDLC models were
introduced to follow a disciplined and systematic method while designing
software. With the software development life cycle, the process of software
design is divided into small parts, which makes the problem more
understandable and easier to solve. SDLC comprises a detailed description or
step-by-step plan for designing, developing, testing, and maintaining the
software.
Real Life Example of SDLC
Developing a banking application using SDLC:

Planning and Analysis: During this stage, business stakeholders’ requirements


about the functionality and features of banking application will be gathered by
program managers and business analysts. Detailed SRS (Software Requirement
Specification) documentation will be produced by them. Together with business
stakeholders, business analysts will analyse and approve the SRS document.
Design: Developers will receive SRS documentation. Developers will read over
the documentation and comprehend the specifications. Web pages will be
designed by designers. High level system architecture will be prepared by
developers.
Development: During this stage, development will code. They will create the
web pages and APIs needed to put the feature into practice.
Testing: Comprehensive functional testing will be carried out.They will
guarantee that the banking platform is glitch-free and operating properly.
Deployment and Maintenance: The code will be made available to customers
and deployed. Following this deployment, the customer can access the online
banking. The same methodology will be used to create any additional features.
2.Difference b/w Classical ana iterative model:
The Waterfall model and the Iterative model are two different software
development life cycle (SDLC) approaches, each with its own set of
characteristics and principles. Let's compare the Waterfall model and the
Iterative model in terms of their key aspects:
Waterfall Model
Overview:
Sequential Phases: The Waterfall model follows a linear and sequential
approach to software development.
Phases: Divided into distinct phases such as requirements, design,
implementation, testing, deployment, and maintenance.
Inflexibility: Changes are challenging to incorporate once a phase is completed.
Delivery: The final product is delivered at the end of the development cycle.
Characteristics:
Well-Defined Requirements: Best suited for projects with well-understood and
stable requirements.
Document-Driven: Emphasizes extensive documentation at each phase.
Customer Involvement: Limited customer involvement after the initial
requirements phase.
Progress Tracking: Progress is measured by the completion of predefined
phases.
Suitability:
Predictable Projects: Suitable for projects where requirements are clear and
unlikely to change.
Small to Medium Projects: Ideal for smaller to medium-sized projects with a
straightforward structure.

Iterative Model
Overview:
Repetitive Cycles: The Iterative model involves repetitive cycles of
prototyping, testing, and refining.
Phases: Divided into smaller cycles, each containing its own planning, design,
implementation, and testing.
Flexibility: Adaptable to changes even late in the development process.
Delivery: Delivers a working subset of the product in each iteration.
Characteristics:
Dynamic Requirements: Suited for projects with evolving or unclear
requirements.
Prototyping: Often involves the creation of prototypes for user feedback and
validation.
Customer Collaboration: Encourages ongoing customer involvement and
feedback.
Progress Tracking: Progress is measured by the completion of iterations.
Suitability:
Changing Requirements: Ideal for projects with dynamic or changing
requirements.
Continuous Improvement: Emphasizes continuous refinement and
improvement.
Large Projects: Suitable for larger projects where phased delivery is beneficial.
Key Differences
Approach:
Waterfall: Linear and sequential.
Iterative: Repetitive cycles of planning, designing, implementing, and testing.
Flexibility:
Waterfall: Low flexibility, changes are challenging.
Iterative: High flexibility, adapts to changing requirements.
Customer Involvement:
Waterfall: Limited after the initial requirements phase.
Iterative: Encourages ongoing customer involvement and feedback.
Progress Tracking:
Waterfall: Measured by the completion of predefined phases.
Iterative: Measured by the completion of iterations and continuous
improvement.
Documentation:
Waterfall: Emphasizes extensive documentation at each phase.
Iterative: Documentation is typically less extensive, with a focus on working
prototypes.
Delivery:
Waterfall: Final product delivered at the end.
Iterative: Delivers a working subset of the product in each iteration.

Aspect Waterfall Model Iterative Model


Approach Sequential Repetitive cycles
Flexibility Low (Changes are High (Adapts to
challenging) changing requirements)
Customer Involvement Limited after initial Encourages ongoing
requirements phase customer involvement
Progress Tracking Measured by completion Measured by completion
of predefined phases of iterations
Documentation Emphasizes extensive Documentation is
documentation typically less extensive
Delivery Final product delivered Delivers a working
at the end subset in each iteration
Suitability Well-defined projects Projects with changing
with stable requirements or unclear requirements
Project Size Small to medium Small to large projects
projects

3.Sprial Model:
What is the Spiral Model?
The Spiral Model is a Software Development Life Cycle (SDLC) model that
provides a systematic and iterative approach to software development. In its
diagrammatic representation, looks like a spiral with many loops. The exact
number of loops of the spiral is unknown and can vary from project to project.
Each loop of the spiral is called a phase of the software development process.
Some Key Points regarding the Stages of a Spiral Model:
1. The exact number of phases needed to develop the product can be varied
by the project manager depending upon the project risks.
2. As the project manager dynamically determines the number of phases, the
project manager has an important role in developing a product using the
spiral model.
3. It is based on the idea of a spiral, with each iteration of the spiral
representing a complete software development cycle, from requirements
gathering and analysis to design, implementation, testing, and
maintenance.

Phases of the Spiral Model


The Spiral Model is a risk-driven model, meaning that the focus is on managing
risk through multiple iterations of the software development process. Each
phase of the Spiral Model is divided into four Quadrants:

Spiral Model - SDLC


1. Objectives Defined
In first phase of the spiral model we clarify what the project aims to achieve,
including functional and non-functional requirements.
Requirements are gathered from the customers and the objectives are identified,
elaborated, and analyzed at the start of every phase. Then alternative solutions
possible for the phase are proposed in this quadrant.
2. Risk Analysis and Resolving
In the risk analysis phase, the risks associated with the project are identified and
evaluated.
During the second quadrant, all the possible solutions are evaluated to select the
best possible solution. Then the risks associated with that solution are identified
and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
3. Develop the next version of the Product
During the third quadrant, the identified features are developed and verified
through testing. At the end of the third quadrant, the next version of the software
is available.
In the evaluation phase, the software is evaluated to determine if it meets the
customer's requirements and if it is of high quality.
4. Review and plan for the next Phase
In the fourth quadrant, the Customers evaluate the so-far developed version of
the software. In the end, planning for the next phase is started.
The next iteration of the spiral begins with a new planning phase, based on the
results of the evaluation.
The Spiral Model is often used for complex and large software development
projects, as it allows for a more flexible and adaptable approach to Software
development. It is also well-suited to projects with significant uncertainty or
high levels of risk.

The advantages of the Spiral SDLC Model


 Changing requirements can be accommodated.
 Allows extensive use of prototypes.
 Requirements can be captured more accurately.
 Users see the system early.
 Development can be divided into smaller parts and the risky parts can be
developed earlier which helps in better risk management.
The disadvantages of the Spiral SDLC Model
 Management is more complex.
 End of the project may not be known early.
 Not suitable for small or low risk projects and could be expensive for
small projects.
 Process is complex
 Spiral may go on indefinitely.
 Large number of intermediate stages requires excessive documentation.
4.Prototyping Model:
What is Prototyping Model?
The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models). This model is used when
the customers do not know the exact project requirements beforehand.
In this model, a prototype of the end product is first developed, tested, and
refined as per customer feedback repeatedly till a final acceptable prototype is
achieved which forms the basis for developing the final product.
In this process model, the system is partially implemented before or during the
analysis phase thereby allowing the customers to see the product early in the life
cycle. The process starts by interviewing the customers and developing the
incomplete high-level paper model.
Phases of Prototyping Model
Prototyping Model has six phases

1. Requirements gathering and analysis


Requirement analysis is the first step in developing a prototyping model. During
this phase, the system’s desires are precisely defined. During the method,
system users are interviewed to determine what they expect from the system.
2. Quick design
The second phase could consist of a preliminary design or a quick design.
During this stage, the system’s basic design is formed. However, it is not a
complete design. It provides the user with a quick overview of the system. The
rapid design aids in the development of the prototype.
3. Build a Prototype
During this stage, an actual prototype is intended to support the knowledge
gained from quick design. It is a small low-level working model of the desired
system.
4. Initial user evaluation
The proposed system is presented to the client for preliminary testing at this
stage. It is beneficial to investigate the performance model’s strengths and
weaknesses. Customer feedback and suggestions are gathered and forwarded to
the developer.
5. Refining prototype
If the user is dissatisfied with the current model, you may want to improve the
type that responds to user feedback and suggestions. When the user is satisfied
with the upgraded model, a final system based on the approved final type is
created.
6. Implement Product and Maintain
The final system was fully tested and distributed to production after it was
developed to support the original version. To reduce downtime and prevent
major failures, the programmer is run on a regular basis.
Types of Prototyping Models
There are four types of Prototyping Models, which are described below.
1. Rapid Throwaway Prototyping
 This technique offers a useful method of exploring ideas and getting
customer feedback for each of them.
 In this method, a developed prototype need not necessarily be a part of
the accepted prototype.
 Customer feedback helps prevent unnecessary design faults and hence,
the final prototype developed is of better quality.
2. Evolutionary Prototyping
 In this method, the prototype developed initially is incrementally refined
based on customer feedback till it finally gets accepted.
 In comparison to Rapid Throwaway Prototyping, it offers a better
approach that saves time as well as effort.
 This is because developing a prototype from scratch for every iteration of
the process can sometimes be very frustrating for the developers.
3. Incremental Prototyping
 In this type of incremental prototyping, the final expected product is
broken into different small pieces of prototypes and developed
individually.
 In the end, when all individual pieces are properly developed, then the
different prototypes are collectively merged into a single final product in
their predefined order.
 It's a very efficient approach that reduces the complexity of the
development process, where the goal is divided into sub-parts and each
sub-part is developed individually.
 The time interval between the project's beginning and final delivery is
substantially reduced because all parts of the system are prototyped and
tested simultaneously.
 Of course, there might be the possibility that the pieces just do not fit
together due to some lack of ness in the development phase – this can
only be fixed by careful and complete plotting of the entire system before
prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential
independent phases:
 In this phase, a basic prototype with all the existing static pages is
presented in HTML format.
 In the 2nd phase, Functional screens are made with a simulated data
process using a prototype services layer.
 This is the final step where all the services are implemented and
associated with the final prototype.
This Extreme Prototyping method makes the project cycling and delivery robust
and fast and keeps the entire developer team focused and centralized on product
deliveries rather than discovering all possible needs and specifications and
adding necessitated features.
Advantages of Prototyping Model
 The customers get to see the partial product early in the life cycle.
 New requirements can be easily accommodated as there is scope for
refinement.
 Missing functionalities can be easily figured out.
 Errors can be detected much earlier thereby saving a lot of effort and cost,
besides enhancing the quality of the software.
 The developed prototype can be reused by the developer for more
complicated projects in the future.
 Flexibility in design.
 Prototyping can help reduce the risk of project failure by identifying
potential issues and addressing them early in the process.
 Prototyping can help bridge the gap between technical and non-technical
stakeholders by providing a tangible representation of the product.
Disadvantages of the Prototyping Model
 Costly concerning time as well as money.
 There may be too much variation in requirements each time the prototype
is evaluated by the customer.
 Poor Documentation due to continuously changing customer
requirements.
 It is very difficult for developers to accommodate all the changes
demanded by the customer.
 Developers in a hurry to build prototypes may end up with sub-optimal
solutions.
 The prototype may not be scalable to meet the future needs of the
customer.
Applications of Prototyping Model
 The Prototyping Model should be used when the requirements of the
product are not clearly understood or are unstable.
 The prototyping model can also be used if requirements are changing
quickly.
 This model can be successfully used for developing user interfaces, high-
technology software-intensive systems, and systems with complex
algorithms and interfaces.
 The prototyping Model is also a very good choice to demonstrate the
technical feasibility of the product.

5.Evolutionary Model:
The evolutionary model is a combination of the Iterative and Incremental
models of the software development life cycle. Delivering your system in a big
bang release, delivering it in incremental process over time is the action done in
this model. Some initial requirements and architecture envisioning need to be
done. It is better for software products that have their feature sets redefined
during development because of user feedback and other factors.
What is the Evolutionary Model?
The Evolutionary development model divides the development cycle into
smaller, incremental waterfall models in which users can get access to the
product at the end of each cycle.
1. Feedback is provided by the users on the product for the planning stage of
the next cycle and the development team responds, often by changing the
product, plan, or process.
2. Therefore, the software product evolves with time.
3. All the models have the disadvantage that the duration of time from the
start of the project to the delivery time of a solution is very high.
4. The evolutionary model solves this problem with a different approach.
5. The evolutionary model suggests breaking down work into smaller
chunks, prioritizing them, and then delivering those chunks to the
customer one by one.
6. The number of chunks is huge and is the number of deliveries made to the
customer.
7. The main advantage is that the customer’s confidence increases as he
constantly gets quantifiable goods or services from the beginning of the
project to verify and validate his requirements.
8. The model allows for changing requirements as well as all work is broken
down into maintainable work chunks.
Application of Evolutionary Model
1. It is used in large projects where you can easily find modules for
incremental implementation.
2. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development
because the system can be easily portioned into units in terms of objects.
Necessary Conditions for Implementing this Model
1. Customer needs are clear and been explained in deep to the developer
team.
2. There might be small changes required in separate parts but not a major
change.
3. As it requires time, so there must be some time left for the market
constraints.
4. Risk is high and continuous targets to achieve and report to customer
repeatedly.
5. It is used when working on a technology is new and requires time to
learn.
Advantages Evolutionary Model
1. Adaptability to Changing Requirements: Evolutionary models work
effectively in projects when the requirements are ambiguous or change
often. They support adjustments and flexibility along the course of
development.
2. Early and Gradual Distribution: Functional components or prototypes
can be delivered early thanks to incremental development. Faster user
satisfaction and feedback may result from this.
3. User Commentary and Involvement: Evolutionary models place a
strong emphasis on ongoing user input and participation. This guarantees
that the software offered closely matches the needs and expectations of
the user.
4. Improved Handling of Difficult Projects: Big, complex tasks can be
effectively managed with the help of evolutionary models. The
development process is made simpler by segmenting the project into
smaller, easier-to-manage portions.
Disadvantages Evolutionary Model
1. Communication Difficulties: Evolutionary models require constant
cooperation and communication. The strategy may be less effective if
there are gaps in communication or if team members are spread out
geographically.
2. Dependence on an Expert Group: A knowledgeable and experienced
group that can quickly adjust to changes is needed for evolutionary
models.
4. Increasing Management Complexity: Complexity can be introduced by
organizing and managing several increments or iterations, particularly in
large projects.
5. Greater Initial Expenditure: As evolutionary models necessitate
continual testing, user feedback and prototyping, they may come with a
greater starting cost. This may be a problem for projects that have limited
funding.
6. Software project estimation techniques (like COCOMO)

The Constructive Cost Model (COCOMO) It was proposed by Barry Boehm


in 1981 and is based on the study of 63 projects, which makes it one of the
best-documented models.
It is a Software Cost Estimation Model that helps predict the effort, cost, and
schedule required for a software development project.
What is the COCOMO Model?
COCOMO Model is a procedural cost estimate model for Software
Projects and is often used as a process of reliably predicting the various
parameters associated with making a project such as size, effort, cost, time,
and quality.
The key parameters that define the quality of any Software Product, which
are also an outcome of COCOMO, are primarily effort and schedule.
Types of Projects in COCOMO Model
In the COCOMO model, software projects are categorized into three types
based on their complexity, size, and the development environment. These
types are:
1. Organic
A software project is said to be an organic type if the team size required is
adequately small, the problem is well understood and has been solved in the
past and also the team members have a nominal experience regarding the
problem.
2. Semi-detached
A software project is said to be a Semi-detached type if the vital
characteristics such as team size, experience, and knowledge of the various
programming environments lie in between organic and embedded.
3. Embedded
A software project requiring the highest level of complexity, creativity, and
experience requirement falls under this category. Such software requires a
larger team size than the other two models and also the developers need to be
sufficiently experienced and creative to develop such complex models.
Comparison of Types of Projects in COCOMO Model
Aspects Organic Semidetached Embedded
Project Size 2 to 50 KLOC 50-300 KLOC 300 and above
KLOC
Complexity Low Medium High
Team Experience Highly Some experienced Mixed
experienced as well as experience,
inexperienced includes
staff experts
Environment Flexible, fewer Somewhat Highly
constraints flexible, moderate rigorous, strict
constraints requirements
Effort Equation E= E = 3.0(400)1.12 E=
2.4(400)1.05 3.6(400)1.20
Example Simple payroll New system Flight control
system interfacing with software
existing systems

Structure of COCOMO Model


6Phases of COCOMO
1. Planning and requirements: This initial phase involves defining the
scope, objectives, and constraints of the project. It includes developing a
project plan that outlines the schedule, resources, and milestones.
2. System design: In this phase, the high-level architecture of the software
system is created. This includes defining the system’s overall structure,
including major components, their interactions, and the data flow
between them.
3. Detailed design: This phase involves creating detailed specifications for
each component of the system. It breaks down the system design into
detailed descriptions of each module, including data structures,
algorithms, and interfaces.
4. Module code and test: This involves writing the actual source code for
each module or component as defined in the detailed design. It includes
coding the functionalities, implementing algorithms, and developing
interfaces.
5. Integration and test: This phase involves combining individual modules
into a complete system and ensuring that they work together as intended.
6. Cost Constructive model: The Constructive Cost Model (COCOMO) is
a widely used method for estimating the cost and effort required for
software development projects.
Importance of the COCOMO Model
1. Cost Estimation: To help with resource planning and project budgeting,
COCOMO offers a methodical approach to software development cost
estimation.
2. Resource Management: By taking team experience, project size, and
complexity into account, the model helps with efficient resource
allocation.
3. Project Planning: COCOMO assists in developing practical project
plans that include attainable objectives, due dates, and benchmarks.
4. Risk management: Early in the development process, COCOMO assists
in identifying and mitigating potential hazards by including risk elements.
5. Support for Decisions: During project planning, the model provides a
quantitative foundation for choices about scope, priorities, and resource
allocation.
6. Benchmarking: To compare and assess various software development
projects to industry standards, COCOMO offers a benchmark.
7. Resource Optimization: The model helps to maximize the use of
resources, which raises productivity and lowers costs.

Types of COCOMO Model


There are three types of COCOMO Model:
1. Basic COCOMO Model
The Basic COCOMO model is a straightforward way to estimate the effort
needed for a software development project. It uses a simple mathematical
formula to predict how many person-months of work are required based on
the size of the project, measured in thousands of lines of code (KLOC).
It estimates effort and time required for development using the following
expression:
E = a*(KLOC)b PM
Tdev = c*(E)d
Person required = Effort/ Time
Where,
E is effort applied in Person-Months
KLOC is the estimated size of the software product indicate in Kilo Lines of
Code
Tdev is the development time in months
a, b, c are constants determined by the category of software project given in
below table.
These formulas are used as such in the Basic Model calculations, as not much
consideration of different factors such as reliability, and expertise is taken
into account, henceforth the estimate is rough.
Intermediate COCOMO Model
The basic COCOMO model assumes that the effort is only a function of the
number of lines of code and some constants evaluated according to the
different software systems. However, in reality, no system's effort and
schedule can be solely calculated based on Lines of Code. For that, various
other factors such as reliability, experience, and Capability. These factors are
known as Cost Drivers (multipliers) and the Intermediate Model utilizes 15
such drivers for cost estimation.
Classification of Cost Drivers and their Attributes:
The cost drivers are divided into four categories
Product attributes:
 Required Software Reliability extent
 Size of the application database
 The complexity of the product
Hardware attributes:
 Run-time performance constraints
 Memory constraints
 The volatility of the virtual machine environment
 Required turnabout time
Personal attributes:
 Analyst capability
 Software engineering capability
 Application experience
 Virtual machine experience
 Programming language experience
Project attributes:
 Use of Software Tools.
 Application of Software Engineering Methods.
 Required development schedule.

The Effort Adjustment Factor (EAF) is determined by multiplying the


effort multipliers associated with each of the 15 attributes.
The Effort Adjustment Factor (EAF) is employed to enhance the estimates
generated by the basic COCOMO model in the following expression:
E = a*(KLOC)b * EAF PM
Tdev = c*(E)d
Where,
 E is effort applied in Person-Months
 KLOC is the estimated size of the software product indicate in Kilo Lines
of Code
 EAF is the Effort Adjustment Factor (EAF) is a multiplier used to refine
the effort estimate obtained from the basic COCOMO model.
 Tdev is the development time in months
 a, b, c are constants determined by the category of software project given
in below table.

Detailed COCOMO Model


Detailed COCOMO goes beyond Basic and Intermediate COCOMO by diving
deeper into project-specific factors. It considers a wider range of parameters,
like team experience, development practices, and software complexity. By
analyzing these factors in more detail, Detailed COCOMO provides a highly
accurate estimation of effort, time, and cost for software projects. It's like
zooming in on a project's unique characteristics to get a clearer picture of what
it will take to complete it successfully.
Advantages of the COCOMO Model
1. Systematic cost estimation: Provides a systematic way to estimate the
cost and effort of a software project.
2. Helps to estimate cost and effort: This can be used to estimate the cost
and effort of a software project at different stages of the development
process.
3. Helps in high-impact factors: Helps in identifying the factors that have
the greatest impact on the cost and effort of a software project.
4. Helps to evaluate the feasibility of a project: This can be used to
evaluate the feasibility of a software project by estimating the cost and
effort required to complete it.
Disadvantages of the COCOMO Model
1. Assumes project size as the main factor: Assumes that the size of the
software is the main factor that determines the cost and effort of a
software project, which may not always be the case.
2. Does not count development team-specific characteristics: Does not
take into account the specific characteristics of the development team,
which can have a significant impact on the cost and effort of a software
project.
3. Not enough precise cost and effort estimate: This does not provide a
precise estimate of the cost and effort of a software project, as it is based
on assumptions and averages.

7.Risk Management:
What is Risk Management?
Risk Management is a systematic process of recognizing, evaluating, and
handling threats or risks that have an effect on the finances, capital, and overall
operations of an organization. These risks can come from different areas, such
as financial instability, legal issues, errors in strategic planning, accidents, and
natural disasters. A risk is a probable problem; it might happen, or it might not.
There are main two characteristics of risk.
 Uncertainty: The risk may or may not happen which means there are no
100% risks.
 Loss: If the risk occurs in reality, undesirable results or losses will occur.

The risk management process


Risk management is a sequence of steps that help a software team to
understand, analyze, and manage uncertainty. Risk management process
consists of
 Risks Identification.
 Risk Assessment.
 Risks Planning.
 Risk Monitoring
Risk Identification
Risk identification refers to the systematic process of recognizing and
evaluating potential threats or hazards that could negatively impact an
organization, its operations, or its workforce. This involves identifying various
types of risks, ranging from IT security threats like viruses and phishing attacks
to unforeseen events such as equipment failures and extreme weather
conditions.
Risk analysis
Risk analysis is the process of evaluating and understanding the potential
impact and likelihood of identified risks on an organization. It helps determine
how serious a risk is and how to best manage or mitigate it. Risk Analysis
involves evaluating each risk's probability and potential consequences to
prioritize and manage them effectively.
Risk Planning
Risk planning involves developing strategies and actions to manage and
mitigate identified risks effectively. It outlines how to respond to potential risks,
including prevention, mitigation, and contingency measures, to protect the
organization's objectives and assets.
Risk Monitoring
Risk monitoring involves continuously tracking and overseeing identified risks
to assess their status, changes, and effectiveness of mitigation strategies. It
ensures that risks are regularly reviewed and managed to maintain alignment
with organizational objectives and adapt to new developments or challenges.
3 classes of risks that may affect a computer code project:
 Project Risk
 Technical Risk
 Business Risk
Classification of Risk in a project
Example: Let us consider a satellite-based mobile communication project.
The project manager can identify many risks in this project. Let us classify
them appropriately.
 What if the project cost escalates and overshoots what was estimated?
- Project Risk
 What if the mobile phones that are developed become too bulky to
conveniently carry? Business Risk
 What if call hand-off between satellites becomes too difficult to
implement? Technical Risk
Benefits of risk management
Here are some benefits of risk management:
 Helps protect against potential losses.
 Improves decision-making by considering risks.
 Reduces unexpected expenses.
 Ensures adherence to laws and regulations.
 Builds resilience against unexpected challenges.
 Safeguards company reputation.
Limitation of Risk Management
Here are Some Limitation of Risk Management
 Too much focus on risk can lead to missed opportunities.
 Implementing risk management can be expensive.
 Risk models can be overly complex and hard to understand.
 Having risk controls might make people feel too safe.
 Relies on accurate human judgment and can be prone to mistakes.
8.PERT
Project Evaluation and Review Technique (PERT) is a procedure through which
activities of a project are represented in its appropriate sequence and timing. It
is a scheduling technique used to schedule, organize and integrate tasks within a
project. PERT is basically a mechanism for management planning and control
which provides blueprint for a particular project. All of the primary elements or
events of a project have been finally identified by the PERT.

What is PERT Chart?


A PERT chart is a project management tool used to plan and schedule tasks,
illustrating the sequence and timing of project activities. The PERT chart is used
to schedule, organize and co-ordinate tasks within the project. the objective of
PERT chart is to determine the critical path, which comprises critical activities
that should be completed on schedule. This chart is prepared with the help of
information generated in project planning activities such as estimation of effort,
selection of suitable process model for software development and
decomposition of tasks into subtasks.
What does a PERT Chart Contain?
Here are the main components of a PERT chart:
 Nodes: it represents the task or milestones. every node represents the task
name and may also show duration of the task.
 Arrows: it indicates the direction or sequence of task and also dependencies
between them. suppose an array from A to B, then task A must be completed
before task B.
 Time Estimation: It estimates the time duration to complete the task.
 Critical Path: The critical path is the largest path in project management that
always results in the shortest time to complete the project.
 Milestones: It is Key point in the project timeline that represent significant
events or deadlines.

To Create a PERT chart:


To create a PERT chart, we can follow the below steps:
Step 1: Identify Project Tasks
List all the tasks required to complete the project. Identifying tasks means
listing all the steps needed to complete a project. Start by figuring out what the
main goal is, then break it down into smaller actions. Ask team members for
ideas and use clear action words for each task.
Step 2: Define task dependencies
Defining task dependencies means figuring out which tasks must be completed
before others can start. Look at your task list and identify connections by
asking if one task relies on another. This helps you establish the order of work,
ensuring everything is done in the right sequence.
Step 3: Estimate Timeline
Estimating the timeline involves figuring out how long each task will take to
complete. For each task, think about the quickest time it could be done
(optimistic), the longest it might take (pessimistic), and the most likely time it
will actually take. This gives you a better idea of the overall project duration
and helps with planning.
Step 4: Calculate Critical Path
Calculate Critical Path means finding the longest sequence of tasks that
determines the shortest time to complete the project. Identify which tasks can’t
be delayed without affecting the overall project deadline, helping you focus on
what’s most important.
Step 5: Manage task progress
It involves tracking how each task is going. Regularly check if tasks are on
schedule, address any delays, and adjust plans if needed. This ensures the
project stays on track and any issues are resolved quickly.
Characteristics of PERT Chart
The main characteristics of PERT are as following:
 It serves as a base for obtaining the important facts for implementing the
decision-making.
 It forms the basis for all the planning activities.
 PERT helps management in deciding the best possible resource utilization
method.
 PERT take advantage by using time network analysis technique.
 PERT presents the structure for reporting information.

Advantages of PERT Chart


 Estimation of completion time of project is given by the PERT.
 It supports the identification of the activities with slack time.
 The start and dates of the activities of a specific project is determined.
 It helps project manager in identifying the critical path activities.
 PERT makes well organized diagram for the representation of large
amount of data.
Disadvantages of PERT Chart
 The complexity of PERT is more which leads to the problem in
implementation.
 The estimation of activity time are subjective in PERT which is a major
disadvantage.
 Maintenance of PERT is also expensive and complex.
 The actual distribution of may be different from the PERT beta
distribution which causes wrong assumptions.
9.Scheduling in project management
A schedule in your project's time table actually consists of sequenced activities
and milestones that are needed to be delivered under a given period of
time. Project schedule simply means a mechanism that is used to communicate
and know about that tasks are needed and has to be done or performed and
which organizational resources will be given or allocated to these tasks and in
what time duration or time frame work is needed to be performed. Effective
project scheduling leads to success of project, reduced cost, and increased
customer satisfaction. Scheduling in project management means to list out
activities, deliverables, and milestones within a project that are delivered. It
contains more notes than your average weekly planner notes. The most common
and important form of project schedule is Gantt chart.

Process : The manager needs to estimate time and resources of project while
scheduling project. All activities in project must be arranged in a coherent
sequence that means activities should be arranged in a logical and well-
organized manner for easy to understand. Initial estimates of project can be
made optimistically which means estimates can be made when all favorable
things will happen and no threats or problems take place. The total work is
separated or divided into various small activities or tasks during project
schedule. Then, Project manager will decide time required for each activity or
task to get completed. Even some activities are conducted and performed in
parallel for efficient performance. The project manager should be aware of fact
that each stage of project is not problem-free. Problems arise during Project
Development Stage :
 People may leave or remain absent during particular stage of
development.
 Hardware may get failed while performing.
 Software resource that is required may not be available at present, etc.
The project schedule is represented as set of chart in which work-breakdown
structure and dependencies within various activities are represented. To
accomplish and complete project within a given schedule, required resources
must be available when they are needed. Therefore, resource estimation should
be done before starting development. Resources required for Development of
Project :
 Human effort
 Sufficient disk space on server
 Specialized hardware
 Software technology
 Travel allowance required by project staff, etc.
Advantages of Project Scheduling : There are several advantages provided by
project schedule in our project management:
 It simply ensures that everyone remains on same page as far as tasks get
completed, dependencies, and deadlines.
 It helps in identifying issues early and concerns such as lack or
unavailability of resources.
 It also helps to identify relationships and to monitor process.
 It provides effective budget management and risk mitigation.

You might also like