0% found this document useful (0 votes)
66 views82 pages

Software Project Management: Dr. Chaitali Biswas Dutta CSE, SSIPMT, Raipur

The document discusses various topics related to software project management including: - Software project management involves planning, allocating resources, and supervising software projects to develop computer software that fulfills requirements. - Main challenges for project managers include finishing projects on time, under budget, meeting requirements, and keeping customers happy. - Types of complexities in project management include time management, cost management, quality management, risk management, and human resources management. - Prerequisites for effective project management are managing time, cost, and quality while delivering a quality product to the client within budget and schedule.

Uploaded by

Adity chandrakar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views82 pages

Software Project Management: Dr. Chaitali Biswas Dutta CSE, SSIPMT, Raipur

The document discusses various topics related to software project management including: - Software project management involves planning, allocating resources, and supervising software projects to develop computer software that fulfills requirements. - Main challenges for project managers include finishing projects on time, under budget, meeting requirements, and keeping customers happy. - Types of complexities in project management include time management, cost management, quality management, risk management, and human resources management. - Prerequisites for effective project management are managing time, cost, and quality while delivering a quality product to the client within budget and schedule.

Uploaded by

Adity chandrakar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 82

Software Project Management

Dr. Chaitali Biswas Dutta


CSE, SSIPMT, Raipur
Introduction
• Software is more than just a program code. A program is an executable code,
which serves some computational purpose. Software is considered to be collection
of executable programming code, associated libraries and documentations.

• Software engineering is an engineering branch associated with development of


software product using well-defined scientific principles, methods and procedures.

• The outcome of software engineering is an efficient and reliable software product.

• Software project management has wider scope than software engineering process
as it involves communication, pre and post delivery support etc.
Software Project Management
• Software project management is an art and discipline of planning and supervising
software projects. It is a procedure of managing, allocating and timing resources to
develop computer software that fulfills requirements.
• The software project manager always has at least one goal: to finish the project.
• Another main goal is to enable a group of developers to work effectively towards
successful completion of project.
• Main Challenges are:
• To finish on time
• To finish under budget
• To meet the requirements
• To keep customers happy
• To ensure a happy team
Types of Complexity
• Time Management Complexity: Complexities to estimate the duration of the project. It also includes the complexities to make the schedule
for different activities and timely completion of the project.
• Cost Management Complexity: Estimating the total cost of the project is a very difficult task and another thing is to keep an eye that the
project does not overrun the budget.
• Quality Management Complexity: The quality of the project must satisfy the customer’s requirements. It must assure that the requirements
of the customer are fulfilled.
• Risk Management Complexity: Risks are the unanticipated things that may occur during any phase of the project. Various difficulties may
occur to identify these risks and make amendment plans to reduce the effects of these risks.
• Human Resources Management Complexity: It includes all the difficulties regarding organizing, managing, and leading the project team.
• Communication Management Complexity: All the members must interact with all the other members and there must be a good
communication with the customer.
• Procurement Management Complexity: Projects need many services from third party to complete the task. These may increase the
complexity of the project to acquire the services.
• Integration Management Complexity: The difficulties regarding coordinating processes and developing a proper project plan. Many
changes may occur during the project development and it may hamper the project completion, which increases the complexity.
Prerequisite of software project management
• There are three needs for software project management. These are:
• Time
• Cost
• Quality
• It is an essential part of the software organization to deliver a quality
product
• Keeping the cost within the client’s budget and deliver the project as
per schedule.
• There are various factors, both external and internal, which may
impact this triple factor.
• Any of three-factor can severely affect the other two.
Applications of Software Engineering
Following are the different Software Engineering applications:

• Software Development for various domains

• To perform various operations on the software like testing

• Maintenance of various software products

• To apply the knowledge, practices, and technologies to build high-


quality software products that enhance productivity in every industry
Changing Nature of Software
Nowadays, seven broad categories of computer software present continuing
challenges for software engineers .which is given below:

