Spm(a6219) Ist Module
Spm(a6219) Ist Module
IV.YEAR-I SEMESTER
Software Project
A Software Project is the complete procedure of software development from requirement gathering to testing
and maintenance, carried out according to the execution methodologies, in a specified period of time to
achieve intended software product.
A software project manager is a person who undertakes the responsibility of executing the software project.
Software project manager is thoroughly aware of all the phases of SDLC that the software would go through.
Project manager may never directly involve in producing the end product but he controls and manages the
activities involved in production.
A project manager closely monitors the development process, prepares and executes various plans, arranges
necessary and adequate resources, maintains communication among all team members in order to address
issues of cost, budget, resources, time, quality and customer satisfaction.
Let us see few responsibilities that a project manager shoulders -
Managing People
Managing Project
Software project management comprises of a number of activities, which contains planning of project,
deciding scope of software product, estimation of cost in various terms, scheduling of tasks and events, and
resource management. Project management activities may include:
Project Planning
Scope Management
Project Estimation
Project Planning
Software project planning is task, which is performed before the production of software actually starts. It is
there for the software production but involves no concrete activity that has any direction connection with
software production; rather it is a set of multiple processes, which facilitates software production.
Management
It defines the scope of project; this includes all the activities, process need to be done in order to make a
deliverable software product. Scope management is essential because it creates boundaries of the project by
clearly defining what would be done in the project and what would not be done.
This makes project to contain limited and quantifiable tasks, which can easily be documented and in turn
avoids cost and time overrun.
Project Estimation
For an effective management accurate estimation of various measures is a must. With correct estimation
managers can manage and control the project more efficiently and effectively.
Software size may be estimated either in terms of KLOC (Kilo Line of Code) or by calculating
number of function points in the software. Lines of code depend upon coding practices and Function
points vary according to the user or software requirement.
Effort estimation
The managers estimate efforts in terms of personnel requirement and man-hour required to produce
the software. For effort estimation software size should be known. This can either be derived by
managers’ experience, organization’s historical data or software size can be converted into efforts by
using some standard formulae.
Time estimation
Once size and efforts are estimated, the time required to produce the software can be estimated.
Efforts required is segregated into sub categories as per the requirement specifications and
interdependency of various components of software. Software tasks are divided into smaller tasks,
activities or events by Work Breakthrough Structure (WBS). The tasks are scheduled on day-to-day
basis or in calendar months.
The sum of time required to complete all tasks in hours or days is the total time invested to complete
the project.
Cost estimationThis might be considered as the most difficult of all because it depends on more
elements than any of the previous ones. For estimating project cost, it is required to consider -
o Size of software
o Software quality
o Hardware
o Additional software or tools, licenses etc.
o Skilled personnel with task-specific skills
o Travel involved
o Communication
o Training and support
1. Do some preliminary research to get internal and external statistics on software development. These
data can be used to justify the following steps for senior management.
2. Educate and train top managers, and software developers.
3. Enforce the use of standards, review procedures, recommended techniques and documentation.
4. Analyze data from prior software projects to determine effective methods.
5. Define objectives in terms of quality desired.
6. Define quality in terms of deliverables.
7. Establish success priority criteria.
8. Allow for contingencies.
9. Establish a method for collection of software productivity data. Collection methods must be simple
and require relatively little staff effort.
10. Develop truthful, accurate cost and schedule estimates that are accepted by management and
customer, and manage to them.
11. Select project managers based on ability to manage software projects rather than on technical ability
or availability.
12. Make specific work assignments to software developers and apply job performance standards.
13. Demand technical and management reviews; track progress carefully.
14. Encourage critiques of methods and/or documentation format from development staff. All critiques
should be accompanied by suggestion for improvement.
15. At project completion, evaluate all information collected.
Stakeholder:
The term Software Project Stakeholder refers to, “a person, group or company that is directly or
indirectly involved in the project and who may affect or get affected by the outcome of the project”.
1. Project Manager:
Responsible for managing the whole project. Project Manager is generally never involved in producing
the end product but he/she controls, monitors and manages the activities involved in the production.
2. Project Team:
Performs the actual work of the project under the Project Manager including development, testing, etc.
3. Company:
Organisation who has taken up the project and whose employees are directly involved in the
development of the project.
4. Funders:
Provides funds and resources for the successful completion of the project.
2. External Stakeholder:
An external stakeholder is the one who is linked indirectly to the project but has significant contribution in
the successful completion of the project.
For example,
1. Customer:
Specifies the requirements of the project and helps in the elicitation process of the requirement
gathering phase. Customer is the one for whom the project is being developed.
2. Supplier:
Supplies essential services and equipment for the project.
3. Government:
Makes policies which helps in better working of the organisation.
The definition of goals and objectives is more of an art than a science, and it can be difficult to define them
and align them correctly.
Goals
Goals are high-level statements that provide the overall context for what the project is trying to accomplish.
Let’s look at an example and some of the characteristics of a goal statement. One of the goals of a project
might be to “increase the overall satisfaction levels for clients calling to the company helpdesk with support
needs”.
Because the goal is at a high-level, it may take more than one project to achieve. In the above
example, for instance, there may be a technology component to increasing client satisfaction. There may
also be new procedures, new training classes, reorganization of the helpdesk department and modification
of the company rewards system. It may take many projects over a long period of time to achieve the goal.
The goal should reference the business benefit in terms of cost, speed and / or quality. In this
example, the focus is on quality of service. Even if the project is not directly in support of the business,
there should be an indirect tie. For instance, an IT infrastructure project to install new web servers may
ultimately allow faster client response, better price performance, or other business benefit. If there is no
business value to the project, the project should not be started.
Generally, non-measurable: If you can measure the achievement of your goal, it is probably at too low
a level and is probably more of an objective.
If your goal is not achievable through any combination of projects, it is probably written at too high a
level. In the above example, you could envision one or more projects that could end up achieving a higher
level of client satisfaction. A goal statement that says you are trying to achieve a perfect client experience
is not possible with any combination of projects. It may instead be a vision statement, which is a higher
level statement showing direction and aspiration, but which may never actually be achieved.
It is important to understand business and project goal statements, even though goals are not a part of the
TenStep Project Definition. Goals are most important from a business perspective. The project manager
needs to understand the business goals that the project is trying to contribute to. However, you do not need to
define specific project goals. On the other hand, objectives definitely are important.
Objectives
Objectives are concrete statements describing what the project is trying to achieve. The objective should be
written at a lower level, so that it can be evaluated at the conclusion of a project to see whether it was
achieved or not. Goal statements are designed to be vague. Objectives should not be vague. A well-worded
objective will be Specific, Measurable, Attainable/Achievable, Realistic and Time-bound (SMART).
An example of an objective statement might be to “upgrade the helpdesk telephone system by December 31
to achieve average client wait times of no more than two minutes”.
Note that the objective is much more concrete and specific than the goal statement.
The objective is measurable in terms of the average client wait times the new phone system is trying
to achieve.
We must assume that the objective is achievable and realistic.
The objective is time-bound, and should be completed by December 31.
Objectives should refer to the deliverables of the project. In this case, it refers to the upgrade of the telephone
system. If you cannot determine what deliverables are being created to achieve the objective, then the
objective may be written at too high a level. On the other hand, if an objective describes the characteristics of
the deliverables, they are written at too low a level. If they describe the features and functions, they are
requirements, not objectives.
Project Planning:
Step-wise planning
STEPWISE PROJECT PLANNING :
The framework of basic steps in project planning illustrates the various activities involved in the
development process. An outline of Step Wise planning is listed below:
Selecting project
Project scope & objectives
Project infrastructure
Analyze project characteristics
Project products and activities
Estimation effort
Activity risks
Allocate resources
Review plan
Execute plan
This is the initial step which starts well outside the project planning process.
Feasibility study of the project helps in choosing the appropriate one. Strategic planning process
helps in evaluating the metrics of selecting the project.
Different methodologies are inevitable, stemming directly from the questions of what constitutes a
methodology and what are a methodology's underlying principles.
Projects differ according to size, composition, priorities, and criticality.
The people on a project have different biases based on their experiences, principles, and fears.
Every stakeholder involved in the project must agree on the objectives defined in determining the
success of the project.
Scope statements may take many forms depending on the type of project being implemented and the
nature of the organization.
The scope statement details the project deliverables and describes the major objectives.
The objectives should include measurable success criteria for the project.
The Scope Statement should be written before the Statement of work and it should capture, in very
broad terms, the product of the project, for example, "developing a software based system to capture
and track orders for software."
Project Infrastructure refers to the organizational structure, processes, tools, techniques and training
an organisation puts in place to make projects more successful.
Organisational Structure – Organisational structure including such support mechanisms as project
management office, project recruiting function, financial monitoring area etc.
Processes – Typically methodologies, checklists and guidelines
Tools – Software and templates
Techniques – Repeatable processes such as kick off meetings, PIRs, analysis techniques, etc.
Training – Formal and informal training and reference documentation.
Step 3: Analyze Project Characteristics
Identify the project deliverables i.e. the end product that has to been given over to the client.
Project products can be System products, module products or management products.
Technical products include training materials and operating instructions in managing the quality of
the project.
Describe the project products into components and sub-components related to individual modules in
each step.
Every activity must be carried out for each stage of the development process.
The effort estimation for the staff required, the probable duration and the non staff resources needed
for every activity is determined.
These estimates depend on the type of the activity.
Effort is the amount of work that has to be done.
Software development efforts estimation is the process of predicting the most realistic use of effort
required to develop or maintain software based on incomplete, uncertain and/or noisy input.
Effort estimates may be used as input to project plans, iteration plans, budgets, investment analyses,
pricing processes and bidding rounds.
Activity based risks are identified for every activity based on number of assumptions.
Risk planning reduces the impact of identified risks.
New activities can reduce risks to a certain extent when there is change in plans.
Risks fall into three broad categories - controllable known, uncontrollable known and unknown.
The former two, are those risks happen before they can determine how to manage them. This is done
using root cause analysis.
As the name implies its goal is to look for the root cause on the problem and solve it at that point.
The four ways of handling risk are:
Avoidance - Take action to avoid the risk
Mitigation - Define actions to take when the risk occurs
Transfer - Have someone else handle the risk i.e. insurance
Acceptance - Identify the risk as acceptable and let it happen.
Step 7: Allocate Resources
Resource allocation is used to assign the available resources in an economic way. It is part of resource
management. In project management, resource allocation is the scheduling of activities and the
resources required by those activities while taking into consideration both the resource availability
and the project time.
Staff needed and available are identified for each activity and allocated their respective tasks.
Staff priority list is generated based on the task allotted to them because some staffs are used for more
than one task.
A Gantt chart pictorially represents when activities have to take place and which one has to be
executed at the same time.
The chart represents when staff will be carrying out the tasks in each month. It also shows staff
involved in more than one task.
When allocating resources the constraints associated is estimated and included in the overall cost.
When a task is completed it leads to the quality review. These quality checks have to be passed before
the activity is completely signed-off.
Every plan has to be documented and all stakeholders must have agreed to all constraints and
understand the project.
There are some steps involved in project plan review: 1. Define the problem 2. Determine the focus 3.
Select the appropriate tools 4. Identify the participants 5. The Project Review process: The team
should consist of folks most intimate with the project including any of the following representatives:
-Project Managers -Product Managers -Development Leads -Quality Leads -Content Experts
-Customer Support Leads -Management. 6. Document the review plan.
Finally, the execution of the project is drawn with each specified activity as it is approached.
Detailed planning of later stages is necessary because more information will be available than the
start stage.
Project planning and execution becomes an iterative process where as each activity which is to be
carried out approaches, they should be reviewed in detail.
Project Scope:
Defining the project scope is a critical part of the project planning process. That’s because the project
scope defines the boundaries of what will and won’t be part of the project work, which is essential when
making the project budget and schedule.
The project scope is the total amount of work that needs to be done to complete a project. To define it,
project managers must break down the project into the tasks and deliverables that’ll be executed to meet
goals and stakeholder requirements and deliver the project successfully.
Defining the project scope is an integral part of the project planning process because based on the scope,
project managers will assemble their teams, estimate what project resources are needed and determine what
the project plan, schedule and budget will be.
Once the scope of a project has been determined, it needs to be managed through a process known as project
scope management. Project management software helps you manage scope. Project Manager, award-winning
project management software that has robust Gantt charts, helps you to create a project plan, where all of
your scoped tasks are scheduled with assignees and deadlines.
1. Project Justification
2. Project Objectives
3. Product Scope Description
4. Product Acceptance Criteria
5. Project Constraints
6. Project Assumptions
1. Project Scope Justification
It is critical that you justify "how and why" your project came to be. Clearly describe the business need(s) it
addresses as well as the scope of work to be performed. It is important to address how the project will affect
and be affected by the other related activities.
Objectives are concrete statements describing what the project is trying to achieve. The objective should be
written at a lower level, allowing it to be evaluated at the conclusion of a project to see whether it was
achieved. Using the (SMART) method will assist in creating a well-worded objective.
Scope Description is the features and functions of the products, services, and/or results your project will
produce. It is important to mention that the Project Scope is more work-oriented, (the how's,) while Product
Scope is more oriented toward functional requirements, (the what's.)
Acceptance Criteria are the standards required to satisfy the customer's quality expectations and gain
acceptance of the final product. This can be summarized as the process and criteria for accepting completed
products, services, or results. The Acceptance Criteria forms the basis for the Project Quality Plan.
Target dates
Major functions
Capacity, accuracy and availability
Repair times
Development costs
Running costs
5. Project Constraints
Constraints define the various restrictions that limit what, when and how you will achieve the goal as well as
how much achieving it can cost.
There are three types of project constraints:
Technological - relate to the sequence in which individual project activities must be completed.
Resource - relate to the lack of necessary resources which may force parallel activities to be
performed in sequence.
Physical - caused by contractual or environmental conditions
The primary purpose is to identify the possible causes of delaying the completion of the project.
6. Project Assumptions
Assumptions are statements that we believe to be true and how you will address uncertain information as you
conceive, plan, and perform your project. Assumptions are identified to add potential risk to a project even
though they may turn out to be false. Assumptions can impact any part of a project life cycle, so it is
important to document and analyze them.
Project deliverables refer to all the outputs associated with a project, whether tangible or intangible.
However, the term is more commonly used to refer to any outputs related to a project, regardless of whether
they are submitted at the end of the project.
Type of Deliverables
1. Internal Deliverables
Internal deliverables are usually deliverables that make a project run, but they are not a part of the product
that the end-users would like to see. They are deliverables which the project generates internally. Project
Management, Configuration Management, Training, and Testing are some examples of internal
deliverables.
2. External Deliverables
External deliverables are usually those that the project delivers to the users or the client. An external
deliverable could be an IT system and subsystems that make it up or the resulting organizational transition
and benefits from a project to reduce the turnaround time of a process.
Project activities
Software Project Management consists of many activities, that includes planning of the project, deciding the
scope of product, estimation of cost in different terms, scheduling of tasks, etc.
2. Scope Management: It describes the scope of the project. Scope management is important because it
clearly defines what would do and what would not. Scope Management create the project to contain
restricted and quantitative tasks, which may merely be documented and successively avoids price and time
overrun.
3. Estimation management: This is not only about cost estimation because whenever we start to develop
software, but we also figure out their size(line of code), efforts, time as well as cost.
If we talk about the size, then Line of code depends upon user or software requirement.
If we talk about effort, we should know about the size of the software, because based on the size we can
quickly estimate how big team required to produce the software.
4.Scheduling Management: Scheduling Management in software refers to all the activities to complete in
the specified order and within time slotted to each activity. Project managers define multiple tasks and
arrange them keeping various factors in mind.
5. Project Resource Management: In software Development, all the elements are referred to as resources
for the project. It can be a human resource, productive tools, and libraries.
Adjustment of resources.
6. Project Risk Management: Risk management consists of all the activities like identification, analyzing
and preparing the plan for predictable and unpredictable risk in the project.
o The Experienced team leaves the project, and the new team joins it.
o Changes in requirement.
o Change in technologies and the environment.
o Market competition.
Effort estimation is the process of forecasting how much effort is required to develop or maintain a software
application. This effort is traditionally measured in the hours worked by a person, or the money needed to
pay for this work.
Effort estimation is used to help draft project plans and budgets in the early stages of the software
development life cycle. This practice enables a project manager or product owner to accurately predict costs
and allocate resources accordingly.
How to Estimate Cost and Effort in a Software Development Project
1. Map Your Software Development Life Cycle
To start, you need to know all of the steps in your software development life cycle. This is the first formal
project management framework and goes from project planning, analysis and design to implementation,
testing and maintenance. The more information you can add to activities, key roles and deliverables for each
of these stages, the more accurate your software development estimate will be.
Once you have the software development life cycle completed, it’s time to check your project
requirements and ensure they match those defined by your stakeholders or client. The clearer your project
requirements, the more accurate your software development estimate will be. If you skip this step, it’s almost
impossible to make an accurate forecast of your costs and effort.
You started to define your activities in the first step, but now you need to collect every task and deliverable
for the project. The best tool for this task is a work breakdown structure (WBS). It helps you collect all of the
necessary steps to get you to the final deliverable of your software development project, which will allow you
to estimate time and costs.
Now that you’ve gathered the above information, the next step is to use a software estimation technique. The
type you use will depend on the project methodology you’ll use for the software development project. We’ll
get into more specifics about software development estimation techniques shortly.
The work breakdown structure (WBS) is part of the process of figuring out the time and effort for your
project.
PERT Chart
PERT is an acronym for program evaluation and review technique, also known as a three-point estimate.
A PERT chart is a three-point activity estimating technique that takes into consideration uncertainty and risk.
It does this by taking in three categories of estimates.
The three estimates are most likely (M), which is the most likely cost and time for the project based on a
realistic look at what needs to be done; optimistic (O), which is the best-case scenario for completing the
project; and pessimistic (P), which is the worst-case scenario. PERT then calculates the weighted average by
using the formula: PERT Estimate = (O + 4 x M) + P) / 6.
Product Backlog
The product backlog is an ordered list of what’s needed to be done in order to complete the project. Using the
product backlog is ideal for estimating the length of your project within a certain timeframe. Estimating your
product backlog allows product owners to better prioritize tasks and make decisions about scope and
schedule.
Here are some techniques you can use to help with software development estimation. They take into account
the details of your task, the resources you have, the rate the cost to time, the duration and whether any third-
party services will be required.
Bottom-Up Estimation: This is where a project is divided into tasks and subtasks that are easy
to define and manage. This makes it easier to come up with estimates for these tasks. Adding
them up from the bottom to the top is timely but accurate.
Top-Down Estimation: Conversely, top-down estimation reviews the overall scope of the
project by identifying the major elements of work and making estimations on the effort and time
for them outside of the rest of the project. It creates a rough or ball-park figure at an early stage
of the project and takes less time than the bottom-up type.
Parametric Estimation: The first step in parametric estimation is pinpointing the requirements,
complexity and technology involved in the development. Then, you compile information on
what work is necessary to complete a task from similar projects. Finally, the cost is found by
empirical relationships between the factors involved and the total tasks in the project. In
parametric estimation, use scalability for accuracy.
Relative Sizing: This is a type of estimation used by agile teams. It’s done by estimating tasks or
user stories by comparing or grouping them together rather than separately. It’s similar to silent
grouping or affinity estimating as the agile community believes that relative over absolute
estimations is more accurate.
Wideband Delphi: This is a consensus-based technique useful for estimating the time needed to
complete a task. It relies on experts who answer questionnaires in two or more rounds. After
each round, a facilitator summarizes the findings. Experts then can revise their earlier questions
in the next round.
Infrastructure:
Software development infrastructure refers to the tools, processes, and environments used to create
software applications. In general, the term is used interchangeably with "software development
platform."
When choosing a software development infrastructure, businesses must consider their specific needs and
objectives.
For example, if they need to develop mobile apps, they will need an infrastructure that includes a mobile
device emulator or simulator. On the other hand, if they need to build cloud-based applications, they will
need an infrastructure that includes a cloud computing platform.
An issue tracking system is a software application that helps developers track and manage bugs
and issues.
Examples: JIRA, Asana, Trello
Source control management systems store and track changes to the codebase.
Examples: Git, GitHub, BitBucket
Code quality management systems help developers ensure that their code meets specific
organization or team standards.
Examples: SonarQube, PMD, Checkstyle
Application performance management (APM) tools help developers monitor and optimize the
performance of their applications.
Examples: New Relic, AppDynamics, Dynatrace
Dependency Management
Testing Frameworks
Testing frameworks allow you to execute tests automatically and ensure your organization meets
code quality standards.
Examples: Selenium, WebDriverIO, Cypress
Continuous Integration
Continuous integration build servers automatically detect code changes, then build and package
code changes to produce your deployment artifacts.
Examples: Jenkins, GitLab, TravisCI
Continuous Deployment
Deployment pipelines provide a mechanism for automatically deploying code changes to your
staging environment and, if wanted, production environments.
Examples: The tools you use for CD are the same as those for CI.
Containerization Tools
Containerization tools help developers package their applications and dependencies into self-
contained units.
Examples: Docker, Kubernetes, Apache Mesos
These are just a few of the most common software development infrastructure components and examples
you may want to research. However, a complete infrastructure can consist of any tools that fill your
organization's needs. The key is to choose the right tools and services for your specific needs .
In addition, a well-designed infrastructure can help improve communication between different teams and
departments, making it easier to coordinate efforts and identify potential issues. As a result, a well -
designed software development infrastructure can be a valuable asset for any business.