0% found this document useful (0 votes)
4 views

Software Engineering Unit (2)

Uploaded by

babam10234
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Software Engineering Unit (2)

Uploaded by

babam10234
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

Course Code: 2040237201

Course Name: Software


Engineering
SEMESTER: 3

UNIT NO. 01
INTRODUCTION TO SOFTWARE

TOPICS TO BE COVERED

• Software
• Types of software
• The Evolving Role of Software
• Characteristics of software
• Attributes of software
• Layered approach of software engineering
• Software development life cycle (SDLC)
• Phases of life cycle
• Software requirement analysis and specifications (SRS)

By Asst. Prof. Mitul Ghediya Page | 1


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Software, what is a Software?

• Software is a collection of instructions, data, or computer programs that are used to run
machines and carry out particular activities. It is the antithesis of hardware, which refers
to a computer’s external components. A device’s running programs, scripts, and
applications are collectively referred to as “software” in this context.

• In a computer system, the software is basically a set of instructions or commands that


tell a computer what to do. In other words, the software is a computer program that
provides a set of instructions to execute a user’s commands and tell the computer what
to do. For example, like MS-Word, MS-Excel, PowerPoint, etc.

• Instructions (computer programs) that when executed provide desired features,


function, and performance

• Data structures that enable the programs to adequately manipulate information and
documentation that describes the operation and use of the programs.

• Software is developed or engineered; it is not manufactured in the classical sense.

• Software doesn't "wear out.“

• Although the industry is moving toward component-based construction, most software


continues to be custom-built.

By Asst. Prof. Mitul Ghediya Page | 2


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Types of software
Now we will briefly describe each type and its subtypes:

1. System Software 2. Application Software


1.1 Operating System 2.1 General Purpose Software
1.3 Language Processor 2.2 Customize Software
1.3 Device Driver 2.3 Utility Software

1. System Software: Definition

• System software that directly operates the computer hardware and provides the basic
functionality to the users as well as to the other software to operate smoothly. Or in
other words, system software basically controls a computer’s internal functioning and
also controls hardware devices such as monitors, printers, and storage devices, etc. It is
like an interface between hardware and user applications, it helps them to communicate
with each other because hardware understands machine language (i.e. 1 or 0) whereas
user applications are work in human-readable languages like English, Hindi, German,
etc. so system software converts the human-readable language into machine language
and vice versa.

1.1 Operating System

• It is the main program of a computer system. When the computer system ON it is the
first software that loads into the computer’s memory. Basically, it manages all the
resources such as computer memory, CPU, printer, hard disk, etc., and provides an
interface to the user, which helps the user to interact with the computer system. It also
provides various services to another computer software. Examples of operating systems
are Linux, Apple macOS, Microsoft Windows, etc.

1.2 Language Processor:

• As we know that system software converts the human-readable language into a machine
language and vice versa. So, the conversion is done by the language processor. It
converts programs written in high-level programming languages like Java, C, C++,
Python, etc.(known as source code), into sets of instructions that are easily readable by
machines(known as object code or machine code).

By Asst. Prof. Mitul Ghediya Page | 3


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

1.3 Device Driver:

• A device driver is a program or software that controls a device and helps that device to
perform its functions. Every device like a printer, mouse, modem, etc. needs a driver to
connect with the computer system eternally. So, when you connect a new device with
your computer system, first you need to install the driver of that device so that your
operating system knows how to control or manage that device.

Features of System Software

• System Software is closer to the computer system.

• System Software is written in a low-level language in general.

• System software is difficult to design and understand.

• System software is fast in speed(working speed).

• System software is less interactive for the users in comparison to application software.

2. Application Software : Definition

• Application Software that performs special functions or provides functions that are
much more than the basic operation of the computer is known as application software.
Or in other words, application software is designed to perform a specific task for end-
users. It is a product or a program that is designed only to fulfill end-user’s
requirements. It includes word processors, spreadsheets, database management,
inventory, payroll programs, etc.