1. System Software
2. Application Software
3. Engineering and Scientific Software
4. Embedded Software
5. Product-line Software
6. Web Application
7. Artificial Intelligence Software
System software
1. System software is a type of computer program that is designed to run a computer's
hardware and application programs.
2. The system software is the interface between the hardware and user applications.
3. The operating system is the best-known example of system software. The OS
manages all the other programs in a computer.
4. System software is used to manage the computer itself. It runs in the background,
maintaining the computer's basic functions so users can run higher-level
application software to perform certain tasks.
5. Essentially, system software provides a platform for application software to be run
on top of.
Application Software
1. Application software performs specific functions for a user. When a user interacts
directly with a piece of software, it is called application software.
2. The sole purpose of application software is to assist the user in doing specified
tasks.
3. Microsoft Word and Excel, as well as popular web browsers like Firefox and Google
Chrome, are examples of application software.
4. Different type of mobile apps, which includes apps like WhatsApp for
communication and games like Candy Crush.
5. There are also app versions of popular services, such as weather or transportation
information, as well as apps that allow users to connect with businesses. Global
Positioning System (GPS), Graphics, multimedia, presentation software, desktop
publishing software, and so on are examples of such software.
Engineering and Scientific Software
• In general, this is a category of software used to facilitate the
engineering functions and tasks.

• Most notable, perhaps are Computer Aided Design (CAD) programs


and applications that help an engineer in drawing and (in some cases)
test the properties of a drafted part.

• Some of the more sophisticated packages allow the engineer to fit


together and test assemblies and simulate production. I have worked
with CAD/CAM packages that translate CAD drawings to numerical
control (NC) machine language for production.
Embedded Software
• Embedded software applications are specialized programming within non-PC devices – either
as part of a microchip or as part of another application that sits on top of the chip to control
specific functions of the device.
• It is written specifically for the particular hardware that it runs on and usually has processing
and memory constraints because of the device’s limited computing capabilities. Examples of
embedded software include those found in dedicated GPS devices, factory robots, some
calculators and even modern smartwatches.
• Embedded software can be very simple, such as that used for controlling lighting in homes, and
can run on an 8-bit microcontroller with less memory, or it can be quite complex such as the
software running all of the electronic components of a modern smart car, complete with climate
controls, automatic collision sensing, as well as control navigations. Complex embedded software
can also be found in aircraft avionics systems, in very complex fly-by-wire systems used in fighter
planes and even in missile guidance systems.
Product-line Software
• A software product line is a set of software-intensive systems that share a common,
managed set of features satisfying the specific needs of a particular market segment or
mission and that are developed from a common set of core assets in a prescribed way.
• A software product line is a collection of multiple software.
• Software engineers can share different assets among all the software available in the
respective product line.
• We can share the common, managed set of software features that can satisfy the
specific needs of a big task.
• These common features are developed from a common set of core assets. Some of the
core assets are mentioned here
Web Application
• A web-application is an application program that is usually stored on a remote server,

and users can access it through the use of Software known as web-browser.

• web application usually uses a combination of the server-side scripts such as PHP,

ASP, for handling the information/ data storage and retrieval of the data.

• Web applications include online forms, shopping carts, word processors, spreadsheets,

video and photo editing, file conversion, file scanning, and email programs such as

Gmail, Yahoo. Popular applications include Google Apps and Microsoft 365.

• Google Apps for Work has Gmail, Google Docs, Google Sheets, Google Slides, online

storage and more.


Artificial Intelligence Software
• Artificial Intelligence (AI) Software is a computer program which mimics human

behavior by learning various data patterns and insights.

• Top features of AI software include Machine Learning, Speech & Voice Recognition,

Virtual Assistant etc.

• AI combined with Machine learning is used to provide users with the required

functionality and make the business process a much simpler one.


Legacy software
• Legacy software is an older version of a program or application that still functions
even after newer updates or versions are available.

• Companies typically use legacy software when they have older technology systems.

• Older computers are often only compatible with software of a similar age, so it's
easier for companies to use legacy software instead of purchasing new equipment.

• While using legacy software, IT professionals need to observe extra security


protocols, perform frequent data backups, convert files to compatible formats with
new software and drivers and purchase additional storage.
Advantages of legacy software
• Legacy systems are familiar
• Having a legacy system provides a unique feeling of familiarity and comfort. In actuality, this
close attachment is among the most common reasons for retaining legacy systems.
• The entire workflow is smooth since everyone knows how to access records and use the software.
As such, it makes it easier to carry out daily tasks with no hitches whatsoever.

• Legacy systems are efficient for specific tasks


• Efficiency is another legacy software advantage. Some legacy systems, despite being old and
outdated, still work perfectly fine. And most importantly, these systems are typically designed
for maximum capacity and remain reliable and durable in most cases.
• For example, banking systems use legacy systems and mainframes to facilitate most of their
transactions. And although they might be difficult to maintain, they are still efficient in
carrying out day-to-day operations.
Advantages of legacy software(cont…)
• Legacy systems ensure continuity in business operations
• Modernizing software or switching to entirely new technology is a delicate process
that could put business operations on hold. Alternatively, maintaining the status quo
(legacy systems) lets business operations run smoothly with no hitches or pauses.

• Legacy system replacement is painful


• Tons of new technologies are currently taking over industries globally. However,
switching from a legacy system to an entirely new technology can be a resource-
intensive task for any company. And when you acquire new software, you need to hire
and train specialists to use it as well as consider all associated risks.
Disadvantages of legacy software
• Compatibility issues
• Legacy systems may support certain data files and formats at the beginning. However, these standards often evolve
beyond what the legacy system can handle after a short time.
• Since old software cannot handle modern technological demands, companies would struggle to meet their business
goals. Consequently, these businesses would end up losing essential opportunities.
• Limited flexibility
• Legacy systems usually offer limited flexibility, which makes them challenging to change or customize. As a result,
companies struggle to cope with the evolving industry’s rigors, highlighting one of the primary disadvantages of
legacy systems flexibility.
• On the other hand, modern systems are more flexible and can easily adapt to updates or technological
advancements.
• Functionality issues
• Reduced software functionality is a crucial legacy software disadvantage that companies may face from time to time.
• In most cases, the system would be unable to run and integrate certain software programs or carry out specific
functions.
• A tragic example of the functionality issues posed by legacy systems is the Comair airline company tragedy. Software
malfunction cost the company around $20 million and badly damaged its reputation, culminating with the CEO’s
firing.
Disadvantages of legacy software (cont…)
• Old interface
• Most legacy systems have old interfaces, which is one of the disadvantages of
maintaining legacy systems. In today’s world, an outdated interface can hurt any
business by derailing customers’ trust in the brand, leading to a decline in sales.
• In the same vein, an outdated interface provides a horrible user experience. The
displays are difficult to read, and the data is challenging to interpret.
• Costly maintenance
• The U.S. Federal Government was forced in 2018 to spend nearly 80% of its IT
budget on the maintenance of outdated legacy systems. This case highlights the
possible financial implications of not modernizing legacy systems. Besides, legacy
systems require the expertise of skilled technicians, which is currently in limited
supply.
• Security vulnerabilities
• Legacy systems are prone to malware attacks from bad actors. The absence of
software patches and upgrades leaves the legacy system susceptible and
defenseless to potent attacks. And eventually, they end up spending extra to
support the system while paying for special licenses.
Software Myths
• Software myths are the beliefs that people consider are true but are not, regarding
software and its development process.

• Myths are false beliefs or misleading attitudes often set up in a user’s brain and often
cause trouble for managers and technical people.

• Anyone who comes in contact with software may have suffered from these myths
associated with software development and its use.

• These myths propagate false beliefs and confusion in the minds of users, managers,
and developers.
Types of Software Myths
There are three kinds of software myths that are busted down in the article.

• Management Myths

• Customer Myths

• Practitioner’s Myths
Management Myths
• Managers are often under pressure for software development under a tight budget, improved quality, and a packed schedule, often
believing in some software myths.
• Myth 1: Manuals containing simple procedures, principles, and standards are enough for developers to acquire all the information
they need for software development.
Reality 1: Standards discussed in modules are often outdated, inadaptable, and incomplete. Not all the standards in the manual are
known to developers as not all means tend to decrease delivery time and maintain high quality. Most of the time, developers are
unaware of these standards.

