Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 21

Software Requirement

Requirements reuse
Beyond requirements
development
Group 4: Phạm Tiến Đạt
Đỗ Anh Hào
Trần Minh Phụng
Nguyễn Phúc Minh Thông
Contents

1. Why reuse requirements?


2. Dimensions of requirements reuse.
3. Types of requirements information to reuse.
4. Common reuse scenarios.
5. Requirement patterns.
6. Tools to facilitate reuse.
7. Making requirements reusable.
8. Requirements reuse barriers and success factors.

Chapter 18: Requirements reuse 2


Why reuse requirements?
Faster delivery, lower development costs, consistency both
within and across applications, higher team productivity,
fewer defects, and reduced rework.
Reusing trusted requirements can save review time,
accelerate the approval cycle, and speed up other project
activities, such as testing.
Reuse can improve your ability to estimate implementation
effort if you have data available from implementing the same
requirements on a previous project.
From the user’s perspective, requirements reuse can improve
functional consistency across related members of a product
line or among a set of business applications.
If the implementation varies in different environments, the
requirements might be the same.

Chapter 18: Requirements reuse 3


Dimensions of requirements reuse

Mức độ sử dụng lại

Mức độ thay đổi

Cơ chế sử dụng lại

Chapter 18: Requirements reuse 4


Types of requirements information
to reuse

Trên 1 dòng sản phẩm

Chapter 18: Requirements reuse 5


Common reuse scenarios
Let’s look at some scenarios where requirements
reuse offers good potential.
Software product lines: Anytime you’re creating a set of products in
a family—a software product line—those products will have a lot of functionality
in common. Sometimes you’re producing variations (biến thể) of a base product for
different customers or markets.

Reengineered and replacement systems: Reengineered and


replacement systems always reuse some requirements from the
original incarnation. Often, you can harvest (thu hoạch) business rules that were
embedded in an old system and reuse them on future projects, updating them as
necessary.

Other likely reuse opportunities: Table 18-3 (next slide) lists several
other situations in which reusing requirements information is common. If
you previously worked on a project similar to the current one, consider
whether you can use any artifacts from the earlier project again.
Chapter 18: Requirements reuse 6
Common reuse scenarios

Chapter 18: Requirements reuse 7


Requirement patterns
A requirement pattern offers a systematic approach to specifying a
particular type of requirement.
A pattern defines a template with categories of information for each of
the common types of requirements a project might encounter.
A requirement pattern contains several sections:
Guidance: Basic details about the pattern, including related patterns, situations to
which it is (and is not) applicable, and a discussion of how to approach writing a
requirement of this type.
Content: A detailed explanation of the content that such a requirement ought to (nên)
convey, item by item.
Template: A requirement definition with placeholders wherever variable pieces of
information need to go.
Examples: One or more illustrative requirements of this type.
Extra requirements: Additional requirements that can define certain aspects of the topic,
or an explanation of how to write a set of detailed requirements.
Considerations for development and testing: Factors for developers to keep in
mind when implementing a requirement of the type specified by the pattern, and
factors for testers to keep in mind when testing such requirements.

Chapter 18: Requirements reuse 8


Requirements reuse barriers and
success factors
Reuse barriers
Missing or poor requirements: A common barrier is that the requirements developed on
previous projects weren’t documented, so it’s impossible to reuse them. And even if you find a
relevant requirement, it might be badly written, incomplete, or a poor fit for your present
circumstances.
NIH and NAH: Two barriers to reuse are NIH and NAH syndromes (hội chứng). NIH means “not
invented here.” Some people are reluctant to reuse requirements from another organization or
generic requirements found in a public collection. NAH, or “not applicable here,” when
practitioners protest that a new process or approach does not apply to their project or
organization.
Writing style: Requirements written in natural language are ambiguities, missing
information, and hidden assumptions. Requirements that have embedded design constraints
will offer little opportunity for reuse in a different environment. These issues reduce their
reuse potential.
Inconsistent organization: It can be difficult to find requirements to reuse because
authors organize their requirements in many different ways: by project, process flow, business
unit, product feature, category, subsystem or component, and so forth.
Project type: Requirements that are tightly coupled to specific
(gắn chặt)
implementation environments or platforms are less likely (ít có khả năng) to generate
reusable requirements or to benefit from an existing pool of requirements
knowledge.
Ownership: If you’re developing a software product for a specific customer, its
requirements are likely the proprietary intellectual property of the customer.
Chapter 18: Requirements reuse 9
Requirements reuse barriers and
success factors
Reuse success factors
Repository: You can’t reuse something if you can’t find it. A collection of
requirements stored in a requirements management tool that can be searched across
projects.
Quality: No one wants to reuse junk. Potential reusers need confidence in the quality
of the information.
Interactions: Requirements often have logical links or dependencies on each other.
Reused requirements must conform to existing business rules, constraints, standards,
interfaces, and quality expectations.
Terminology: Establishing common terminology and definitions across your projects
will be helpful for reusability. Terminology variations won’t prevent you from reusing
requirements.
Organizational culture: The individuals, project teams, and organizations that
practice reuse most effectively are likely to enjoy the highest productivity. In a
reuse culture, BAs look at the reusable requirements repository before creating
their own requirements.

