Software Project Management: Dr. Chaitali Biswas Dutta CSE, SSIPMT, Raipur
Software Project Management: Dr. Chaitali Biswas Dutta CSE, SSIPMT, Raipur
• 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:
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.
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
• Top features of AI software include Machine Learning, Speech & Voice Recognition,
• AI combined with Machine learning is used to provide users with the required
• 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.
• 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
• 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.
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,
• 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.
• 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.
• Modeling: In this process, a model is created according to the client for better
understanding.
• 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.
• Processes followed are Adhoc and immature and are not well defined.
• 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.
• 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.
• Use of new tools, techniques, and evaluation of software processes is done to prevent
recurrence of known defects.
• 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.
• 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?
• A project is short
• Where the tools and technology used is consistent and is not changing
• 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
• 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
• 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
• The following pointers describe the typical scenarios where RAD can be used −
• 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
• Inapplicable to cheaper projects as cost of Modelling and automated code generation is very
high.
• Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling.
• 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?
• 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
• More flexible.
5. In the waterfall model, a large team is required. In an incremental model large team is not required.
• 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
• 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
• 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
• 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
• The big advantage of the evolutionary model is that the user has checked every stage during
• There are fewer chances of errors because all the modules are well seen.
• 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