• Myth 2: Falling behind on schedule could be taken care of by adding more programmers.
Reality 2:Adding more human resources to already late projects worsens the problem. Developers working on the project have to
educate the newcomers, further delaying the project. Also, newcomers are far less productive than developers already working on
them. As a result, time spent on educating newcomers could not meet the immediate reduction in work.

• Myth 3:If a project is outsourced to a third party, we could just relax and wait for them to build it.
Reality 3: If an organization is not able to manage and control software projects internally, then the organization will suffer
invariably when they outsourced the project.
Customer Myths
• Customer Myths
• Customer Myths are generally due to false expectations by customers, and these myths end up
leaving customers with dissatisfaction with the software developers.
• Myth 1
• Not only detailed conditions a vague collection of software objectives is enough to begin
programming with.
Reality 1
• If the objectives of software are vague enough to become ambiguous, then it's inevitable that
software will not do what the customer wants. Often when software development starts
without a complete picture in mind, it results in software failure.

• Myth 2
• Softwares are flexible, and developers could accommodate any change later. Developers can
quickly take care of these changes in requirements.
Reality 2
• Longer the time for which software has proceeded for development, it becomes more and more
difficult to accommodate any changes. Any change causes an increase in additional costs
because incorporating changes at later stages needs redesigning and extra resources.
Practitioner’s Myths
Developers often work under management pressure to complete software within a timeframe, with fewer

resources often believing in these software myths. Following are some practitioners’ myths.

• Myth 1: Once the software is developed or the code is delivered to the customer, the developer's work ends.

Reality 1: A significant chunk of developers' work, i.e., 50-60 % of all the efforts expended on software, will

be spent after the customer provides the software. Major requirements would get found missing, and new

bugs may get discovered, and so on.

• Myth 2: Software testing could only be possible when the software program starts running.

Reality 2: Quality of software could be measured at any phase of development by applying some QA

mechanism.

• Myth 3: Unnecessary Documentation slows down the process of software development.

Reality 3: Software engineering is about creating a quality product at every level and not about adding

unnecessary work. Proper documentation of software helps us guide the user and enhance the quality,

which reduces the amount of rework.


Layered Technology in Software Engineering
Software engineering is a fully layered technology, to develop software we need to go
from one layer to another. All the layers are connected and each layer demands the
fulfillment of the previous layer.
Layered Technology in Software Engineering(Cont…)
• Software engineering is a layered technology. Various layers on which the technology
is based are quality focus layer, process layer, methods layer, tools layer.

• A disciplined quality management is a backbone of software engineering technology.

• Process layer is a foundation of software engineering. Basically, process defines the


framework for timely delivery of software.

• In method layer the actual method of implementation is carried out with the help of
requirement analysis, designing, coding using desired programming constructs and
testing.

• Software tools are used to bring automation in software development process.


Layered Technology in Software Engineering(Cont…)
• A quality focus: It defines the continuous process improvement principles of software.
It provides integrity that means providing security to the software so that data can be
accessed by only an authorized person, no outsider can access the data. It also focuses
on maintainability and usability.

• Process: It is the foundation or base layer of software engineering. It is key that binds
all the layers together which enables the development of software before the deadline
or on time. Process defines a framework that must be established for the effective
delivery of software engineering technology. The software process covers all the
activities, actions, and tasks required to be carried out for software development.
Layered Technology in Software Engineering(Cont…)
Process activities:-
• Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.

• Planning: It basically means drawing a map for reduced the complication of


development.

• Modeling: In this process, a model is created according to the client for better
understanding.

• Construction: It includes the coding and testing of the problem.

• Deployment:- It includes the delivery of software to the client for evaluation and
feedback.
Layered Technology in Software Engineering(Cont…)

• Method: During the process of software development the answers to all “how-
to-do” questions are given by method. It has the information of all the tasks
which includes communication, requirement analysis, design modeling,
program construction, testing, and support.

• Tools: Software engineering tools provide a self-operating system for


processes and methods. Tools are integrated which means information created

by one tool can be used by another.


