Software Engineering: Art to Discipline Evolution
Software Engineering: Art to Discipline Evolution
Like gold, ornaments are taking decent shapes and become efficient. In the same way, Program
Writing has also become efficient in terms of Code reusability and efficiency but still, it is at
times, efficiency is not considered an important aspect.
SDLC Models
Software Development life cycle (SDLC) is a spiritual model used in project
management that defines the stages include in an information system development
project, from an initial feasibility study to the maintenance of the completed
application.
There are different software development life cycle models specify and design,
which are followed during the software development phase. These models are also
called "Software Development Process Models." Each process model follows a
series of phase unique to its type to ensure success in the step of software
development.
Linear ordering of activities has some significant consequences. First, to identify the
end of a phase and the beginning of the next, some certification techniques have to
be employed at the end of each step. Some verification and validation usually do this
mean that will ensure that the output of the stage is consistent with its input (which
is the output of the previous step), and that the output of the stage is consistent with
the overall requirements of the system.
RAD Model
RAD or Rapid Application Development process is an adoption of the waterfall
model; it targets developing software in a short period. The RAD model is based on
the concept that a better system can be developed in lesser time by using focus
groups to gather system requirements.
o Business Modeling
o Data Modeling
o Process Modeling
o Application Generation
o Testing and Turnover
Spiral Model
The spiral model is a risk-driven process model. This SDLC model helps the group
to adopt elements of one or more process models like a waterfall, incremental,
waterfall, etc. The spiral technique is a combination of rapid prototyping and
concurrency in design and development activities.
Each cycle in the spiral begins with the identification of objectives for that cycle, the
different alternatives that are possible for achieving the goals, and the constraints
that exist. This is the first quadrant of the cycle (upper-left quadrant).
The next step in the cycle is to evaluate these different alternatives based on the
objectives and constraints. The focus of evaluation in this step is based on the risk
perception for the project.
The next step is to develop strategies that solve uncertainties and risks. This step
may involve activities such as benchmarking, simulation, and prototyping.
V-Model
In this type of SDLC model testing and the development, the step is planned in
parallel. So, there are verification phases on the side and the validation phase on the
other side. V-Model joins by Coding phase.
Incremental Model
The incremental model is not a separate model. It is necessarily a series of waterfall
cycles. The requirements are divided into groups at the start of the project. For each
group, the SDLC model is followed to develop software. The SDLC process is
repeated, with each release adding more functionality until all requirements are met.
In this method, each cycle act as the maintenance phase for the previous software
release. Modification to the incremental model allows development cycles to
overlap. After that subsequent cycle may begin before the previous cycle is
complete.
Agile Model
Agile methodology is a practice which promotes continues interaction of
development and testing during the SDLC process of any project. In the Agile
method, the entire project is divided into small incremental builds. All of these builds
are provided in iterations, and each iteration lasts from one to three weeks.
Any agile software phase is characterized in a manner that addresses several key
assumptions about the bulk of software projects:
Iterative Model
It is a particular implementation of a software development life cycle that focuses
on an initial, simplified implementation, which then progressively gains more
complexity and a broader feature set until the final system is complete. In short,
iterative development is a way of breaking down the software development of a large
application into smaller pieces.
Big bang model
Big bang model is focusing on all types of resources in software development and
coding, with no or very little planning. The requirements are understood and
implemented when they come.
This model works best for small projects with smaller size development team which
are working together. It is also useful for academic software development projects.
It is an ideal model where requirements are either unknown or final release date is
not given.
Prototype Model
The prototyping model starts with the requirements gathering. The developer and
the user meet and define the purpose of the software, identify the needs, etc.
A 'quick design' is then created. This design focuses on those aspects of the software
that will be visible to the user. It then leads to the development of a prototype. The
customer then checks the prototype, and any modifications or changes that are
needed are made to the prototype. Looping takes place in this step, and better
versions of the prototype are created. These are continuously shown to the user so
that any new changes can be updated in the prototype. This process continue until
the customer is satisfied with the system. Once a user is satisfied, the prototype is
converted to the actual system with all considerations for quality and security.
Waterfall model
Winston Royce introduced the Waterfall Model in [Link] model has five phases:
Requirements analysis and specification, design, implementation, and unit testing,
integration and system testing, and operation and maintenance. The steps always
follow in this order and do not overlap. The developer must complete every phase
before the next phase begins. This model is named "Waterfall Model", because its
diagrammatic representation resembles a cascade of waterfalls.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS
into a suitable form which permits further coding in a programming language. It
defines the overall software architecture together with high level and detailed design.
All this work is documented as a Software Design Document (SDD).
During testing, the code is thoroughly examined and modified. Small modules are
tested in isolation initially. After that these modules are tested by writing some
overhead code to check the interaction between these modules and the flow of
intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of
the end product is determined by the effectiveness of the testing carried out. The
better output will lead to satisfied customers, lower maintenance costs, and accurate
results. Unit testing determines the efficiency of individual modules. However, in
this phase, the modules are tested for their interactions with each other and with the
system.
Some Circumstances where the use of the Waterfall model is most suited are:
o This model is simple to implement also the number of resources that are
required for it is minimal.
o The requirements are simple and explicitly declared; they remain unchanged
during the entire project development.
o The start and end points for each phase is fixed, which makes it easy to cover
progress.
o The release date for the complete product, as well as its final cost, can be
determined before development.
o It gives easy to control and clarity for the customer due to a strict reporting
system.
o In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
o This model cannot accept the changes in requirements during development.
o It becomes tough to go back to the phase. For example, if the application has
now shifted to the coding phase, and there is a change in requirement, It
becomes tough to go back and change it.
o Since the testing done at a later stage, it does not allow identifying the
challenges and risks in the earlier phase, so the risk reduction strategy is
difficult to prepare.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities, low
reliability, and inefficient performance as compared to actual software. In many
instances, the client only has a general view of what is expected from the software
product. In such a scenario where there is an absence of detailed information
regarding the input to the system, the processing needs, and the output requirement,
the prototyping model may be employed.
Steps of Prototype Model
Evolutionary process model resembles the iterative enhancement model. The same
phases are defined for the waterfall model occurs here in a cyclical fashion. This
model differs from the iterative enhancement model in the sense that this does not
require a useful product at the end of each cycle. In evolutionary development,
requirements are implemented by category rather than by priority.
For example, in a simple database application, one cycle might implement the
graphical user Interface (GUI), another file manipulation, another queries and
another updates. All four cycles must complete before there is a working product
available. GUI allows the users to interact with the system, file manipulation allow
the data to be saved and retrieved, queries allow user to get out of the system, and
updates allows users to put data into the system.
Evolutionary Model
The evolutionary model is a combination of the Iterative and Incremental
models of the software development life cycle. Delivering your system in a big
bang release, delivering it in incremental process over time is the action done in
this model. Some initial requirements and architecture envisioning need to be done.
It is better for software products that have their feature sets redefined during
development because of user feedback and other factors.
Objective setting: Each cycle in the spiral starts with the identification of purpose for that
cycle, the various alternatives that are possible for achieving the targets, and the
constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is
located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans
are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance or
user-interface risks are treated more essential than the program development risks, the
next phase may be an evolutionary development that includes developing a more detailed
prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is completed
by a review that includes all the products developed during that cycle, including plans for
the next cycle. The spiral model works for development as well as enhancement projects.
Advantages
Disadvantages
Feasibility Study
A feasibility study analyzes the viability of a proposed project or venture. It is used to evaluate a
project's potential, including the technical, financial, and economic aspects, and to determine
whether it should proceed. A feasibility study aims to identify and assess a proposed project's
strengths, weaknesses, opportunities, and threats to determine its potential for success.
It's important to note that feasibility studies are not always required for all projects, but they are
particularly useful for larger, more complex projects that require significant investment. A simple
cost-benefit analysis may be sufficient for smaller or less complex projects. Additionally,
feasibility studies are often used to secure funding from investors, banks, or other sources, as they
provide a detailed analysis of the project's potential for success. In short, a feasibility study is a
tool that helps to evaluate the potential of a proposed project or venture by analyzing the technical,
financial, and economic aspects.
The market domain assesses the demand for the proposed product or service, competition, and
potential customers. This includes research on the market size, growth, trends, and segmentation,
as well as analyzing the target market and their needs, preferences and buying habits. The market
research also includes a competitive analysis, which provides information on the competitors, their
market share, strengths and weaknesses, and how the proposed project or venture will compare
and compete in the market. The technical domain evaluates the technical aspects of the project,
such as the design and production methods, and determines whether the project is technically
feasible. This includes a detailed engineering and design analysis and a review of the equipment,
materials, and technology required for the project. It also includes an assessment of the project's
scalability and adaptability and an analysis of the feasibility of any new or innovative technologies
that may be required.
The financial domain assesses the project's financial viability, including the costs and revenues,
and determines whether the project is financially feasible. This includes a detailed financial
analysis, such as a cost-benefit analysis, a break-even analysis, and a cash flow analysis. It also
includes an assessment of the project's funding requirements, including the funding sources and
the terms and conditions of any financing arrangements. The financial analysis also includes an
assessment of the project's Return on Investment (ROI) and Net Present Value (NPV). The
organizational domain assesses the project's feasibility, including the project's human resources,
management, and administrative aspects. This includes an analysis of the project's organizational
structure, roles, and responsibilities and an assessment of the project's management and
administrative systems.
Benefits of Feasibility
o Feasibility studies provide several advantages, including aiding project directors in
understanding the benefits and drawbacks of performing work before investing significant
time and money into it.
o Feasibility studies may also provide critical information to an organization's management
team, preventing them from embarking on a risky project.
o Such studies help firms decide how they will grow. They will learn how they will function,
what potential roadblocks exist, who their competitors are, and what the market is like.
Feasibility studies can aid in convincing financial backers and brokers that investing in a
given project or firm is a sensible move.
o Conduct a preliminary evaluation, which involves gathering feedback on the new proposal
from appropriate partners.
o To guarantee that the information obtained in the early stages of the study is robust, break
it down and pose questions about it.
o Conduct market research or statistical survey to identify market interest and opportunities
for pursuing the activity or business.
o Create a traditional, functional, or field-tested approach that determines how much labour
is necessary, how much it will cost, and how long it will take.
o Create a predicted pay announcement that includes income, working expenditures, and
benefits.
o Create an accounting report for the first day of the season.
o Recognize barriers and potential vulnerabilities and how to deal with them.
o Make a fundamental "go" or "off limits" decision regarding moving forward with the
arrangement.
Recommended Components
The real work begins once the reasonable underlying degree of effort has been completed. Parts of
a feasibility study that are commonly encountered include the following:
o Outline of the Leader: Create a tale that depicts the nuances of the project, item,
administration, plan, or business.
o Thoughts on Mechanics: What will it take? How much will it cost? Have you got it?
Could you ever acquire it if you didn't have it?
o Existing Commercial Centre: Look for the item, administration, strategy, or firm in
adjacent and larger business sectors.
o Advertising Technique: Extensively depict it.
o Personnel Required: What are the human resource requirements for this project? Make a
hierarchical graph.
o Timetable and Sequence of Events: Include large interval markers for the project's
completion date.
In the preliminary investigation, school officials considered several options, weighing the benefits
and costs of expanding and renovating the science building. Some school officials were concerned
about the project, particularly the cost and potential community opposition. The new scientific
building would be far larger, and the local area board had already rejected a related proposal. The
feasibility study must address these concerns and potential legal or drafting issues.
The feasibility study also looked at the mechanical needs of the new scientific office, the benefits
to students, and the school's long-term suitability. An updated scientific office would broaden the
school's logical investigation capacities, work on its teaching programme, and attract new students.
Monetary forecasts demonstrated the cost and scope of the project, as well as how the school
expected to obtain the necessary assets, which included appealing to financial backers and
leveraging the institution's approval. The predictions also demonstrated how the expanded office
would enable more understudies to enrol in science programmes, increasing money from
educational costs and expenses.
The feasibility analysis demonstrated that moving forward with the scientific building's
refurbishment and expansion plans was reasonable. The school's administrators would never have
been able to determine if their extension plans were feasible without conducting a feasibility
assessment.
An administrative framework for future direction was shown in the initial inquiry. The evaluation
involved talking to experts and partners to determine the optimal administrative system, assessing
administrative designs, and learning from already completed fast rail projects in North America.
As a result, managing and organizing components were developed to oversee and carry out the
project, assuming the state assembly would approve it.
An important commitment strategy includes an objective technique with the general public,
selected authorities, government agencies, corporate visionaries, promotion events, and local
networks. The commitment plan was designed to be flexible, considering the scope, size, and
number of cities and towns that seemed to be involved. A group of leadership council members
was established, and they gathered to discuss policies, provide examples from previous jobs, and
consult with experts to create a system.
The financial portion of the feasibility focus outlined the task's funding process, which also looked
into obtaining assets from state, federal, and private ventures. The estimated cost of the enterprise
ranged from $24 billion to $42 billion. It was estimated that the high-speed rail framework would
generate between $160 million and $250 million in revenue.
The study divided the financing and subsidizing sources of money. The term "funding" refers to
government-issued securities, loans from financial institutions, and value speculations, which are
advances against future revenue that must be repaid with interest. The term "subsidizing" was used
to refer to grants, distributions from the local or state government, and revenue.
As the task advanced, different areas would need different amounts of cash. The majority of the
subsidizing would come from the public authority in the early stages, and as the initiative
developed, money and promises from the private sector would take over. Microsoft Inc. was one
of the project's secret donors, contributing more than $570,000.
The benefits outlined in the achievability report indicate that the region will see improved
interconnectivity, taking better population management and boosting regional monetary
development by $355 billion into consideration. The improved transportation system would allow
them access to better jobs and more affordable housing. The quick rail system also frees up areas
where car traffic is backed up.
The review's timeline began in 2016 when an agreement was made with English Columbia to work
together on another innovation hall that would feature high-speed rail transit. The Washington
State Land Council received the potential report in December 2020.
The real examination may begin if everything is okay. This involves presenting the original ideas,
focusing on the commercial area, displaying the advertising strategy, and highlighting the crucial
human resources, project timeline, and financial requirements.
Functional Requirements
Functional requirements define a function that a system or system element must be qualified to
perform and must be documented in different forms. The functional requirements describe the
behavior of the system as it correlates to the system's functionality.
There are a number of ways to prepare functional requirements. The most common way is that
they are documented in the text form. Other formats of preparing the functional requirements are
use cases, models, prototypes, user stories, and diagrams.
Non-functional requirements
Non-functional requirements are not related to the software's functional aspect. They can be the
necessities that specify the criteria that can be used to decide the operation instead of specific
behaviors of the system. Basic non-functional requirements are - usability, reliability, security,
storage, cost, flexibility, configuration, performance, legal or regulatory requirements, etc.
Execution qualities like security and usability, which are observable at run time.
Evolution qualities like testability, maintainability, extensibility, and scalability that embodied in
the static structure of the software system.
Non-functional requirements specify the software's quality attribute. These requirements define
the general characteristics, behavior of the system, and features that affect the experience of the
user. They ensure a better user experience, minimizes the cost factor. Non-functional requirements
ensure that the software system must follow the legal and adherence rules. The impact of the non-
functional requirements is not on the functionality of the system, but they impact how it will
perform. For a well-performing product, atleast some of the non-functional requirements should
be met.
Functional requirements help to understand the functions of They help to understand the system's
the system. performance.
They describe what the product does. They describe the working of product.
It helps us to verify the software's functionality. It helps us to verify the software's performance.
These requirements are specified by the user. These requirements are specified by the
software developers, architects, and technical
persons.
There is functional testing such as API testing, system, There is non-functional testing such as
integration, etc. usability, performance, stress, security, etc.
These requirements are important to system operation. These are not always the important
requirements, they may be desirable.
Completion of Functional requirements allows the system While system will not work only with non-
to perform, irrespective of meeting the non-functional functional requirements.
requirements.
Requirement Gathering
The following are some of the well-known requirements gathering techniques −
Brainstorming
Brainstorming is used in requirement gathering to get as many ideas as possible from group of people.
Generally used to identify possible solutions to problems, and clarify details of opportunities.
Document Analysis
Reviewing the documentation of an existing system can help when creating AS–IS process document,
as well as driving gap analysis for scoping of migration projects. In an ideal world, we would even be
reviewing the requirements that drove creation of the existing system – a starting point for documenting
current requirements. Nuggets of information are often buried in existing documents that help us ask
questions as part of validating requirement completeness.
Focus Group
A focus group is a gathering of people who are representative of the users or customers of a product to
get feedback. The feedback can be gathered about needs/opportunities/ problems to identify
requirements, or can be gathered to validate and refine already elicited requirements. This form of
market research is distinct from brainstorming in that it is a managed process with specific participants.
Interface analysis
Interfaces for a software product can be human or machine. Integration with external systems and
devices is just another interface. User centric design approaches are very effective at making sure that
we create usable software. Interface analysis – reviewing the touch points with other external systems
is important to make sure we don’t overlook requirements that aren’t immediately visible to users.
Interview
Interviews of stakeholders and users are critical to creating the great software. Without understanding
the goals and expectations of the users and stakeholders, we are very unlikely to satisfy them. We also
have to recognize the perspective of each interviewee, so that, we can properly weigh and address their
inputs. Listening is the skill that helps a great analyst to get more value from an interview than an
average analyst.
Observation
By observing users, an analyst can identify a process flow, steps, pain points and opportunities for
improvement. Observations can be passive or active (asking questions while observing). Passive
observation is better for getting feedback on a prototype (to refine requirements), where active
observation is more effective at getting an understanding of an existing business process. Either
approach can be used.
Prototyping
Prototyping is a relatively modern technique for gathering requirements. In this approach, you gather
preliminary requirements that you use to build an initial version of the solution - a prototype. You show
this to the client, who then gives you additional requirements. You change the application and cycle
around with the client again. This repetitive process continues until the product meets the critical mass
of business needs or for an agreed number of iterations.
Requirement Workshops
Workshops can be very effective for gathering requirements. More structured than a brainstorming
session, involved parties collaborate to document requirements. One way to capture the collaboration
is with creation of domain-model artifacts (like static diagrams, activity diagrams). A workshop will
be more effective with two analysts than with one.
Reverse Engineering
When a migration project does not have access to sufficient documentation of the existing system,
reverse engineering will identify what the system does. It will not identify what the system should do,
and will not identify when the system does the wrong thing.
Survey/Questionnaire
When collecting information from many people – too many to interview with budget and time
constraints – a survey or questionnaire can be used. The survey can force users to select from choices,
rate something (“Agree Strongly, agree…”), or have open ended questions allowing free-form
responses. Survey design is hard – questions can bias the respondents.
Requirements Analysis
Requirement analysis is significant and essential activity after elicitation. We analyze, refine, and
scrutinize the gathered requirements to make consistent and unambiguous requirements. This
activity reviews all requirements and may provide a graphical view of the entire system. After the
completion of the analysis, it is expected that the understandability of the project may improve
significantly. Here, we may also use the interaction with the customer to clarify points of confusion
and to understand which requirements are more important than others.
(ii) Development of a Prototype (optional): One effective way to find out what the customer
wants is to construct a prototype, something that looks and preferably acts as part of the system
they say they want.
We can use their feedback to modify the prototype until the customer is satisfied continuously.
Hence, the prototype helps the client to visualize the proposed system and increase the
understanding of the requirements. When developers and users are not sure about some of the
elements, a prototype may help both the parties to take a final decision.
Some projects are developed for the general market. In such cases, the prototype should be shown
to some representative sample of the population of potential purchasers. Even though a person who
tries out a prototype may not buy the final system, but their feedback may allow us to make the
product more attractive to others.
The prototype should be built quickly and at a relatively low cost. Hence it will always have
limitations and would not be acceptable in the final system. This is an optional activity.
(iii) Model the requirements: This process usually consists of various graphical representations
of the functions, data entities, external entities, and the relationships between them. The graphical
view may help to find incorrect, inconsistent, missing, and superfluous requirements. Such models
include the Data Flow diagram, Entity-Relationship diagram, Data Dictionaries, State-transition
diagrams, etc.
(iv) Finalise the requirements: After modeling the requirements, we will have a better
understanding of the system behavior. The inconsistencies and ambiguities have been identified
and corrected. The flow of data amongst various modules has been analyzed. Elicitation and
analyze activities have provided better insight into the system. Now we finalize the analyzed
requirements, and the next step is to document these requirements in a prescribed format.
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.
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.
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 conflicts. 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.
(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 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.
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.
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.
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.
Concise: The SRS report should be concise and at the same time, unambiguous, consistent, and
complete. Verbose and irrelevant descriptions decrease readability and also increase error
possibilities.
Black-box view: It should only define what the system should do and refrain from stating how to
do these. This means that the SRS document should define the external behavior of the system and
not discuss the implementation issues. The SRS report should view the system to be developed as
a black box and should define the externally visible behavior of the system. For this reason, the
SRS report is also known as the black-box specification of a system.
Conceptual integrity: It should show conceptual integrity so that the reader can merely
understand it. Response to undesired events: It should characterize acceptable responses to
unwanted events. These are called system response to exceptional conditions.
Verifiable: All requirements of the system, as documented in the SRS document, should be
correct. This means that it should be possible to decide whether or not requirements have been
met in an implementation.