Chapter 18: Requirements reuse 10


Contents

1.The effects of requirements software


on development.
2.Estimating requirements effort.
3.From requirements to project plans.
4.From requirements to designs and
code.
5.From requirements to tests.
6.From requirements to success.

Chapter 19: Beyond 11


requirements development
The effects of requirements on
software development
We’ll look at several ways in which requirements
influence project plans, designs, code, and tests, as shown
in Figure 19-1.

Chapter 19: Beyond 12


requirements development
Estimating requirements effort
One of the earliest project planning activities is to judge how
much of the project’s schedule and effort should be devoted
to requirements activities.
Requirements engineering activity is distributed throughout
the project in different ways, depending on whether the
project is following a sequential (waterfall), iterative, or
incremental development life cycle (Agile projects).
Small projects typically spend 15 to 18 percent of their total
effort on requirements work (Wiegers 1996), but the
appropriate percentage depends on the size and complexity
of the project.
Despite the fear (mặc dù lo sợ) that exploring requirements will
slow down a project, considerable evidence shows that
taking time to understand the requirements actually
accelerates development.
Chapter 19: Beyond 13
requirements development
From requirements to
project plans
Because requirements are the foundation for the project’s intended work,
you should base (bố trí) estimates, project plans, and schedules on those
requirements. Remember, the most important project outcome is a
system that meets its business objectives.
Estimating project size and effort from requirements
The number of individually testable requirements (Wilson 1995)
Function points (Jones 1996b; IFPUG 2010)
Story points (Cohn 2005; McConnell 2006) or use case points (Wiegers 2006)
The number, type, and complexity of user interface elements
Estimated lines of code needed to implement specific requirements
Requirements and scheduling
Estimated product size.
Known productivity of the development team, based on historical performance.
A list of the tasks needed to completely implement and verify a feature or use
case.
Reasonably stable requirements, at least for the forthcoming
development iteration.
Experience, which helps the project manager adjust for intangible factors (các yếu tố
vô hình) and the unique aspects (khía cạnh độc đáo) of each project.

Chapter 19: Beyond 14


requirements development
From requirements to
designs and code
The boundary between requirements and design is not a
sharp line (sắc nét) but a gray, fuzzy area. Try to avoid
inadvertent (cẩu thả) design, needless (vô ích) or unintended
restrictions on the design. Include designers in requirements
reviews to make sure the requirements can serve as a solid
foundation for design.
Architecture and allocation:
Architecture is especially critical for systems that include both
software and hardware components and for complex software-only
systems.
An essential step is to allocate the high-level system requirements to
the various subsystems and components. An analyst, system
engineer, or architect decomposes the system requirements into
functional requirements for both software and hardware
subsystems.
Allocation of system capabilities to subsystems and components
must be done from the top down.
Chapter 19: Beyond 15
requirements development
From requirements to
designs and code
Software design:
A variety of software designs will satisfy most products’ requirements.
These designs will vary in (khác nhau về) their performance, efficiency,
robustness, and the technical methods employed. If you leap directly from
requirements into code, you’re essentially designing the software mentally
and on the fly.
The time you spend translating requirements into designs is an excellent
investment in building high-quality, robust products.
You needn’t develop a complete, detailed design for the entire product
before you begin implementation, but you should design each component
before you code it.
User interface design:
User interface design is an extensively studied domain that goes well
beyond the scope of this book.
A display-action-response (DAR) model is a useful tool for documenting the
UI elements that appear in screens and how the system responds to user
actions.
Example in the next slide.

Chapter 19: Beyond 16


requirements development
From requirements to
designs and code

FIGURE 19-4 High-


fidelity webpage
design.

Chapter 19: Beyond 17


requirements development
From requirements to
designs and code

Chapter 19: Beyond 18


requirements development
From requirements to
designs and code

Chapter 19: Beyond 19


requirements development
From requirements to tests
From requirements to tests:
Requirements analysis and testing fit together beautifully.
As consultant Dorothy Graham (2002) points out, “Good
requirements engineering produces better tests; good test analysis
produces better requirements.”
Agile development teams typically write acceptance tests in lieu of
(thay cho) precise requirements (Cohn 2004).
The testers or quality assurance staff should determine how they’d
verify the implementation of each requirement. Possible methods
include:
Testing (executing the software to look for defects).
Inspection (examining the code to ensure that it
satisfies the requirements).
Demonstration (showing that the product works as expected).
Analysis (reasoning through (lập luận thông quan) how the system should work
under certain circumstances).

Chapter 19: Beyond 20


requirements development
From requirements to success
From requirements to success:
A more successful team had a practice of listing all the requirements
that were planned for a specific release.
The project’s quality assurance group evaluated each release
by executing the tests for those requirements.
A requirement that didn’t satisfy its test criteria was counted as a
defect.
The QA group rejected the release if more than a predetermined
number of requirements weren’t met or if specific high-impact
requirements weren’t satisfied.
This project was successful largely because it used its documented
requirements to decide when a release was shippable (sẵn sàng bàn giao).
The ultimate deliverable from a software development project is a
solution that meets the customers’ needs and expectations.
Requirements are an essential step on the path from business need
to satisfied customers.

Chapter 19: Beyond 21


requirements development

You might also like