CMMI
• CMMI stands for Capability Maturity Model.
• CMMI was developed by Carnegie Mellon University. Its goal was to make maturity
models which measure the ability of organizations to have ongoing improvement in a
particular area.
• The CMMI is designed to help improve performance by providing businesses with
everything they need to consistently develop better products and services.
• CMMI is more than a process model; it’s also a behavioral model. Businesses can use
the CMMI to tackle the logistics of improving performance by developing measurable
benchmarks.
• CMMI can also help create a structure for encouraging productive, efficient behavior
throughout the organization.
Objectives of CMMI

• Fulfilling customer needs and expectations.

• Value creation for investors/stockholders.

• Market growth is increased.

• Improved quality of products and services.

• Enhanced reputation in Industry.


Level-1: Initial

• Processes followed are Adhoc and immature and are not well defined.

• Unstable environment for software development.

• No basis for predicting product quality, time for completion, etc.


Level-2: Repeatable
• Focuses on establishing basic project management policies.

• Experience with earlier projects is used for managing new similar natured projects.

• Project Planning- It includes defining resources required, goals, constraints, etc. for the project. It presents
a detailed plan to be followed systematically for the successful completion of good quality software.

• Configuration Management- The focus is on maintaining the performance of the software product,
including all its components, for the entire lifecycle.

• Requirements Management- It includes the management of customer reviews and feedback which result in
some changes in the requirement set. It also consists of accommodation of those modified requirements.

• Subcontract Management- It focuses on the effective management of qualified software contractors i.e. it
manages the parts of the software which are developed by third parties.

• Software Quality Assurance- It guarantees a good quality software product by following certain rules and
quality standard guidelines while developing.
Level-3: Defined
• At this level, documentation of the standard guidelines and procedures takes place.

• It is a well-defined integrated set of project-specific software engineering and management processes.

• Peer Reviews- In this method, defects are removed by using a number of review methods like walkthroughs,
inspections, buddy checks, etc.

• Intergroup Coordination- It consists of planned interactions between different development teams to ensure
efficient and proper fulfillment of customer needs.

• Organization Process Definition- Its key focus is on the development and maintenance of the standard
development processes.

• Organization Process Focus- It includes activities and practices that should be followed to improve the process
capabilities of an organization.

• Training Programs- It focuses on the enhancement of knowledge and skills of the team members including the
developers and ensuring an increase in work efficiency.
Level-4: Managed

• At this stage, quantitative quality goals are set for the organization for software
products as well as software processes.

• The measurements made help the organization to predict the product and process
quality within some limits defined quantitatively.

• Software Quality Management- It includes the establishment of plans and strategies


to develop quantitative analysis and understanding of the product’s quality.

• Quantitative Management- It focuses on controlling the project performance in a


quantitative manner.
Level-5: Optimizing
• This is the highest level of process maturity in CMM and focuses on continuous process
improvement in the organization using quantitative feedback.

• Use of new tools, techniques, and evaluation of software processes is done to prevent
recurrence of known defects.

• Process Change Management- Its focus is on the continuous improvement of the


organization’s software processes to improve productivity, quality, and cycle time for the
software product.

• Technology Change Management- It consists of the identification and use of new


technologies to improve product quality and decrease product development time.

• Defect Prevention- It focuses on the identification of causes of defects and prevents them
from recurring in future projects by improving project-defined processes.
SDLC
• SDLC stands for Software Development Life Cycle.

• A software life cycle model (also termed process model) is a pictorial and diagrammatic
representation of the software life cycle.
Stage1: Planning and requirement analysis
• Requirement Analysis is the most important and necessary stage in SDLC.
• The senior members of the team perform it with inputs from all the stakeholders and
domain experts or SMEs in the industry.
• Planning for the quality assurance requirements and identifications of the risks associated
with the projects is also done at this stage.
• Business analyst and Project organizer set up a meeting with the client to gather all the
data like what the customer wants to build, who will be the end user, what is the objective
of the product. Before creating a product, a core understanding or knowledge of the product
is very necessary.
• For Example, A client wants to have an application which concerns money transactions. In
this method, the requirement has to be precise like what kind of operations will be done,
how it will be done, in which currency it will be done, etc.
Stage2: Defining Requirements

• Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project stakeholders.
• This is accomplished through "SRS"- Software Requirement Specification document which
contains all the product requirements to be constructed and developed during the project
life cycle.
Stage3: Designing the Software

• The next phase is about to bring down all the knowledge of requirements, analysis, and
design of the software project. This phase is the product of the last two, like inputs from
the customer and requirement gathering.
Stage4: Developing the project

• In this phase of SDLC, the actual development begins, and the programming is built. The
implementation of design begins concerning writing code. Developers have to follow the
coding guidelines described by their management and programming tools like compilers,
interpreters, debuggers, etc. are used to develop and implement the code.
Stage5: Testing

• After the code is generated, it is tested against the requirements to make sure that the
products are solving the needs addressed and gathered during the requirements stage.
• During this stage, unit testing, integration testing, system testing, acceptance testing are
done.
Stage6: Deployment

• Once the software is certified, and no bugs or errors are stated, then it is deployed.
• Then based on the assessment, the software may be released as it is or with suggested
enhancement in the object segment.
• After the software is deployed, then its maintenance begins.
Stage7: Maintenance

• Once when the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.
• This procedure where the care is taken for the developed product is known as
maintenance.
Waterfall Model
• The Waterfall Model was the first Process Model to be introduced.

• It is also referred to as a linear-sequential life cycle model.

• It is very simple to understand and use.

• In a waterfall model, each phase must be completed before the next phase can begin and
there is no overlapping in the phases.

• The Waterfall model is the earliest SDLC approach that was used for software
development.

• The waterfall Model illustrates the software development process in a linear sequential
flow. This means that any phase in the development process begins only if the previous
phase is complete. In this waterfall model, the phases do not overlap.
The sequential phases in Waterfall model

• Requirement Gathering and analysis − All possible requirements of the system to be developed
are captured in this phase and documented in a requirement specification document.
• System Design − The requirement specifications from first phase are studied in this phase and
the system design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
• Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and
tested for its functionality, which is referred to as Unit Testing.
• Integration and Testing − All the units developed in the implementation phase are integrated
into a system after testing of each unit. Post integration the entire system is tested for any
faults and failures.
• Deployment of system − 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.
When to use SDLC Waterfall Model?

• Requirements are very well documented, clear and fixed.

• Product definition is stable.

• A project is short

• There are no ambiguous requirements.

• Where the tools and technology used is consistent and is not changing

• When resources are well prepared and are available to use.


Advantages of Waterfall model

• This model is simple to implement also the number of resources that are required for it is
minimal.

• The requirements are simple and explicitly declared; they remain unchanged during the
entire project development.

• The start and end points for each phase is fixed, which makes it easy to cover progress.

• The release date for the complete product, as well as its final cost, can be determined
before development.

• It gives easy to control and clarity for the customer due to a strict reporting system.
Disadvantages of Waterfall model
• In this model, the risk factor is higher, so this model is not suitable for more significant

and complex projects.

• This model cannot accept the changes in requirements during development.

• It becomes tough to go back to the phase. For example, if the application has now shifted

to the coding phase, and there is a change in requirement, It becomes tough to go back

and change it.

• Since the testing done at a later stage, it does not allow identifying the challenges and

risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
RAD (Rapid Application Development) Model

• RAD is a linear sequential software development process model that emphasizes a


concise development cycle using an element based construction approach.
• If the requirements are well understood and described, and the project scope is a
constraint, the RAD process enables a development team to create a fully functional
system within a concise time period.
• RAD is a concept that products can be developed faster and of higher quality through:
• Gathering requirements using workshops or focus groups
• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that refers design improvements to the next product version
• Less formality in reviews and other team communication
RAD Model - Application
• RAD model can be applied successfully to the projects in which clear modularization is
possible. If the project cannot be broken into modules, RAD may fail.

• The following pointers describe the typical scenarios where RAD can be used −

• RAD should be used only when a system can be modularized to be delivered in an


incremental manner.

• It should be used if there is a high availability of designers for Modelling.

• It should be used only if the budget permits use of automated code generating tools.