2.1 General Purpose Software:

• This type of application software is used for a variety of tasks and it is not limited to
performing a specific task only. For example, MS-Word, MS-Excel, PowerPoint, etc.

2.2 Customized Software:

• This type of application software is used or designed to perform specific tasks or


functions or designed for specific organizations. For example, railway reservation
system, airline reservation system, invoice management system, etc.

By Asst. Prof. Mitul Ghediya Page | 4


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

2.3 Utility Software:

• This type of application software is used to support the computer infrastructure. It is


designed to analyze, configure, optimize and maintains the system, and take care of its
requirements as well. For example, antivirus, disk fragmenter, memory tester, disk
repair, disk cleaners, registry cleaners, disk space analyzer, etc.

Features of Application Software

• An important feature of application software is it performs more specialized tasks like


word processing, spreadsheets, email, etc.

• Mostly, the size of the software is big, so it requires more storage space.

• Application software is more interactive for the users, so it is easy to use and design.

• The application software is easy to design and understand.

• Application software is written in a high-level language in general.

Difference Between System Software and Application Software

Sr No. System Software Application Software


1 It is designed to manage the resources It is designed to fulfil the requirements of
of the computer system, like memory the user for performing specific tasks.
and process management, etc.
2 Written in a low-level language. Written in a high-level language.
3 Less interactive for the users. More interactive for the users.
4 System software plays vital role for Application software is not so important
the effective functioning of a system. for the functioning of the system, as it is
task specific.
5 It is independent of the application It needs system software to run
software to run.

By Asst. Prof. Mitul Ghediya Page | 5


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ The Evolving Role of Software

• Today, software takes on a dual role. It is a product and, at the same time, the vehicle
for delivering a product. As a product, it delivers the computing potential embodied by
computer hardware or, more broadly, a network of computers that are accessible by
local hardware.

• Whether it resides within a cellular phone or operates inside a mainframe computer,


software is an information transformer—producing, managing, acquiring, modifying,
displaying, or transmitting information that can be as simple as a single bit or as
complex as a multimedia presentation

• As the vehicle used to deliver the product, software acts as the basis for the control of
the computer (operating systems), the communication of information (networks), and
the creation and control of other programs (software tools and environments).

• Software delivers the most important product of our time—information. Software


transforms personal data (e.g., an individual’s financial transactions) so that the data
can be more useful in a local context; it manages business information to enhance
competitiveness; it provides a gateway to worldwide information networks (e.g.,
Internet) and provides the means for acquiring information in all of its forms.

By Asst. Prof. Mitul Ghediya Page | 6


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Characteristics of software

• The following are the top 8 characteristics of software. You have to prioritize these
system quality attributes based on your project needs.

1. Software does not wear out


2. Software is not manufacture
3. Usability of Software
4. Reusability of components
5. Flexibility of software
6. Maintainability of software
7. Portability of software
8. Reliability of Software

1. Software does not wear out:

• Different things like clothes, shoes, ornaments do wear out after some time. But,
software once created never wears out. It can be used for as long as needed and in case
of need for any updating, required changes can be made in the same software and then
it can be used further with updated features.

2. Software is not manufactured:

• Software is not manufactured but is developed. So, it does not require any raw material
for its development.

3. Usability of Software:

• The usability of the software is the simplicity of the software in terms of the user. The
easier the software is to use for the user, the more is the usability of the software as a
greater number of people will now be able to use it and also due to the ease will use it
more willingly.

By Asst. Prof. Mitul Ghediya Page | 7


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

4. Reusability of components:

• As the software never wears out, neither do its components, i.e. code segments. So, if
any particular segment of code is required in some other software, we can reuse the
existing code form the software in which it is already present. This reduced our work
and also saves time and money.

5. Flexibility of software:

• A software is flexible. What this means is that we can make necessary changes in our
software in the future according to the need of that time and then can use the same
software then also.

6. Maintainability of software:

• Every software is maintainable. This means that if any errors or bugs appear in the
software, then they can be fixed.

7. Portability of software:

• Portability of the software means that we can transfer our software from one platform
to another that too with ease. Due to this, the sharing of the software among the
developers and other members can be done flexibly.

8. Reliability of Software:

• This is the ability of the software to provide the desired functionalities under every
condition. This means that our software should work properly in each condition.

By Asst. Prof. Mitul Ghediya Page | 8


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Attributes of software

1. Usability
2. Reliability
3. Availability
4. Portability
5. Testability
6. Scalability
7. Flexibility
8. Reusability

1. Usability:

• It is described as how the user is utilizing a system effectively and the ease of which
users can learn to operate or control the system. The well-known principle of usability
is KISS (Keep It Simple Stupid). Software applications should be user-friendly.

2. Reliability:

• It is the ability of a system to continue to keep operating over time

3. Availability:

• It is the ratio of the available system time to the total working time it is required or
expected to function.

4. Portability:

• It is the ability of a software application to run on numerous platforms such as data


portability, hosting, viewing, etc.,

5. Testability:

• It shows how well the system or component facilitates to perform tests to determine
whether the predefined test criteria have been met.

By Asst. Prof. Mitul Ghediya Page | 9


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

6. Scalability:

• It is the ability of a system to handle the demand for stress caused by increased usage
without decreasing performance.

7. Flexibility:

• It is the ability of a system to adapt to future changes

8. Reusability:

• It is the use of existing software I more than one software with small or no change. It is
a cost-efficient and time-saving quality attribute.

By Asst. Prof. Mitul Ghediya Page | 10


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Layered approach of software engineering

• Software engineering is the application of principles used in the field of engineering,


which usually deals with physical systems, to the design, development, testing,
deployment and management of systems.

• The field of software engineering applies the disciplined, structured approach to


programming that is used in engineering to software development with the stated goal
of improving the quality, time and budget efficiency. Software engineering is typically
used for large and intricate software systems rather than single applications or
programs. Development, however, is simply one phase of the process. While a software
engineer is typically responsible for the design of systems, programmers are responsible
for coding its implementation.

• Software engineering involves a number of fields that cover the process of engineering
software and certification including: requirements gathering, software design, software
construction, software maintenance, software configuration management, software
engineering management, software development process management and creation,
software engineering models and methods, software quality, software engineering
professional practices as well as foundational computing and mathematical and
engineering study.

A Layered Technology Divided into 4 layers

By Asst. Prof. Mitul Ghediya Page | 11


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

1. A quality focus:

• It defines the continuous process improvement principles of software. It provides


integrity that means providing security to the software so that data can be accessed by
only an authorized person, no outsider can access the data. It also focuses on
maintainability and usability.

• Any engineering approach must rest on a quality. The "Bed Rock" that supports
software Engineering is Quality.

2. Process:

• It is the foundation or base layer of software engineering. It is key that binds all the
layers together which enables the development of software before the deadline or on
time. Process defines a framework that must be established for the effective delivery
of software engineering technology. The software process covers all the activities,
actions, and tasks required to be carried out for software development.

3. Method:

• During the process of software development, the answers to all “how-to-do” questions
are given by method. It has the information of all the tasks which includes
communication, requirement analysis, design modeling, program construction, testing,
and support.

4. Tools:

• Software engineering tools provide a self-operating system for processes and methods.
Tools are integrated which means information created by one tool can be used by
another.

By Asst. Prof. Mitul Ghediya Page | 12


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Software development life cycle (SDLC)

What is SDLC?

• Software development life cycle (SDLC) is a structured process that is used to design,
develop, and test good-quality software. SDLC, or software development life cycle, is
a methodology that defines the entire procedure of software development step-by-step.

• Building great software is a big challenge, and development teams rely on the software
development lifecycle (SDLC) to help them succeed. By providing a structured
approach to software development, an effective SDLC helps teams:

o Clarify and understand stakeholder requirements.

o Estimate project costs and timeframes.

o Identify and minimize risks early in the process.

o Measure progress and keep projects on track.

o Enhance transparency and improve client relations.

o Control costs and accelerate time to market.

• The software development lifecycle (SDLC) is a step-by-step process that helps


development teams efficiently build the highest quality software at the lowest cost.
Teams follow the SDLC to help them plan, analyze, design, test, deploy, and maintain
software. The SDLC also helps teams ensure that the software meets stakeholder
requirements and adheres to their organization’s standards for quality, security, and
compliance.

• A software life cycle model describes entry and exit criteria for each phase. A phase
can begin only if its stage-entry criteria have been fulfilled. So, without a software life
cycle model, the entry and exit criteria for a stage cannot be recognized. Without
software life cycle models, it becomes tough for software project managers to monitor
the progress of the project.

• The goal of the SDLC life cycle model is to deliver high-quality, maintainable software
that meets the user’s requirements. SDLC in software engineering models outlines the
plan for each stage so that each stage of the software development model can perform

By Asst. Prof. Mitul Ghediya Page | 13


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

its task efficiently to deliver the software at a low cost within a given time frame that
meets user’s requirements.

By Asst. Prof. Mitul Ghediya Page | 14


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Phases of life cycle

• The SDLC includes different phases/stages, and each phase/stage has a specific process
and deliverables. Although SDLC meaning might vary for each development team, the
most common phases include:

1. Requirements gathering and analysis


2. Defining Requirements
3. System design
4. Coding
5. Testing
6. Deployment
7. Maintenance and support

By Asst. Prof. Mitul Ghediya Page | 15


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

1. Requirements gathering and analysis:

• Requirement Analysis is the most important and necessary stage in SDLC.

• Accurate, complete, and measurable user requirements are the foundation for any
successful SDLC project—to ensure that the software meets user expectations and to
avoid costly rework and project delays.

• The IT business analyst, the senior members of the team perform it with inputs from all
the stakeholders and domain experts or SMEs in the industry.

• Planning for the quality assurance requirements and identifications of the risks
associated with the projects is also done at this stage.

• Gathers requirements by conducting interviews, holding workshops or surveys or


questionnaires, and observing how stakeholders work.

• Evaluates the requirements as they relate to system feasibility, and software design and
testing.

• Models the requirements and records them in document, such as user story, software
requirements specification, use case, specification.

2. Defining Requirements:

• Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project
stakeholders

• This is accomplished through "SRS"- Software Requirement Specification document


which contains all the product requirements to be constructed and developed during the
project life cycle.

3. System design:

• Effective system design properly accounts for all documented requirements. In this
phase, software architects use tools to visualize information about the application’s
behavior and structure, including:

By Asst. Prof. Mitul Ghediya Page | 16


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

o The unified modeling language (UML) to illustrate the software’s architectural


blueprints in a diagram.

o Data flow diagrams to visualize system requirements.

o Decision trees and decision tables to help explain complex relationships.

o Simulations to predict how the software will perform

4. Coding

• In this phase of SDLC, the actual development begins, and the programming is built.
The implementation of design begins concerning writing code. Developers have to
follow the coding guidelines described by their management and programming tools
like compilers, interpreters, debuggers, etc. are used to develop and implement the code.

• In the coding phase, developers translate the system design specifications into actual
code. It’s critical that developers follow best practices for writing clean, maintainable,
and efficient code, including:

o Writing code that’s easy to understand and read.

o Using comments to explain what the code does.

o Using version control to track any changes to the codebase.

o Refactoring the code if needed.

o Conducting a code review when coding is completed to get a second opinion on


the code.

o Providing code documentation that explains how the code works.

5. Testing

• Before it’s released to production, the software is thoroughly tested for defects and
errors.

By Asst. Prof. Mitul Ghediya Page | 17


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

• After the code is generated, it is tested against the requirements to make sure that the
products are solving the needs addressed and gathered during the requirements stage.

• The software test plan provides critical information about the testing process, strategy,
objectives, resources, tools, deliverables, and criteria

• Test case design establishes the criteria for determining if the software is working
correctly or not.

• Test execution is the process of running the test to identify any bugs or software
defects.

• Developers and quality assurance teams use automated testing tools to quickly test
software, prepare defect reports, and compare testing results with expected outcomes.
Automated testing saves time and money, provides immediate feedback, and helps
improve software quality. Automated testing can be used for:

o Unit testing: Developers test the individual software modules to validate that
each one is working correctly.

o Integration testing: Developers test how the different modules interact with
each other to verify that they work together correctly.

o System testing: Developers test the software to verify that it meets the
requirements and works correctly in the production environment.

o User acceptance testing: Stakeholders and users test the software to verify and
accept it before it’s deployed to production.

6. Deployment

• Once the software is certified, no bugs, errors stated, then it is deployed.

• There are three main phases to deploying software in a production environment

o The development team commits the code to a software repository.

By Asst. Prof. Mitul Ghediya Page | 18


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

o The deployment automation tool triggers a series of tests.

o The software is deployed to production.

• There are three main phases to deploying software in a production environment

o The development team commits the code to a software repository.

o The deployment automation tool triggers a series of tests.

o The software is deployed to production and made available to users.

7. Maintenance and support

• After the software is deployed, the software maintenance life cycle begins. Software
requires ongoing maintenance to ensure that it operates at peak performance.
Developers periodically issue software patches to fix bugs in the software and resolve
any security issues.

• Once when the client starts using the developed systems, then the real issues come up
and requirements to be solved from time to time.

• Maintenance activities also include performance monitoring of both the software’s


technical performance and how users perceive its performance. Providing training and
documentation to users, along with addressing user issues and upgrading their systems

to make sure they’re compatible with the new software, are also key components of the
software maintenance life cycle.

By Asst. Prof. Mitul Ghediya Page | 19


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

❖ Software requirement analysis and specifications (SRS)

1. Software Requirement Analysis

2. Software Requirement Specification

1. Software Requirement Analysis

• Software requirement means requirement that is needed by software to increase quality


of software product. These requirements are generally a type of expectation of user
from software product that is important and need to be fulfilled by software. Analysis
means to examine something in an organized and specific manner to know complete
details about it.

• Therefore, Software requirement analysis simply means complete study, analyzing,


describing software requirements so that requirements that are genuine and needed can
be fulfilled to solve problem. There are several activities involved in analyzing
Software requirements. Some of them are given below :

By Asst. Prof. Mitul Ghediya Page | 20


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

Problem Recognition :

• The main aim of requirement analysis is to fully understand main objective of


requirement that includes why it is needed, does it add value to product, will it be
beneficial, does it increase quality of the project, does it will have any other effect. All
these points are fully recognized in problem recognition so that requirements that are
essential can be fulfilled to solve business problems.

Evaluation and Synthesis :

• Evaluation means judgement about something whether it is worth or not and synthesis
means to create or form something. Here are some tasks are given that is important in
the evaluation and synthesis of software requirement :

o To define all functions of software that necessary.

o To define all data objects that are present externally and are easily observable.

o To evaluate that flow of data is worth or not.

o To fully understand overall behavior of system that means overall working of


system.

o To identify and discover constraints that are designed.

o To define and establish character of system interface to fully understand how


system interacts with two or more components or with one another.

o Software requirement analysis and specifications (SRS)

Modeling :

• After complete gathering of information from above tasks, functional and behavioral
models are established after checking function and behavior of system using a domain
model that also known as the conceptual model.

Specification :

• The software requirement specification (SRS) which means to specify the requirement
whether it is functional or non-functional should be developed.

By Asst. Prof. Mitul Ghediya Page | 21


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

Review :

