|Course:||CS302: Software Engineering|
|Printed by:||Guest user|
|Date:||Saturday, June 10, 2023, 1:36 AM|
Analysis emphasizes an investigation and understanding of the problem domain and requirements, rather than a solution. Read this section to learn more about some of the terms and concepts related to requirements and their types. These terms can seem ambiguous at first, but we will quickly learn how they relate to one another.
1. What are Requirements
Requirements as defined by Liu (2001) are a description or statement of
a function, feature or condition that a user seeks to have implemented in a
system. A requirement is:
1. A function that a system must perform
2. A feature of the system or a description of something the system is capable of doing in order to fulfil the system's purpose.
3. A statement about the proposed system that all stakeholders agree that must be true in order for the customer's problem to be adequately solved.
The creation of correct and thorough requirements specification is essential to a successful project. We use a case study (Point-of-Sale) to illustrate the following three problems.
1. What should be produced in the requirements capture and analysis?
2. How to identify the elements of these artifacts?
3. How are artefacts expressed?
Source: Ellen Ambakisye Kalinga, https://oer.avu.org/bitstream/handle/123456789/667/CSI%203104_EN%20Object%20Oriented%20Analysis%20and%20Design1.pdf?sequence=1&isAllowed=y
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 License.
2. Requirement Specification
Requirements documentation is a very important activity, which is written after the requirements elicitation/gathering and analysis, i.e. requirement capture and analysis phase of the software development process. This is the way to represent requirements in a consistent format. The requirements document is called the Software Requirements Specification (SRS). The SRS is a specification for a particular software product, program, or set of programs that perform certain functions in a specific environment.
The requirements specification is a description of needs or desires for a product. It is the official statement of what is required of the system developer. The requirements must be described unambiguously and in a form that clearly communicates to the client and to the development team members.
It is not a design document and it must state what to be done rather than how it is done. It must be in a form which can be taken as the starting point for the software development. A specification language is often used. Graphical notations are often also used to describe the requirement specification.
It is recommended that the requirements specification at least include the following information:
i. An overview of the project
iii. Glossary – definition all relevant terms
iv. System functions
- System functional requirements, these are functional requirements
- System attributes (non-functional requirements)
v. Use cases – narrative descriptions of the domain processes
vi. Conceptual model – a model of important concepts and their relationships in the application domain.
These are typically produced through gathering and digesting
i. Documented information such as the client's statements about their needs, preliminary investigation report, and electronic documents,
ii. interview results,
iii. requirements definition meetings, and so on
3. An Overview of the Project
This is a sentence which gives the purpose of the project. This should describe the need for the system. e.g.
The project intends to create a standalone system for ……………….
The purpose of this project is to create a point-of-sale terminal system to be used in retail sales. This is to describe how the system fits into the overall business or strategic objectives of the organization commissioning the software.
The goals of the POST system can be stated as:
In general the goal is increased checkout automation, to support faster, better and cheaper services and business processes. More specifically, these include:
- Quick checkout for the customer,
- Fast and accurate sales analysis,
- Automatic inventory control.
Glossary is the definition of all relevant terms and concepts. It provides the clarification of ambiguous terms and concepts, explanations of jargons, as well as the description of business events or description of software actions. There is no specific format for glossaries and they can be included when needed.
3.2. System Functions
Requirements are the capabilities to which the system has to conform. Requirements are captured in terms of the system functions; hence system functions are requirements the system is supposed to do. There are two broad categories of requirements:
- Functional Requirements
Are those that relate directly to the functioning of the system.
These are the aspects of the system the client is most likely to recognize.
- Non-functional requirements:
They are constraints/restrictions imposed on the system
Functional requirements describe interaction between a system and its environment. Describe how a system should behave under certain stimuli. Liu, (2001) argue that to verify that some X is indeed a system function, it should make sense in the following
"The system should do < XX>" The system's function should be categorized in order to prioritize them or to avoid from missing them. Categories include:
1. Evident functions whereby the requirement will be performed and recognized by the user.
2. Hidden functions whereby the requirement will be performed by the system, but not visible to users. Examples of hidden functions can be "save information in a persistent storage mechanism". It has been noticed that hidden functions are often forgotten
hence missed during the requirements gathering process.
System functions can be presented as shown in template given in Table 3.1. They should be divided into logical cohesive (interrelated/organized) groups. Each function should be given a reference number that can be used in other documents of the development. A function should be category in either "evident" or "hidden".
Table 3.1: Template for Presenting Functional Requirements
Tables 3.2 and 3.3 show functional requirements for the POST system (Liu, 2001).
Table 3.2: Basic functions of the POST system
||Record the underway (current) sale - the items purchased
||Calculate current sale total
||Capture purchase item information from a bar code using a bar code scanner or manual entry of a product code such as a universal product code (UPC)
||Reduce inventory quantities when a sale is committed
||Log completed sales
||Cashier must log in with an ID and password in order to use the system
||Provide a persistent storage mechanism
||Provide inter-process and inter-system communication mechanisms
||Display description and price of item recorded
Table 3.3: Payment functions of the POST System
||Handle cash payments, capturing amount tendered and calculating balance due
||Handle credit payments, capturing credit information from a card reader or by manual entry, and authorizing payment with the store's (external) credit authorization service via a modem connection.
||Handle cheque payments, capturing driver's license by manual entry, and authorizing payment with the store's (external) cheque authorization service via a modem connection.
||Log credit payments to the accounts receivable system, since the credit authorization services owes the store the payment amount.
Requirements are expected to have the following characteristics:
A requirements document often becomes part of the contract between a client and a system developer. It describes what the developer will deliver and be paid for. Requirements should be verified against requirements, i.e. to check if the software meets the requirements.
The requirements should be complete, and not leave out any areas. This can be very hard to achieve, especially in large systems. Current trends are to break the development up into smaller modules and implement each of them.
A requirement is ambiguous if it has more than one possible meaning. May be ambiguous due to poor choice of words and/or differing definitions of a word or phrase.
All parts of the requirements document should be consistent with each other. They should not contradict each other (the following do: "If you delete a task all of its subtasks should be deleted automatically" "You should always be prompted to confirm the deletion of a task and any of it's subtasks").
The requirements should be structured so that it is possible to change it at little to no cost. Requires it be structured carefully, e.g. separating functional from non functional requirements, supplying a glossary (a table of definitions)
The requirements should be structured so that it is possible to uniquely identify each requirement
- Each one should have a unique number
- This allows it to be referred to in final testing of the delivered software, and in discussions with a client.
(b) Non-Functional Requirements
System non-functional requirements of system, also known as system attributes, are constraints imposed on the services or functions offered by the system. System attributes define how a system is supposed to behave and they are often called qualities of the system. They are being applied to the system as a whole. Examples are; usability, cost, reliability, response time, performance, ease of use, security, compatibility, fault-tolerance, and so on.
You can't write a specific line of code to implement non-functional requirements; rather they are "emergent" properties that arise from the entire solution.
Table 3.4 shows examples of non-functional requirements for the POST system.
||When recording a sold item, the description and price will appear within 5 seconds
||Forms-metaphor windows and dialog boxes
||Must log authorized credit payments to accounts receivable within 24 hours, even if power or device fails
|operating system platform
||Microsoft Window 95 and NT
Non-functional can be classified into:
(a) Product requirements
Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.
(b) Organisational requirements
Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc.
(c) External requirements
Requirements which arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc.
Functional requirements are requirements in which users seek for them to be implemented. However, there are also requirements done by the system, but not directly recognized by users, these requirements should be considered when documenting requirements. These are the once referred to hidden functionalities.