Lab Manual: Sub: Software Engineering Lab (6KS07) Software Engineering Lab 6KS07 Software Engineering Lab P-2, C-1
Lab Manual: Sub: Software Engineering Lab (6KS07) Software Engineering Lab 6KS07 Software Engineering Lab P-2, C-1
Lab Manual: Sub: Software Engineering Lab (6KS07) Software Engineering Lab 6KS07 Software Engineering Lab P-2, C-1
[3] Modeling UML Use Case Diagrams and Capturing Use Case Scenarios
Use case diagrams |,Actor , Use Case , Subject , Graphical Representation , Association between
Actors and Use Cases , Use Case Relationships , Include Relationship , Extend Relationship ,
Generalization Relationship ,Identifying Actors , Identifying Use cases , Guidelines for drawing
Use Case diagrams
Reference Books:
1. Somerville: Software Engineering (Addison-Wesley) (5/e)
2. Fairly R: Software Engineering (McGraw Hill)
3. Davis A: Principles of Software Development (McGraw Hill)
4. Shooman, M.L: Software Engineering (McGraw-Hill)
Practical No. 1
Introduction
Requirements identification is the first step of any software development project. Until the requirements of
a client have been clearly identified, and verified, no other task (design, coding, testing) could begin.
Usually business analysts having domain knowledge on the subject matter discuss with clients and decide
what features are to be implemented.
In this experiment we will learn how to identify functional and non-functional requirements from a given
problem statement. Functional and non-functional requirements are the primary components of a Software
Requirements Specification.
Objectives
After completing this experiment you will be able to:
Identify ambiguities, inconsistencies and incompleteness from a requirements specification
Identify and state functional requirements
Identify and state non-functional requirements
Time Required
Around 3.00 hours
Requirements
Sommerville defines "requirement" [1] as a specification of what should be implemented. Requirements
specify how the target system should behave. It specifies what to do, but not how to do. Requirements
engineering refers to the process of understanding what a customer expects from the system to be
developed, and to document them in a standard and easily readable and understandable format. This
documentation will serve as reference for the subsequent design, implementation and verification of the
system.
It is necessary and important that before we start planning, design and implementation of the software
system for our client, we are clear about it's requirements. If we don't have a clear vision of what is to be
developed and what all features are expected, there would be serious problems, and customer
dissatisfaction as well.
Characteristics of Requirements
Requirements gathered for any new system to be developed should exhibit the following three properties:
Unambiguity: There should not be any ambiguity what a system to be developed should do. For
example, consider you are developing a web application for your client. The client requires that
enough number of people should be able to access the application simultaneously. What's the
"enough number of people"? That could mean 10 to you, but, perhaps, 100 to the client. There's an
ambiguity.
Consistency: To illustrate this, consider the automation of a nuclear plant. Suppose one of the
clients say that it the radiation level inside the plant exceeds R1, all reactors should be shut down.
However, another person from the client side suggests that the threshold radiation level should be
R2. Thus, there is an inconsistency between the two end users regarding what they consider as
threshold level of radiation.
Completeness: A particular requirement for a system should specify what the system should do
and also what it should not. For example, consider a software to be developed for ATM. If a
customer enters an amount greater than the maximum permissible withdrawal amount, the ATM
should display an error message, and it should not dispense any cash.
Categorization of Requirements
Based on the target audience or subject matter, requirements can be classified into different types, as
stated below:
User requirements: They are written in natural language so that both customers can verify their
requirements have been correctly identified
System requirements: They are written involving technical terms and/or specifications, and are
meant for the development or testing teams
Requirements can be classified into two groups based on what they describe:
Functional requirements (FRs): These describe the functionality of a system -- how a system
should react to a particular set of inputs and what should be the corresponding output.
Non-functional requirements (NFRs): They are not directly related what functionalities are
expected from the system. However, NFRs could typically define how the system should behave
under certain situations. For example, a NFR could say that the system should work with 128MB
RAM. Under such condition, a NFR could be more critical than a FR.
Non-functional requirements could be further classified into different types like:
Product requirements: For example, a specification that the web application should use only
plain HTML, and no frames
Performance requirements: For example, the system should remain available 24x7
Organizational requirements: The development process should comply to SEI CMM level 4
Functional Requirements
Identifying Functional Requirements
Given a problem statement, the functional requirements could be identified by focusing on the following
points:
Identify the high level functional requirements simply from the conceptual understanding of the
problem. For example, a Library Management System, apart from anything else, should be able to
issue and return books.
Identify the cases where an end user gets some meaningful work done by using the system. For
example, in a digital library a user might use the "Search Book" functionality to obtain information
about the books of his interest.
If we consider the system as a black box, there would be some inputs to it, and some output in
return. This black box defines the functionalities of the system. For example, to search for a book,
user gives title of the book as input and get the book details and location as the output.
Any high level requirement identified could have different sub-requirements. For example, "Issue
Book" module could behave differently for different class of users, or for a particular user who has
issued the book thrice consecutively.
A few of the functional requirements have been shown here. There could be others like email
notifications, error handling and so on. Similarly, one has to identify the non functional requirements also.
For example, the system must remain accessible to thousands of users at a time.
Case Study
The final deliverable would a web application (using the recent HTML 5), which should run only within
the institute LAN. Although this reduces security risk of the software to a large extent, care should be
taken no confidential information (eg., passwords) is stored in plain text.
Return book: A book is issued for a finite time, which we assume to be a period of 20 days. That
is, a book once issued should be returned within the next 20 days by the corresponding member of
LIS. After successful return of a book, the user account is updated to reflect the same.
Reissue book: Any member who has issued a book might find that his requirement is not over by
20 days. In that case, he might choose to reissue the book, and get the permission to keep it for
another 20 days. However, a member can reissue any book at most twice, after which he has to
return it. Once a book has been successfully reissued, the user account is updated to reflect the
information.
In a similar way we can list other functionality offered by the system as well. However, certain features
might not be evident directly from the problem system, but which, nevertheless, are required. One such
functionality is "User Verification". The LIS should be able to judge between a registered and non-
registered member. Most of the functionality would be available to a registered member. The "New User
Registration" would, however, be available to non-members. Moreover, an already registered user
shouldn't be allowed to register himself once again.
Having identified the (major) functional requirements, we assign an identifier to each of them [v] for
future reference and verification. Following table shows the list:
Assignment 1 –
Learning Objectives:
1. Learn about the three different aspects that have to be taken care of while writing requirements
specification
Limitations:
Assignment 2 –
Learning Objectives:
1. Identifying different functionaries to be obtained from a system
Limitations: This list is in no way complete; exercise #4 would address this again
Assignment 3 –
Learning Objectives:
1. Identifying characteristics that a system should have, but not done by the system itself
Limitations:
Following possible non-functional requirements could be identified from the requirements specifications
The system provides option for online registration of new users
The system should remain up & running throughout it's working hours
System automatially removes an item from its database after it has been successfully auctioned
Sessions of different users must not affect each other
Customer care for the website should provide 24x7 help over phone
System should maintain privacy of their users and should not leak their information to third parties
System should be able to service 100 users simultaneously
System could remain unavailable for upto 2 hours for maintenance once in a quarter with 36 hour
prior notice
Following books and websites have been consulted for this experiment.
You are suggested to go through them for further details.
Bibliography
1. Requirements Engineering: A Good Practice Guide, Ian Sommerville, Pete Sawyer, Wiley India
Pvt Ltd, 2009
2. Fundamentals of Software Engineering, Rajib Mall, Prentice-Hall of India, 3rd Edition, 2009
Webliography
i. Lecture on "System Analysis and Design", NPTEL
ii. When Telepathy Won’t Do: Requirements Engineering Key Practices
iii. Requirements Analysis: Process of requirements gathering and requirement definition
iv. IEEE Recommended Practice for Software Requirements Specifications
v. Requirements Trace-ability and Use Cases