• After developing the SRS, it must be reviewed to check whether it can be improved or
not and must be refined to make it better and increase the quality.

2. Software Requirement Specification

• Software Requirement Specification (SRS) Format as the name suggests, is a complete


specification and description of requirements of the software that need to be fulfilled
for the successful development of the software system. These requirements can be
functional as well as non-functional depending upon the type of requirement. The
interaction between different customers and contractors is done because it is necessary
to fully understand the needs of customers.

• The SRS is a specification for a specific software product, program, or set of


applications that perform particular functions in a specific environment. It serves
several goals depending on who is writing it. First, the SRS could be written by the
client of a system. Second, the SRS could be written by a developer of the system. The
two methods create entirely various situations and establish different purposes for the
document altogether. The first case, SRS, is used to define the needs and expectation
of the users. The second case, SRS, is written for various purposes and serves as a
contract document between customer and developer.

By Asst. Prof. Mitul Ghediya Page | 22


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

1. Correctness
2. Completeness
3. Consistency
4. Unambiguousness
5. Ranking for importance and stability
6. Modifiability
7. Verifiability
8. Traceability
9. Design Independence
10. Testability
11. Understandable by the customer
12. The right level of abstraction

1. Correctness:

• User review is used to provide the accuracy of requirements stated in the SRS. SRS is
said to be perfect if it covers all the needs that are truly expected from the system.

2. Completeness:

• The SRS is complete if, and only if, it includes the following elements:

(1) All essential requirements, whether relating to functionality, performance, design,


constraints, attributes, or external interfaces.

(2) Definition of their responses of the software to all realizable classes of input data in
all available categories of situations.

(3) Full labels and references to all figures, tables, and diagrams in the SRS and
definitions of all terms and units of measure.

By Asst. Prof. Mitul Ghediya Page | 23


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

3. Consistency:

• The SRS is consistent if, and only if, no subset of individual requirements described in
its conflict. There are three types of possible conflict in the SRS:

(1) The specified characteristics of real-world objects may conflict. For example,

(a) The format of an output report may be described in one requirement as


tabular but in another as textual.

(b) One condition may state that all lights shall be green while another states
that all lights shall be blue. 3 Consistency:

(2) There may be a reasonable or temporal conflict between the two specified actions.
For example,

(a) One requirement may determine that the program will add two inputs, and
another may determine that the program will multiply them.

(b) One condition may state that "A" must always follow "B," while other
requires that "A and B" co-occurs.

(3) Two or more requirements may define the same real-world object but use different
terms for that object. For example,

(a) a program's request for user input may be called a "prompt" in one
requirement's and a "cue" in another. The use of standard terminology and
descriptions promotes consistency.

4. Unambiguousness:

• SRS is unambiguous when every fixed requirement has only one interpretation. This
suggests that each element is uniquely interpreted. In case there is a method used with
multiple definitions, the requirements report should determine the implications in the
SRS so that it is clear and simple to understand.

5. Ranking for importance and stability:

• The SRS is ranked for importance and stability if each requirement in it has an identifier
to indicate either the significance or stability of that particular requirement.

By Asst. Prof. Mitul Ghediya Page | 24


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

• Typically, all requirements are not equally important. Some prerequisites may be
essential, especially for life-critical applications, while others may be desirable. Each
element should be identified to make these differences clear and explicit. Another way
to rank requirements is to distinguish classes of items as essential, conditional, and
optional.

6. Modifiability:

• SRS should be made as modifiable as likely and should be capable of quickly obtain
changes to the system to some extent. Modifications should be perfectly indexed and
cross-referenced.

7. Verifiability:

• SRS is correct when the specified requirements can be verified with a cost-effective
system to check whether the final software meets those requirements. The requirements
are verified with the help of reviews.

8. Traceability:

• The SRS is traceable if the origin of each of the requirements is clear and if it facilitates
the referencing of each condition in future development or enhancement
documentation.

• There are two types of Traceability:

1. Backward Traceability: This depends upon each requirement explicitly


