UNIT 2 Software Project Planning
UNIT 2 Software Project Planning
֍ Design Concepts:
Effective Modular Design, Design Heuristics, Design Documentation (SRS)
֍ Design Methods:
Data Design, Architectural Design, Interface Design, Procedural Design.
Software Project Planning
After feasibility study phase if a project is found to be feasible then the project manager begins project planning.
A Software Project is the complete methodology of programming advancement from requirement gathering to
testing and support, completed by the execution procedures, in a specified period to achieve intended software
product.
The most significant is that the underlying technology changes and advances so generally and rapidly that
experience of one element may not be connected to the other one.
All such business and ecological imperatives bring risk in software development; hence, it is fundamental to
manage software projects efficiently.
Software Project Manager
Software manager is responsible for planning and scheduling project development. They manage the work to
ensure that it is completed to the required standard.
They monitor the progress to check that the event is on time and within budget. The project planning must
incorporate the major issues like size & cost estimation scheduling, project monitoring, personnel selection
evaluation & risk management.
Project manager completes this activity before development work starts.
There are various activities involved in project planning as listed below:
1. Project estimation
When a project is finalized then several estimations need to be made.
A proper cost estimation is required that would be required for project.
Time estimation is needed that would propose the time in which the project would be in deliverable position.
Effort estimation is needed to finalize the resource available and required for the project.
2. Project Schedules
Schedules for manpower and several other resources has to be prepared that would be needed as the project
progress.
3. Project staffing
Staff needs to be organized and planned. Analysis has to be done to find out if the existing staff is sufficient for
the project or new recruitment is required.
Quality of the product, configuration management plan, etc are some miscellaneous task that needs to be
planned accordingly.
Software project management
Software project management in software engineering is an important factor driving the project from product
conception till completion.
An effective software project management requires proper project planning, project monitoring and project
control.
Software Cost Estimation
For any new software project, it is necessary to know how much it will cost to develop and how much
development time will it take. These estimates are needed before development is initiated, but how is this done?
Several estimation procedures have been developed and are having the following attributes in common.
• Project scope must be established in advanced.
• Software metrics are used as a support from which evaluation is made.
• The project is broken into small PCs which are estimated individually.
• To achieve true cost & schedule estimate, several option arise.
• Delay estimation
• Used symbol decomposition techniques to generate project cost and schedule estimates.
• Acquire one or more automated estimation tools.
Uses of Cost Estimation
During the planning stage, one needs to choose how many engineers are required for the project and to develop a
schedule.
In monitoring the project's progress, one needs to access whether the project is progressing according to the
procedure and takes corrective action, if necessary.
Project Size Estimation
It’s important to understand that project size estimation is the most fundamental parameter. If this is estimated
accurately then all other parameters like effort, duration, cost, etc can be determined easily.
At present two techniques that are used to estimate project size are: Lines of code (LOC) and Function point
1. Lines of code
Lines of code or LOC is the most popular and used metrics to estimate size.
LOC determination is simple as well. LOC measures the project size in terms of number of lines of statements or
instructions written in the source code.
In LOC count, comments and headers are ignored.
Estimating LOC by analysing the problem specification is difficult. Estimation of accurate LOC is only possible
once the complete code has been developed. As project planning needs to be done before the development work
begins so this metrics is of little use for project managers.
LOC is the numerical measurement of problem size. This metrics will vary to a large extent from programmer to
programmer. An experienced professional may write same logic in less number of lines than a novice
programmer.
2. Function point metrics
Function point metrics overcomes many of the shortcomings of LOC.
Function point metrics proposes that size of the software project is directly dependent on various
functionalities it supports. More the features supported the more would be the size.
This technique helps determine size of the project directly from the problem specification so is really
helpful to project managers during project planning while determining size.
COCOMO Model
Barry William Boehm proposed COCOMO Model (COnstructive COst Estimation MOdel) in 1981.
COCOMO Model is one of the most generally used software estimation models in the world.
COCOMO predicts the efforts and schedule of a software product based on the size of the software.
The necessary steps in this model are:
1. Get an initial estimate of the development effort from evaluation of thousands of delivered lines of source code
(KDLOC).
2. Determine a set of 15 multiplying factors from various attributes of the project.
3. Calculate the effort estimate by multiplying the initial estimate with all the multiplying factors i.e., multiply the
values in step1 and step2.
The initial estimate (also called nominal estimate) is determined by an equation of the form used in the static single
variable models, using KDLOC as the measure of the size.
To determine the initial effort Ei in person-months the equation used is of the type is shown below
Ei=a * (KDLOC)b
The value of the constant/coeficient a and b are depends on the project type.
In COCOMO, projects are categorized into three types: Organic, Semidetached and Embedded
1.Organic Mode / Category:
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 Examples: business systems, simple inventory management systems, and data processing systems.
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 = a * (KLOC) b PM [person month] Average Staff Size (SS) or Person required = Effort / Tdev persons
Tdev = c * (efforts) d Months Productivity = KLOC / Effort KLOC / PM
Where
KLOC is the estimated size of the software product indicate in Kilo[thousands] Lines of Code,
a, b, c, d are constants/ coefficients for each group of software products,
Tdev is the estimated time to develop the software, expressed in months,
Effort is the total effort required to develop the software product, expressed in person months (PMs).
The constant / coefficient values a, b, c and d for the Basic Model for the different categories/mode of system:
Software Projects A B C D
Software Projects A B C D
(i)Organic Mode
E = 2.4 * (525) 1.05 = 1723.36 PM
D = 2.5 * (1723.36) 0.38 = 42.43 PM
(ii)Semidetached Mode
E = 3.0 * (525) 1.12 = 3339.63 PM
D = 2.5 * (3339.63) 0.35 = 42.77 PM
= 200 / 1133.12
= 0.1765 KLOC / PM
Example4: A project size of 320 KLOC is to be developed. Software development team has average experience on
similar type of projects. The project schedule is not very tight. Calculate the Effort, development time, average staff
size, and productivity of the project.
Solution:
The semidetached mode is the most appropriate mode, keeping in view the size, schedule and experience of
development time.
Hence E = 3.0 * (320) 1.12 = 3.0 * 639.39 = 1918.17 PM
Tdev = 2.5 * (1918.17) 0.35 = 2.5 * 14.09 = 35.23 PM
= 320 / 1918.17
= 0.1668 KLOC / PM
2. Intermediate Model:
The basic COCOMO model considers that the effort is only a function of the number of lines of code and some
constants calculated according to the various software systems.
The intermediate COCOMO model recognizes these facts and refines the initial estimates obtained through the basic
COCOMO model by using a set of 15 cost drivers based on various attributes of software engineering.
Classification of Cost Drivers and their attributes:
Product attributes - Hardware attributes -
The effort is determined as a function of program estimate, and a set of cost drivers are given according to every
phase of the software lifecycle.
The development time versus the product size in KLOC is plotted in fig. 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. This can be explained by the fact that for
larger products, a larger number of activities which can be carried out concurrently can be identified.
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.
Putnam Resource Allocation Model
The Lawrence Putnam model describes the time and effort requires finishing a software project of a specified size.
Putnam makes a use of a so-called The Norden/Rayleigh Curve to estimate project effort, schedule & defect rate as
shown in fig:
L = Ck K 1/3 td4/3
The various terms of this expression are as follows:
L = Ck K 1/3 td4/3
• K is the total effort expended (in PM) in the product development
• L is the product size in KLOC
• td corresponds to the time of system and integration testing
• Ck Is the state of technology constant and reflects constraints that impede the progress of the program
Now by using the above expression, it is obtained that,
K = L3 / Ck3td4 OR K = C / td4
For the same product size, C =L3 / Ck3 is a constant.
Like all other aspects of project planning, the risk management process is an iterative process that lasts throughout
the project. The outcomes of the risk management process should be documented in a risk management plan.
A risk management plan should include a discussion of the project's hazards, an analysis of those risks, and actions to
mitigate those risks. It may also include some risk management outcomes.
Risk Management Activities
Risk management is assessing the unfavorable events that could occur, their chance of occurring, and the losses that
would result if they did. While considering this, solutions can be designed to lessen the possibility of the content
being a risk or having an impact. As a result, risk management is centered on risk assessment and control.
Risk Assessment
Risk assessment aims to categorize risks according to their chance to cause loss. First, each risk should be rated
via the two methods:
The probability of risk coming true (denoted by r).
After all identified risks have been established, the most likely and destructive risks can be addressed first, and
more comprehensive risk reduction strategies for these risks can be devised.
a.) Risk Identification
The project organizer must identify the project's risk as early as feasible to minimize the risk's impact via
appropriate risk management planning.
A project can be favorable to a wide range of risks. To detect a significant risk that could have an impact on a project.
It is essential to categorize the risks into various risk classes.
Several types of risks can impact a software product; a few of them are defined below:
• Technology Risks: Risks arising from the software or hardware technologies utilized to construct the system.
• People Risks: Risks associated with an individual of the development team.
• Organizational Risks: Risks arise due to the organization in which the software is being produced.
• Tools Risks: Risks arising from the software tools and other support software used to build the system.
• Requirement Risks: Risks associated with changes in client requirements and the process of managing those changes.
• Estimation Risks: Risks arising from management estimates of the resources necessary to create the system.
b.) Risk Analysis
During the risk analysis process, you must analyse each identified risk and form opinions about its likelihood and
severity. There is no easy method to accomplish this. You must rely on your perception and experience with past
initiatives and the issues throughout them.
It is impossible to make an exact numerical estimate of the risk's probability and severity. Instead, you should
distribute the risk to one of the following groups:
• The risk could be classified as extremely low (0-10%), low (10-25%), moderate (25-50%), high (50-75%), or
very high (+75%) in probability.
• The risk's impact might be classified as catastrophic (threatening the plan's survival), severe (causing vital
delays), bearable (delays are within allowable contingencies), or trivial.
Risk Control
It's the process of managing risks in order to accomplish desired results. After all, a plan's identified risks must be
determined; the project must be designed to include the most dangerous and probable risks. Different risks
necessitate different ways of containment. Most risks necessitate the project manager's inventiveness in dealing
with them.
a.) Risk Planning
The risk planning technique considers all of the significant risks that have been identified and develop strategies
to mitigate them.
You must consider the behaviour you might use to minimize the disruption to the plan if the issue stated in the
risk arises for each of the risks. You should also consider the data you'll need to accumulate while observing the
procedure so that problems can be predicted.
Again, there is no simple procedure to follow for contingency planning. It is based on the project manager's
expertise.
b.) Risk Monitoring
Risk monitoring ensures that your assumptions about the product, process, and business risks remain unchanged.
Project schedule simply means a mechanism that is used to communicate and know about that tasks are needed and
has to be done or performed and which organizational resources will be given or allocated to these tasks and in what
time duration or time frame work is needed to be performed.
Effective project scheduling leads to success of project, reduced cost, and increased customer satisfaction.
Scheduling in project management means to list out activities, deliverables, and milestones within a project that are
delivered.
For scheduling a project, it is necessary to -
• Break down the project tasks into smaller, manageable form
• Find out various tasks and correlate them
• Estimate time frame required for each task
• Divide time into work-units
• Assign adequate number of work-units for each task
• Calculate total time required for the project from start to finish
Software Project Scheduling Principles
• Compartmentalization - The product and process must be break down into a manageable number of activities
and tasks
• Interdependency - tasks that can be completed in parallel must be separated from those that must
completed serially
• Time allocation - every task has start and completion dates that take the task interdependencies into
account
• Effort validation - project manager must ensure that on any given day there are enough staff members
assigned to completed the tasks within the time estimated in the project plan
• Defined Responsibilities - every scheduled task needs to be assigned to a specific team member
• Defined outcomes - every task in the schedule needs to have a defined outcome (usually a work product or
deliverable)
• Defined milestones - a milestone is accomplished when one or more work products from an engineering task
have passed quality review
Assign People to Create Activity
Identifies Identify Possible Estimate
conduct Network and Bar
Activities Dependencies Resource
Activities Charts
Disadvantages of PERT:
5
3 B D 6
Duration : 19 Days
A 4
F
4
C
E
7
Advantages of Critical Path Method (CPM):
• It figures out the activities which can run parallel to each other.
• CPM is effective in new project management.
• It helps the project manager in identifying the most critical elements of the project.
• It gives a practical and disciplined base which helps in determining how to reach the objectives.
• CPM provides demonstration of dependencies which helps in the scheduling of individual activities.
• It helps in optimization by determining the project duration.
• An explicit and clear approach of communicating project plans, schedules, time and cost performance is developed.
Tracking projects from the beginning, dealing with problems quickly, and proactively making decisions is what
successful project managers do.
Managing all tasks and activities involved, handling multiple files involved, and most importantly, the people who make
up the team make this incredibly challenging.
Project tracking begins early in the project with planning and goes on until the completion of a project. Monitoring
project progress to identify potential problems in a timely manner and take corrective action.
Measuring project performance regularly to identify variances from the project management plan to make sure
projects are on track.
Simple project management software is designed with everything in one place in real-time to keep projects visible
across teams and stakeholders efficiently.
Why use Project Management Tracking?
There are multiple benefits and many reasons to engage with project tracking, from increased chances of project
success to creating a united team. Keeping up to date on the progress of the project and awareness of project status, it is
easy to spot any potential issues that could prevent project success.
Complete transparency is essential for accurate decision-making. Project tracking keeps all team members and
stakeholders in touch with deadlines and goals, enabling the project lead to manage with confidence.
Crucially, project tracking aims to help project managers adjust deliverables such as budgets and timelines based on
what you learn throughout a project.
There are four key benefits that effective project tracking should deliver.
1. Real Time Information
Firstly, stay up to date and get the most accurate information available. Everyone involved in the project needs to see the
status and progress of the project in an instant. This is crucial for senior management to make decisions at the top level
of the project along with team leaders on behalf of the team.
Using cloud-based simple project management software, reporting to senior management should be painless.
By tracking projects, teams can be aligned, along with project objectives and activities. Stay in touch and watch goals
become reality.
2. Problem Identifiers
With project tracking, there is no place for problems or issues to hide. Any up-and-coming issues are recognizable in an
instant. This allows leaders to act and take back control of the situation.
Team members can offer assistance and keep each other motivated to get jobs done. Problem-solving maintains the
structure of the project and allows resources to spend time on the things that matter. Once the issues are gone, the
project is back on track and success is on the limit.
3. Team Motivation
Collaboration is a key factor of every project. If every member has clarity on their role, they can work toward the group
objectives. As projects progress and the task list reduces with every day, team motivation to carry on and complete the
project make stronger.
By working together and creating an empowered team, project tracking keeps everyone in the loop and on the same page.
4. Easy and Accurate Reporting
Reporting is often a painful task that project managers are required to do. Senior management want an overall view of
each of the projects in an instant.
Using one system in order to manage and track projects makes reporting quick and simple. Time is valuable so having
all information in one place with more detail available if needed, perfect for reporting to senior executives.
Challenges in tracking the progress of a project
Project managers can face a range of different challenges as they get to track project progress and create reports:
• Lack of communication.
Without timely and effective communication in project management, it can be hard to get an accurate picture of
how a project is progressing.
• Unclear goals or criteria.
If you don’t know what creates success in your project, it’s hard to measure how close you are to being finished.
• Scope creep.
If the scope of a project changes mid-way through, that can affect a wide range of budgets, timelines, resource
requirements, and more.
▪ Insufficient risk management.
If you haven’t fully accounted for a project risk, that can present a number of unexpected issues.
Software Design
Software design is a mechanism to transform user requirements into some suitable form, which helps the
programmer in software coding and implementation.
It deals with representing the client's requirement, as described in SRS (Software Requirement Specification)
document, into a form, i.e., easily implementable using programming language. Hence the aim of this phase is to
transform the SRS document into the design document.
The following items are designed and documented during the design phase:
• Different modules required.
• Interface among different modules.
• Data structure among the different modules.
• Control relationships among modules.
• Algorithms required to implement among the individual modules.
• Software design is the process of envisioning and defining software solutions to one or more sets of problems.
Objectives of Software Design
Following are the purposes of Software design:
• Correctness : Software design should be correct as per requirement.
• Completeness : The design should have all components like data structures, modules, and external interfaces, etc.
• Efficiency : Resources should be used efficiently by the program.
• Flexibility : Able to modify on changing needs.
• Consistency : There should not be any inconsistency in the design.
• Maintainability: The design should be so simple so that it can be easily maintainable by other designers.
principles of good Software Design
Many principles are employed to organize, coordinate, classify, and set up software design’s structural components.
Software Designs become some of the most convenient designs when the following principles are applied. They
help to generate remarkable User Experiences and customer loyalty.
The principles of a good software design are:
• Modularity
Dividing a large software project into smaller portions/modules is known as modularity. It is the key to scalable and
maintainable software design. The project is divided into various components and work on one component is done
at once. It becomes easy to test each component due to modularity. It also makes integrating new features more
accessible.
• Coupling
Coupling refers to the extent of interdependence between software modules and how closely two modules are
connected. Low coupling is a feature of good design. With low coupling, changes can be made in each module
individually, without changing the other modules.
• Abstraction
The process of identifying the essential behaviour by separating it from its implementation and removing irrelevant
details is known as Abstraction. The inability to separate essential behaviour from its implementation will lead to
unnecessary coupling.
• Anticipation of Change
The demands of software keep on changing, resulting in continuous changes in requirements as well. Building a
good software design consists of its ability to accommodate and adjust to change comfortably.
• Simplicity
The aim of good software design is simplicity. Each task has its own module, which can be utilized and modified
independently. It makes the code easy to use and minimizes the number of setbacks.
• Sufficiency and Completeness
A good software design ensures the sufficiency and completeness of the software concerning the established
requirements. It makes sure that the software has been adequately and wholly built.
Design Process
Software design is an iterative process through which requirements are translated into a “blueprint” for constructing
the software. Initially, the blueprint depicts a holistic view of software i.e., the design is represented at a high level of
abstraction – a level that can be directly traced to the specific system objectives. As design iterations occur, subsequent
refinement leads to design representations at much lower levels of abstraction.
McGlaughlin suggests 3 characteristics that serve as a guide for evaluation of a good design:
1. The design must implement all of the explicit requirements contained in the analysis model and it must
accommodate all of the implicit requirements desired by the customer.
2. The design must be readable, understandable guide for those who generate code and for those who test and
support the software.
3. The design should provide a complete picture of the software, addressing all data, functional and behavioural
domains.
Each of these characteristics is actually a goal of the design process.
Quality Guidelines that lead to a good design
1. A design should displays an architecture that
a) Has been created using recognizable architectural styles or patterns;
b) Is composed of components that shows good design characteristics, and
c) Can be implemented in an evolutionary fashion, thereby facilitating implementation and testing.
2. A design should be modular; that is, the software should be logically divided into elements or subsystems.
3. A design should contain different representations of data, architecture, interfaces, and components.
4. A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from
recognizable data patterns.
5. A design should lead to the components that shows independent functional characteristics.
6. A design should lead to interfaces that reduce the complexity of connections between components and with the
external environment.
7. A design should be derived using a repeatable method that is driven by information obtained during software
requirements analysis.
8. A design should be represented using a notation that effectively communicates its meaning.
Design Principles
Software design is both a process and a model.
• The ‘design process’ is a sequence of steps that enable the designer to describe all aspects of the software to be built.
• The ‘design model’ is however, an equivalent of an architect’s plan for a house.
It begins by representing the totality of the thing to be built (e.g. a 3D house) and slowly filtering it into more details.
Similarly, the design model that is created for software provides a variety of different views of the computer software.
Davis – Design Principles
• A good designer should consider alternative approaches, judging each based on the requirements of the problem,
and the resources available to do the job.
• The design should be traceable to the analysis model. It is necessary to have a means for tracking how requirements
have been satisfied by the design model.
• The designer should not reinvent the wheel, i.e., Use the set of design patterns, already encountered so that new
patterns are not reinvented. Time is short and resources are limited. Design time should be invested in
representing truly new ideas and integrating those patterns that already exist.
• The design should be structured to accommodate change.
❖ Abstraction
❖ Architecture
❖ Patterns
❖ Modularity
❖ Information hiding
❖ Functional independence
❖ Refinement
❖ Refactoring
❖ Design classes
Abstraction: A solution is stated in large terms using the language of the problem environment at the highest level
abstraction.
• The lower level of abstraction provides a more detail description of the solution.
• A sequence of instruction that contain a specific and limited function refers in a procedural abstraction.
• A collection of data that describes a data object is a data abstraction.
Architecture: The complete structure of the software is known as software architecture.
• Structure provides conceptual integrity for a system in a number of ways.
• The architecture is the structure of program modules where they interact with each other in a specialized way.
• The components use the structure of data.
• The aim of the software design is to obtain an architectural framework of a system.
• The more detailed design activities are conducted from the framework.
Patterns: A design pattern describes a design structure and that structure solves a particular design problem in a
specified content.
Modularity: A software is separately divided into name and addressable components. Sometime they are called as
modules which integrate to satisfy the problem requirements. Modularity is the single attribute of a software that
permits a program to be managed easily.
Information hiding: Modules must be specified and designed so that the information like algorithm and data
presented in a module is not accessible for other modules not requiring that information.
Functional independence: The functional independence is the concept of separation and related to the concept of
modularity, abstraction and information hiding.
The functional independence is accessed using two criteria i.e. Cohesion and coupling.
• Cohesion: Cohesion is an extension of the information hiding concept.
A cohesive module performs a single task and it requires a small interaction with the other components in other
parts of the program.
• Coupling: Coupling is an indication of interconnection between modules in a structure of software.
Refactoring: It is a reorganization technique which simplifies the design of components without changing its function
behaviour. Refactoring is the process of changing the software system in a way that it does not change the external
behaviour of the code still improves its internal structure.
Design classes: The model of software is defined as a set of design classes. Every class describes the elements of
problem domain and that focus on features of the problem which are user visible.
Design Model
The design principles and concepts establish a foundation for the creation of the design model that encompasses
representation of data, architecture, interface and components. Like the analysis model before it, each of these design
representations is tied to the others, and all can be traced back to software requirements.
The Following are some design models
1. Data Design – It transforms the information domain model created during analysis into the data structures that will
be required to implement the software. The data objects (or entities) and the relationships defined in ER diagram and
the detailed data content shown in the Data Dictionary provide the basis for the data design activity. Detailed data
design occurs as each software component is designed.
2. Architectural Design – It defines the relationship between major structural elements of the software, the “design
patterns” that can be used to achieve the requirements that have been defined for the system. This design
representation forms the framework of a computer based system. It can be derived from the system specification, the
analysis model and the interaction of subsystems defined within the analysis model.
3. Interface Design – It describes how the software communicates within itself, with systems that interoperate with
it and with humans who use it. An interface implies a flow of information and a specific type of behaviour. Therefore,
data and control flow diagrams provide much of the information required for interface design.
4. Component Level Design – It transforms structural elements of the software architecture into a procedural
description of software components. Information obtained from ER-Diagrams, Data Flow diagrams serves as the basis
for component design.
Software Requirements Specification (SRS)
A software requirements specification (SRS) is a detailed description of a software system to be developed with its
functional and non-functional requirements. The SRS is developed based the agreement between customer and
contractors. It may include the use cases of how user is going to interact with software system.
The software requirement specification document consistent of all necessary requirements required for project
development. To develop the software system we should have clear understanding of Software system. To achieve this
we need to continuous communication with customers to gather all requirements.
A good SRS defines the how Software System will interact with all internal modules, hardware, communication with
other programs and human user interactions with wide range of real life scenarios. Using the Software requirements
specification (SRS) document on QA lead, managers creates test plan.
It is very important that testers must be cleared with every detail specified in this document in order to avoid faults in
test cases and its expected results.
It is highly recommended to review or test Software Requirement Specification 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.
1. Correctness of Software Requirement Specification should be checked. Since the whole testing phase is
dependent on SRS, it is very important to check its correctness. There are some standards with which we can compare
and verify.
2. Ambiguity should be avoided. Sometimes in SRS, some words have more than one meaning and this might
confused testers making it difficult to get the exact reference. It is advisable to check for such ambiguous words and
make the meaning clear for better understanding.
3. Requirements should be complete. When tester writes test cases, what exactly is required from the application, is
the first thing which needs to be clear. For e.g. if application needs to send the specific data of some specific size then it
should be clearly mentioned in SRS that how much data and what is the size limit to send.
4. Consistent requirements. The SRS should be consistent within itself and consistent to its reference documents. If
you call an input “Start and Stop” in one place, don’t call it “Start/Stop” in another. This sets the standard and should
be followed throughout the testing phase.
5. Verification of expected result: Software Requirement Specification should not have statements like “Work as
expected”, it should be clearly stated that what is expected since different testers would have different thinking aspects
and may draw different results from this statement.
6. Testing environment: some applications need specific conditions to test and also a particular environment for
accurate result. SRS should have clear documentation on what type of environment is needed to set up.
7. Pre-conditions defined clearly: one of the most important part of test cases is pre-conditions. If they are not met
properly then actual result will always be different expected result. Verify that in SRS, all the pre-conditions are
mentioned clearly.
8. Requirements ID: these are the base of test case template. Based on requirement Ids, test case ids are written. Also,
requirements ids make it easy to categorize modules so just by looking at them, tester will know which module to refer.
SRS must have them such as id defines a particular module.
9. Security and Performance criteria: security is priority when a software is tested especially when it is built in such
a way that it contains some crucial information when leaked can cause harm to business. Tester should check that all
the security related requirements are properly defined and are clear to him.
Also, when we talk about performance of a software, it plays a very important role in business so all the requirements
related to performance must be clear to the tester and he must also know when and how much stress or load testing
should be done to test the performance.
10. Assumption should be avoided: sometimes when requirement is not cleared to tester, he tends to make some
assumptions related to it, which is not a right way to do testing as assumptions could go wrong and hence, test results
may vary. It is better to avoid assumptions and ask clients about all the “missing requirements” to have a better
understanding of expected results.
11. Deletion of irrelevant requirements: there are more than one team who work on SRS so it might be possible that
some irrelevant requirements are included in SRS. Based on the understanding of the software, tester can find out
which are these requirements and remove them to avoid confusions and reduce work load.
Advantages of SRS