• RAD SDLC model should be chosen only if domain experts are available with relevant
business knowledge.

• Should be used where the requirements change during the project and working prototypes
are to be presented to customer in small iterations of 2-3 months.
The advantages of the RAD Model

• Changing requirements can be accommodated.

• Progress can be measured.

• Iteration time can be short with use of powerful RAD tools.

• Productivity with fewer people in a short time.

• Reduced development time.

• Increases reusability of components.

• Quick initial reviews occur.

• Encourages customer feedback.

• Integration from very beginning solves a lot of integration issues.


Disadvantages of the RAD Model
• Dependency on technically strong team members for identifying business requirements.

• Only system that can be modularized can be built using RAD.

• Requires highly skilled developers/designers.

• High dependency on Modelling skills.

• Inapplicable to cheaper projects as cost of Modelling and automated code generation is very
high.

• Management complexity is more.

• Suitable for systems that are component based and scalable.

• Requires user involvement throughout the life cycle.

• Suitable for project requiring shorter development times.


Spiral Model

• Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling.

• In its diagrammatic representation, it 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.

• The exact number of phases needed to develop the product can be varied by the project
manager depending upon the project risks.

• As the project manager dynamically determines the number of phases, so the project
manager has an important role to develop a product using the spiral model.
Spiral Model (Cont…)
• The Spiral Model is a risk-driven model, meaning that the focus is on managing risk
through multiple iterations of the software development process. It consists of the
following phases:
• Planning: The first phase of the Spiral Model is the planning phase, where the scope of
the project is determined and a plan is created for the next iteration of the spiral.
• Risk Analysis: In the risk analysis phase, the risks associated with the project are
identified and evaluated.
• Engineering: In the engineering phase, the software is developed based on the
requirements gathered in the previous iteration.
• Evaluation: In the evaluation phase, the software is evaluated to determine if it meets the
customer’s requirements and if it is of high quality.
• Planning: 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 Radius of the
spiral at any point represents the expenses(cost) of the project so far, and the angular
dimension represents the progress made so far in the current phase.
Spiral Model (Cont…)
Each phase of the Spiral Model is divided into four quadrants:

• Objectives determination and identify alternative solutions: 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.

• Identify and resolve Risks: 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.

• Develop 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.

• 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.
When to use Spiral Model?

• When there is a budget constraint and risk evaluation is important.

• When the project is large

• When requirements are unclear and complex

• When changes may require at any time

• Large and high budget projects


Advantages of the Spiral Model

• High amount of risk analysis

• Useful for large and mission-critical projects.

• Allows extensive use of prototypes.

• Development can be divided into smaller parts and the risky parts can be developed
earlier which helps in better risk management.
Disadvantages of the Spiral Model

• Can be a costly model to use.

• Risk analysis needed highly particular expertise

• Doesn't work well for smaller projects.

• Spiral may go on indefinitely.

• Large number of intermediate stages requires excessive documentation.


Incremental process model
• The incremental process model is also known as the Successive version model.
• 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.
Types of Incremental model
1. Staged Delivery Model: Construction of only 2. Parallel Development Model – Different
one part of the project at a time. subsystems are developed at the same time. It
can decrease the calendar time needed for the
development, i.e. TTM (Time to Market) if
enough resources are available.
When we use the Incremental Model?

• When the requirements are superior.

• A project has a lengthy development schedule.

• When Software team are not very well skilled or trained.

• When the customer demands a quick release of the product.

• You can develop prioritized requirements first.


Advantage of Incremental Model

• Errors are easy to be recognized.

• Easier to test and debug

• More flexible.

• Simple to manage risk because it handled during its iteration.

• The Client gets important functionality early.


Disadvantage of Incremental Model

• Need for good planning

• Because of its continuous iterations Cost is high.

• Well defined module interfaces are needed.


S.
Waterfall Model Incremental Model
No.
Detailed Documentation is Necessary but not too
1. Detailed Documentation is necessary.
much.
Testing is done in the waterfall model after the Testing is done in the incremental model after every
2.
completion of the coding phase. iteration of the phase.
There is a high amount of risk in the waterfall There is a low amount of risk in the incremental
3.
model. model.
There is a long waiting time for running software There is a short waiting time for running software in
4.
in the waterfall model. the incremental model.

