Notes - Unit II
Notes - Unit II
Software project management is a very vast topic. Let us first understand what exactly
is the principal goal of software projectmanagement.
For large projects, a different member of the team (other than the project manager)
assumes the responsibility of technical leadership. The responsibilities of the technical
leader includes addressing issues such as which tools and techniques to use in the
project, high-level solution to the problem, specific algorithms to use, etc.
First investigate why management of software projects is much more complex than
managing many other types of projects.
These changes usually arise from changes to the business practices, changes to the
hardware or underlying software (e.g. operating system, other applications), or just
because the client changes hismind.
Complexity: Even a moderate sized software has millions of parts (functions) that
interact with each other in many ways—data coupling, serial and concurrent runs, state
transitions, control dependency, file sharing, etc. Due to the inherent complexity of the
functioning of a software product in terms of the basic parts making up the software,
many types of risks are associated with its development. This makes managing these
projects much more difficult as compared to many other kinds of projects.
Uniqueness: Every software project is usually associated with many unique features or
situations. This makes every project much different from the others. A software project
manager has to confront many unanticipated issues in almost every project that
hemanages.
Exactness of the solution: Mechanical components such as nuts and bolts typically
work satisfactorily as long as they are within a tolerance of 1 per cent or so of their
specified sizes. However, the parameters of a function call in a program are required to be
in complete conformity with the function definition.
The job responsibilities of a project manager ranges from invisible activities like building
up of team morale to highly visible customer presentations. Most managers take the
responsibilities for project proposal writing, project cost estimation, scheduling, project
staffing, software process tailoring, project monitoring and control, software configuration
management, risk management, managerial report writing and presentation, and
interfacing with clients.
These activities are certainly numerous and varied. We can still broadly classify these
activities into two major types—project planning and project monitoring and control.
Project planning: Project planning is undertaken immediately after the feasibility study
phase and before the starting of the requirements analysis and specification phase.
The focus of project monitoring and control activities is to ensure that the software
development proceeds as per plan.
While carrying out project monitoring and control activities, a project manager may
sometimes find it necessary to change the plan to cope up with specific situations at hand.
In addition to having a good grasp of the latest software project management techniques
such as cost estimation, risk management, and configuration management, etc., project
managers need good communication skills and the ability to get work done.
Some skills such as tracking and controlling the progress of the project, customer
interaction, managerial presentations, and team building are largely acquired through
experience.
Three skills that are most critical to successful project management are the following:
• Knowledge of project managementtechniques.
• Decision takingcapabilities.
• Previous experience in managing similarprojects.
PROJECT PLANNING
Once a project has been found to be feasible, software project managers undertake project
planning.
Project planning is undertaken and completed before any development activity starts.
Project planning requires utmost care and attention since commitment to unrealistic
time and resource estimates result in schedule slippage. Schedule delays can cause
customer dissatisfaction and adversely affect team morale. It can even cause project
failure.
For this reason, project planning is undertaken by the project managers with utmost
care and attention. For effective project planning, in addition to a thorough knowledge of
the various estimation techniques, past experience is crucial.
During project planning, the project manager performs the following activities. Note that
we have given only a very brief description of the activities.
Estimation: The following project attributes are estimated.
• Cost: How much is it going to cost to develop the software product?
• Duration: How long is it going to take to develop the product?
• Effort: How much effort would be necessary to develop the product?
The effectiveness of all later planning activities such as scheduling and staffing are
dependent on the accuracy with which these three estimations have been made.
Miscellaneous plans: This includes making several other plans such as quality
assurance plan, and configuration management plan, etc.
Figure 3.1 shows the order in which the planning activities are undertaken. Observe that
size estimation is the first activity that a project manager undertakes during project
planning.
Size is the most fundamental parameter based on which all other estimations and
project plans are made.
Figure 3.1: Precedence ordering among planning activities.
As can be seen from Figure 3.1, based on the size estimation, the effort required to
complete a project and the duration over which the development is to be carried out are
estimated.
Based on the effort estimation, the cost of the project is computed. The estimated cost
forms the basis on which price negotiations with the customer is carried out.
Other planning activities such as staffing, scheduling etc. are undertaken based on the
effort and duration estimates made.
What does the term “project size” exactly mean. The size of a project is obviously
not the number of bytes that the source code occupies, neither is it the 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 to measure size—lines of code (LOC)
and function point (FP). Each of these metrics has its own advantages and disadvantages.
LOC is possibly the simplest among all metrics available to measure project size and
this metric is extremely popular. This metric measures the size of a project by
counting the number of source instructions in the developed program. While
counting the number of source instructions, comment lines, and header lines are
ignored.
Determining the LOC count at the end of a project is very simple. However, accurate
estimation of LOC count at the beginning of a project is a very difficult task. One can
possibly estimate the LOC count at the starting of a project, only by using some form of
systematic guess work.
Systematic guessing involves the project manager divides the problem into modules,
and each module into sub-modules and so on, until the LOC of the leaf-level modules are
small enough to be predicted. To be able to predict the LOC count for the various leaf-
level modules sufficiently accurately, past experience in developing similar modules is very
helpful.
By adding the estimates for all leaf level modules together, project managers arrive at
the total size estimation. In spite of its conceptual simplicity, LOC metric has several
shortcomings when used to measure problem size.
LOC is a measure of coding activity alone: A good problem size measure should
consider the total effort needed to carry out various life cycle activities (i.e. specification,
design, code, test, etc.) and not just the coding effort. LOC, however, focuses on the
coding activity alone
LOC count depends on the choice of specific instructions: LOC gives a numerical
value of problem size that can vary widely with coding styles of individual programmers.
LOC measure correlates poorly with the quality and efficiency of the code:
Larger code size does not necessarily imply better quality of code or higher efficiency.
Some programmers produce lengthy and complicated code as they do not make effective
use of the available instruction set or use improper algorithms.
This metric overcomes many of the shortcomings of the LOC metric. Function point
metric has several advantages over LOC metric. One of the important advantages
of the function point metric over the LOC metric is that it can easily be computed
from the problem specification itself.
The conceptual idea behind the function point metric is the following. The size of a
software product is directly dependent on the number of different high-level functions or
features it supports.
Each feature takes some effort to develop, different features may take very different
amounts of efforts to develop. This has been considered by the function point metric by
counting the number of input and output data items and the number of files accessed by
the function.
Accurate estimation of these parameters is important, since these not only help in
quoting an appropriate project cost to the customer, but also form the basis for
resource planning and scheduling.
Heuristic Techniques
Heuristic techniques assume that the relationships that exist among the different
project parameters can be satisfactorily modeled using suitable mathematical
expressions. Different heuristic estimation models can be divided into the following
two broad categories—single variable and multivariable models.
Single variable estimation models assume that various project characteristic can be
predicted based on a single previously estimated basic (independent) characteristic of the
software such as its size. A single variable estimation model assumes that the
relationship between a parameter to be estimated and the corresponding independent
parameter can be characterised by an expression of the following form:
In the above expression, e represents a characteristic of the software that has already
been estimated (independent variable). Estimated Parameter is the dependent parameter
(to be estimated). The dependent parameter to be estimated could be effort, project
duration, staff size, etc., c1 and d1 are constants. The values of the constants c1 and d1
are usually determined using data collected from past projects (historical data).
A multivariable cost estimation model assumes that a parameter can be predicted based
on the values of more than one independent parameter. It takes the following form:
Analytical estimation techniques derive the required results starting with certain basic
assumptions regarding a project.
RISK MANAGEMENT
A risk is any anticipated unfavourable event or circumstance that can occur while a
project is underway.
We need to distinguish between a risk which is a problem that might occur from the
problems currently being faced by a project. If a risk becomes real, the anticipated
problem becomes a reality and is no more a risk. If a risk becomes real, it can adversely
affect the project and hamper the successful and timely completion of the project.
Therefore, it is necessary for the project manager to anticipate and identify different
risks that a project is susceptible to, so that contingency plans can be prepared
beforehand to contain each risk.
Risk management aims at reducing the chances of a risk becoming real as well as
reducing the impact of a risks that becomes real. Risk management consists of three
essential activities—risk identification, risk assessment, and risk mitigation.
Risk Identification
The project manager needs to anticipate the risks in a project as early as possible.
As soon as a risk is identified, effective risk management plans are made, so that
the possible impacts of the risks is minimised.
So, early risk identification is important. For example, project manager might be
worried whether the vendors whom you have asked to develop certain modules
might not complete their work in time, whether they would turn in poor quality
work, whether some of your key personnel might leave the organisation, etc. All
such risks that are likely to affect a project must be identified and listed.
Project risks: Project risks concern various forms of budgetary, schedule, personnel,
resource, and customer-related problems. An important project risk is schedule slippage.
Since, software is intangible, it is very difficult to monitor and control a software project.
It is very difficult to control something which cannot be seen. The invisibility of the
product being developed is an important reason why many software projects suffer from
the risk of schedule slippage.
Business risks: This type of risks includes the risk of building an excellent product that
no one wants, losing budgetary commitments, etc.
What if the project cost escalates and overshoots what was estimated?: Project
risk.
What if the mobile phones that are developed become too bulky in size to
conveniently carry?: Business risk.
What if it is later found out that the level of radiation coming from the phones is
harmful to human being?: Business risk.
Risk Assessment
The objective of risk assessment is to rank the risks in terms of their damage causing
potential. For risk assessment, first each risk should be rated in two ways:
Based on these two factors, the priority of each risk can be computed as follows:
p = r *s
where, p is the priority with which the risk must be handled, r is the probability of
the risk becoming real, and sis the severity of damage caused due to the risk
becoming real.
If all identified risks are prioritised, then the most likely and damaging risks can be
handled first and more comprehensive risk abatement procedures can be designed
for those risks.
After all the identified risks of a project have been assessed, plans are made to
contain the most damaging and the most likely risks first. Different types of risks
require different containment procedures.
Avoid the risk: Risks can be avoided in several ways. Risks often arise due to project
constraints and can be avoided by suitably modifying the constraints. The different
categories of constraints that usually give rise to risks are:
Process-related risk: These risks arise due to aggressive work schedule, budget, and
resource utilisation.
Transfer the risk: This strategy involves getting the risky components developed by a
third party, buying insurance cover, etc.
Risk reduction: This involves planning ways to contain the damage due to a risk. For
example, if there is risk that some key personnel might leave, new recruitment may be
planned.
There can be several strategies to cope up with a risk. To choose the most appropriate
strategy for handling a risk, the project manager must consider the cost of handling the
risk and the corresponding reduction of risk.
For this we may compute the risk leverage of the different risks. Risk leverage is the
difference in risk exposure divided by the cost of reducing the risk.
Even though we identified three broad ways to handle any risk, effective risk handling
cannot be achieved by mechanically following a set procedure, but requires a lot of
ingenuity on the part of the project manager.
REQUIREMENTS ANALYSIS AND SPECIFICATION
Before starting to develop a software, the exact requirements of the customer must be
understood and documented. In the past, many projects have suffered because the
developers started to implement something without determining whether they were
building what the customers exactly wanted.
A good requirements document not only helps to form a clear understanding of various
features required from the software, but also serves as the basis for various activities
carried out during later life cycle phases.
When software is developed in a contract mode for some other organisation (that is, an
outsourced project), the documentation plays crucial role. When an organisation develops
a generic software product, the situation is not very different since some personnel from
the organisation’s own marketing department act as the customer.
The requirements analysis and specification phase starts after the feasibility study
stage is complete and the project has been found to be financially viable and
technically feasible. The requirements analysis and specification phase ends when
the requirements specification document has been developed and reviewed. The
requirements specification document is usually called as the software requirements
specification (SRS) document.
The goal of the requirements analysis and specification phase is to clearly understand
the customer requirements and to systematically organise the requirements into a
document called the Software Requirements Specification (SRS) document.
Who carries out requirements analysis and specification? Requirements analysis
and specification activity is usually carried out by a few experienced members of the
development team and it normally requires them to spend some time at the customer
site.
The engineers who gather and analyse customer requirements and then write the
requirements specification document are known as system analysts in the software industry
parlance. System analysts collect data pertaining to the product to be developed and
analyse the collected data to conceptualise what exactly needs to be done.
After understanding the precise user requirements, the analysts analyse the requirements
to weed out inconsistencies, anomalies and incompleteness. They then proceed to write
the software requirements specification (SRS) document.
The SRS document is the final outcome of the requirements analysis and specification
phase.
How is the SRS document validated?
Once the SRS document is ready, it is first reviewed internally by the project team to
ensure that it accurately captures all the user requirements, and that it is
understandable, consistent, unambiguous, and complete. The SRS document is then
given to the customer for review. After the customer has reviewed the SRS document
and agrees to it, it forms the basis for all future development activities and also serves
as a contract document between the customer and the development organisation.
Requirements analysis and specification phase mainly involves carrying out the
following two important activities:
• Requirements gathering and analysis
• Requirements specification
In the next section, we will discuss the requirements gathering and analysis activity and
in the subsequent section we will discuss the requirements specification activity.
The complete set of requirements are almost never available in the form of a single
document from the customer. It would be unrealistic to expect the customers to
produce a comprehensive document containing a precise description of what he
wants.
The complete requirements are rarely obtainable from any single customer
representative. Therefore, the requirements have to be gathered by the analyst
from several sources in bits and pieces. These gathered requirements need to be
analysed to remove several types of problems that frequently occur in the
requirements.
We can conceptually divide the requirements gathering and analysis activity into two
separate tasks:
• Requirements gathering
• Requirements analysis
Requirements Gathering
Requirements gathering is also popularly known as requirements elicitation. The primary
objective of the requirements gathering task is to collect the requirements from the
stakeholders.
Requirements gathering may sound like a simple task. However, in practice it is very
difficult to gather all the necessary information from a large number of stakeholders and
from information scattered across several pieces of documents. Gathering requirements
turns out to be especially challenging if there is no working model of the software being
developed.
Even before visiting the customer site, requirements gathering activity is started by
studying the existing documents to collect all possible information about the system to be
developed. During visit to the customer site, the analysts normally interview the end
users and customer representatives, carry out requirements gathering activities such as
questionnaire surveys, task analysis, scenario analysis, and form analysis.
Given that many customers they describe their requirements very vaguely. Good
analysts share their experience and expertise with the customer and give his suggestions
to define certain functionalities more comprehensively, make the functionalities more
general and more complete.
1. Studying existing documentation: The analyst usually studies all the available
documents regarding the system to be developed before visiting the customer site.
Customers usually provide statement of purpose (SoP) document to the developers.
These documents might discuss issues such as the context in which the software is
required, the basic purpose, the stakeholders, features of any similar software
developed elsewhere, etc.
2. Interview: There are many different categories of users of software. Each category
of users typically requires a different set of features from the software. Therefore, it is
important for the analyst to first identify the different categories of users and then
determine the requirements of each.
For example, the different categories of users of a library automation software could be
the library members, the librarians, and the accountants. The library members would like
to use the software to query availability of books and issue and return books. The
librarians might like to use the software to determine books that are overdue, create
member accounts, delete member accounts, etc. The accounts personnel might use the
software to invoke functionalities concerning financial aspects such as the total fee
collected from the members, book procurement expenditures, staff salary expenditures,
etc.
Scenario analysis: A task can have many scenarios of operation. The different scenarios
of a task may take place when the task is invoked under different situations. For different
types of scenarios of a task, the behaviour of the software can be different.
Form analysis: During the operation of a manual system, normally several forms are
required to be filled up by the stakeholders, and in turn they receive several notifications
(usually manually filled forms). In form analysis the exiting forms and the formats of the
notifications produced are analysed to determine the data input to the system and the
data that are output from the system
Requirements Analysis
After requirements gathering is complete, the analyst analyses the gathered requirements
to form a clear understanding of the exact customer requirements and to weed out any
problems in the gathered requirements. It is natural to expect that the data collected from
various stakeholders to contain several contradictions, ambiguities, and incompleteness,
since each stakeholder typically has only a partial and incomplete view of the software.
Therefore, it is necessary to identify all the problems in the requirements and resolve
them through further discussions with the customer.
For carrying out requirements analysis effectively, the analyst first needs to develop a clear
grasp of the problem. The following basic questions pertaining to the project should be
clearly understood by the analyst before carrying out analysis:
What is the problem?
What exactly are the data input to the system and what exactly are the data
output by the system?
What are the possible procedures that need to be followed to solve the problem?
What are the likely complexities that might arise while solving the problem?
If there are external software or hardware with which the developed software has
to interface, then what should be the data interchange formats with the external
systems?
After the analyst has understood the exact customer requirements, he proceeds to
identify and resolve the various problems that he detects in the gathered requirements.
During requirements analysis, the analyst needs to identify and resolve three main
types of problems in the requirements:
• Anomaly
• Inconsistency
• Incompleteness
Anomaly: It is an anomaly is an ambiguity in a requirement. When a requirement is
anomalous, several interpretations of that requirement are possible. Any anomaly in any
of the requirements can lead to the development of an incorrect system, since an
anomalous requirement can be interpreted in the several ways during development
After the analyst has gathered all the required information regarding the software to
be developed, and has removed all incompleteness, inconsistencies, and anomalies
from the specification, he starts to systematically organise the requirements in the
form of an SRS document. The SRS document usually contains all the user
requirements in a structured though an informal form.
Among all the documents produced during a software development life cycle, SRS
document is probably the most important document and is the toughest to write. One
reason for this difficulty is that the SRS document is expected to cater to the needs of a
wide variety of audience.
Usually a large number of different people need the SRS document for very different
purposes. Some of the important categories of users of the SRS document and their needs
for use are as follows:
Software developers: The software developers refer to the SRS document to make sure
that they are developing exactly what is required by the customer.
Test engineers: The test engineers use the SRS document to understand the
functionalities, and based on this write the test cases to validate its working. They need
that the required functionality should be clearly described, and the input and output data
should have been identified precisely.
User documentation writers: The user documentation writers need to read the SRS
document to ensure that they understand the features of the product well enough to be
able to write the users’ manuals.
Project managers: The project managers refer to the SRS document to ensure that they
can estimate the cost of the project easily by referring to the SRS document and that it
contains all the information required to plan the project.
Maintenance engineers: The SRS document helps the maintenance engineers to under-
stand the functionalities supported by the system. A clear knowledge of the functionalities
can help them to understand the design and code. Also, a proper understanding of the
functionalities supported enables them to determine the specific modifications to the
system’s functionalities would be needed for a specific purpose.
The skill of writing a good SRS document usually comes from the experience gained from
writing SRS documents for many projects. The analyst should be aware of the desirable
qualities that every good SRS document should possess. IEEE Recommended Practice for
Software Requirements Specifications [IEEE830] describes the content and qualities of a
good software requirements specification (SRS). Some of the identified desirable qualities
of an SRS document are the following:
Concise: The SRS document should be concise and at the same time
unambiguous, consistent, and complete. Verbose and irrelevant descriptions
reduce readability and also increase the possibilities of errors in the document.
The SRS document should describe the system to be developed as a black box, and
should specify only the externally visible behaviour of the system. For this reason, the
SRS document is also called the black-box specification of the software being
developed.
A good SRS document, should properly categorize and organise the requirements into
different sections. As per the IEEE 830 guidelines, the important categories of user
requirements are the following.
Functional requirements
The functional requirements capture the functionalities required by the users from
the system. A software as offering a set of functions {fi} to the user. These
functions can be considered similar to a mathematical function f : I → O, meaning
that a function transforms an element (ii) in the input domain (I) to a value (oi) in
the output (O). This functional view of a system is shown schematically in Figure
4.1.
Figure 4.1: The black-box view of a system as performing a set of functions.
Each function fi of the system can be considered as reading certain data ii, and then
transforming a set of input data (ii) to the corresponding set of output data (oi). The
functional requirements of the system, should clearly describe each functionality that the
system would support along with the corresponding input and output data set.
Non-functional requirements
The non-functional requirements can be critical in the sense that any failure by the
developed software to achieve some minimum defined level in these requirements can be
considered as a failure and make the software unacceptable by the customer.
The different categories of non- functional requirements that are described under three
different sections:
Some of the example constraints can be—hardware limitations; interfaces with other
applications; specific technologies, tools, and databases to be used; specific
communications protocols to be used; security considerations; design conventions or
programming standards to be followed, etc.
External interfaces required: Examples of external interfaces are— hardware,
software and communication interfaces, user interfaces, report formats, etc. To specify the
user interfaces, each interface between the software and the users must be described.
The description may include sample screen images, any GUI standards or style guides
that are to be followed, screen layout constraints, standard buttons and functions (e.g.,
help) that will appear on every screen, keyboard shortcuts, error message display
standards, and so on.
Goals of implementation
The ‘goals of implementation’ part of the SRS document offers some general suggestions
regarding the software to be developed. These are not binding on the developers, and
they may take these suggestions into account if possible.
The goals of implementation section might document issues such as easier revisions to
the system functionalities that may be required in the future, easier support for new
devices to be supported in the future, reusability issues, etc.
Functional Requirements
A high-level function is one using which the user can get some useful piece of work
done.
The above is not a very accurate definition of a high-level function. For example, how
useful must a piece of work be performed by the system for it to be called ‘a useful piece
of work’ ? Can the printing of the statements of the ATM transaction during withdrawal of
money from an ATM be called a useful piece of work?
Each high-level requirement typically involves accepting some data from the user
through a user interface, transforming it to the required response, and then displaying the
system response in proper format.
In Figure 4.2, the different scenarios occur depending on the amount entered for
withdrawal. The different scenarios are essentially different behaviour exhibited by the
system for the same high-level function.
Each user input and the corresponding system action may be considered as a sub-
requirement of a high-level requirement. Thus, each high-level requirement can consist of
several sub-requirements.
Figure 4.2: User and system interactions in high-level functional requirement.
The high-level functional requirements often need to be identified either from an informal
problem description document or from a conceptual understanding of the problem.
Remember that there can be many types of users of a system and their requirements
from the system may be very different. So, it is often useful to first identify the different
types of users who might use the system and then try to identify the different services
expected from the software by different types of users.
The decision regarding which functionality of the system can be taken to be a high-level
functional requirement and the one that can be considered as part of another function
(that is, a sub function) leaves scope for some subjectivity.
Once all the high-level functional requirements have been identified and the
requirements problems have been eliminated, these are documented. A function can be
documented by identifying the state at which the data is to be input to the system, its input
data domain, the output data domain, and the type of processing to be carried on the input
data to obtain the output data.
Depending on the type of project being handled, some sections can be omitted,
introduced, or interchanged as may be considered by the analyst. However, organisation
of the SRS document to a large extent depends on the preferences of the system analyst
himself, and he is often guided in this by the policies and standards being followed by the
development company.
Also, the organisation of the document and the issues discussed in it to a large extent
depend on the type of the product being developed. However, irrespective of the
company’s principles and product type, the three basic issues that any SRS document
should discuss are—functional requirements, non-functional requirements, and guidelines
for system implementation.
The introduction section should describe the context in which the system is being
developed, and provide an overall description of the system, and the environmental
characteristics.
The introduction section may include the hardware that the system will run on, the
devices that the system will interact with and the user skill-levels.
It is desirable to describe the formats for the input commands, input data, output
reports, and if necessary the modes of interaction.
We outline the important sections that an SRS document should contain as suggested by
the IEEE 830 standard, for each section of the document, we also briefly discuss the
aspects that should be discussed in it.
Introduction
Purpose: This section should describe where the software would be deployed and and
how the software would be used.
Project scope: This section should briefly describe the overall context within which the
software is being developed. For example, the parts of a problem that are being
automated and the parts that would need to be automated during future evolution of the
software.
Environmental characteristics: This section should briefly outline the environment
(hardware and other software) with which the software will interact.
Product perspective: This section needs to briefly state as to whether the software is
intended to be a replacement for a certain existing systems, or it is a new software. If the
software being developed would be used as a component of a larger system, a simple
schematic diagram can be given to show the major components of the overall system,
subsystem interconnections, and external interfaces can be helpful.
Product features: This section should summarize the major ways in which the software
would be used. So, only a brief summary should be presented here.
User classes: Various user classes that are expected to use this software are identified
and described here. The different classes of users are identified by the types of
functionalities that they are expected to invoke, or their levels of expertise in using
computers.
Operating environment: This section should discuss in some detail the hardware
platform on which the software would run, the operating system, and other application
software with which the developed software would interact.
Design and implementation constraints: In this section, the different constraints on
the design and implementation are discussed. These might include—corporate or
regulatory policies; hardware limitations (timing requirements, memory requirements);
interfaces to other applications; specific technologies, tools, and databases to be used;
specific programming language to be used; specific communication protocols to be used;
security considerations; design conventions or programming standards.
User documentation: This section should list out the types of user documentation, such
as user manuals, on-line help, and trouble-shooting manuals that will be delivered to the
customer along with the software.
Functional requirements for organisation of SRS document. The functionalities
either based on the specific functionalities invoked by different users, or the
functionalities that are available in different modes, etc., depending what may be
appropriate.
1. User class 1
(a) Functional requirement 1.1
(b) Functional requirement 1.2
2. User class 2
(a) Functional requirement 2.1
(b) Functional requirement 2.2
External interface requirements
Hardware interfaces: This section should describe the interface between the software
and the hardware components of the system. This section may include the description of
the supported device types, the nature of the data and control interactions between the
software and the hardware, and the communication protocols to be used.
Software interfaces: This section should describe the connections between this
software and other specific software components, including databases, operating systems,
tools, libraries, and integrated commercial components, etc.
It should also identify any communication standards that will be used, such as TCP
sockets, FTP, HTTP, or SHTTP. Specify any communication security or encryption issues that
may be relevant, and also the data transfer rates, and synchronization mechanisms.
Safety requirements: Those requirements that are concerned with possible loss or
damage that could result from the use of the software are specified here. For example,
recovery after power failure, handling software and hardware failures, etc. may be
documented here.