referencing its source in earlier documents.

2. Forward Traceability: This depends upon each element in the SRS having
a unique name or reference number.

• The forward traceability of the SRS is especially crucial when the software product
enters the operation and maintenance phase. As code and design document is modified,
it is necessary to be able to ascertain the complete set of requirements that may be
concerned by those modifications.

By Asst. Prof. Mitul Ghediya Page | 25


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

9. Design Independence:

• There should be an option to select from multiple design alternatives for the final
system. More specifically, the SRS should not contain any implementation details.

10. Testability:

• An SRS should be written in such a method that it is simple to generate test cases and
test plans from the report.

11. Understandable by the customer:

• An end user may be an expert in his/her explicit domain but might not be trained in
computer science. Hence, the purpose of formal notations and symbols should be
avoided too as much extent as possible. The language should be kept simple and clear.

12. The right level of abstraction:

• If the SRS is written for the requirements stage, the details should be explained
explicitly. Whereas, for a feasibility study, fewer analysis can be used. Hence, the level
of abstraction modifies according to the objective of the SRS.

Advantages of having a good Software Requirements Specification (SRS) document


include:

1. Improved communication and understanding between stakeholders and developers, as


the SRS clearly defines the requirements for the software system

2. Increased efficiency in the software development process, as a well-written SRS can


help to reduce the need for rework and change requests

3. Improved quality of the final software system, as a well-written SRS helps to ensure
that all requirements are met

4. Increased stakeholder satisfaction, as a well-written SRS helps to ensure that the


software system meets the needs of the business and its users

5. Improved traceability and verifiability, as a well-written SRS can be traced to other


documents and artifacts and its requirements can be tested and validated.

By Asst. Prof. Mitul Ghediya Page | 26


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

6. Clarity and Completeness: A good SRS document provides clear and complete
specifications for the software project, which ensures that all stakeholders have a
common understanding of the requirements and objectives.

7. Traceability: A good SRS document includes detailed requirements and specifications,


which enables traceability throughout the software development process.

8. Testability: A good SRS document can serve as a basis for test cases and verification,
which can ensure that the software meets the requirements and specifications.

9. Improved Communication: A good SRS document can serve as a communication tool


between different stakeholders, such as project managers, developers, testers, and
customers.

10. Reduced Rework: A good SRS document can help to identify and resolve issues early
in the development process, which can reduce the need for rework and improve the
overall quality of the software.

Disadvantages of having a poorly written SRS include:

1. Confusion and misunderstandings between stakeholders and developers, as the


requirements are not clearly defined or are vague Increased rework and change requests,
as the SRS does not accurately capture the requirements of the software system

2. Reduced quality of the final software system, as a poorly written SRS can result in
requirements being missed or not fully met

3. Reduced stakeholder satisfaction, as a poorly written SRS does not accurately capture
the needs of the business and its users

4. Reduced traceability and verifiability, as a poorly written SRS can’t be traced to other
documents and artifacts and its requirements can’t be tested and validated.

5. It is important to note that, regardless of the quality of the SRS, gathering and validating
requirements is an iterative process, that should be continuously reviewed and updated
throughout the software development process.

6. Time-consuming: Creating a good SRS document can be a time-consuming process,


especially for complex software projects, which can delay the development process.

7. Changes and Updates: Changes or updates to the SRS document can cause delays in
the software development process and can be difficult to manage.\

By Asst. Prof. Mitul Ghediya Page | 27


Course Code: 2040237201
Course Name: Software
Engineering
SEMESTER: 3

8. Lack of Flexibility: A detailed SRS document can restrict the flexibility of the
development process, which can be challenging for projects that require agile
development methodologies.

9. Limited Stakeholder Involvement: The process of creating an SRS document can limit
the involvement of stakeholders in the software development process, which can lead
to a lack of collaboration and input from different perspectives

By Asst. Prof. Mitul Ghediya Page | 28

You might also like