se Module 1
Transcript of se Module 1
-
7/31/2019 se Module 1
1/34
RT 602 Software Engineering
1
Lecture 1
1) Synopsis
Introduction to Software engineeringIntroduction Software and software Engg. - Phases in software development
2) Target: At the completion of this lecture you should be able to answer questions like
(a)What is meant by software?
(b) What is software engineering?
(c) List the phases of software development.
3) Introduction
Before introducing this subject let us begin with the basics what is software? Software is not merely
a collection of computer programs. There is a distinction between a program and a programming systems
product. In this course, I will be introducing you to what is software engineering and what are the phases of
software development. You can define software to be a collection of computer programs, procedures, rules,
and associated documentation and data. The software development process is divided into phases. Each
phase has got a defined output. The major phases of a software cycle are analysis, design, coding and
testing. Due time through the course I will be discussing on these phases in detail. In this lecture I will
discuss on what is software and on the basics of software engineering. In particular we will discuss on the
following:
(i) Software
(ii) Software Engineering
(iii) Phases in software development
4) Revision/Prerequisites
Read through the basics of what is meant by software and the evolution of software engineering.
You can refer the following books:
i) Software Engineering - Roger S. Pressman, Tata McGraw Hill
ii) Software Engineering - Ian Sommervilla, Pearson Education.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
2/34
RT 602 Software Engineering
2
There is immense information available in Internet, which may help you explore the depth of this
subject.
An Integrated Approach to Software Engineering , Pankaj Jalote is your prescribed textbook.
You can refer these books for all the coming lectures. Please refer to pages 1 to 21 of your textbook
for the portions I will be covering in this lecture.
5) Concepts:
Introduction
I think the foremost knowledge you must have in order to study the subject is to know what is
meant by software? As told earlier, you can define software as the collection of computer programs,
procedures, rules, and associated documentation and data. This implies that the discipline dealing with the
development of software should not only deal with developing programs, but with developing all the things
that constitute the software.
Software Engineering is the systematic approach to the development, operation, maintenance and
retirement of software.
Software Engineering is the application of science and mathematics by which the capabilities of computer
equipment are made useful to man via computer programs, procedures, and associated documentation.
Software Engineering Approach:The basic software engineering approach is to: Develop methods and procedures for software
development that can scale up for large systems and that can be used to consistently produce high-quality
software at low cost and with a small cycle time. The key objectives are consistency, low cost, high
quality, small cycle time, and scalability. The basic approach that software engineering takes is to separate
the development process from the development process from the developed product. Design of proper
software processes and their control then becomes the primary goal of software engineering.
Phased Development Process:
A development process consists of various phases, each phase ending with a defined output. The
phases are performed in an order specified by the process model being followed. The main reason for
having a phased process is that it breaks the problem of developing software into successfully performing a
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
3/34
RT 602 Software Engineering
3
set of phases, each handling a different concern of software development. This ensures that the cost of
development is lower than what it would have been if the whole problem were tackled together. It also
helps in proper checking for quality and progress at some defined points during the development.
Requirement Analysis: Requirement analysis is done in order to understand the problem the software
system is to solve. Why we need requirement analysis? It helps us in identifying what is needed from the
system, not how the system will achieve its goals. The developer has to satisfy the clients needs. The
requirement phase ends with a document describing all the requirements. The goal of this phase is to
develop a SRS. The two major activities in this phase: problem understanding or analysis and requirement
specification.
Software design: The purpose of the design phase is to plan a solution of the problem specified by the
requirements document. It specifies how to satisfy the needs. The output of this phase is the design
document. The design activity is divided into two separate phases system design and detailed design.
System design, also called as top level design, aims to identify the modules that should be in the system,
the specifications of these modules, and how they interact with each other to produce the desired results
.During detailed design, the internal logic of each of the modules specified in system design is decided
.During this phase further details of the data structures and algorithmic design of each of the modules is
specified.
Coding: The goal of the coding phase is to translate the design of the system into code in a given
programming language. The aim of this phase is to implement the design in the best possible manner. Thecoding phase affects both testing and maintenance profoundly. Well-written code can reduce the testing
and maintenance effort. Hence, during coding the focus should be on developing programs that are easy to
read and understand, and not simply on developing programs that are easy to write. Simplicity and clarity
should be strived for during the coding phase. An important concept that helps the understandability of
programs is structured programming.
Testing: Testing is the major quality control measure used during software development. Its basic function
is to detect errors in the software. Testing not only has to uncover errors introduced during coding, but also
errors introduced during the previous phases. Different levels of testing are used:
-The starting point of testing is unit testing. In this, a module is tested separately and is often performed by
the coder himself simultaneously along with the coding of the module. The purpose is to exercise the
different parts of the module code to detect coding errors.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
4/34
RT 602 Software Engineering
4
-After this, the modules are gradually integrated into subsystems, which are then integrated to eventually
form the entire system. During integration of modules, integration testing is performed to detect design
errors by focusing on testing the interconnection between modules.
-After the system is put together, system testing is performed. Here the system is tested against the system
requirements to see if all the requirements are met and if the system performs as specified by the
requirements.
- Finally acceptance testing is performed to demonstrate to the client, on the real life data of the client,
the operation of the system.
The testing process starts with a test plan that identifies all the testing related activities that must be
performed and specifies the schedule, allocates the resources, and specifies guidelines for testing. The test
plan specifies conditions that should be tested, different units to be tested, and the manner in which
modules will be integrated. Then for different test units, a test case specification document is produced
which lists all the different test cases, together with expected outputs. The final output of this phase is error
report and test report.
University Questions:
a. BTech Degree Examination, May 2005, Prior to 2002
1.Explain the phases in software development. (12 marks)
2. Give a brief account of evolution of software engineering. (12 marks)
6) Summary: I think from the above you might have got an idea about the basic concepts of the subject.
Thesebasic details are going to be useful in the subjects you are going to learn in the higher semesters. The
details you will be coming across in the next lectures will help you in future while working in a software
industry. In my next lecture I will be discussing on various software process models. You can observe that
the phases you have learnt in these models.
7) Exercise Questions
i) What is software engineering?
a. Set of computer programs, procedures and possibly associated document concerned with
the operation of data processing
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
5/34
RT 602 Software Engineering
5
b. Software engineering implement a single independent function
c. Software engineering is the establishment and use of sound engineering practice in order to
produce economical and reliable software that will perform efficiently on real machine
d. Software engineering is a step that encompasses the method, tools, procedure used in
software
ii) System design aims to:
a. Identify the modules that should be in the system
b. The specification of modules
c. Identify how modules interact with each other to produce desired output
d. All of these
iii) The program specifications are translated into a machine-readable form by the process of coding.
a. Detailed design
b. System design
c. Testing
d. Coding
iv) Which is the last step in classic life cycle paradigm?
a. System engineering
b. Analysis
c. Codingd. Maintenance
v) Which of the following form the first phase in any development process
Design
b. Coding
c. Testing
d. None of these
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
6/34
RT 602 Software Engineering
6
Lecture 2
1) Synopsis
Software development process models
2) Target: At the completion of this lecture you should be able to answer questions like
(a) What are the different software process models?
3) Introduction
Now that you are familiar with the phases of software cycle. Let me discuss the various software
process models. There are different kinds of software process models each with its set of advantages and
disadvantages. Choosing a process model depends on your work environment. Initially I will be discussing
on the waterfall model, which is a linear model. Then you have got prototyping. Finally spiral model. As
you read through the rest of the lectures, you will start getting an idea on when and how you select a
process model, and the necessity of each and every model. In particular we will discuss on the following:
Software Process Models
-Waterfall Model
- Prototyping
-Iterative Enhancement
-Spiral Model
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
7/34
RT 602 Software Engineering
7
4) Revision/Prerequisites
Please refer to pages 23 to 46 of your textbook.
5) Concepts:
A software process is a set of activities, together with ordering constraints among them, such that if
the activities are performed properly and in accordance with the ordering constraints, the desired result is
produced.
Software Processes
Software development concerns with many processes simultaneously executing. Business process models,
social process models, and training models are all examples of processes that come under this.
The process that deals with the technical and management issues of software development is called a
software process.
Software Development Process
In the software development process the activities we focus on are design, coding and testing. A
development process model specifies some activities that, according to the model, should be performed,
and the order in which they should be performed. Now let us discuss some common process models that
have been proposed.i) Waterfall Model: This is the simplest process model, which states that the phases are organized in a
linear order. The project begins with feasibility analysis. On successfully demonstrating the feasibility of a
project, the requirement analysis and project planning begins. The design starts after the requirements
analysis is complete, and coding begins after the design is complete. Then the code is integrated and testing
is done.
With the waterfall model, the sequence of activities performed in a software development project
is: requirement analysis, project planning, system design, detailed design, coding and unit testing, system
integration and testing. Linear ordering of activities helps to clearly identify the end of a phase and the
beginning of the next; some certification mechanism has to be employed at the end of each phase. The
consequence of the need for certification is that each phase must have some defined output that can be
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
8/34
RT 602 Software Engineering
8
evaluate and certified. The goal of a phase is to produce this product. The outputs of the earlier phases are
called its work products, which are usually in the form of documents.
There are two basic assumptions for justifying the linear ordering of phases in the manner proposed by the
model:
a. For a successful project resulting in a successful product, all phases listed in the waterfall model must be
performed anyway.
b. Any different ordering of the phases will result in a less successful software product.
Project Outputs in Waterfall model :
There are a number of intermediate outputs that must be produced to produce a successful product.
The following set of documents should be produced in each project:
Requirements document
Project Plan
System design document
Detailed design document
Test plan and test reports
Final code
Software manuals
Review reports
Limitations of the Waterfall Model:
a. The waterfall model assumes that the requirements of a system can be frozen before the design
begins. For new systems, determining the requirements is difficult, as the user does not even know
the requirements.
b. Freezing the requirements usually requires choosing the hardware .A large project may require
years to get completed. If the hardware is selected early, it is likely that the final software will use a
hardware technology on the verge of becoming obsolete.
c. The waterfall model stipulates that the requirements be completely specified before the rest of the
development can proceed. In some situations it might be desirable to first develop a part of the
system completely and then later enhance the system in phases.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
9/34
RT 602 Software Engineering
9
d. It is a document driven process that requires formal documents at the end of each phase. This
approach tends to make the process documentation heavy and is not suitable for many
applications, particularly interactive applications.
ii) Prototyping:
One of the main problems with the waterfall model is that the requirements often are not
completely understood in the early development stages. When you reach the design or coding stages, you
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
10/34
RT 602 Software Engineering
10
begin to see how everything works together, and you can discover that you need to adjust the requirements.
Prototyping is an effective tool for demonstrating how a design meets a set of requirements. You
can build a prototype, adjust the requirements, and revise the prototype several times until you have a clear
picture of the overall objectives. In addition to clarifying the requirements, a prototype also defines many
areas of the design simultaneously.
The pure waterfall model allows for prototyping in the later architectural design stage and
subsequent stages but not in the early requirements stages.
However, prototyping has its drawbacks. Because it appears that you have a working system,
customers may expect a complete system sooner than is possible. In most cases, prototypes are built on
compromises that allow it to come together quickly but prevent the prototype from being an effective basis
for future development. You need to decide early if you want to use the prototype as a basis for future
development. All parties need to agree with this decision before development begins.
Be careful that prototyping does not become a disguise for a code and fix development cycle.
Before you begin prototyping, gather clear requirements and create a design plan. Limit the amount of time
you spend prototyping before you begin. Time limits help to avoid overdoing the prototyping phase. As
you incorporate changes, update the requirements and the current design. After you finish prototyping,
consider returning to one of the other development models. For example, consider prototyping as part of
the requirements or design phases of the waterfall model.
iii) Iterative Enhancement
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
Requirement
analysis
Design
Code
Test
Code TestDesign
-
7/31/2019 se Module 1
11/34
RT 602 Software Engineering
11
The iterative enhancement model counters the third limitation of the waterfall model and tries to
combine the benefits of both prototyping and the waterfall model. The basic idea is that the software
should be developed in increments, each increment adding some functional capability to the system is
implemented. At each step, extension and modifications can be made. An advantage of this approach is
that it can result in better testing because testing each increment is likely to be easier than testing the entire
system as in the waterfall model.
In this step of this model, a simple initial implementation is done for a subset of the overall
problem. This subset is one that contains some key aspects of the problem. A project list that contains all
the tasks that must be performed to obtain the final implementation .Each step consists of removing the
next task from the list, designing the implementation for the selected task, coding and testing the
implementation, performing an analysis of the partial system obtained after this step, and updating the list
as a result of the analysis. These three phases are called the design phase, implementation phase, and
analysis phase. The process is iterated until the project control list is empty, at which time the final
implementation is available.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
Design 0Design 1
Design n
Analysis 1
Implement 1
Analysis n
Implement n
Implement 0
Analysis 0
-
7/31/2019 se Module 1
12/34
RT 602 Software Engineering
12
iv) Spiral Model
The spiral model is a popular alternative to the waterfall model. It emphasizes risk management so
you find major problems earlier in the development cycle. In the waterfall model, you have to complete the
design before you begin coding. With the spiral model, you break up the project into a set of risks that needto be dealt with. You then begin a series of iterations in which you analyze the most important risk,
evaluate options for resolving the risk, deal with the risk, assess the results, and plan for the next iteration.
The following figure illustrates the spiral lifecycle model.
Risks are any issues that are not clearly defined or have the potential to affect the project adversely. For
each risk, consider the following two things:
The likelihood of the risk occurring (probability) .
The severity of the effect of the risk on the project (loss) .
You can use a scale of 1 to 10 for each of these items, with 1 representing the lowest probability or loss
and 10 representing the highest. Risk exposure is the product of these two rankings.
Use something such as the following table to keep track of the top risk items of the project.
ID Risk Probability LossRisk
ExposureRisk Management Approach
1 Acquisition rates too high 5 9 45 Develop prototype to demonstrate feasibility
2 File format might not be 5 3 15 Develop benchmarks to show speed of data
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
13/34
RT 602 Software Engineering
13
efficient manipulation
3 Uncertain user interface 2 5 10 Involve customer; develop prototype
In general, deal with the risks with the highest risk exposure first. In this example, the first spiral
deals with the potential of the data acquisition rates being too high. If after the first spiral, you demonstrate
that the rates are high, you can change to a different hardware configuration to meet the acquisition
requirements. Each iteration can identify new risks. In this example, using more powerful hardware can
introduce higher costs as a new risk.
For example, assume you are designing a data acquisition system with a plug-in data acquisition
card. In this case, the risk is whether the system can acquire, analyze, and display data quickly enough.
Some of the constraints in this case are system cost and requirements for a specific sampling rate and
precision.
After determining the options and constraints, you evaluate the risks. In this example, create a
prototype or benchmark to test acquisition rates. After you see the results, you can evaluate whether to
continue with the approach or choose a different option. You do this by reassessing the risks based on the
new knowledge you gained from building the prototype.
In the final phase, you evaluate the results with the customer. Based on customer input, you can
reassess the situation, decide on the next highest risk, and start the cycle over. This process continues until
the software is finished or you decide the risks are too great and terminate development. It is possible that
none of the options are viable because the options are too expensive, time-consuming, or do not meet the
requirements.
The advantage of the spiral model over the waterfall model is that you can evaluate which risks to
handle with each cycle. Because you can evaluate risks with prototypes much earlier than in the waterfall
process, you can deal with major obstacles and select alternatives in the earlier stages, which is less
expensive. With a standard waterfall model, assumptions about the risky components can spread
throughout the design, and when you discover the problems, the rework involved can be very expensive.
University Questions
a. BTech Degree Examination, May 2005, New Scheme-2002 Admission onwards
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
14/34
RT 602 Software Engineering
14
1. What are the project outputs in a waterfall model of a software development?(4marks)
b. BTech Degree Examination, Nov 2005, Prior to 2002
1. Briefly explain process models for Software development. (12 marks)
c. BTech Degree Examination, Nov 2005, New Scheme-2002 Admission onwards
1. What are the limitations of waterfall model of software development? (4marks)
1. Explain the various software development process models. (12 marks)
d. B Tech Degree examination, October /November 2004
1. Explain Evolutionary prototyping technique with block diagram. Bring out advantages and
problems with evolutionary prototyping.(12 marks)
6) Summary: You might have got an idea about various life cycle models. The one fact you can observe
concerning these models is that all of them have got similar phases. Only slight variations are observed.
Each model has got its advantages and disadvantages. Choosing each model depends on your project. You
will learn to choose among these models in due course of time. In my next lecture, I will be discussing on
project management and software metrics.
7) Exercise Questions
i) A lifecycle model, also called as process model, is
a. An abstract description of the software development and modification process.b. A description of various levels to design and code the system.
c. A detailed description of the design and implementation of a process
d. None of these
ii) The output of the earlier phases of a development process, which are not the final output, are frequently
called __________
a. Work products
b. Partial products
c. Partial outputs
d. Intermediate outputs
iii)_________ Process model states that the phases are organized in a linear order.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
15/34
RT 602 Software Engineering
15
a. Spiral model
b. Waterfall model
Incremental model
Prototyping model
iv) Prototyping based development process will counter the following limitations of waterfall model:
i. The waterfall model assumes that the requirements of a system can be frozen before the
design begins
ii. The waterfall model stipulates that the requirements be completely specified before rest of
the development can proceed
iii. The waterfall model freezes the hardware and environment specification.
iv. The waterfall model is a document driven model that require formal documents at the end
of every phase
Which of the above statements are true?
a. (i) and (ii)
b. (ii), (iii) and (iv)
c. (i) and (iii)
d. All the above
v) The ________ guides the iteration steps and keeps track of all tasks that must be done.
a. Process work planb. Product control list
c. System process list
d. None of these
vi) The ________ emphasizes on the need to go back and re look at earlier stages, i.e. requirements and
design, as number of times as required till the projects stake holders are completely satisfied with all the
aspects of the system.
a. Spiral model
b.Waterfall model
c. Incremental model
d. Prototyping model
vii) Which among the following model is not suitable for customized software development?
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
16/34
RT 602 Software Engineering
16
Prototyping
Iterative Enhancement
Spiral
Waterfall
viii) Second phase of the spiral model is reserved for
a. Finding objective
b. Coding
c. Risk analysis
d. None of these
Lecture 3
1) Synopsis
Role of Management in software development Role of Metrics and measurement
2) Target: At the completion of this lecture you should be able to answer questions like
(a) What is the role of management in software development?
3) Introduction
In the previous session, I have discussed about the basic of software engineering and the life cycle
models. Here in this session I will discuss about project management and metrics and measurement. As in
every field, management is important in this field also. Project managers are designated for the purpose He
supervises the various tasks in the development process. It takes place all throughout the project. In
particular we will discuss on the following:
(i) Role of Management in software development(ii) Role of Metrics and measurement
4) Revision/Prerequisites
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
17/34
RT 602 Software Engineering
17
Please refer to pages 46 to 51 of your textbook.
5) Concepts:
Project management Process
A large software development project involves many people working for a long period of time. To
meet the cost, quality, and schedule objectives, resources have to be properly allocated to each activity for
the project, and progress of different activities has to be monitored and corrective actions taken, if needed.
All these activities are part of the project management process.
Phases of management Process
The activities in the management process for a project can be grouped broadly into three phases:
planning, monitoring and control, and termination analysis.
Project management begins with planning. Here we prepare a plan for the software development. A
software plan is usually produced before the development activity begins and is updated as development
proceeds and data about progress becomes available. During planning the major activities are cost
estimation, schedule and milestone determination, project staffing, quality control plans, and controlling
and monitoring plans. In cost and schedule estimation, the total cost and time needed for successfully
completing the project are estimated. The project plan plans for all the software quality assurance activities.
Project monitoring and control phase of the management process is the longest in terms of duration;
it encompasses most of the development process. It includes all the activities the project management hasto perform while the development is going on to ensure that project objectives are met and the
development proceeds according to the developed plan.
Monitoring a development process requires proper information about the project. Such information
is typically obtained by the management process from the development process.
Whereas monitoring and control lasts the entire duration of the project, the last phase termination
analysis is performed when the development process is over. The basic reason for performing this phase
is to provide information about the development process. Using the predictability property of the process,
this data about the process can be used to make predictions and estimations about future projects.
Metrics, Measurement and Models
For effective project monitoring, the information coming from the development process to the
management process should be objective and quantitative data about the project. If the information
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
18/34
RT 602 Software Engineering
18
obtained is not quantitative, then subjective judgment will have to be used, which an engineering discipline
needs to minimize. The need for quantitative data from the process requires that software metrics be used.
Software metrics are quantifiable measures that could be used to measure different characteristics of a
software system or the software development process.
A number of metrics have been proposed to quantify things like the size , complexity and reliability
of a software product.
Another term related to metrics is measurement. Metrics provide the scale for quantifying qualities;
actual measurement must be performed on a given software system in order to use metrics for quantifying
characteristics of the given software. Values for some metrics can be directly measured; others might have
to be deduced by other measurement. If a metric is not measured directly, we can call it indirect.
For estimating, models are needed. A model is a relationship of the predicted variable that other
variables can be measured. The model may be determined based on empirical data or it may be analytic.
Building a model is an issue that concerns management.
Metrics provide quantification of some property, measurements provide the actual value for the
metrics, and models are needed to get the value for indirect metrics. All metrics must have a purpose.
Some metrics is of academic interest only.
For example, total frequency of different characters in the code. Many metrics are used for measuring the
complexity of code or design.
University Questions
a. BTech Degree Examination, May 2005, New Scheme 2002 Admission onwards)
1. Explain quality metrics. (4 marks)
2. Explain the role of metrics and measurement in software development. (12 marks)
b. BTech Degree Examination, Nov 2005, Prior to 2002
1. Briefly explain the role of management in software development. (12 marks) .
c. BTech Degree Examination, Nov 2005, New Scheme-2002 Admission onwards
1. Explain the role of management in software development (5marks)
d. BTech Degree Examination, Oct/Nov 2004
1. Clearly bring out the role of management in software development. (12marks)
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
19/34
RT 602 Software Engineering
19
6) Summary: Here in this lecture, I have discussed to you on project management and the role of metrics
adopted. A good manager is responsible for the proper development of the project. In the next lecture, I
will discuss on SRS, which plays an important role in software specification.
7) Exercise Questions
i) Which are the phases of project management?
a. Planning
b. Monitoring and control
c. Termination analysis
d. All of the above
ii) are quantifiable measures that could be used to measure different characteristics of a
software system or the software development process.
a. Software metrics
b. Software measurement
c. Planning
d. Estimation
iii) Metrics have been proposed to quantify things like
a. Sizeb. Complexity
c. Reliability
d. All of the above
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
20/34
RT 602 Software Engineering
20
Lecture 4
1) Synopsis
Software requirement specification (SRS)
2) Target: At the completion of this lecture you should be able to answer questions like
(a) What is a SRS?
(b) What should a SRS include?
(c) What are the characteristics of a good SRS?
3) Introduction
In the previous session, I have discussed about project management. In this lecture I am going to
discuss about SRS.SRS refers to Software Requirement Specification. I think it is a very important
activity in software development. Only if you are able to specify the requirements beforehand, you will be
able to manage the project with minimum risk. Basically a SRS will consist of an introduction, functional
requirements, system requirements, interface requirements, etc. You will also learn to identify a good SRS.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
21/34
RT 602 Software Engineering
21
At the end of this lecture you should be able to write a SRS for a simple system.In particular we will
discuss on the following:
(i) Software Requirement Specification
- Information SRS Includes
- Template of a SRS
- Characteristics of a good SRS
4) Revision/Prerequisites
Please refer to pages 73 to 83 of your textbook.
5) Concepts:
Software Requirement Specification
An SRS is basically an organization's understanding (in writing) of a customer or potential client's
system requirements and dependencies at a particular point in time (usually) prior to any actual design or
development work. It's a two-way insurance policy that assures that both the client and the organization
understand the other's requirements from that perspective at a given point in time.
The SRS document itself states in precise and explicit language those functions and capabilities a
software system (i.e., a software application, an eCommerce Web site, and so on) must provide, as well as
states any required constraints by which the system must abide. The SRS also functions as a blueprint for
completing a project with as little cost growth as possible. The SRS is often referred to as the "parent"
document because all subsequent project management documents, such as design specifications, statements
of work, software architecture specifications, testing and validation plans, and documentation plans, are
related to it.
It is important to note that an SRS contains functional and nonfunctional requirements only; it
doesn't offer design suggestions, possible solutions to technology or business issues, or any other
information other than what the development team understands the customer's system requirements to be.
A well-designed, well-written SRS accomplishes four major goals:
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
22/34
RT 602 Software Engineering
22
It provides feedback to the customer. An SRS is the customer's assurance that the development
organization understands the issues or problems to be solved and the software behavior necessary
to address those problems. Therefore, the SRS should be written in natural language (versus a
formal language, explained later in this article), in an unambiguous manner that may also include
charts, tables, data flow diagrams, decision tables, and so on.
It decomposes the problem into component parts. The simple act of writing down software
requirements in a well-designed format organizes information, places borders around the problem,
solidifies ideas, and helps break down the problem into its component parts in an orderly fashion.
It serves as an input to the design specification. As mentioned previously, the SRS serves as the
parent document to subsequent documents, such as the software design specification and statement
of work. Therefore, the SRS must contain sufficient detail in the functional system requirements so
that a design solution can be devised.
It serves as a product validation check. The SRS also serves as the parent document for testing and
validation strategies that will be applied to the requirements for verification.
SRSs are typically developed during the first stages of "Requirements Development," which is the initial
product development phase in which information is gathered about what requirements are needed--and not.
This information-gathering stage can include onsite visits, questionnaires, surveys, interviews, and perhaps
a return-on-investment (ROI) analysis or needs analysis of the customer or client's current business
environment. The actual specification, then, is written after the requirements have been gathered and
analyzed.
Why Technical Writers should be Involved with Software Requirements Specifications?
Unfortunately, much of the time, systems architects and programmers write SRSs with little (if any) help
from the technical communications organization. And when that assistance is provided, it's often limited to
an edit of the final draft just prior to going out the door. Having technical writers involved throughout the
entire SRS development process can offer several benefits:
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
23/34
RT 602 Software Engineering
23
Technical writers are skilled information gatherers, ideal for eliciting and articulating customer
requirements. The presence of a technical writer on the requirements-gathering team helps balance
the type and amount of information extracted from customers, which can help improve the SRS.
Technical writers can better assess and plan documentation projects and better meet customer
document needs. Working on SRSs provides technical writers with an opportunity for learning
about customer needs firsthand--early in the product development process.
Technical writers know how to determine the questions that are of concern to the user or customer
regarding ease of use and usability. Technical writers can then take that knowledge and apply it not
only to the specification and documentation development, but also to user interface development, to
help ensure the UI (User Interface) models the customer requirements.
Technical writers involved early and often in the process, can become an information resource
throughout the process, rather than an information gatherer at the end of the process.
In short, a requirements-gathering team consisting solely of programmers, product marketers, systems
analysts/architects, and a project manager runs the risk of creating a specification that may be too heavily
loaded with technology-focused or marketing-focused issues. The presence of a technical writer on the
team helps place at the core of the project those user or customer requirements that provide more of an
overall balance to the design of the SRS, product, and documentation.
What Kind of Information Should an SRS Include?
You probably will be a member of the SRS team (if not, ask to be), which means SRS development will be
a collaborative effort for a particular project. In these cases, your company will have developed SRSs
before, so you should have examples (and, likely, the company's SRS template) to use. But, let's assume
you'll be starting from scratch. Several standards organizations (including the IEEE) have identified nine
topics that must be addressed when designing and writing an SRS:
1. Interfaces
2. Functional Capabilities
3. Performance Levels
4. Data Structures/Elements
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
24/34
RT 602 Software Engineering
24
5. Safety
6. Reliability
7. Security/Privacy
8. Quality
9. Constraints and Limitations
But, how do these general topics translate into an SRS document? What, specifically, does an SRS
document include? How is it structured? And how do you get started? An SRS document typically includes
four ingredients, as discussed in the following sections:
1. A template
2. A method for identifying requirements and linking sources
3. Business operation rules
4. A traceability matrix
Begin with an SRS Template
The first and biggest step to writing an SRS is to select an existing template that you can fine tune for your
organizational needs (if you don't have one already). There's not a "standard specification template" for all
projects in all industries because the individual requirements that populate an SRS are unique not only
from company to company, but also from project to project within any one company. The key is to select
an existing template or specification to begin with, and then adapt it to meet your needs.
In recommending using existing templates, I'm not advocating simply copying a template from available
resources and using them as your own; instead, I'm suggesting that you use available templates as guides
for developing your own. It would be almost impossible to find a specification or specification template
that meets your particular project requirements exactly. But using other templates as guides is how it's
recommended in the literature on specification development. Look at what someone else has done, andmodify it to fit your project requirements. (See the sidebar called "Resources for Model Templates" at the
end of this article for resources that provide sample templates and related information.) Table 1 shows
what a basic SRS outline might look like.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
25/34
RT 602 Software Engineering
25
1. Introduction
1.1 Purpose
1.2 Document conventions
1.3 Intended audience1.4 Additional information
1.5 Contact information/SRS team members
1.6 References
2. Overall Description
2.1 Product perspective
2.2 Product functions
2.3 User classes and characteristics
2.4 Operating environment
2.5 User environment
2.6 Design/implementation constraints
2.7 Assumptions and dependencies
3. External Interface Requirements
3.1 User interfaces
3.2 Hardware interfaces
3.3 Software interfaces
3.4 Communication protocols and interfaces
4. System Features
4.1 System feature A
4.1.1 Description and priority
4.1.2 Action/result4.1.3 Functional requirements
4.2 System feature B
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
26/34
RT 602 Software Engineering
26
5. Other Nonfunctional Requirements
5.1 Performance requirements
5.2 Safety requirements
5.3 Security requirements
5.4 Software quality attributes
5.5 Project documentation
5.6 User documentation
6. Other Requirements
Appendix A: Terminology/Glossary/Definitions list
Appendix B: To be determinedCharacteristics of a Good SRS:
Before winding up the topic SRS let me list the characteristics of a good SRS.It should be:
Correct
Unambiguous
Complete
Consistent
Ranked for importance and/or stability
Verifiable
Modifiable
Traceable
University Questions
a.BTech Degree Examination, May 2005, New Scheme-2002 Admission onwards
1. Discuss the various desirable characteristics of an SRS. (8 marks)
b.BTech Degree Examination, Nov 2005,Prior to 2002 Admission-syllabus
1.List out software requirement specifications. (4 marks)
c.BTech Degree Examination, May 2005, Prior to 2002
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
27/34
RT 602 Software Engineering
27
1.Explain problem analysis and requirement specifications. (4marks)
d. BTech Degree Examination, Nov 2005, New Scheme-2002 Admission onwards
1. What are the components of SRS? Explain them briefly. (7 marks)
e. BTech Degree Examination, October/November 2004
1. What is requirement specification? Explain. (4 marks)
6) Summary: By now you are familiar with what a SRS is and what is the need for it. SRS development
will be a collaborative effort for a particular project. You might also be able to prepare SRS for any simple
system. Look through the format of the SRS that will help you through the process. In the next lecture I
will be discussing on problem analysis and validation.
7) Exercise Questions
i) SRS refers to
a. Software Recurring System
b. Software Resource Specification
c. Software Requirements Specification
d. Software Requirement System
ii) A SRS consists of
a. System Requirements
b. External Interface Specifications
c. Introduction
d. All of the above
(iii) Which of the following are the characteristics of a good SRS?
a. Correct
b. Unambiguous
c. Modifiable
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
28/34
RT 602 Software Engineering
28
d. All of the above
8) Programming / Computational assignments
i) Read through the case study given in your textbook. It concerns with a system to be developed for
scheduling the courses in computer science department, based on the input about class rooms, lecture
times, and time preferences of the different instructors. Different conditions have to be satisfied by the final
schedule. Analyze the SRS and prepare a report based on your understanding.
Lecture 5
1) Synopsis
Problem Analysis-validation
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
29/34
RT 602 Software Engineering
29
2) Target: At the completion of this lecture you should be able to answer questions like
(a) How is problem analysis done?
(b) What are the different methods for validation?
3) Introduction
Now that you have learned how to write a SRS, in this lecture I will be discussing on problem
analysis and validation. Now what is analysis? I have already discussed on that in my introductory lectures.
The basic aim of problem analysis is to obtain a clear understanding of the needs of the clients and the
users, what exactly is desired from the software, and what the constraints on the solution are. Customer
satisfaction should be the prime objective while developing a project. After all for whom are we
developing the project? The basic objective of the requirements validation activity is to ensure that the SRS
reflects the actual requirements accurately and clearly .I will be discussing on various methods of detecting
requirement errors. You will be learning on the various analysis issues and also various validation
methods. In particular we will discuss on the following:
(i) Problem Analysis
-Analysis Issues
-Informal Approach
-Structured Analysis(ii) Validation
-Requirement Reviews
-Other methods
4) Revision/Prerequisites
Please refer to pages 83 to 120 and 133 to 137of your textbook.
5) Concepts:
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
30/34
RT 602 Software Engineering
30
Problem analysis
The basic aim of problem analysis is to obtain a clear understanding of the needs of the clients and
the users, what exactly is desired from the software, and what the constraints on the solution are. Analysis
involves interviewing the clients and end users. These people and the existing documents about the current
mode of operation are the basic source of information for the analysis. Analysts not only collect and
organize information about the clients organization and its processes, but they also ct as consultants.
Analysis issues
It is essential that during analysis a complete and consistent set of specification emerge for the system. The
first major problem is to obtain the necessary information. The second major issue is how to organize the
information obtained so the information can be effectively evaluated for completeness and consistency.
The third major problem is resolving the contradictions that may exist in the information from different
phases.
The fourth major problem is avoiding internal design.
There are three basic approaches to problem analysis:
Informal approaches based on structured communication and interaction
Conceptual modeling based approaches
Prototyping
Here I will be discussing on the first two approaches.
Informal Approach
Here no defined methodology is used. The information about the system is obtained by interaction with the
client, end users, questionnaires, study of existing documents, etc. The problem and the system model are
essentially built in the minds of the analysts and are directly translated to the SRS .In such an approach, the
analyst will have a series of meetings with the clients and end users.
Structured analysis
It uses a function-based decomposition while modeling the problem. It focuses on the functions performed
in the problem domain and the data consumed and produced by these functions. This method helps an
analyst decide what type of information to obtain at different points in analysis, and it helps organize
information so that the analyst is not overwhelmed by the complexity. It is a top down approach.
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
31/34
RT 602 Software Engineering
31
The basic system view of this approach is that each system can be viewed as transformation function
operating within an environment that takes some inputs from the environment and produces outputs for the
environment. The data will be transformed from the input to output in a series of transformations starting
from the input and culminating in the desired output. In this approach, we make use of DFDs.
Now what is a DFD?
Data flow diagrams or DFDs shows the flow of data through a system. It views a system as a function that
transforms the inputs into desired outputs.
-The first step in this method is to study the physical environment. A DFD of the current nonautomated
system is drawn. While drawing the DFD for the physical environment, an analyst has to interact with the
users to determine the overall process from the point of view of the data. This step is considered complete
when the entire physical DFD has been described and the user has accepted it.
-The next step is to draw the logical equivalents of the DFD.
-The next step is to develop the logical model of the new system after the changes have been incorporated,
and a DFD is drawn to show how data will flow in the new system.
-The next step is to establish the man-machine boundary what will be automated and what will remain
manual in the DFD for the new system.
-The next two steps are evaluating the different options and then packaging the specifications.
There are various other approaches. One important among them is object oriented modeling. You
will study in detail about the model in your higher semesters.Validation
The basic objective of the requirements validation activity is to ensure that the SRS reflects the
actual requirements accurately and clearly. We need to check if the SRS is of good quality. The types of
errors that typically occur in a SRS are:
Omission
Inconsistency
Incorrect fact
Ambiguity
Besides improving the quality of the SRS itself the validation should focus on uncovering these types of
errors.
Requirement Reviews
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
32/34
RT 602 Software Engineering
32
Requirement reviews in which the SRS is carefully reviewed by a group of people including
representatives of the clients and the users are the most common method for validation. Reviews can be
used throughout software development for quality assurance and data collection, and there is considerable
data now to suggest that reviews and inspections are one of the most effective methods of detecting errors.
Requirement review is a review by a group of people to find errors and point out the matters of concern in
the requirements specifications of a system. The review group includes the author of the requirements
document, someone who understands the needs of the client, a person of the design team, and the person
responsible for maintaining the requirements documents.
-One way to organize the review meeting is to have each participant go over the requirements before the
meeting and mark the items he has doubts about checklists can be useful in identifying such items. In the
meeting, as the member asks questions, the author give clarifications.
-Alternatively, the meeting can start with the analyst explaining each of the requirements in the document.
The participants can ask questions, share doubts, or seek clarifications.
Requirements reviews are probably the most effective means for detecting requirement errors.
Other methods
There are other approaches that may be applicable for some systems or parts of systems.
i) Automated Cross-Referencing
It uses processors to verify some properties of requirements .any automated processing of requirements is
possible if it is written in a formal specification language. These tools can check for internal consistencyand completeness. But these tools cannot directly check for external completeness.
ii) Reading
The goal in reading is to make someone other than the author read the requirements specification document
to identify potential problems. Reading is effective only if the reader takes the job seriously. Even with
serious reading, the reading is limited in scope for catching completeness and consistency errors.
iii) Constructing Scenarios
The most common area for scenario construction is that of the system-user interaction. It helps in clarifying
misunderstandings in the human-computer interaction area. They are of limited value for verifying the
consistency and completeness of the requirements.
iv) Prototyping
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
33/34
RT 602 Software Engineering
33
A prototype can be built to verify the feasibility of the requirements. A prototype that has been built during
problem analysis can also aid validation.
University Questions
a. BTech Degree Examination, May 2005, Prior to 2002
1.Discuss validation techniques. (4marks) .
b.BTech Degree Examination, May 2005, New Scheme 2002 Admission onwards
1. What do you mean by problem analysis? (4marks)
c.BTech Degree Examination, May 2005, Prior to 2002
1.Explain problem analysis and requirement specifications. (4marks)
d.BTech Degree Examination, Nov 2005, Prior to 2002 Admission -Syllabus
1.Write short note on validation.(4marks)
6) Summary: In this lecture, we have seen through what is an analysis. Analysis is done by interviews
with clients. It is getting into an agreement with the client on the requirements of the project. Afterall
customer satisfaction is the most important part. No client should later be dissatisfied with the project you
will be providing him or her with. We have seen through the validation methods. Validation helps in
writing a good quality SRS. We also discussed about reviews, structured analysis, etc. Next you must
learn about monitoring a project, scheduling a project ,etc. In my next lecture, I will be discussing yoursecond module, which covers project planning.
7) Exercise Questions
e. The set of activities that ensure that the software correctly implements a specific function is
i. Testing
b. Verification
c. Validation
d. None of these
ii) Set of activities that ensure that the software has been built is traceable to customer requirements is
a. Testing
b. Verification
Module-1 Prepared by Simi Joseph, Lecturer in
DCE
-
7/31/2019 se Module 1
34/34
RT 602 Software Engineering
34
c. Validation
d. None of these
iii) Data store is a
a. Passive Object
b. Active Object
c. Depends
d. None of the above
iv) Which among the following errors dominate in a software project
a. Omission
b. Ambiguity
c. Inconsistency
d. Cannot specify
8) Programming / Computational assignments
i) Develop a DFD for a banking system. Specify the dataflow, datastores, processes, inputs and outputs for
it.