5. In the waterfall model, a large team is required. In an incremental model large team is not required.

Flexibility to change in the waterfall model is


6. Flexibility to change in incremental model is Easy.
Difficult.
Multiple development cycles take place in the
7. There is only one cycle in the waterfall model.
incremental model.
The customer is involved only at the beginning In incremental model, customer involvement is
8.
of development. intermediate.
Iterative model

• In the Iterative model, iterative process starts with a simple implementation of a small set

of the software requirements and iteratively enhances the evolving versions until the

complete system is implemented and ready to be deployed.

• An iterative life cycle model does not attempt to start with a full specification of

requirements.

• Instead, development begins by specifying and implementing just part of the software,

which is then reviewed to identify further requirements. This process is then repeated,

producing a new version of the software at the end of each iteration of the model.
The various phases of Iterative model
• Requirement gathering & analysis: In this phase, requirements are gathered from customers
and check by an analyst whether requirements will fulfil or not. Analyst checks that need will
achieve within budget or not. After all of this, the software team skips to the next phase.
• Design: In the design phase, team design the software by the different diagrams like Data Flow
diagram, activity diagram, class diagram, state transition diagram, etc.
• Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programmes which are called Software.
• Testing: After completing the coding phase, software testing starts using different test
methods. There are many test methods, but the most common are white box, black box, and
grey box test methods.
• Deployment: After completing all the phases, software is deployed to its work environment.
• Review: In this phase, after the product deployment, review phase is performed to check the
behaviour and validity of the developed product. And if there are any error found then the
process starts again from the requirement gathering.
• Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options.
When to use the Iterative Model

• Requirements of the complete system are clearly defined and understood.

• Major requirements must be defined; however, some functionalities or requested


enhancements may evolve with time.

• There is a time to the market constraint.

• A new technology is being used and is being learnt by the development team while
working on the project.

• Resources with needed skill sets are not available and are planned to be used on contract
basis for specific iterations.

• There are some high-risk features and goals which may change in the future.
Advantages of Iterative Model

• Testing and debugging during smaller iteration is easy.

• A Parallel development can plan.

• It is easily acceptable to ever-changing needs of the project.

• Risks are identified and resolved during iteration.

• Limited time spent on documentation and extra time on designing.


Disadvantage of Iterative Model

• It is not suitable for smaller projects.

• More Resources may be required.

• Design can be changed again and again because of imperfect requirements.

• Requirement changes can cause over budget.

• Project completion date not confirmed because of changing requirements.


Evolutionary Process Model

• Evolutionary model is a combination of Iterative and Incremental model of software


development life cycle.
• It is a very suitable model because of user feedback and other factors that make the model very
suitable for the development of complete Software.
• The user feedback is very helpful for the development of the next stage because after the
completion of one stage we get the feedback to the user, the user feedback is very essential for
the development of the next phase.
• If you want any changes in the software requirements, all changes will be applied within a
time.
• In the evolutionary model, all work divided into smaller chunks. These chunks present to the
customer one by one. The confidence of the customer increased.
• This model also allows for changing requirements as well as all development done into
different pieces and maintains all the work as a chunk.
Where the evolutionary model is useful

• It is very useful in a large project where you can easily find a module for step by step

implementation.

• The evolutionary model is used when the users need to start using the many features

instead of waiting for the complete software.

• The evolutionary model is also very useful in object-oriented software development

because all the development is divided into different units.


Advantages of Evolutionary Model

• The big advantage of the evolutionary model is that the user has checked every stage during

the development and it is helpful in achieving customer confidence.

• There are fewer chances of errors because all the modules are well seen.

• It helps to reduce the risk of software projects.

• It also reduces the cost of development.

• Minimize serious problems during testing.


Disadvantages of Evolutionary Model

• The delivery of full software can be late due to different changes by customers during

development.

• It is difficult to divide the problem into several parts, that would be acceptable to the customer

which can be incrementally implemented and delivered.

You might also like