Showing posts with label Nonfunctional Requirements. Show all posts
Showing posts with label Nonfunctional Requirements. Show all posts

Sunday, January 23, 2011

Lecture # 3: Exercises to Clarify Concepts

Objectives:
• To further clarify the difference between non-functional and functional requirements using examples
• To develop, using examples, a sense to identify incompleteness of requirements.

Exercise 1:
Identify how the following requirements are incomplete

1. An email notification must be sent to user when he successfully registers into the system
2. The system will allow salesman to maintain their personal contact manager. When a contact is converted into client then other salesman having duplicate of these contacts in their personal contact manager are informed that they cannot do business with this contact.
3. The installer should check the prerequisites before starting itself.

The missing aspect in “1” is that it is not clear that what will be the contents of “email notification” sent to client

There are a number of missing aspects in “2”. It is not clear that how the other sales man will be informed that contact has been converted into business. Secondly, it is also not clear on what basis duplicates will be detected. (There may be more incomplete areas in “2”).

In “3”, the requirement engineer should inquire about the prerequisites that should be checked by installer.

Exercise 2:

Identify functional and nonfunctional requirements from the following

1. The system should have a very easy and intuitive view of customer transactions
• Functional Requirement: View of customer transactions
• Nonfunctional Requirement: Easy and intuitive

2. Authorized users should be able to modify customer’s personal information
• Functional Requirement: Modify Personal Info
• Nonfunctional Requirement: Authorization or Security

3. The system should calculate monthly summary of inventory and send email using mail server’s contact list.
• Functional Requirement: Calculate monthly inventory summary and send mail server’s contact list.
• Nonfunctional Requirement: Interoperability with email server such that contact list is accessed

4. The system should allow users to customize workflows. All system development should be done using scrum methodology
• Functional Requirement: Customize workflows
• Nonfunctional Requirement: All development will be based on scrum methodology.

Monday, January 17, 2011

Requirement Engineering: Lecture # 2

Objectives:
To develop skills to identify stakeholders of software
To learn various kinds of requirements
To have clear concepts of what functional requirement is?
To have clear concepts of what Nonfunctional requirements are?

Exercise: Identifying Stakeholders
It is really important that you get requirements from all stakeholders because the system may fail because a stakeholder is not satisfied or he had some important requirements with him, which did not get captured and thus not implemented. Following exercises are there to bring you in a habit of deep thinking to identify stakeholders.
• I want to take all quizzes using a software. Who will be the stakeholders in this scenario?
Answer:
Stakeholders may include at least the following
• Students
• Teachers
• Academics/Management
• Lab Administrator

• I want to develop a software for automating traffic signals on the road
Answer:
Stakeholders may include at least the following
• Police
• Drivers
• Pedestrians
Ambulance and other emergency transport including VIP squads

• I want to develop a software for automating the railway signals
Stakeholders may include at least the following
• Train staff/operators
• Car drivers

Lecture Contents:

Kinds of software requirements
• Functional Requirements
• Non Functional Requirements
• Domain Requirements
• Inverse Requirements
• Design and Implementation Constraints

Functional Requirement
These are statements that describe what the system does. In other words these are the statement of services the system should provide. They identify
• Reaction to particular input
• Behavior in particular situation
Sequencing and parallelism should also be captured by functional requirement as well as the abnormal behavior, which is documented in the form of exception handling.
E.g. The system should allow user to search for books, CDs and journals available in library
E.g. The system should record basic information regarding all the financial products as well as basic information about the provider and product related documents including brochures and forms
While documenting any kind of requirement, it must be ensured that complete requirement is being captured so the chances of misinterpretation or different interpretation is minimized
Customers and developers usually focus all their attention on functional requirements

Non-Functional Requirement:
These do not deal with the actions system do, but they rather they deal with the quality attributes of the system. They contribute to the emergent behavior of the system.
Non functional requirements are often neglected by the developers and requirement engineers. However they should be given due share specially due to two important reasons
Like some functional requirements, Non functional requirements are so important that there absence will effect acceptance of the product by client. For example,
• A Point of Sale terminal at super store should allow operators to quickly generate receipts for customers. If it takes long the management might discard it.
• A system like ZABDESK may be discarded by management simply because it not secure enough and someone can breach in to change the marks

It is important to know the Nonfunctional requirement at a very early stage because these requirements are built into the architecture of the system. Almost all functional requirements can be added after the delivery as well but most of the Nonfunctional requirements cannot be added later. For example, high performance can only be achieved if the architecture is aimed at it, it cannot be added later.