Unit 2
Unit 2
UNIT-II
The Unified Process
✓ Evolved by Rumbaugh, Booch, and Jacobson.
✓ Elaboration phase
✓ Construction phase
✓ Transition phase
✓ Production phase
✓ It adopts the customer as a part of the development team and recognizes that planning
has its limit and that a project plan must be flexible.
✓ But if the team is in the middle of validation testing and an important stakeholder is
requesting a change.
✓ The time and cost required to ensure that the change is made without unintended side
effects are nontrivial.
✓ A well-designed agile process flattens the cost of the change curve, allowing a software
team to accommodate changes late in a software project without dramatic cost and time
impact.
4. Businesspeople and developers must work together daily throughout the project.
5. Build Projects around motivated individuals. Give them the environment and support
they need and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation and daily cooperation between
businesspeople and developers.
8. Agile process promotes sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
10. Simplicity – the art of maximizing the amount of work not done is essential.
11. The best architectures, requirements, and designs emerge from Self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
Scrum
✓ Scrum is a very popular agile software development method that was conceived by Jeff
Sutherland and his development team in the early 1990s. Further development on the
Scrum methods was performed by Schwaber and Beedle.
✓ Scrum principles are consistent with the agile manifesto and are used to guide
development activities within a process that incorporates the following framework
activities: requirements, analysis, design, evolution, and delivery.
✓ Within each framework activity, work tasks take place in a relatively short time-boxed
period called a sprint.
✓ The work conducted within a sprint is adapted to the problem at hand and is defined
and often modified in real-time by the Scrum team.
✓ The number of sprints required for each framework activity will vary depending on the
size of the product and its complexity.
Scrum Teams and Artifacts
✓ The Scrum team is a self-organizing interdisciplinary team consisting of a product
owner, a Scrum master, and a small (three to six people) development team.
✓ The principle Scrum artifacts are the product backlog, the sprint backlog, and the code
increment.
✓ Development proceeds by breaking the project into a series of incremental prototype
development periods 2 to 4 weeks in length called sprints.
Figure: The Scrum Process Flow
• What are Requirements? Requirements are the features which have to feature in the
product or the problems which has to be solved to build the product.
• What is Requirement Engineering? It helps software engineers to better understand
the problem they will work to solve. It encompasses the set of tasks that lead to an
– understanding of what the business impact of the software will be,
– what the customer wants and
– how the end users will interact with the software.
• Who does it? Software engineers / system engineers/system Analysts/ requirements
engineer and stake holders (users, customers, end users, managers) all participate in the
requirement engineering.
• Why This? Designing and developing elegant working software which does not solve
the problem, is waste. So, requirement engineering is so important to better understand
the requirements which build good and functional software which solves the problem.
• Requirements engineering is the term for the broad spectrum of tasks and techniques
that lead to an understanding of requirements.
• From a software process perspective, requirements engineering is a major software
engineering action that begins during the communication activity and continues into the
modeling activity.
• Requirements engineering establishes a solid base for design and construction. Without
it, the resulting software has a high probability of not meeting customer’s needs.
• It must be adapted to the needs of the process, the project, the product, and the people
doing the work. It is important to realize that each of these tasks is done iteratively as
the project team and the stakeholders continue to share information about their
respective concerns.
A Bridge to Design and Construction
• A good understanding of the requirements will give good idea how to solve the problem
or create quality software. If you have no idea what the customer is asking you end up
creating a wrong product or will be breaking the trust of the customer.
• Requirements engineering establishes a solid base for design and construction. Without
it, the resulting software or product has a high probability of not meeting the client’s /
customer’s needs. So, always the requirement engineering works as a bridge to design
and construction of good and quality software.
Requirement Engineering Tasks
• Inception
• Elicitation
• Elaboration
• Negotiation
• Specification
• Validation
• Management
Inception
Inception encompasses both customer communication, planning activities.
• By collaborating with the customer and end-users,
– business requirements for the software are identifies,
– a rough architecture for the system is proposed, and
– a plan for the iterative, incremental nature of the ensuring project is developed.
• Its gives the scope of the project or the scope of the requirement based on the
communication done in the requirement gathering.
• Asking a set of questions that establish...
– Basic understanding of the problem.
– The people who want a solution.
– The nature of the solution is desired, and
– The effectiveness of preliminary communication and collaboration between the
customer and the developer.
Elicitation
• Ask the customer, users and others what the objectives for the system or product, what
is to be accomplished, how the system or product is useful in day to day life, how it fits
into the business needs it looks simple but it’s hard.
• Identify number of problems that help us understand why requirements elicitation is
difficult
– Problem of scope – customers or users specify unnecessary technical details
that may confuse rather than clarify.
– Problem of understanding – customers or users are not completely sure of
what is needed, they don’t have full understanding of the problem domain.
– Problem of volatility – The requirements change over time
Elaboration
• Elaboration encompasses both planning and modeling. The information obtained from
the customer during inception and elicitation is expanded and refined during
elaboration.
• Elaboration is an analysis modeling action that is composed of a number of modeling
and refinement tasks.
• The end-result of an analysis model that defines information or data, functional and
behavioral domain of the problem.
Negotiation
• This is the task where the user’s /stakeholders/ customer’s come on to the same page
with the practitioners. Everybody will have the win- win situation. Agree on a
deliverable system that is realistic for developers and customers.
Specifications
• A specification can be written document, a set of graphical models, a formal
mathematical model, a collections of usage scenarios, a prototype or any combination
of these.
• The specification is final work product produced by the requirement engineer. It serves
as the foundation for subsequent software engineering activities. It describes the
function and performance of a computer-based system and constraints will govern its
development.
Validation
• The work products produced as a consequence of requirement engineering are assessed
for quality during a validation step.
• Requirements validation examines
– the specification to ensure that all software requirements have been stated
unambiguously, inconsistencies, omissions, errors have been detected and
corrected
– the work products conform to the standards established for the process, project
and product.
• The primary requirements validation mechanism is the formal technical review (FTR)
Requirements Management
• 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.
• Requirements Management begins with
– identification of requirements,
– once requirements have been identified,
– traceability tables are developed.
• Each traceability table relates requirements to one or more aspects of the system or its
environment.
• Among many possible traceability tables are follows.
– Features Traceability Table
– Source Traceability Table
– Dependency Traceability Table
– Subsystem Traceability Table
– Interface Traceability Table
This is a technique that translates the needs of the customer into technical requirements of the
software. It concentrates on maximizing the customer satisfaction from the software
engineering process. It identifies three types of requirements.
✓ Normal Requirements – identify the objectives and goals that are stated for a product
or system during meetings with the customer. If these requirements are present, the
customer is satisfied.
✓ Expected Requirements – are implicit to the product or system and may be so
fundamental that the customer does not explicitly state them. Their absence will be a
cause for significant dissatisfaction.
✓ Excited Requirements – go beyond the customer’s expectations and prove to be very
satisfying when present.
✓ Function deployment determines the “value” (as perceived by the customer) of each
function required of the system.
✓ Information deployment identifies data objects and events.
✓ Task deployment examines the behavior of the system.
✓ Value analysis determines the relative priority of requirements during each of the three
deployments.
Usage Scenarios
• Usage scenarios are nothing but the use cases which will provide how the system will
be used.
• As requirements are gathered, an overall vision of system functions and features begin
to materialize. However, it is difficult to move into more technical software engineering
activities until you understand how the features will be used by different classes of end
users.
• To accomplish this, developers and users can create a set of scenarios that identify a
thread of usage for the system to be constructed. The scenarios, often called use cases,
provide a description of how the system will be used.
Elicitation Work products
The Work products produced by the consequences of the requirement elicitation will vary
depending on the size of the system.
• Within the context of an agile process, requirements are elicited by asking all
stakeholders to create user stories. Each user story describes a simple system
requirement written from the user’s perspective.
• User stories can be written on small note cards, making it easy for developers to select
and manage a subset of requirements to implement for the next product increment.
• Proponents claim that using note cards written in the user’s own language allows
developers to shift their focus to communication with stakeholders on the selected
requirements rather than their own agenda.
• Although the agile approach to requirements elicitation is attractive for many software
teams, critics argue that a consideration of overall business goals and nonfunctional
requirements is often lacking.
• In some cases, rework is required to accommodate performance and security issues. In
addition, user stories may not provide a sufficient basis for system evolution over time.
Service-Oriented Methods
Fig: The analysis model as a bridge between the system description and the design
model
• The analysis model should focus on requirements that are visible within the problem or
business domain
– The level of abstraction should be relatively high
• Each element of the analysis model should add to an overall understanding of software
requirements and provide insight into the following
– Information domain, function, and behavior of the system
• The model should delay the consideration of infrastructure and other non-functional
models until the design phase
– First complete the analysis of the problem domain
• The model should minimize coupling throughout the system
– Reduce the level of interconnectedness among functions and classes
• The model should provide value to all stakeholders
• The model should be kept as simple as can be
******************************(OR)* ***(BEGIN)**********************
Requirements gathering and Analysis
• After an initial feasibility study, the next stage of the requirements engineering process
is requirements elicitation and analysis.
• In this activity, software engineers work with customers and system end-users to find
out about the application domain, what services the system should provide, the required
performance of the system, hardware constraints, and so on.
Types of requirements
• The requirements of a system are the descriptions of the features or services that the
system exhibits within the specified constraints.
• The requirements collected from the customer are organized in some systematic manner
and presented in the formal document called software requirements specification (SRS)
document.
• Requirements engineering is the process of gathering, analyzing, documenting,
validating, and managing requirements.
• The main goal of requirements engineering is to clearly understand the customer
requirements and systematically organize these requirements in the SRS.
• A requirement is a detailed, formal description of system functionalities. It specifies a
function that a system or component must be able to perform for customer satisfaction.
• IEEE defines a requirement as:
• A condition or capability needed by a user to solve a problem or achieve an
objective (1)
• A condition or capability that must be met or possessed by a system or system
component to satisfy a contract, standard, specification or other formally
imposed documents (2)
• A documented representation of a condition or capability as in (1) and (2).
• The readers of the user requirements are not usually concerned with how the system
will be implemented and may be managers who are not interested in the detailed
facilities of the system.
• The readers of the system requirements need to know more precisely what the system
will do because they are concerned with how it will support the business processes or
because they are involved in the system implementation.
Business Requirements:
• Understanding the business rules or the processes of organization is vital to software
development.
• Business requirements define the project goal and the expected business benefits for
doing the project.
• The enterprise mission, values, priorities, and strategies must be known to understand
the business requirements that cover higher level data models and scope of the models.
• The business analyst is well versed in understanding the concept of business flow as
well as the process being followed in the organization.
• The business analyst guides the client through the complex process that elicits the
requirements of their business.
User Requirements:
• User requirements are the high-level abstract statements supplied by the customer, end
users, or other stakeholders.
• These requirements are translated into system requirements keeping in mind user’s
views.
• These requirements are generally represented in some natural language with pictorial
representations or tables to understand the requirements.
• User requirements may be ambiguous or incomplete in description with less product
specification and little hardware/software configurations are stated in the user
requirements.
• There may be composite requirements with several complexities and confusions.
• In an ATM machine, user requirements allow users to withdraw and deposit cash.
System Requirements:
• System requirements are the detailed and technical functionalities written in a
systematic manner that are implemented in the business process to achieve the goal of
user requirements.
• These are considered as a contract between the client and the development organization.
• System requirements are often expressed as documents in a structured manner using
technical representations.
• The system requirements consider customer ID, account type, bank name, consortium,
PIN, communication link, hardware, and software. Also, an ATM will service one
customer at a time.
Functional Requirements:
• Functional requirements are the behavior or functions that the system must support.
• These are the attributes that characterize what the software does to fulfill the needs of
the customer.
• These can be business rules, administrative tasks, transactions, cancellations,
authentication, authorization, external interfaces, legal or regulatory requirements,
audit tracking, certification, reporting requirements, and historical data.
Nonfunctional Requirements:
• Nonfunctional requirements specify how a system must behave. These are qualities,
standards, constraints upon the systems services that are specified with respect to a
product, organization, and external environment.
• Nonfunctional requirements are related to functional requirements, i.e., how efficiently,
by how much volume, how fast, at what quality, how safely, etc., a function is
performed by a particular system.
• The examples of nonfunctional requirements are reliability, maintainability,
performance, portability, flexibility, reusability, security, scalability, capacity,
availability, recoverability, serviceability, manageability, integrity, and interoperability.
• Interface constraints
• Performance constraints: response time, security, storage space, etc.
• Operating constraints
• Life cycle constraints: maintainability, portability, etc.
• Economic constraints
Advantages of classifying software requirements include:
1. Better organization: Classifying software requirements helps organize them into
groups that are easier to manage, prioritize, and track throughout the development
process.
2. Improved communication: Clear classification of requirements makes it easier to
communicate them to stakeholders, developers, and other team members. It also
ensures that everyone is on the same page about what is required.
3. Increased quality: By classifying requirements, potential conflicts or gaps can be
identified early in the development process. This reduces the risk of errors, omissions,
or misunderstandings, leading to higher quality software.
4. Improved traceability: Classifying requirements helps establish traceability, which is
essential for demonstrating compliance with regulatory or quality standards.
Disadvantages of classifying software requirements include:
1. Complexity: Classifying software requirements can be complex, especially if there are
many stakeholders with different needs or requirements. It can also be time-consuming
to identify and classify all the requirements.
2. Rigid structure: A rigid classification structure may limit the ability to accommodate
changes or evolving needs during the development process. It can also lead to a siloed
approach that prevents the integration of new ideas or insights.
3. Misclassification: Misclassifying requirements can lead to errors or misunderstandings
that can be costly to correct later in the development process.