r23 Se Unit-2 Q&A
r23 Se Unit-2 Q&A
UNIT- II
Software Project Management: Software project management complexities,
Responsibilities of a software project manager, Metrics for project size
estimation, Project estimation techniques, Empirical Estimation techniques,
COCOMO, Halstead’s software science, risk management.
Short Questions:
1. What is Software Project Management?
Sol: Software Project Management (SPM) is a proper way of planning
and leading software projects. It is a part of project management in
which software projects are planned, implemented, monitored, and
controlled.
6. Define 4GL?
Sol: 4GL stands for Fourth-Generation Language. It refers to a
category of programming languages that are closer to human language
and are more abstracted from the machine code compared to earlier
generations (such as 1GL, 2GL, and 3GL). 4GLs are designed to be
more user-friendly, offering higher-level commands that enable
developers to write programs more quickly and efficiently.
A software project manager is the most important person inside a team who
takes the overall responsibilities to manage the software projects and plays an
important role in the successful completion of the projects.
1. Managing people:
Acts as a project leader
Communication with stakeholders
Manages human resources
2. Managing project:
Monitors progress and performance
Risk analysis at every phase
Manages time and budget constraint
3. Job Responsibilities:
Involves with the senior managers in the process of appointing team
members.
Builds the project team and assigns tasks to various team members.
Responsible for effective project planning and scheduling, project
monitoring and control activities in order to achieve the project
objectives.
Acts as a communicator between the senior management and the
development team and internal and external stakeholders.
Effectively resolves issues that arise between the team members by
changing their roles and responsibilities.
Modifies the project plan (if required) to deal with the situation.
4. Scheduling
After the completion of the estimation of all the project parameters,
scheduling for manpower and other resources is done.
5. Staffing
Team structure and staffing plans are made.
6. Risk Management
The project manager should identify the unanticipated risks that may occur
during project development risk, analyze the damage that might cause these
risks, and take a risk reduction plan to cope with these risks.
7. Miscellaneous Plans
This includes making several other plans such as quality assurance plans,
configuration management plans, etc.
Lead the team: The project manager must be a good leader who makes
a team of different members of various skills and can complete their
individual tasks.
Tracking the progress: The project manager should keep an eye on the
progress of the project. A project manager must track whether the project
is going as per plan or not. If any problem arises, then take the necessary
action to solve the problem. Moreover, check whether the product is
developed by maintaining correct coding standards or not.
Liaison: The project manager is the link between the development team
and the customer. Project manager analysis the customer requirements
and convey it to the development team and keep telling the progress of the
project to the customer. Moreover, the project manager checks whether the
project is fulfilling the customer’s requirements or not.
Accurate estimation of the problem size is fundamental to satisfactory estimation of effort, time
duration and cost of a software project. In order to be able to accurately estimate the project size, some
important metrics should be defined in terms of which the project size can be expressed. The size of a
problem is obviously not the number of bytes that the source code occupies. It is neither the byte size of
the executable code. The project size is a measure of the problem complexity in terms of the effort and
time required to develop the product. Currently two metrics are popularly being used widely to estimate
size:
LOC is the simplest among all metrics available to estimate project size. This metric is very popular
because it is the simplest to use. Using this metric, the project size is estimated by counting the number
of source instructions in the developed program. Obviously, while counting the number of source
instructions, lines used for commenting the the code and the header lines should be ignored.
Determining the LOC count at the end of a project is a very simple job. However, accurate estimation of
the LOC count at the beginning of a project is very difficult. In order to estimate the LOC count at the
beginning of a project, project managers usually divide the problem into modules, and each module into
submodules and so on, until the sizes of the different leaf-level modules can be approximately
predicted. To be able to do this, past experience in developing similar products is helpful. By using the
estimation of the lowest level modules, project managers arrive at the total size estimation.
Function point metric was proposed by Albrecht [1983]. This metric overcomes many of the
shortcomings of the LOC metric. Since its inception in late 1970s, function point metric has been
slowly gaining popularity. One of the important advantages of using the function point metric is that
it can be used to easily estimate the size of a software product directly from the problem
specification. This is in contrast to the LOC metric, where the size can be accurately determined only
after the product has fully been developed. The conceptual idea behind the function point metric is
that the size of a software product is directly dependent on the number of different functions or
features it supports. A software product supporting many features would certainly be of larger size
than a product with less number of features. Each function when invoked reads some input data and
transforms it to the corresponding output data. For example, the issue book feature (as show in
figure) of a Library Automation Software takes the name of the book as input and displays its
location and the number of copies available. Thus, a computation of the number of input and the
output data values to a system gives some indication of the number of functions supported by the
system. Albrecht postulated that in addition to the number of basic functions that a software
performs, the size is also dependent on the number of files and the number of interfaces.
Besides using the number of input and output data values, function point metric computes the
size of a software product (in units of functions points or FPs) using three other characteristics
of the product as shown in the following expression. The size of a product in function points
(FP) can be expressed as the weighted sum of these five problem characteristics. The weights
associated with the five characteristics were proposed empirically and validated by the
observations over many projects. Function point is computed in two steps. The first step is to
compute the unadjusted function point (UFP).
Number of inputs: Each data item input by the user is counted. Data inputs should be
distinguished from user inquiries. Inquiries are user commands such as print-account-balance.
Inquiries are counted separately. It must be noted that individual data items input by the user
are not considered in the calculation of the number of inputs, but a group of related inputs are
considered as a single input.
For example, while entering the data concerning an employee to an employee pay roll
software; the data items name, age, sex, address, phone number, etc. are together considered
as a single input. All these data items can be considered to be related, since they pertain to a
single employee.
Number of outputs: The outputs considered refer to reports printed, screen outputs, error
messages produced, etc. While outputting the number of outputs the individual data items
within a report are not considered, but a set of related data items is counted as one input.
Number of inquiries: Number of inquiries is the number of distinct interactive queries which
can be made by the users. These inquiries are the user commands which require specific action
by the system.
Number of files: Each logical file is counted. A logical file means groups of logically related data.
Thus, logical files can be data structures or physical files.
Number of interfaces: Here the interfaces considered are the interfaces used to exchange
information with other systems. Examples of such interfaces are data files on tapes, disks,
communication links with other systems etc.
Once the unadjusted function point (UFP) is computed, the technical complexity factor (TCF) is
computed next. TCF refines the UFP measure by considering fourteen other factors such as high
transaction rates, throughput, and response time requirements, etc. Each of these 14 factors is assigned
from 0 (not present or no influence) to 6 (strong influence).
The resulting numbers are summed, yielding the total degree of influence (DI).
Now, TCF is computed as (0.65+0.01*DI). As DI can vary from 0 to 70, TCF can vary from 0.65 to 1.35.
Finally, FP=UFP*TCF.
Shortcomings of function point (FP) metric LOC as a measure of problem size has several shortcomings:
• LOC gives a numerical value of problem size that can vary widely with individual coding style –
different programmers lay out their code in different ways. For example, one programmer might write
several source instructions on a single line whereas another might split a single instruction across
several lines. Of course, this problem can be easily overcome by counting the language tokens in the
program rather than the lines of code. However, a more intricate problem arises because the length of a
program depends on the choice of instructions used in writing the program. Therefore, even for the
same problem, different programmers might come up with programs having different LOC counts. This
situation does not improve even if language tokens are counted instead of lines of code.
• A good problem size measure should consider the overall complexity of the problem and the effort
needed to solve it. That is, it should consider the local effort needed to specify, design, code, test, etc.
and not just the coding effort. LOC, however, focuses on the coding activity alone; it merely computes
the number of source lines in the final program. We have already seen that coding is only a small part of
the overall software development activities. It is also wrong to argue that the overall product
development effort is proportional to the effort required in writing the program code. This is because
even though the design might be very complex, the code might be straightforward and vice versa. In
such cases, code size is a grossly improper indicator of the problem size.
• LOC measure correlates poorly with the quality and efficiency of the code. Larger code size does not
necessarily imply better quality or higher efficiency. Some programmers produce lengthy and
complicated code as they do not make effective use of the available instruction set. In fact, it is very
likely that a poor and sloppily written piece of code might have larger number of source instructions
than a piece that is neat and efficient
• LOC metric measures the lexical complexity of a program and does not address the more important
but subtle issues of logical or structural complexities. Between two programs with equal LOC count, a
program having complex logic would require much more effort to develop than a program with very
simple logic. To realize why this is so, consider the effort required to develop a program having multiple
nested loop and decision constructs with another program having only sequential control flow.
• It is very difficult to accurately estimate LOC in the final product from the problem specification. The
LOC count can be accurately computed only after the code has been fully developed. Therefore, the LOC
metric is little use to the project managers during project planning, since project planning is carried out
even before any development activity has started. This possibly is the biggest shortcoming of the LOC
metric from the project manager’s perspective.
Sol : Project estimation involves determining the resources, time, effort, and cost required to
complete a project. Various techniques are used to estimate projects accurately. Here are the
key techniques, explained briefly:
1. Expert Judgment
Description: Relies on the experience and knowledge of experts familiar with similar projects.
Advantage: Quick and effective for high-level estimates.
Limitation: Subjective and depends heavily on the expert’s accuracy.
2. Analogous Estimation
Description: Uses historical data from similar past projects to estimate the current project.
Advantage: Fast and straightforward.
Limitation: Assumes that current and past projects are sufficiently similar
3. Parametric Estimation
Description: Uses mathematical models and statistical data to calculate estimates based on
parameters (e.g., cost per unit or time per task).
Advantage: More accurate if input data is reliable.
Limitation: Requires high-quality historical data.
4. Bottom-Up Estimation
Description: Breaks the project into smaller tasks, estimates each task individually, and
aggregates them for the overall estimate.
Advantage: Highly detailed and accurate.
Limitation: Time-consuming and requires detailed project breakdown.
5. Three-Point Estimation
Description: Uses three estimates (Optimistic, Most Likely, Pessimistic) to calculate an average
or weighted estimate.
Formula:
o Triangular Distribution: (O+M+P)/3(O + M + P) / 3(O+M+P)/3
o PERT (Beta Distribution): (O+4M+P)/6(O + 4M + P) / 6(O+4M+P)/6
Advantage: Accounts for uncertainty and risk.
Limitation: Requires experience to estimate the three values accurately.
6. Top-Down Estimation
Description: Estimates the project as a whole and distributes the effort among tasks based on
proportions.
Advantage: Quick for early-stage estimates.
Limitation: Less accurate, especially for complex projects.
Description: Uses probability distributions to simulate various project outcomes and estimate
effort or cost.
Advantage: Provides a range of outcomes and accounts for uncertainty.
Limitation: Requires advanced tools and statistical knowledge.
Description: Estimates effort based on the functionality delivered (e.g., input/output points,
files).
Advantage: Useful for software projects.
Limitation: Requires expertise in identifying function points.
Description: A model-based approach that uses inputs like project size, complexity, and team
capability to estimate effort and cost.
Advantage: Standardized and reliable for software projects.
Limitation: Requires detailed project parameters.
10. Heuristic Estimation
Each technique has its strengths and is chosen based on the project’s complexity, data availability, and
the stage of the project lifecycle.
Sol: Empirical estimation technique are based on the data taken from the previous project and some based on
There are many empirical estimation technique but most popular are
Disadvantages:
Human error, considering not all factors and aspects of the project, individual bias, more chances of failure.
Estimation by group of experts minimises factors such as individual oversight, lack of familiarity with a particular
aspect of a project, personal bias and desired to win a contract through overly optimistic estimates.
Estimator: It complete their individual estimate anomalously and submit to the coordinator with mentioning, if
The coordinator and distribute the summary of the response to all estimator and they re-estimate them.
No discussion is allowed among the estimator during the entire estimation process because there may be many
estimators get easily influenced by rationale of an estimator who may be more experienced or senior.
After the completion of several iterations of estimation, the coordinator takes the responsibility of
sol: The COCOMO (COnstructive COst MOdel) is a popular algorithmic model used for estimating the
cost, effort, and time required to develop software systems. It was first introduced by Barry Boehm in
1981 and has since been widely adopted and updated (e.g., COCOMO II). The model helps project
managers estimate software project resources based on various project parameters.
1. Basic Model
2. Intermediate Model
3. Detailed Model.
1. Basic COCOMO Model: The basic COCOMO model provide an accurate
size of the project parameters. The following expressions give the basic
COCOMO estimation model:
Effort=a1*(KLOC)a2 PM
Tdev=b1*(efforts)b2 Months
Where
KLOC is the estimated size of the software product indicate in Kilo Lines of Code,
Effort is the total effort required to develop the software product, expressed in person
months (PMs).
1. Organic
2. Semidetached
3. Embedded
1. Organic: A development project can be treated of the organic type, if the project
deals with developing a well-understood application program, the size of the
development team is reasonably small, and the team members are experienced in
developing similar methods of projects.
For the three classes of software products, the formulas for estimating the effort based on
the code size are shown below:
For the three classes of software products, the formulas for estimating the development
time based on the effort are given below:
The basic COCOMO model can be obtained by plotting the estimated characteristics for
different software sizes.
The below figure shows a plot of estimated effort versus product size. From fig, we can
observe that the effort is somewhat superliner in the size of the software product. Thus, the
effort required to develop a product increases very rapidly with project size.
The development time versus the product size in KLOC is shown in below figure. From fig it
can be observed that the development time is a sub linear function of the size of the
product, i.e. when the size of the product increases by two times, the time to develop the
product does not double but rises moderately. A larger number of activities which can be
carried out concurrently can be identified. The parallel activities can be carried out
simultaneously by the engineers. This reduces the time to complete the project.
Example1: Suppose a project was estimated to be 400 KLOC. Calculate the effort and
development time for each of the three model i.e., organic, semi-detached & embedded.
Effort=a1*(KLOC)a2 PM
Tdev=b1*(efforts)b2 Months
Estimated Size of project= 400 KLOC
(i)Organic Mode
(ii)Semidetached Mode
E = 3.0 * (400)1.12=2462.79 PM
D = 2.5 * (2462.79)0.35=38.45 PM
Halstead's metrics are derived from the basic elements of a program: operators and operands.
It assumes that the complexity of a program can be evaluated based on the number and
variety of these elements. The key idea is to measure the mental effort required to develop,
understand, or maintain a piece of software.
2. Basic Measures:
The accuracy of these metrics depends on consistent measurement of operators and operands.
Example: Obtain Halstead’s length and volume measure for following C function.
int temp;
Temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
N = N1 + N2
= 16 +21= 37
N = 37
n = n1 + n2
= 5 + 9 = 14
n = 14
= 5 log 5 + 9 log 9
Volume = N * log n
= 37 * log (14)
37 * 2.63 = 97.64
Risks Identification.
Risk Assessment.
Risks Planning.
Risk Monitoring
Risk Identification
Risk identification refers to the systematic process of recognizing and
evaluating potential threats or hazards that could negatively impact an
organization, its operations, or its workforce. This involves identifying various
types of risks, ranging from IT security threats like viruses and phishing
attacks to unforeseen events such as equipment failures and extreme weather
conditions.
Risk analysis
Risk analysis is the process of evaluating and understanding the potential
impact and likelihood of identified risks on an organization. It helps determine
how serious a risk is and how to best manage or mitigate it. Risk Analysis
involves evaluating each risk’s probability and potential consequences to
prioritize and manage them effectively.
Risk Planning
Risk planning involves developing strategies and actions to manage and
mitigate identified risks effectively. It outlines how to respond to potential
risks, including prevention, mitigation, and contingency measures, to protect
the organization’s objectives and assets.
Risk Monitoring
Risk monitoring involves continuously tracking and overseeing identified risks
to assess their status, changes, and effectiveness of mitigation strategies. It
ensures that risks are regularly reviewed and managed to maintain alignment
with organizational objectives and adapt to new developments or challenges.
A Software Requirements Document (SRD) is a formal document that outlines the specific
requirements of a software system to be developed. It serves as a critical communication tool
between stakeholders, such as business analysts, developers, testers, and project managers,
ensuring everyone understands what the software must accomplish. It acts as a blueprint for the
software development process, guiding the design, implementation, and testing phases.
Components of an SRD
1. Introduction
o Purpose: Explains why the document exists and its objectives.
o Scope: Defines the boundaries and features of the software.
o Definitions/Abbreviations: Lists key terms for clarity.
o Stakeholders: Identifies the people or entities involved.
2. Overall Description
3. Functional Requirements
Describes the specific features and behaviors the software must have.
Includes user interactions, data handling, and workflows.
Typically organized into modules or use cases.
4. Non-Functional Requirements
5. System Interfaces
Details how the system will interact with other systems, software, or hardware.
Includes APIs, databases, and user interfaces.
6. Data Requirements
7. Acceptance Criteria
Specifies the conditions under which the software will be considered complete and
satisfactory.
[Link]
The Software Requirements Document is essential to the success of software projects, ensuring that the
delivered product meets business needs and user expectations.
Requirements gathering and analysis is a crucial phase in the software development lifecycle
(SDLC) or any project management process. This phase ensures that the project delivers value
by understanding what the stakeholders need and converting those needs into actionable
requirements.
1. Requirements Gathering
This involves collecting information about the expectations and needs of stakeholders. The main
goal is to understand what the system or product should do from the perspective of all
stakeholders, including end-users, clients, and business owners.
Activities:
2. Requirements Analysis
Once the requirements are gathered, the next step is to refine, validate, and prioritize them. This
ensures the requirements are clear, complete, consistent, and feasible.
Activities:
Categorization: Separate functional requirements (what the system does) from non-functional
requirements (performance, security, scalability).
Feasibility Study: Assess whether the requirements can be implemented within the budget,
timeframe, and technology constraints.
Conflict Resolution: Address discrepancies or conflicting requirements among stakeholders.
Prioritization: Rank requirements based on importance, urgency, and value.
Validation: Ensure requirements align with business goals and stakeholder needs.
Documentation: Formalize requirements into clear, concise formats like:
o SRS (Software Requirements Specification): A detailed description of all system
requirements.
o User Stories: High-level descriptions of system features from an end-user perspective.
17. a) What are various steps are to be followed in Requirement Analysis? Discuss.
[7M]
The first step of the requirements analysis process is to identify key stakeholders
who are the main sponsors of the project. They will have the final say on what
should be included in the scope of the project.
Next, identify the end-users of the product. Since the product is intended to satisfy
their needs, their inputs are equally important.
Ask each of the stakeholders and end-users their requirements for the new product.
Here are some requirements analysis techniques that you can use to capture
requirements:
Interview each stakeholder and end-user individually. This technique will help you
gather specific requirements.
Use cases provide a walkthrough of the entire product through the eyes of the end-
user. This technique will help visualize how the product will actually work.
4. Build Prototypes
A prototype provides users a sample look and feel of the final product. This
technique will help address feasibility issues and identify problems ahead of time.
Once the requirements are categorized, determine which requirements are actually
achievable and document each one of them. Here are some techniques to analyze
and interpret requirements:
Ensure that the requirements are clearly worded, sufficiently detailed, and related to
business needs.
Prioritize Requirements
Prioritize requirements and list them out based on which ones are the “most critical”
and which ones are just “nice-to-have”.
Carry out an impact analysis to make sure that you fully understand the
consequences of the requirements.
Resolve Conflicts
Arrange a meeting with key stakeholders and resolve conflicting requirements. You
can also perform a scenario analysis to explore how the requirements would work
for different possible scenarios.
Analyze Feasibility
Once a final decision is made on the requirements, ensure that you get a signed
agreement from the key stakeholders. This is done to ensure that there are no
changes or uncontrolled growth in the scope of the project
18. What is requirements analysis and explain tools used to do it? [7M] [DEC - 2023,
Set - 2] [Understanding].
Requirements analysis is the process of identifying, documenting, and managing the needs and
expectations of stakeholders for a project, product, or system. It involves understanding what is
required to achieve the project's goals and ensuring that the requirements are complete, clear, and
feasible. The primary goal is to define and document the system’s functionalities and constraints to
guide the development process.
Several tools and techniques are used to facilitate the requirements analysis process. These
include:
Flowcharts: Tools like Lucidchart and Visio to visualize workflows and processes.
Unified Modeling Language (UML): Tools like StarUML and Visual Paradigm to create use-case
diagrams, class diagrams, etc.
Mind Mapping Tools: MindMeister or XMind for brainstorming and organizing ideas.
4. Prototyping Tools
Figma, Sketch, or Adobe XD: For designing wireframes and low-fidelity prototypes.
Axure RP or Balsamiq: For creating interactive prototypes to gather user feedback.
Traceability Matrices: Often created using Excel or specialized tools like Jama Connect to map
requirements to design, testing, and implementation phases.
Simulation Tools: Tools like MATLAB and Simulink for validating complex requirements.
Peer Reviews and Walkthroughs: Collaborative sessions to validate and refine requirements.
By combining these tools and techniques, teams can ensure that the requirements are
thoroughly understood, documented, and aligned with stakeholders’ needs, leading to
successful project outcomes.
It is highly recommended to review or test SRS documents before start writing test cases and
making any plan for testing. Let’s see how to test SRS and the important point to keep in mind
while testing it.
b) Algebraic specification
Algebraic specification is a formal method used to describe and reason about abstract data types
(ADTs) and software systems. It defines systems or data types in terms of their operations and the
algebraic properties those operations must satisfy. This approach is particularly useful in software
engineering, formal verification, and theoretical computer science.
c) Executable specification
1. High-Level Abstraction
4GLs are more abstract than 3GLs, which means developers don’t have to manually manage
memory, variables, or low-level logic. They typically allow users to express complex ideas in
fewer lines of code.
2. Declarative Nature
Most 4GLs are declarative, meaning you specify what you want the program to do, rather than
how to do it. For example, in database management, a 4GL might let you specify "find all
records where the age is greater than 18" without needing to write the underlying SQL query or
implement the logic for searching.
3. Database-Oriented
Many 4GLs are closely tied to databases and are often used in developing applications with
significant database interaction. Languages like SQL, which is inherently a 4GL, are built around
this concept. These languages allow users to interact with the database in a more abstract and
simplified manner, focusing on queries and data manipulation rather than on the technical details
of storage and retrieval.
4GLs are designed to speed up software development, and are often used in environments where
rapid prototyping is required. Tools based on 4GLs provide a set of prebuilt templates,
components, and user interface elements that developers can leverage to quickly create
applications.
Examples of 4GLs
SQL (Structured Query Language): The most common 4GL, used for database querying.
ABAP: A language developed by SAP for developing business applications.
MATLAB: Used for numerical computing and data analysis, focusing on matrix operations.
SAS: Used for statistical analysis, primarily in the fields of data science and analytics.
sol: A formal system specification is a rigorous and precise description of a software system's
requirements, behavior, and design. It uses mathematical notations, logical expressions, and structured
techniques to define system components, interactions, and constraints, ensuring clarity, consistency,
and correctness.
syntactic domains: