Se Unit Ii
Se Unit Ii
UNIT II: Chapter 1: Agility, Agility and the Cost of Change, Agile Process, Extreme
Programming (XP), Other Agile Process Models, A Tool Set for the Agile Process,
Chapter 2:Software Engineering Knowledge, Core Principles, Principles That Guide
Each Framework Activity
Chapter 3: Requirements Engineering, Establishing the Groundwork, Eliciting
Requirements, Developing Use Cases, Building the Requirements Model,
Negotiating Requirements, Validating Requirements.
Chapter 1
Testing Principles. Glen Myers states a number of rules that can serve well as
testing objectives:
• Testing is a process of executing a program with the intent of finding
an error.
• A good test case is one that has a high probability of finding an as-yet
undiscovered error.
Davis suggests a set of testing principles that have been adapted for use
Principle 1. All tests should be traceable to customer requirements. The objective
of software testing is to uncover errors.
Principle 2. Tests should be planned long before testing begins.
Test planning can begin as soon as the requirements model is complete.
Therefore, all tests can be planned and designed before any code has been
generated.
Principle 3. The Pareto principle applies to software testing. In this
context the Pareto principle implies that 80 percent of all errors uncovered during
testing will likely be traceable to 20 percent of all program components.
Principle 4. Testing should begin “in the small”(Components-Unit Test) and
progress toward testing “in the large.”
First test the modules and then test the entire system(software).
Principle 5. Exhaustive testing is not possible.
it is impossible to execute every combination of paths during testing.
Deployment Principles
The deployment activity encompasses three actions: delivery, support, and
feedback.
For agile process model each delivery cycle provides the customer and end
users with an operational software increment that provides usable
functions and features.
Principle 1. Customer expectations for the software must be managed.
the customer expects more than the team has promised to deliver,
and disappointment occurs immediately.
Principle 2. A complete delivery package should be assembled and
tested. A CD-ROM or other media (including Web-based downloads)
containing all executable software, support data files, support documents, and
other relevant information should be assembled and thoroughly beta-tested with
actual users.
Principle 3. A support regime must be established before the software
is delivered. An end user expects responsiveness and accurate information when
a question or problem arises.
Principle 4. Appropriate instructional materials must be provided to
end users. The software team delivers more than the software itself.
Appropriate training aids (if required) should be developed and troubleshooting
guidelines should be provided.
Principle 5. Buggy software should be fixed first, delivered later. Under time
pressure, some software organizations deliver low-quality increments with a
warning to the customer that bugs “will be fixed in the next release.”This is a
mistake.
Chapter 3
Requirements Engineering:
The tasks and techniques that lead to an understanding of requirements is
called requirements engineering.
Requirements engineering is a major software engineering action that
begins during the communication activity and continues into the modeling
activity.
.Requirements engineering builds a bridge to design and construction.
Requirements engineering provides the appropriate mechanism for
understanding what the customer wants, analyzing need, assessing
feasibility, validating the specification and managing the requirements and
transformed into an operational system.
It encompasses seven distinct tasks: inception, elicitation, elaboration,
negotiation, specification, validation, and management.
It is important to note that some of these tasks occur in parallel and all are
adapted to the needs of the project.
Inception:
At inception, establish a basic understanding of the problem, the people
who want a solution, the nature of the solution that is desired, and the
effectiveness of preliminary communication and collaboration between the
other stakeholders and the software team.
Elicitation:
Ask the customer, the users, and others what the objectives for the system
or product are, how the system or product is to be used on a day-to-day
basis.
A number of problems that are encountered as elicitation occurs.
• Problems of scope. The customers/users specify unnecessary technical details
that may confuse, rather than clarify, overall system objectives.
• Problems of understanding. The customers/users are not completely sure
of what is needed, have a poor understanding of the capabilities and limitations
of their computing environment, don’t have a full understanding of the
problem domain.
• Problems of volatility. The requirements change over time. To help overcome
these problems, requirements gathering in an organized manner.
Elaboration:
The information obtained from the customer during inception and
elicitation is expanded and refined during elaboration.
Elaboration is driven by the creation and refinement of user scenarios that
describe how the end user will interact with the system.
Each user scenario is parsed to extract analysis classes.
The attributes of each analysis class are defined, and the services
that are required by each class are identified.
The relationships and collaboration between classes are identified, and a
variety of supplementary diagrams are produced.
Negotiation:
It’s relatively common for different customers or users to propose
conflicting requirements.
recouncile these conflicts through a process of negotiation.
Customers,other stakeholders are asked to rank requirements and then
discuss conflicts in priority.
Using an iterative approach that prioritizes requirements, assesses their
cost and risk, and addresses internal conflicts, requirements are eliminated,
combined, and/or modified so that each party achieves some measure of
satisfaction.
Specification:
A specification can be a written document, a set of graphical models, a
formal mathematical model, a collection of usage scenarios, a prototype,
or any combination of these.
A “standard template” should be developed and used for a specification.
Validation:
The work products produced during of requirements engineering are
assessed for quality during a validation step.
Requirements validation examines the specification , all software
requirements have been stated unambiguously, inconsistencies, and
errors have been detected and corrected and that the work products
conform to the standards established for the process, the project, and the
product.
The primary requirements validation mechanism is the technical review
Requirements management.:
Requirements for computer-based systems change, and the desire to
change requirements persists throughout the life of the system.
Requirements management is a set of activities that help the project team
identify, control, and track requirements and changes to requirements at
any time as the project proceeds.
Elicting Requirements
Requirements elicitation (also called requirements gathering) combines
elements of problem solving, elaboration, negotiation, and specification.
Collaborative Requirements Gathering:Many different approaches to
collaborative requirements gathering have been proposed.
Each makes use of a slightly different scenario, but all apply some variation
on the following basic guidelines:
Meetings are conducted and attended by both software engineers
and other stakeholders.
Rules for preparation and participation are established.
An agenda is suggested that is formal enough to cover all important
points but informal enough to encourage the free flow of ideas.
A “facilitator” (can be a customer, a developer, or an outsider)
controls the meeting.
A “definition mechanism” (can be work sheets, flip charts, or wall
stickers or an electronic bulletin board, chat room, or virtual forum)
is used.
The goal is to identify the problem, propose elements of the solution, negotiate
different approaches, and specify a preliminary set of solution requirements.
Developing Usecases:
“A use case describes the system’s behavior under various conditions as
the system responds to a request from one of its stakeholders . ”
A use case tells a stylized story about how an end user interacts with the
system under a specific set of situations.
The first step in writing a use case is to define the set of “actors” that will
be involved in the story.
Actors are the different people represent the roles that people (or devices)
play as the system operates.
Every actor has one or more goals when using the system.
Once actors have been identified, use cases can be developed.
number of questions that should be answered by a use case:
• Who is the primary actor, the secondary actor(s)?
• What are the actor’s goals?
• What preconditions should exist before the story begins?
• What main tasks or functions are performed by the actor?
Basic SafeHome requirements, we define four actors: homeowner
(a user), setup manager (likely the same person as homeowner, but playing a
different role), sensors (devices attached to the system), and the monitoring and
response subsystem (the central station that monitors the SafeHome home
security function). For the purposes of this example, we consider only the
homeowner actor. The homeowner actor interacts with the home security
function in a number of different ways using either the alarm control panel or a
PC:
.Considering the situation in which the homeowner uses the control panel, the
basic use case for system activation follows:
1. The homeowner observes the SafeHome control panel to determine if the
system is ready for input. If the system is not ready, a not ready message is
displayed on the LCD display.
2. The homeowner uses the keypad to key in a four-digit password. The password
is compared with the valid password stored in the system. If the password is
incorrect and reset itself for additional input. If the password is correct, the
control panel awaits further action.
3. The homeowner select the keys in stay or away to activate the system.
Stay activates only perimeter sensors (inside motion detecting sensors are
deactivated).
Away activates all sensors.
4. When activation occurs, a red alarm light can be observed by the homeowner.
The basic use case presents a high-level story that describes the interaction
between the actor and the system.
Validating Requirements:
As each element of the requirements model is created, it is examined for
inconsistency,omissions, and ambiguity.
The requirements represented by the model are prioritized by the
stakeholders and grouped within requirements packages that will be
implemented as software increments.
A review of the requirements model addresses the following questions:
• Is each requirement consistent with the overall objectives for the
system/product?
• Have all requirements been specified at the proper level of abstraction? That
is, do some requirements provide a level of technical detail that is inappropriate
at this stage?
• Is the requirement really necessary or does it represent an add-on feature
that may not be essential to the objective of the system?
• Is each requirement bounded and unambiguous?
• Does each requirement have attribution?
• Do any requirements conflict with other requirements?
• Is each requirement achievable in the technical environment ?
• Is each requirement testable, once implemented?
• Does the requirements model properly reflect the information, function, and
behavior of the system to be built?
These and other questions should be asked and answered to ensure that
the requirements model is an accurate reflection of stakeholder needs and
that it provides a solid foundation for design.