Software Requirement
Software Requirement
The software should deliver the required functionality and performance to the user
and should be maintainable, dependable and usable.
- Maintainability
Software must evolve to meet changing needs of the customers. This is a critical
attribute because software change is an inevitable consequence of a changing
business environment.
- Dependability
Software must be trustworthy. Dependability has a range of characteristics, including
reliability, security and safety. Dependable software should not cause physical or
economical damage in the event of system failure.
- Efficiency
It refers to the ability of the software to use system resources in the most effective
and efficient manner. Software should make effective use of storage space and
executive command as per desired timing requirement. Efficiency therefore includes
responsiveness, processing time, and memory utilization, etc.
- Usability
Software must be usable by the users for which it was designed, this means it
should have an appropriate user interface and adequate documentation.
- Functionality
It refers to the degree of performance of the software against its intended purpose.
- Reliability
A set of attributes that bear on capability of software to maintain its level of
performance under the given condition for a stated period of time.
- Portability
A set of attributes that bear on the ability of software to be transferred from one
environment to another, without or minimum changes.
- Robustness
It refers to the degree to which the software can keep on functioning in spite of being
provided with invalid data.
- Integrity
It refers to the degree to which Unauthorized Access to the software data can be
prevented.
What is software engineering?
At the first conference on software engineering in 1968, Fritz Bauer defined software
engineering as “The establishment and use of sound engineering principles in order
to obtain economically developed software that is reliable and works efficiently on
real machines”.
Stephen Schach defined the same as “A discipline whose aim is the production of
quality software, software that is delivered on time, within budget, and that satisfies
its requirements”.
Both the definitions are popular and acceptable to the majority. However, due to the
increase in cost of maintaining software, the objective is now shifting to produce
quality software that is maintainable, delivered on time, within budget, and also
satisfies its requirements.
1. Definition phase
- It focus on WHAT i.e. to identify what is to be processed
- What functions and performance are desired?
- What design constraints exist?
- What validation criteria are required to define a successful system?
- Identify the key requirements of the systems and the software?
- It performs three major tasks as:
- Information engineering
- Software project planning
- Requirement analysis
2. Development Phase
- It focuses on HOW i.e. to define how data are to be structured.
- How function is to be implemented within a software architecture?
- How procedural details are to be implemented?
- How are interfaces to be characterized?
- How the design will be translated into a programming language
- How will testing be performed?
- It performs three specific technical tasks as:
- Software design
- Code generation
- Software testing
3. Support Phase
- It focuses on change associated with error correction, adaptations required as the
software environment evolves, and changes due to enhancements brought by the
changing customer requirements.
- Four types of changes are encountered during the support phases:
- Correction: Use of corrective maintenance for any error encountered during
support.
- Adaptation: Use of adaptive maintenance to accommodate changes in the
external environment. Example: Change in the CPU, OS, Business rules, external
product characteristics)
- Enhancement: Use of perfective maintenance that extends the software beyond
its original functional requirements.
- Prevention: Use of preventive maintenance by conducting software re-engineering
to avoid software deterioration and to correct, adopt or enhance its features
Software Engineering in the 21st century faces three key challenges, i.e., Coping with
legacy systems, coping with increasing diversity and coping with demands for
reduced delivery times.
- Legacy systems: Old, valuable systems which hold the majority of larger software
systems in use must be maintained and updated.
- Heterogeneity: Systems are distributed and include a mix of hardware and
software. The challenge is developing techniques to build dependable software,
which is flexible enough to cope with heterogeneity.
- Delivery: There is increasing pressure for faster delivery of software unlike
time-consuming traditional software engineering techniques. The challenge is
shortening delivery times for large and complex systems without compromising
system quality.
Software Myths
- Software standards provide software engineers with all the guidance they need. The
reality is the standards may be outdated and rarely referred to.
- People with modern computers have all the software development tools they need.
The reality is that CASE tools are more important than hardware to producing high
quality software, yet they are rarely used effectively.
- Adding people is a good way to catch up when a project is behind schedule. The
reality is that adding people only helps the project schedule when it is done in a
planned, well-coordinated manner.
- Giving software projects to outside parties to develop solves software project
management problems. The reality is people who can't manage internal software
development problems will struggle to manage or control the external development
of software too.
- A general statement of objectives from the customer is all that is needed to begin a
software project. The reality is without constant communication between the
customer and the developers it is impossible to build a software product that meets
the customer's real needs.
- Project requirements change continually and change is easy to accommodate in
the software design. The reality is that every change has far-reaching and
unexpected consequences. Changes to software requirements must be managed
very carefully to keep a software project on time and under budget.
- Once a program is written, the software engineer's work is finished. The reality is
that maintaining a piece of software is never done, until the software product is
retired from service.
- There is no way to assess the quality of a piece of software until it is actually
running on some machine. The reality is that one of the most effective quality
assurance practices (formal technical reviews) can be applied to any software
design product and can serve as a quality filter very early in the product life cycle.
Software takes on a dual role. It is a product and the vehicle for delivering a product.
As a product, it delivers the computing potential embodied by computer hardware or,
a network of computers that are accessible by local hardware. Software is an
information transformer—producing, managing, acquiring, modifying, displaying, or
transmitting information. 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 (Internet)
and provides the means for acquiring information in all of its forms.
Summary
SRS is the medium through which the client and the user needs are accurately
specified.
Software requirement is the description and specifications of a system.
SRS is a document that completely describes WHAT the proposed system should do
without describing HOW the software will do it.
The basic goal of the requirement phase is to produce the SRS, which describes the
complete external behavior of the proposed software.
A high quality SRS is a prerequisite to high quality software.
A high quality SRS reduces the development cost.
The IEEE standard, the basic issues that the SRS writer(s) shall address are the
following:
- Functionality: What is the software supposed to do?
- External interfaces: How does the software interact with people, the system's
hardware, other hardware, and other software?
- Performance: What is the speed, availability, response time, recovery time of
various software functions, etc.?
- Attributes: What are the portability, correctness, maintainability, security, etc.
considerations?
- Design constraints imposed on an implementation: Are there any required
standards in effect, implementation language, policies for database integrity,
resource limits, operating environments, etc.?
Uses of SRS document
Requirement Engineering
It is the processes used to discover, analyze, and validate system requirements. The
processes used for RE vary widely depending on the application domain, the people
involved, and the organization developing the requirements. However, there are a
number of generic activities common to all processes can be described in six
distinct steps:
1. Requirements elicitation
2. Requirements analysis and negotiation
3. Requirements specification
4. System modeling
5. Requirements validation
6. Requirements management
4. **System Modeling**:
system representation that shows relationships among the system components
System modeling is the process of developing abstract models of a system, with
each model presenting a different view or perspective of that system.
System modeling has now come to mean representing a system using some kind of
graphical notation, which is now almost always based on notations in the Unified
Modeling Language (UML).
System molding helps the analyst to understand the functionality of the system and
models are used to communicate with customers.
Models are used during the requirements engineering process to help derive the
requirements for a system, during the design process to describe the system to
engineers implementing the system and after implementation to document the
system's structure and operation. You may develop models of both the existing
system and the system to be developed:
Models of the existing system are used during requirements engineering. They help
clarify what the existing system does and can be used as a basis for discussing its
strengths and weaknesses. These then lead to requirements for the new system.
Models of the new system are used during requirements engineering to help explain
the proposed requirements to other system stakeholders. Engineers use these
models to discuss design proposals and to document the system for
implementation.
6. Requirements management
• Requirements management is the process of managing changing requirements
during the requirements engineering process and system development.
• Requirements are inevitably incomplete and inconsistent
• New requirements emerge during the process as business needs change and a
better understanding of the system is developed
• Different viewpoints have different requirements and these are often contradictory
• Requirement change because:
• The priority of requirements from different viewpoints changes during the
development process
• System customers may specify requirements from a business perspective that
conflict with end-user requirements
• The business and technical environment of the system changes during its
development
• Principal stages consists of:
• Problem analysis: Discuss requirements problem and propose change
• Change analysis and costing: Assess effects of change on other requirements
• Change implementation: Modify requirements document and other documents to
reflect change
1. **Product requirements**: Specify how the delivered product must behave, e.g.,
execution speed, reliability.
- Subcategories include:
- Efficiency requirements
- Reliability requirements
- Usability requirements
- Performance requirements
- Space requirements
3. **External requirements**: Arise from external factors to the system and its
development process, e.g., interoperability, legislative requirements.
- Subcategories include:
- Interoperability requirements
- Ethical requirements
- Privacy requirements
- Safety requirements
- Legislative requirements
Requirements describe What not How
Requirements describe **What** the system will do without detailing **How** it will
be done, producing a large document written in natural language that contains a
description of the system's functionality.
This figure presents a Venn diagram that illustrates the overlapping areas among
System Engineering, Software Requirements Analysis, and Software Design. It
visually represents the integral connections between these aspects of software
development:
- **System Engineering** encompasses a broader scope that includes both
requirements and design but also factors beyond the software itself.
- **Software Requirements Analysis** is situated between understanding the
system's needs and translating them into software-specific terms.
- **Software Design** focuses on conceiving the system structure and behavior but
is informed by requirements analysis and constrained by system engineering
principles.
The intersection of all three circles indicates the critical area where comprehensive
understanding, analysis, and design considerations converge for effective software
development.
Analysis Principles
- The information domain of the problem must be represented and understood.
- The functions that the software is to perform must be defined.
- Software behavior must be represented.
- Models depicting information, function, and behavior must be partitioned in a
hierarchical manner that uncovers detail.
- The analysis process should move from essential information toward
implementation details.
System modeling helps the analyst to understand the functionality of the system and
models are used to communicate with customers. Models are used during the
requirements engineering process to help derive the requirements for a system,
during the design process to describe the system to engineers implementing the
system and after implementation to document the system’s structure and operation.
You may develop models of both the existing system and the system to be
developed:
- Models of the existing system are used during requirements engineering. They help
clarify what the existing system does and can be used as a basis for discussing its
strengths and weaknesses. These then lead to requirements for the new system.
- Models of the new system are used during requirements engineering to help explain
the proposed requirements to other system stakeholders. Engineers use these
models to discuss design proposals and to document the system for
implementation.
Ethnography
Getting information by observation
One of the goals is to use the viewpoint of the people within the system. The terms
emic and etic are used.
An etic view of the system is the 'outside view' or what the analysts see. An emic
view is the 'inside view' or what the system users see.
The main characteristics of ethnographic studies are:
• analysts observe or possibly even participate in such activities.
• any interviews are conducted in situ,
possibly as informal discussion rather than formal interview.
- there is emphasis on examining the interaction between users.
• there is emphasis on tracing communication links and - there is detailed analysis of
artifacts.
Interviewing
In formal or informal interviewing,
The RE team puts questions to stakeholders about the system that they use and the
system to be developed.
• There are two types of interview
- Closed interviews where a predefined set of answers.
questions are
- Open interviews where there is no predefined agenda and a range of issues are
explored with stakeholders.
Feasibility studies
• Feasibility study decides whether or not the proposed system is worthwhile.
• A short focused study that checks
- If the system contributes to organizational objectives;
- fI the system can be engineered using current technology and within budget;
- If the system can be integrated with other systems that are used.