Notes SEv2 Merged
Notes SEv2 Merged
Engineering on the other hand, is all about developing products, using well-
defined, scientific principles and methods.
1
Software Evolution Laws
Lehman has given laws for software evolution. He divided the software into
three different categories:
• Operational
• Transitional
• Maintenance
Operational
This tells us how well software works in operations. It can be measured on:
• Budget
• Usability
2
• Efficiency
• Correctness
• Functionality
• Dependability
• Security
• Safety
Transitional
This aspect is important when the software is moved from one platform to
another:
• Portability
• Interoperability
• Reusability
• Adaptability
Maintenance
This aspect briefs about how well a software has the capabilities to maintain
itself in the ever-changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
In short, Software engineering is a branch of computer science, which uses
well-defined engineering concepts required to produce efficient, durable,
scalable, in-budget and on-time software products.
3
Good technical knowledge of the project range (Domain knowledge).
High motivation.
Intelligence.
Discipline, etc.
4
issue one by one. All these small problems are solved independently to
each other.
2. To minimize software cost: Software needs a lot of hardwork and
software engineers are highly paid experts. A lot of manpower is
required to develop software with a large number of codes. But in
software engineering, programmers project everything and decrease all
those things that are not needed. In turn, the cost for software
productions becomes less as compared to any software that does not
use software engineering method.
3. To decrease time: Anything that is not made according to the project
always wastes time. And if you are making great software, then you
may need to run many codes to get the definitive running code. This is
a very time-consuming procedure, and if it is not well handled, then this
can take a lot of time. So if you are making your software according to
the software engineering method, then it will decrease a lot of time.
4. Handling big projects: Big projects are not done in a couple of days,
and they need lots of patience, planning, and management. And to
invest six and seven months of any company, it requires heaps of
planning, direction, testing, and maintenance. No one can say that he
has given four months of a company to the task, and the project is still
in its first stage. Because the company has provided many resources to
the plan and it should be completed. So to handle a big project without
any problem, the company has to go for a software engineering method.
5. Reliable software: Software should be secure, means if you have
delivered the software, then it should work for at least its given time or
subscription. And if any bugs come in the software, the company is
responsible for solving all these bugs. Because in software engineering,
testing and maintenance are given, so there is no worry of its reliability.
6. Effectiveness: Effectiveness comes if anything has made according to
the standards. Software standards are the big target of companies to
make it more effective. So Software becomes more effective in the act
with the help of software engineering.
5
1950s-1960s: Early Days and Software Crisis
6
The growth of the internet and the rise of e-commerce led to increased
demand for web applications and software.DevOps practices emerged,
emphasizing collaboration between development and operations teams
to streamline software delivery.
7
Design: Based on the requirements, the software system's architecture,
components, and interfaces are designed. This includes both high-level
architectural design and low-level detailed design.
Testing: Software testing is crucial to identify and fix bugs, ensure the
software works as intended, and meets the defined requirements.
Testing includes unit testing, integration testing, system testing, and
more.
Version Control: Version control systems like Git help manage changes
to the source code, allowing multiple developers to collaborate efficiently
and track the evolution of the software over time.
8
Scrum: A specific Agile framework that organizes work into time-bound
iterations called sprints.
Exercises
References:
9
Software Engineering Code of Ethics and Professional Practice (Short
Version)
PREAMBLE
The short version of the code summarizes aspirations at a high level of the
abstraction; the clauses that are included in the full version give examples
and details of how these aspirations change the way we act as software
engineering professionals. Without the aspirations, the details can become
legalistic and tedious; without the details, the aspirations can become high
sounding but empty; together, the aspirations and the details form a
cohesive code.
Requirement Analysis
Design Development
Phases
Coding
Testing
Maintenance
Project Management
Relative Efforts to Phases
Feasibility Study
• Main aim of feasibility study is to determine whether
developing the product
– financially worthwhile
– technically feasible.
• First roughly understand what the customer wants:
– different data which would be input to the system,
– processing needed on these data,
– output data to be produced by the system,
– various constraints on the behavior of the system.
Feasibility Study
• The outputs of the feasibility research are:
– Abstract problem definition
– Formulation of the different solution strategies
– Analysis of alternative solution strategies
Requirements Analysis and
Specification
• Aim of this phase are:
– understand the exact requirements of
the customer,
– document them properly.
• Consists of two distinct activities:
– requirements gathering and analysis
– requirements specification.
Requirements Analysis and
Specification
• Client requirements are filled into Software
Requirement Specification (SRS)
document
• Engineers doing requirements analysis
and specification:
– are designated as analysts
Design
• Transform requirements in the SRS
document into a possible implementation
• Using either Traditional or Object oriented
approaches.
• During design software architecture is
derived from the SRS document.
Implementation (Coding and Unit
Testing)
• Implementation phase translate software
design into source code.
• During the implementation phase:
– each module of the design is coded
• follows the company’s coding standard
– Commenting , variable naming … etc
A A
Advantages of Incremental Model
• Deliver value to customer earlier
• Apply feedback for future development to
deliver better value
• Reduces chances of errors in final product
• Useful in the situation when staffing is
unavailable for complete implementation by
the business deadline established for the
project
• Planned to manage technical risks.
• Total cost of project is distributed.
Disadvantages of Incremental Model
● Often, difficult to subdivide problems into
functional units:
• Model requires well defined project planning
schedule to distribute the work properly.
• You don’t know all the requirements upfront
may be end up with doing some extra work.
• Changes may change the cost.
• Well define interfaces are required to
connect modules developed with each
phase.
Quiz
• Which of the two is the software
development model that can better
respond to changes in the requirements?
a. Waterfall model
b. Agile Model
Prototyping Model
• Prototyping is defined as the process of
developing a working replication of a product or
system that has to be engineered.
• Before starting actual development,
– a working prototype of the system should first be built
with:
• limited functional capabilities,
• low reliability,
• inefficient performance.
Prototype: a system which is incomplete and then
modifying and augmenting it as the user
requirements become clear
Prototyping Model cont…
● Start with approximate requirements.
● Carry out a quick design.
● Prototype model is built using several short-
cuts:
– Short-cuts might involve using inefficient,
inaccurate, or dummy functions.
● A function may use a table look-up rather than
performing the actual computations.
Prototyping Model cont…
● The developed prototype is submitted to the
customer for his evaluation:
– Based on the user feedback, requirements are
refined.
– This cycle continues until the user approves the
prototype.
● The actual system is developed using the
classical waterfall approach.
Prototyping Model cont…
Build Prototype
Refine Implement
Requirements
Test
Maintain
44
Reasons for developing a
Prototype
• This model is recommended when the customers do not
know the exact project requirements beforehand.
• Illustrate to the customer:
– input data formats, messages, reports, or interactive
dialogs.
• Examine technical issues associated with product
development:
– Often major design decisions depend on issues like:
• response time of a hardware controller,
• efficiency of a sorting algorithm, etc.
Reasons for developing a
Prototype
• The third reason for developing a
prototype is:
– it is impossible to ``get it right'' the first
time,
– we must plan to throw away the first
product
• if we want to develop a good product
Types of Prototype Model
• Exploratory Development Prototype model
– Objective is to work with the user to explore their
requirements and deliver a final system.
– Starts with the part of the system that re
understood and then evolve as the user proposes
new features.
• Throw away Prototype model
– Objective is to understand the user requirements
and develop a better requirements definition for
the system.
Prototyping Problems
• No. of iteration should be under control
• Developer often makes implementation
compromises in order to get a prototype
working quickly.
– Inappropriate operating system or
programming language may be used simply
because it is available and known
• If end user/client is not satisfied with initial
prototype, he may loose interest in the
project.
Prototyping Problems
• Requires extensive customer collaboration
– Costs customer time/money
– Needs committed customers
– May be too customer specific, no broad
market
• Difficult to know how long project will last.
Quiz
Which of the options is correct for the prototyping
model of software development?
a. For projects with large development teams.
b.. When requirements are well defined.
c. When a customer cannot define requirements
clearly.
d. both a & b
e. All of the above
Case Study
A startup is developing a new mobile application for
language learning. The founders have a basic idea of the
features they want but are open to exploration and
feedback from potential users.
Questions:
1.Explain how the Prototype model could be utilized in the development
of the language learning mobile application.
2.What are the main benefits of using a Prototype model in a project
like this?
3.Discuss the challenges that might arise when using prototypes,
especially in terms of managing client expectations.
4.Can you describe a scenario where the Prototype model might not be
the best fit for a project?
Software Development
Process Models Cont…
Spiral Model
● Proposed by Boehm in 1988.
● combines elements of both waterfall and iterative
development models.
● Cyclic in nature.
● Reason: traditional software life cycle models do not
deal sufficiently with the uncertainty.
● Boehm tried to incorporate the “project risk” factor
into a life cycle model.
● Waterfall model + risk analysis & Management +
support & management processes.
Key Characteristics
• Iterative Development: The project passes
through a set of spirals (phases) iteratively.
• Risk Management: Each iteration focuses on
identifying and mitigating risks.
• Prototyping: It allows for building prototypes at
each phase to evaluate risks.
• Flexible and Adaptable: Requirements can
evolve through iterations.
Phases in Spiral Model
• Planning/Objective defined: Requirements are
gathered, and project goals are defined.
• Risk Analysis: Possible risks are identified, and
solutions or workarounds are planned.
• Engineering: Actual development of the
software based on the requirements and risk
analysis.
• Evaluation: The software is evaluated by the
customer, and feedback is collected for the next
iteration.
Spiral Model cont…
• Each phase of the
Spiral Model is
divided into four
quadrants:
– Objectives
determination and
identify alternative
solutions
– Identify and resolve
Risks:
– Develop the next
version of the
Product:
– Review and plan for
the next Phase:
– First Quadrant: Planning (objective setting,
Constraints, & alternative solutions)
● Objectives such as performance, functionality, ability to
accommodate change, HW/SW interface, and critical
success factors are identified.
● Alternative means implementation of the product or
portion of the product by build reuse, buy, subcontract,
etc.
● Constraints imposed on the application : costs, schedule,
interface, environmental limitation, etc.
Second Quadrant: Risk Analysis ( Evaluate
alternatives, Risk Assessment and mitigation)
– Alternative solutions are evaluated and examine the
risks associated with these objectives.
– Risk: any adverse circumstance that might hamper
the successful completion of a software project.
Question:
How can the Spiral Model help the development team to
create an effective prototype for the data analytics platform?
Sample Answer
The Spiral Model's iterative nature is well-suited for developing
prototypes, particularly when requirements are not well-defined.
In the initial spiral iteration, the team can focus on gathering
requirements from the client and defining the scope of the
prototype. Subsequent iterations can then be used to develop
and refine key functionalities and user interface elements based
on stakeholder feedback.
By incorporating user input early and often, the team can ensure
that the prototype meets the client's expectations and
demonstrates the desired features and functionality of the data
analytics platform. Additionally, the Spiral Model allows for
flexibility in adjusting the prototype based on changing
requirements or priorities as the project progresses.
Quiz
• Which model emphasizes delivering a functional
version of the software early, with additional
features added in later versions?
a. Waterfall Model
b. Prototype Model
c. Incremental Model
d. Spiral Model
The RAD Model
• The Rapid Application Development methodology was
developed to respond to the need to deliver systems
very fast.
– incremental software development process model
that allows usable systems to be built in as little as
60-90 days.
• Important feature of RAD model is increased
involvement of the user/customer at all stages
• Emphasizes on an extremely short development cycle
• Takes advantage of automated tools and techniques to
restructure the process of building information
systems.
The RAD Model
• In RAD a prototype is a working model
that is functionally equivalent to a
component of the product.
– Components or functions are developed in
parallel as if they were mini projects.
• In RAD model the functional modules are
developed in parallel as prototypes and
are integrated to make the complete
product for faster product delivery.
The RAD Model
Team # n
M o d e lin g
business m odeling
dat a m odeling
process m odeling
Co n s t r u c t io n
com ponent reuse
Team # 2 aut om at ic code
Com municat ion generat ion
t est ing
Mo d eling
b u si n e ss m o d e l i n g
dat a m odeling
p ro ce ss m o d e l i n g
Planning
Co nst r uct io n De ployme nt
Team # 1 co m p o n e n t re u se int egrat ion
a u t o m a t i c co d e
g e n e ra t i o n deliv ery
Mode ling t e st i n g feedback
business modeling
dat a modeling
process modeling
6 0 - 9 0 days
RAD Characteristics
• Iterative development
• Prototyping
• User involvement
• Time-boxed development
• Incremental delivery
• Flexible and adaptive
RAD Model Application
• When a system can be modularized to be delivered in
incremental manner.
• It should be used if there is high availability of designers
for modeling.
• It should be used only if the budget permits use of
automated code generating tools.
• RAD SDLC model should be chosen only if domain
experts are available with relevant business knowledge.
• Should be used where the requirements change during
the course of the project and working prototypes are to
be presented to customer in small iterations of 2-3
months.
RAD Model Application Cont..
• On system that do not require high
performance.
• When reusable parts are available.
• On system with reasonably well known
requirements.
Disadvantages
• Highly specialized and skilled developers are required.
• Model is ineffective if system can not be properly
modularized.
• Absence of reusable components can lead to a failure of
the project.
• Dependency on user involvement
• An efficient, accelerated development process must be
in place for quick response and feedback.
• Risk of scope creep
Case Study
• A real-world example of the RAD model in action is
the development of the TurboTax software by Intuit.
– TurboTax is a tax preparation software used by millions of
individuals and businesses to file their taxes each year.
– Intuit employs a RAD approach to continuously improve
TurboTax based on user feedback and changing tax laws.
The company releases new versions of the software
annually, with updates and enhancements based on
customer input and iterative development cycles.
– Intuit's use of the RAD model allows it to quickly adapt to
changing user needs and regulatory requirements while
maintaining a user-friendly interface and reliable
performance.
Other Process Models
• Component based development—the process to apply
when reuse is a development objective
• Formal methods—emphasizes the mathematical
specification of requirements
• Aspect-Oriented Software Development—provides a
process and methodological approach for defining,
specifying, designing, and constructing aspects
• Unified Process—a “use-case driven, architecture-
centric, iterative and incremental” software process
closely aligned with the Unified Modeling Language
(UML)
• Agile Model
Quiz
• What is the primary goal of the Evaluation
phase in the Spiral Model?
a. To develop the final product
b. To identify and mitigate risks
c. To gather user feedback
d. To create detailed design documents
Discussion Questions
• What problem would a software development
organization face if it does not have a
documented process model, and therefore ,
follows only an informally described life cycle
model?
• What do you mean by the “99% complete”
syndrome in software development? Why does it
occur? What is its implication for project
management and what are its remedies?
Questions?
Rapid Action Development Model
To RAD or not to RAD
The Rapid Application Development methodology was developed to respond to the need to deliver systems very fast.
The RAD approach is not appropriate to all projects - an air traffic control system based on RAD would not instill
much confidence. Project scope, size and circumstances all determine the success of a RAD approach. The following
categorize indicates suitability for a RAD approach:
PROJECT SCOPE
Suitable for RAD - Focused scope where the business objectives are well defined and narrow.
Unsuitable for RAD - Broad scope where the business objectives are obscure or broad.
PROJECT DATA
Suitable for RAD - Data for the project already exists (completely or in part). The project largely comprises analysis or
reporting of the data.
Unsuitable for RAD - Complex and voluminous data must be analyzed, designed and created within the scope of the
project.
PROJECT DECISIONS
Suitable for RAD - Decisions can be made by a small number of people who are available and preferably co-located.
Unsuitable for RAD - Many people must be involved in the decisions on the project, the decision makers are not
available on a timely basis or they are geographically dispersed.
PROJECT TEAM
Suitable for RAD - The project team is small (preferably six people or less).
Unsuitable for RAD - The project team is large or there are multiple teams whose work needs to be coordinated.
The RAD method has a task list and a work breakdown structure that is designed for speed. However the major
difference in RAD is a set of management techniques that are optimized for speed. Among the most important are:
- Prototyping - an approach based on creating a demonstrable result as early as possible and refining that result. The
refinement is based on feedback from the business, the eventual users of the system. Prototyping requires an open
approach to development, it also requires an emphasis on relationship management and change management. There
are dangers involved in starting prototype development too early and in starting it too late.
- Iteration - is a commitment to incremental development based on refinement. Prototyping and iteration go hand in
hand.
- Timeboxing - is a management technique that focuses attention on delivery above all else. Under a timebox scope
can change but delivery cannot.
Case Study:
A software development company has been contracted to build a new accounting software for a
large financial institution. The requirements are well-defined, and the client expects a detailed
plan before development begins.
Questions:
1. How would you apply the Waterfall model to this project?
2. What are the potential advantages and disadvantages of using the Waterfall model in
this scenario?
3. Discuss the implications of using the Waterfall model if there are changes in
requirements during the development process.
4. Can you suggest any modifications to the Waterfall model that might make it more
flexible for evolving requirements?
Sample Answer
1. Waterfall model is a liner sequential model consisting of following phases:
(i) Requirement Analysis: The software development company would start by
thoroughly analyzing the requirements provided by the financial institution. This
includes understanding their accounting processes, compliance needs, reporting
requirements, and user expectations.
(ii) Design: Once the requirements are well-understood, the company will proceed
with designing the architecture, database structure, user interface, and other
technical aspects of the accounting software.
(iii) Implementation: After the design, the development team would begin coding the
software based on the specifications outlined in the design phase.
(iv) Testing: After implementation, the software undergoes comprehensive testing to
ensure that it meets the specified requirements and functions as intended. The
testing process includes unit testing, integration testing, system testing, and user
acceptance testing.
(v) Deployment: After testing and approval by the client, it is deployed into the actual
environment for use by the financial institution.
(vi) Maintenance: The final phase involves providing ongoing maintenance and
support to address any issues, implement updates, and incorporate new features
as needed.
2. Advantages and Disadvantages of Using the Waterfall Model:
Advantages:
(i) Clear Documentation: The Waterfall model emphasizes detailed documentation at
each stage, helping to ensure that requirements are well-understood and project
progress is easily tracked.
(ii) Predictability: With a well-defined plan upfront, the project timeline, budget, and
deliverables are relatively predictable.
(iii) Structured Approach: The linear nature of the Waterfall model provides a
structured framework for development, making it easier to manage and track
progress.
Disadvantages:
(i) Rigid Phases: Progression from one phase to the next is strictly sequential,
which can lead to delays if any phase takes longer than anticipated.
(ii) Limited Flexibility: The Waterfall model is inflexible and does not easily
accommodate changes once the development process has begun.
(iii) Late Feedback: Since testing occurs towards the end of the project, any
issues or defects may not be identified until after significant resources have
been invested.
Case Study:
A startup is developing a new mobile application for language learning. The founders
have a basic idea of the features they want but are open to exploration and feedback
from potential users.
Questions:
1. Explain how the Prototype model could be utilized in the development of the language
learning mobile application.
2. What are the main benefits of using a Prototype model in a project like this?
3. Discuss the challenges that might arise when using prototypes, especially in terms of
managing client expectations.
4. Can you describe a scenario where the Prototype model might not be the best fit for a
project?
Ans:
1. Utilizing the Prototype Model in Language Learning App Development:
In the development of the language learning mobile application, the Prototype model can
be employed in several ways:
Initial Conceptualization: The team can start with a basic prototype that outlines the core
features and functionalities of the application. This prototype can serve as a visual
representation of the app's layout, user interface, and navigation flow.
Iterative Development: The Prototype model allows for iterative development, where the
team can gradually refine and enhance the application based on user feedback. They can
create multiple prototypes with incremental improvements to test different ideas and
gather user input.
User Testing and Feedback: Prototypes can be used to conduct user testing sessions where
potential users interact with the application and provide feedback. This feedback can be
invaluable in identifying usability issues, understanding user preferences, and refining the
overall user experience.
Early Validation: Prototypes allow for early validation of ideas and concepts before
investing significant time and resources into full-scale development.
User-Centered Design: By involving users in the prototyping process, the team can ensure
that the final product meets the needs and expectations of the target audience.
Cost-Effectiveness: Prototyping helps identify design flaws and usability issues early on,
reducing the cost of making changes later in the development process.
Scope Creep: Continuous iteration based on user feedback can lead to scope creep if not
managed properly. It's important to establish clear criteria for incorporating feedback and
prioritize features accordingly.
Resource Allocation: Developing prototypes requires time and resources, and there's a
risk of investing too much in prototyping without achieving tangible results.
Highly Technical Projects: In projects where the feasibility of technical aspects is the
primary concern, such as developing complex algorithms or intricate backend systems,
the Prototype model might not be the best fit. In such cases, a more research-oriented or
proof-of-concept approach might be necessary before moving on to prototyping the user
interface and experience. Additionally, projects with rigid and well-defined requirements
may not benefit as much from the iterative nature of the Prototype model, as there may
be less room for exploration and iteration.
Agile Software Development
Process
Objective
Individuals and
over Process and tools
interactions
Comprehensive
Working software over
documentation
Source: www.agilemanifesto.org
Agile vs. Traditional S/W Development
Scrum Methodology
What is Scrum?
• Scrum Master
– Scrum expert in the team and responsible for gluing everything together and
ensuring that scrum is being done well.
– Help the product owner define value, the development team deliver the value, and
the scrum team to get to get better.
– The scrum master is a servant leader
– Scrum master helps the team to self-organize, focus on outcomes, get to a “done
increment,” and manage blockers
• Development Team
– Team of designers, programmers, writers etc.
– Work daily on product development i.e. Sprint
– How to improve development practices
– Self organize
The Scrum Framework
• A product owner creates a prioritized wish list called a product
backlog.
• During sprint planning, the team pulls a small chunk from the top of
that wish list, a sprint backlog, and decides how to implement those
pieces.
• The team has a certain amount of time — a sprint (usually two to
four weeks) — to complete its work, but it meets each day to assess
its progress (daily Scrum).
• Along the way, the Scrum Master keeps the team focused on its
goal.
• At the end of the sprint, the work should be potentially shippable:
ready to hand to a customer, put on a store shelf, or show to a
stakeholder.
• The sprint ends with a sprint review and retrospective.
• As the next sprint begins, the team chooses another chunk of the
product backlog and begins working again.
Scrum Team
• Typically 4-8 people
• Cross-functional:
• Programmers, testers, user experience designers,
etc.
• Members should be full-time
• May be exceptions (e.g., Network administrator)
• Self organized
• Ideally, no titles but rarely a possibility
Keywords
• Product owner
– Define the features of the product
– Decide on release date and content
– responsible for the profitability of the product (ROI)
• Adjust features and priority every iteration, as
needed
• Accept or reject work results
• The Scrum Master
• Represents management to the project
• Removes impediments
• Ensure that the team is fully functional and productive
• Enable close cooperation across all roles and functions
• Shield the team from external interferences
• Sprints
– Scrum projects make progress in a series of “sprints”
– Typical duration is 2–4 weeks or a calendar month at
most
– Product is designed, coded, and tested during the
sprint
Quiz
Q. Which of the following questions is not
relevant for regular Scrum Meeting?
a. What have you done since the last Daily Scrum
regarding this project?
b. What will you do between now and the next
Daily Scrum meeting regarding this project?
c. Would you be able to finish your work on time?
d. What impedes you from performing your work
as effectively as possible?
Scrum – Roles, Artifacts, Ceremonies
Quiz
• When is a Sprint Retrospective
ceremony performed?
a. At the end of each Sprint
b. Whenever needed
c. Whenever the Product Owner
suggests
d. Whenever the Scrum Master
suggests
Kanban
(A framework used to implement agile software development)
Questions?
What is a Requirement?
One of the most critical aspects of Software Product Management deal with conditions
known as requirements. Many definitions have been developed to describe “requirements.”
A requirement is most easily understood as a specific description of your client’s needs,
which can be used to help create a real-world product.
The Institute of Electrical and Electronics Engineers (IEEE) defines a requirement as:
1. Eliciting requirements
2. Expressing requirements
3. Prioritizing requirements
4. Analyzing requirements
5. Managing requirements
With these activities, the right requirements can be established, written in proper form,
and even improved.
Eliciting Requirements
Clients often have ideas about what features they would like in a product and what these
features should look like. Many clients, however, have limited knowledge of how software is
built and vague ideas regarding what makes a project successful. It can be difficult then for
1
clients to understand what they truly require in a product. It is the role of the software
product manager to help the client figure out what they “want” and what they “need.”
A “want” is usually a functionality or feature that the client would like the product to have,
which may add value, but is not necessarily core to the product itself. A “need,” on the other
hand, is a core functionality that the product must have in order to fulfill the product’s
purpose. Needs should take priority in product development.
The best way to discover and develop “needs” and “wants” with your client is through
eliciting requirements, where you engage in discussion about the product with your client.
Through discussion, the software product manager and team can help provide insights on
what the client “needs” and “wants” the product to do, and how these goals can be feasibly
achieved. It may be that the initial vision the client had of the product will have changed, but
through involvement with the software product team, any changes should feel proactive and
the client should feel reassured that the team understands users’ needs.
Note that eliciting requirements as “needs” and “wants” does not necessarily mean that all
the client’s features and ideas that fall in the “want” category are not doable or should be
dismissed. In fact, these ideas may be very good. But it is the role of the software product
manager to make sure that the goals are feasible, client expectations are realistic, and the
product produced is the best possible result. Eliciting requirements should not be confused
with “requirements gathering.” “Requirements gathering” is the more passive approach of
simply asking the client what they would like done, and it often puts the development team
in a reactive process. Eliciting requirements, however, engages in in-depth discussion and
collaboration from the start of product development, so both the client and the development
team work together to build a successful product.
Expressing Requirements
Once client needs have been established by eliciting requirements, the activity of expressing
requirements comes into play. Expressing requirements involves framing the requirements
identified through discussion in a way that allows a product to be built.
Often, requirements are first described through notes from meetings with clients. From
there, better and more concrete representations can be used for expressing requirements.
Typical representations include use cases, user stories, or storyboards, among others.
These are often tailored to the project. They could be simple or complex, textual or visual. It
is up to the software product manager and team to determine and use representations that
would work best for the project at hand.
Prioritizing Requirements
2
Once a vision of what needs to be done for the project has been established through both
eliciting and expressing requirements, it is important to prioritize client needs, especially in
Scrum methodology.
• What requirements must be completed for the project and product to be successful?
• What requirements should be done? In other words, what is important but is not as time-
critical or could be satisfied another way or at a later time on the project?
• What could be done to improve the project or product but is not necessary? These
priorities are usually only included if both time and resources allow for it.
The questions outlined here closely follow the MoSCoW method of prioritization, developed
by Dai Clegg. This method is used to help reach an understanding with clients on the
importance of each requirement. “MoSCoW” is an acronym for the categories of “Must
have”, “Should have”, “Could have” and “Would like but won’t get.” By asking the questions
suggested here, requirements can be placed in these.
Analyzing Requirements
The process of examining the listed requirements of a project to ensure that they are clear,
complete, and consistent is known as analyzing requirements. Analyzing requirements
helps ensure that the product is the best one possible. It is an important process, and a
constant one. A project must be continually evaluated and requirements improved as it
progresses. This adaptive nature is important in Agile systems.
Managing Requirements
3
requirements are central to the many processes of product creation, including coding,
testing, and change logs.
Types of Requirements
Now that we’ve covered what requirements are and the activities involved with getting them
right, let’s dive into a little more detail and introduce some different types of requirements.
This notes will cover the following types of requirements:
• Business requirements
• Business rules
• User requirements
• Functional requirements
• Non-functional requirements
• External interfaces
• Development constraints
While business requirements and business rules can influence the project, it’s user
requirements, functional requirements, and non-functional requirements that are
considered the most essential requirements. Finally, external interfaces, physical product
settings, and development constraints are requirements that add context for design and
implementation of the product.
Business Requirements
There are many possible definitions for business requirements. In this course, business
requirements refer to those requirements that involve the purpose of the project. In business
requirements, goals are presented in concrete and specific terms. These goals are usually
tangible or quantifiable business values that can be used by business analysts.
An example of a business requirement might be: “The client needs to reduce errors in orders
made to their company by 25% by the end of next year to raise their yearly revenue by
$10,000.
Business Rules
Business requirements should not be confused with business rules, although they are often
associated. Business requirements deal with why the project was pursued, while business
4
rules are constraints on how the product will function. Business rules are sometimes
necessary to make a project appropriate or successful. They are often budgets, policies,
guidelines, or regulations. Examples of business rules include:
• Privacy policies
User Requirements Users or end-users are the people who will use the software once it has
been created. User requirements are the tasks that these users can accomplish with the
product, or what the product can do for the user. User requirements are very important
requirements to the project, if not the most important. They are part of the core functionality
of the product. For this reason, determining user requirements is usually very time
consuming.
• Use cases
• User stories
• Storyboards
• Scenarios
Scenarios refer to cases where the client or end-user describes user requirements in their
own words. These descriptions can sometimes be vague or non-specific. It is part of the role
of the software product manager to help organize and refine their needs in more concrete
manners, so the development team knows how to best build the product.
Use cases, user stories, and storyboards are explored in more depth below.
Functional Requirements
Functional requirements are those behaviours that the developed product should do or
support. These are usually expressed as inputs into the product, outputs of the product, or
a description of the behaviour itself. For example, input might be data related to a user’s
online purchase, including name, address, item purchased, and payment information. The
output in this scenario might be a notification email after the transaction is performed.
Often, functional requirements need to be expressed with depth and specificity. Information
flow diagrams are a graphical technique commonly used to show how data flows
5
throughoutthe system and the dependencies of all the system components. Together, an
information flow diagram shows how the entire system functions.
The following is an example of an information flow diagram for a customer using a credit card
with a product, and where the credit card information is verified before a receipt is generated
for the user.
Non-functional Requirements
6
reason. Non-functional requirements address product issues including accuracy,
dependability, security, usability, efficiency, performance, and maintainability.
External Interfaces
External interfaces requirements refer to those requirements related to how the product is
situated within a larger system. In other words, external interfaces do not concern
themselves with the physical environment of the product, but rather they are concerned with
the relationship of the product to other entities outside the product.
For example, a software application that retrieved information from a remote database to
display to users sits between the entities of the database and the end-user. An external
interface is used between each one. Interfaces also involve the way connections are made
through media, protocols, formats, and levels of compatibility.
External interfaces can be represented within data flow diagrams that show all the
components of a product, including outside entities. These data flow diagrams make explicit
reference to the flow of data from other entities and the product within an entire system.
Physical Setting
Physical setting requirements refer to how the product needs to be designed in order to
function in its physical environment. For example, if a product was being developed for
underwater exploration, it would need to be waterproof. Similarly, if the product was
designed for use in the desert, or in Antarctica, it would need to withstand and function in
those environments.
Development Constraints
7
Requirement Engineering
(Requirement Analysis & Specification)
Objective
•REQ1 On the “Stored Flight” screen, the user can only view one
record.
Does this mean that the user can “only view,” not delete or update,
or does it mean that the user can view only one record, not two or
three?
One way to fix the problem is to rewrite the requirement from the
system’s point of view:
•REQ1 On the “Stored Flight” screen, the system shall display only
one flight.
Verifiable Non-Functional Requirements
– Exception handling
– Questions addressed by functional requirements have answers that are
independent of a implementation of a solution to the customer’s problem
• Independent of type of programming language, hardware, kind of other resources,
etc.
Functional Requirements
● F1: Search Book
– Input:
● an author’s name:
– Output:
● details of the author’s books and the locations
of these books in the library.
Functional Requirements
• Examples:
(i) The user shall be able to search either all of the initial
set of databases or select a subset from it.
(ii) Users should be able to register, log in, and log out
securely from the website.
Nonfunctional Requirements
1. Introduction
1.1 Purpose
1.2 Scope
1.3 Definitions, Acronyms and Abbreviations
1.4 References
1.5 Overview
SRS - Introduction Section
• Purpose
– Definition, system overview, and background
– specify the intended audience for the SRS
• Scope
– identify the SW products to be produced by name
– explain what the SW product will do, and if necessary,
what it will not do
– describe the application of the SW being specified. ie.
benefits, objectives, goals as precisely as possible
• Overview
– describe what the rest of the SRS contains
– how the SRS is organized
SRS Prototype Outline
[ IEEE SRS Standard ]
2. General description
2.1 Product perspective
2.2 Product function summary
2.3 User characteristics
2.4 General constraints
2.5 Assumptions and dependencies
Product Perspective
• State whether the product is independent and
totally self contained
• If the product is component of a larger system
then:
– describe the functions of each component of the larger
system and identify interfaces
– overview of the principal external interfaces of this
product
– overview of HW and peripheral equipment to be used
• Give a block diagram showing the major
components of the product, interconnections,
and external interfaces.
Product Functions
• Provide a summary of functions the SW will
perform
• The functions should be organized in such a
way that they are understandable by the user
User Characteristics
• Describe the general characteristics of the
eventual users of the product. (such as
educational level, experience and technical
expertise )
General Constraints
• Regulatory policies
• HW limitations
• Interfaces to other applications
• Parallel operation
• Control functions
• Criticality of the application
• Safety and security considerations
SRS Prototype Outline
[ IEEE SRS Standard ]
3. Specific Requirements
- Functional requirements
- External interface requirements
- Performance requirements
- Design constraints
- Attributes eg. security, availability,
maintainability, transferability/conversion
- Other requirements
Appendices
Index
Appendices
• Not always necessary
• It may include:
– sample I/O formats
– DFD, ERD documents
– results of user surveys, cost analysis studies
– supporting documents to help readers of SRS
Example: Functional
Requirements
• List all functional requirements
– with proper numbering.
• Req. 1:
– Once the user selects the “search” option,
• he is asked to enter the key words.
– The system should output details of all books
• whose title or author name matches any of the key
words entered.
• Details include: Title, Author Name, Publisher
name, Year of Publication, ISBN Number, Catalog
Number, Location in the Library.
Example: Functional
Requirements
• Req. 2:
– When the “renew” option is selected,
• The user is asked to enter his membership
number and password.
– After password validation,
• The list of the books borrowed by him are
displayed.
– The user can renew any of the books:
• By clicking in the corresponding renew box.
Req.1:
• R.1.1:
– Input: “search” option,
– Output: user prompted to enter the key words.
• R1.2:
– Input: key words
– Output: Details of all books whose title or author
name matches any of the key words.
• Details include: Title, Author Name, Publisher name, Year of
Publication, ISBN Number, Catalog Number, Location in the
Library.
– Processing: Search the book list for the keywords
Req. 2:
• R2.1:
– Input: “renew” option selected,
– Output: user prompted to enter his membership
number and password.
• R2.2:
– Input: membership number and password
– Output:
• list of the books borrowed by user are displayed. User
prompted to enter books to be renewed or
• user informed about bad password
– Processing: Password validation, search books
issued to the user from borrower list and display.
Req. 2:
• R2.3:
– Input: user choice for renewal of the books
issued to him through mouse clicks in the
corresponding renew box.
– Output: Confirmation of the books renewed
– Processing: Renew the books selected by the
in the borrower list.
Quiz
• Identify the types of requirements based on
given below statement:
(i) The user shall be able to search either all of the initial set of
databases or select a subset from it.
(ii) The system should respond to user interactions within 2
seconds under normal load conditions, with a maximum
response time of 5 seconds during peak booking periods.
(iii) The system shall generate a unique identifier (ID) for each
registered patient to ensure data integrity and facilitate record
retrieval.
Software Engineering
Software Requirements Specification
(SRS) Document
Matthew Seiler
Danielle Paredes
Forrest Meade
Isaac McCraw
Nathan Velasquez
Bowtie Code
www.radford.edu/softeng10
Revisions
Draft 0.1 Matthew Seiler, Partial draft including introductory and functional 03/25/14
Forrest Meade requirements sections
Draft 0.2 Matthew Seiler, Pasted in references, performance requirements, and 03/27/14
Forrest Meade, usage scenarios. Added interface requirements, UML
use case diagram, non-functional requirements
Nathan
Velasquez,
Danielle Paredes,
Isaac McCraw
Bowtie Code 1
Contents
1. Introduction .............................................................................................................................3
1.1 Purpose of this document ..................................................................................................3
1.2 Scope of this document .....................................................................................................3
1.3 Overview ...........................................................................................................................3
1.4 Business Context ...............................................................................................................3
2. General Description .................................................................................................................4
2.1 Product Functions ..............................................................................................................4
2.2 Similar System Information ..............................................................................................4
2.3 User Characteristics ...........................................................................................................4
2.4 User Problem Statement ....................................................................................................4
2.5 User Objectives .................................................................................................................5
2.6 General Constraints ...........................................................................................................5
3. Functional Requirements .........................................................................................................5
4. Interface Requirements ..........................................................................................................11
4.1 User Interfaces .................................................................................................................11
4.2 Hardware Interfaces .........................................................................................................13
4.3 Communications Interfaces .............................................................................................13
4.4 Software Interfaces ..........................................................................................................13
5. Performance Requirements....................................................................................................13
6. Other non-functional attributes..............................................................................................13
6.1 Security ............................................................................................................................13
6.3 Reliability ........................................................................................................................13
6.4 Maintainability ................................................................................................................13
6.5 Portability ........................................................................................................................14
6.6 Extensibility .....................................................................................................................14
6.7 Reusability .......................................................................................................................14
6.8 Application Affinity/Compatibility .................................................................................14
7. Operational Scenarios ............................................................................................................14
8. Preliminary Use Case Models and Sequence Diagrams ........................................................15
8.1 Use Case Model ...............................................................................................................15
8.2 Sequence Diagrams .........................................................................................................15
9. Updated Schedule ..................................................................................................................15
10. Appendices ..........................................................................................................................15
10.1 Definitions, Acronyms, Abbreviations ..........................................................................15
10.2 References .....................................................................................................................16
Bowtie Code 2
1. Introduction
1.1 Purpose of this document
The purpose of this document is to provide a detailed description about the requirements
needed to successfully complete the Radford University Agenda mobile application for the
benefit of the project management, client, and development team. Throughout this document,
Bowtie Code will provide a general description of the project, the functional, interface, and
performance requirements for the application, a list of other relevant application attributes,
application usage scenarios, and use case diagrams, as well as an updated schedule
This requirements effort intends to define the requirements for the RU Agenda mobile
application. The requirements elicitation team includes Danielle Paredes, Forrest Meade,
Isaac McCraw, Matthew Seiler, Nathan Velasquez, and the client, Mr. Ryan Skipper. The
team will spend the period between March 4, 2014 and March 27, 2014 identifying and
documenting functional, interface, performance, and other requirements for the RU Agenda
software system. Actual time spent on requirements elicitation during that period will be
considerably less than the total 23 days scheduled, as the Spring Break holiday and midterm
exams are included in the same time span.
1.3 Overview
Bowtie Code 3
2. General Description
2.1 Product Functions
The RU Agenda app will allow Radford University students to access their class
schedules and manage their assignment information through an Android application. The
finished application will provide a way for users to access their class schedule by logging in
to Radford University’s systems, add, remove, and edit assignment info in a list of
assignments, and share assignment information with other users
The Apple iOS Reminders app allows users to associate a list of tasks with an email
account, and create tasks and reminders under that account that can notify the user near
planned completion time. The app boasts quick and seamless integration with iOS on the
iPhone, but is not targeted to student users, and thus is not class-based, cannot import a user’s
class schedule, and does not provide task attributes related to class assignments.
Although there exist many applications designed to help users manage their schedules
and tasks, there are currently no solutions which are designed specifically for Radford
University students. Other applications require that users manually manage their task
categories and task attributes, whereas an application which is targeted at students and is
integrated with Radford University’s student services would allow significantly more
automation and greater ease of use.
Bowtie Code 4
2.5 User Objectives
After signing in with my Radford University username and password, the application
should automatically import my current class schedule and any assignments associated with
those classes which have been uploaded by my instructors. The application should allow me
to add new assignments, edit current assignments, and remove old assignments. The
applications should alert me if there is an assignment or test due soon, and should make it
easy to quickly check what assignments are due next and which assignments are due for a
particular class. I should also be able to share the information about an assignment with
another student.
The application must run on the Android mobile operating system. A user’s Android
device must provide network connectivity (both hardware and software) in order for the
application to fully function. The system must use class data and authentication systems
which are already in place and provided by Radford University.
3. Functional Requirements
Criticality Scale
Non-Critical Non
Less Critical Less
Critical Normal
Very Critical Very
Extremely Critical Extreme
4. Interface Requirements
4.1 User Interfaces
The interface shows the user notifications for meetings in a personally designed agenda and
allows the user to continually customize their schedule by allowing the user to add events and
classes by a simple touch of the screen. Then the user may customize that event to specific detail
and specification.
4.1.1 GUI
Screen Mockups:
Bowtie Code 11
4.1.2 CLI
N/A
Bowtie Code 12
4.2 Hardware Interfaces
The app is designed for the Android phone and market.
5. Performance Requirements
System
The application will run on all Android devices running 4.1 (JellyBean) or Later. It will be
around 11mb in size. The application will respond to the size of the screen and/or window the
application is running in.
Response Time
The application should take less than 4 seconds when running on an Android phone and less than
8 second when on an emulator or tablet. The application will run fine until the user begins to
multi-task between 3 or more processes.
Workload
The application must support approximately 10,000 users at the time of launch based on the
population of the RU student body.
Scalability
The application will be able to scale to the size of the RU student body as it increases.
6.3 Reliability
Most functionality will not require network connectivity. System components that require
authentication through Radford University and network connectivity will function as long as the
systems maintained by the University are available.
6.4 Maintainability
The development team will follow best practices for clean code and software modularity in order
to make the application as maintainable as possible.
Bowtie Code 13
6.5 Portability
Users will be able to access this application on or off campus anytime on their mobile device
without the need of an internet connection.
6.6 Extensibility
The application will be highly extensible in terms of adding course and calendar details or views.
However, the application in general has low extensibility.
6.7 Reusability
An application instance shall be able to be reusable every semester for a returning student. The
user will be able to update their class schedule by having the application check for a registered
schedule set for the next semester and if the current school semester is over. Application
components will be able to be integrated into the larger RU Mobile application developed and
maintained by Radford University.
7. Operational Scenarios
1) Student arrives on campus the day before the semester starts and is informed about the RU
Agenda phone app by a friend. The student then begins to download and install the application
on to his/her mobile device. The student logs in to the application; having already registered for
classes; the application downloads the student’s schedule for them.
2) The semester begins and a new student has recently downloaded the new Radford University
app called RU Agenda. The student is on his way to his to his first class but before he leaves he
checks his RU Agenda app that has automatically downloaded his class schedule from a Radford
database to make sure he is headed to the correct class at the correct time. He logs in using his
new RU login information and notices his class is exactly when he thought and also notices
while maneuvering through the app that he has an assignment due in the class already.
Conveniently he acquires details about the assignment from the app and realizes the assignment
is not due for a few weeks. He carries on to his class as scheduled.
3) During the semester, the student is in one of his/her classes and the professor assigns an
assignment to the class. The student then goes onto RU Agenda to that specific class. There
he/she adds the assignment with its title, description, and due date for the assignment. Then it is
added to the list of assignments for that class conveniently for the student. The student then logs
off and continues listening in class.
4) While working on a homework assignment, the student receives an email from their instructor
notifying them that the due date for the assignment has been postponed. The student had already
added this assignment in their RU Agenda. They navigate to the view of assignments grouped
by class, select the appropriate class, and select the assignment to open a detailed view. From
there they edit the due date for the assignment to the new, postponed due date, and check the
notification settings for the assignment. The next day, after completing the assignment, they
open the RU Agenda app and remove the assignment from their list.
Bowtie Code 14
8. Preliminary Use Case Models and Sequence Diagrams
8.1 Use Case Model
Manage Class
Manage Assignment
View Schedule
View Assignment
list by due date
9. Updated Schedule
(See attached Excel document Project-Schedule.xlsx)
10. Appendices
10.1 Definitions, Acronyms, Abbreviations
“RU” – Radford University
“App” – Application
Bowtie Code 15
10.2 References
“myHomework Student Planner App.” instin, LLC., 2014. Web. 27 March 2014.
< https://myhomeworkapp.com/ >
“Koofers.” Koofers, Inc., 2014. Web. 27 March 2014. < https://www.koofers.com/ >
Lewis-Williams, Tracy. “ITEC 370 - Software Engineering I - Course Syllabus” 2014. PDF file.
Bowtie Code 16
Requirement Engineering
Learning Outcome
• After Completing the module student will
be able to understand the techniques for
representing complex logic.
Specification Languages or
Representation of complex
processing logic
• Requirements specification use some
specification language
• Language should have some desired
qualities
– Modifiability, understandability, unambiguous,
easy to learn and use..
Specification Languages
• Commonly used languages for
requirement specifications are
– Structured English
– Regular expressions
– Decision Trees
– Decision Tables
– Finite State Automata
Natural Language and Structured
English
• Natural language advantage is both client and
user/supplier understand the language
• Disadvantage is that due to vary nature of
language, written requirements will be imprecise
and ambiguous
• Natural language use in a more structured way :
structured English
– Requirements are broken into sections and
paragraphs
– Many organization specify strict use of words like
“shall, “perhaps”, and should”
Regular Expression
• String specification
• Useful for specifying things such as input data,
command sequence..
• Used in compiler construction
• Few basic constructs use in regular expressions:
– Atoms: basic symbols or the alphabet of the language
– Composition: formed by concatenating two regular
expressions.
– Alternation: specify the either/or relationship.
– Closure: specifies the repeated occurrence of a
regular expression
Example
Record File =(Name Reg. no.)
Name= (Last First)
Reg. No = digit digit digit digit
Digit = (0-9)
Decision Trees
1. Ease of Use 5 3 1
2. Remote Access 5 3 3
3. Voice Control 5 3
4. Security Features 5 3 5 1
5. Energy Efficiency 5 3 1
6. Customizable Scenes 5
8. User Notifications 5 3
9. Installation Support 1 5
Good Requirements Example
• Response time for all level-1 actions will
be less than 100ms.
• 95% of the transactions shall be
processed in less than 1sec.
• MTBF shall be 100 hrs. of continuous
operation.
Bad Requirements Example
• The system will be fast.
• Errors shall be less than 98%.
• The system shall be maintainable.
• The system shall be completely reliable.
Keywords
• Requirement Elicitation
– It is a practice of researching and discovering
the requirements of a system from users,
customers, and other stakeholders.
– The practice is also sometimes referred to as
"requirement gathering & analysis “
– Why Elicitation is important?
• Many stakeholders are unable to accurately articulate
the business problem and therefore, analysts
performing the elicitation need to ensure that
the requirements produced are clearly understandable,
useful and relevant.
Keywords
• Requirement Elicitation Techniques
– Stakeholder Analysis
– Quality Function Deployment (QFD)
– Joint Application Design (JAD)
– Focus Group
– Brainstorming
– Prototyping
Questions?
What is a Requirement?
One of the most critical aspects of Software Product Management deal with conditions
known as requirements. Many definitions have been developed to describe “requirements.”
A requirement is most easily understood as a specific description of your client’s needs,
which can be used to help create a real-world product.
The Institute of Electrical and Electronics Engineers (IEEE) defines a requirement as:
1. Eliciting requirements
2. Expressing requirements
3. Prioritizing requirements
4. Analyzing requirements
5. Managing requirements
With these activities, the right requirements can be established, written in proper form,
and even improved.
Eliciting Requirements
Clients often have ideas about what features they would like in a product and what these
features should look like. Many clients, however, have limited knowledge of how software is
built and vague ideas regarding what makes a project successful. It can be difficult then for
1
clients to understand what they truly require in a product. It is the role of the software
product manager to help the client figure out what they “want” and what they “need.”
A “want” is usually a functionality or feature that the client would like the product to have,
which may add value, but is not necessarily core to the product itself. A “need,” on the other
hand, is a core functionality that the product must have in order to fulfill the product’s
purpose. Needs should take priority in product development.
The best way to discover and develop “needs” and “wants” with your client is through
eliciting requirements, where you engage in discussion about the product with your client.
Through discussion, the software product manager and team can help provide insights on
what the client “needs” and “wants” the product to do, and how these goals can be feasibly
achieved. It may be that the initial vision the client had of the product will have changed, but
through involvement with the software product team, any changes should feel proactive and
the client should feel reassured that the team understands users’ needs.
Note that eliciting requirements as “needs” and “wants” does not necessarily mean that all
the client’s features and ideas that fall in the “want” category are not doable or should be
dismissed. In fact, these ideas may be very good. But it is the role of the software product
manager to make sure that the goals are feasible, client expectations are realistic, and the
product produced is the best possible result. Eliciting requirements should not be confused
with “requirements gathering.” “Requirements gathering” is the more passive approach of
simply asking the client what they would like done, and it often puts the development team
in a reactive process. Eliciting requirements, however, engages in in-depth discussion and
collaboration from the start of product development, so both the client and the development
team work together to build a successful product.
Expressing Requirements
Once client needs have been established by eliciting requirements, the activity of expressing
requirements comes into play. Expressing requirements involves framing the requirements
identified through discussion in a way that allows a product to be built.
Often, requirements are first described through notes from meetings with clients. From
there, better and more concrete representations can be used for expressing requirements.
Typical representations include use cases, user stories, or storyboards, among others.
These are often tailored to the project. They could be simple or complex, textual or visual. It
is up to the software product manager and team to determine and use representations that
would work best for the project at hand.
Prioritizing Requirements
2
Once a vision of what needs to be done for the project has been established through both
eliciting and expressing requirements, it is important to prioritize client needs, especially in
Scrum methodology.
• What requirements must be completed for the project and product to be successful?
• What requirements should be done? In other words, what is important but is not as time-
critical or could be satisfied another way or at a later time on the project?
• What could be done to improve the project or product but is not necessary? These
priorities are usually only included if both time and resources allow for it.
The questions outlined here closely follow the MoSCoW method of prioritization, developed
by Dai Clegg. This method is used to help reach an understanding with clients on the
importance of each requirement. “MoSCoW” is an acronym for the categories of “Must
have”, “Should have”, “Could have” and “Would like but won’t get.” By asking the questions
suggested here, requirements can be placed in these.
Analyzing Requirements
The process of examining the listed requirements of a project to ensure that they are clear,
complete, and consistent is known as analyzing requirements. Analyzing requirements
helps ensure that the product is the best one possible. It is an important process, and a
constant one. A project must be continually evaluated and requirements improved as it
progresses. This adaptive nature is important in Agile systems.
Managing Requirements
3
requirements are central to the many processes of product creation, including coding,
testing, and change logs.
Types of Requirements
Now that we’ve covered what requirements are and the activities involved with getting them
right, let’s dive into a little more detail and introduce some different types of requirements.
This notes will cover the following types of requirements:
• Business requirements
• Business rules
• User requirements
• Functional requirements
• Non-functional requirements
• External interfaces
• Development constraints
While business requirements and business rules can influence the project, it’s user
requirements, functional requirements, and non-functional requirements that are
considered the most essential requirements. Finally, external interfaces, physical product
settings, and development constraints are requirements that add context for design and
implementation of the product.
Business Requirements
There are many possible definitions for business requirements. In this course, business
requirements refer to those requirements that involve the purpose of the project. In business
requirements, goals are presented in concrete and specific terms. These goals are usually
tangible or quantifiable business values that can be used by business analysts.
An example of a business requirement might be: “The client needs to reduce errors in orders
made to their company by 25% by the end of next year to raise their yearly revenue by
$10,000.
Business Rules
Business requirements should not be confused with business rules, although they are often
associated. Business requirements deal with why the project was pursued, while business
4
rules are constraints on how the product will function. Business rules are sometimes
necessary to make a project appropriate or successful. They are often budgets, policies,
guidelines, or regulations. Examples of business rules include:
• Privacy policies
User Requirements Users or end-users are the people who will use the software once it has
been created. User requirements are the tasks that these users can accomplish with the
product, or what the product can do for the user. User requirements are very important
requirements to the project, if not the most important. They are part of the core functionality
of the product. For this reason, determining user requirements is usually very time
consuming.
• Use cases
• User stories
• Storyboards
• Scenarios
Scenarios refer to cases where the client or end-user describes user requirements in their
own words. These descriptions can sometimes be vague or non-specific. It is part of the role
of the software product manager to help organize and refine their needs in more concrete
manners, so the development team knows how to best build the product.
Use cases, user stories, and storyboards are explored in more depth below.
Functional Requirements
Functional requirements are those behaviours that the developed product should do or
support. These are usually expressed as inputs into the product, outputs of the product, or
a description of the behaviour itself. For example, input might be data related to a user’s
online purchase, including name, address, item purchased, and payment information. The
output in this scenario might be a notification email after the transaction is performed.
Often, functional requirements need to be expressed with depth and specificity. Information
flow diagrams are a graphical technique commonly used to show how data flows
5
throughoutthe system and the dependencies of all the system components. Together, an
information flow diagram shows how the entire system functions.
The following is an example of an information flow diagram for a customer using a credit card
with a product, and where the credit card information is verified before a receipt is generated
for the user.
Non-functional Requirements
6
reason. Non-functional requirements address product issues including accuracy,
dependability, security, usability, efficiency, performance, and maintainability.
External Interfaces
External interfaces requirements refer to those requirements related to how the product is
situated within a larger system. In other words, external interfaces do not concern
themselves with the physical environment of the product, but rather they are concerned with
the relationship of the product to other entities outside the product.
For example, a software application that retrieved information from a remote database to
display to users sits between the entities of the database and the end-user. An external
interface is used between each one. Interfaces also involve the way connections are made
through media, protocols, formats, and levels of compatibility.
External interfaces can be represented within data flow diagrams that show all the
components of a product, including outside entities. These data flow diagrams make explicit
reference to the flow of data from other entities and the product within an entire system.
Physical Setting
Physical setting requirements refer to how the product needs to be designed in order to
function in its physical environment. For example, if a product was being developed for
underwater exploration, it would need to be waterproof. Similarly, if the product was
designed for use in the desert, or in Antarctica, it would need to withstand and function in
those environments.
Development Constraints
7
Client Needs and Software Requirements
Module 2: Client Interactions
User Considerations
When designing a product, one of the most important things to take into consideration is the
end-user. End-users are the people who will use the product. They are among the
stakeholders of the project.
A stakeholder is anyone affected by or who has an effect on the success of the project, such
as end-users, clients, managers of end-users, and system administrators. A successful
project addresses the needs of all stakeholders.
There are three types of stakeholders or users: primary users, secondary users, and tertiary
users.
Primary users are end-users, or the people who will use the product. Secondary users are
those people who will occasionally use the product or use it through an intermediary. They
may not be the target audience, but they could be related to the target audience in some
way, such as parents of children who use a product designed for children. Tertiary users are
those who are affected by the use of the product or make decisions about the product, such
as clients.
A product should be designed to be something users can navigate and want to use. This is
primarily accomplished through good user interface (UI) design. UI is what is seen when
using the product, and it can encompass anything an end-user interacts with—features such
as windows, buttons, scrollbars, checkboxes, and text boxes. Good UI design is important.
If there are many similar products on the market, users will easily move on to another
1
product if they do not like what they are currently using. An entire discipline known as human
computer interaction (HCI) studies how end-users interact with technology products.
When designing software, it is also important to consider the numerous limitations users
are faced with. These limitations are related to human limitations. They include:
2
Involving Clients and Users
Below are some key points to remember when interacting with clients.
Try to keep a good balance between being assertive and open to client ideas and
perspectives. It is not good to just accept ideas passively. The software product manager
and development team should suggest ideas and perspectives in meeting with the client,
but they should not enforce their viewpoints aggressively.
The software product manager should try to provide structure in conversations with the
client about requirements. This will help the client organize his or her thoughts. Care must
be taken not to steer the client, however.
Clients sometimes come with set ideas about what they want in a product. However, they
sometimes don’t know what is possible technically, or they have ideas that would actually
be hard for end-users to understand or use. The software product manager should try to
understand why the client has set upon these ideas. A good way to do this is to ask the client
to explain how they envision an end-user interacting with the product. Once the client’s
reasoning is understood, alternative ideas can be suggested. It may also be useful to politely
highlight why certain ideas may not work. This can also be done through exploring limitations
and different scenarios.
Note that it is the role of the software product manager to make sure a client is well informed
and understands their options. However, at the end of the day, the client is the one who
3
makes the key decisions regarding requirement, even if the development team would prefer
to go a different route.
Requirements should be revisited often with the client. After a first meeting, for example, it
is a good idea to show the client mock-ups and prototypes produced from initial
discussions. With these concrete tools, clients can more readily identify what they like in a
product, what they want, and what they dislike. Revisiting requirements also allows clients
to answer questions, advise on design choices, and provide feedback.
An important tool for interacting with clients is the use and creation of a glossary. A glossary
is a list of terms and their definitions that relate specifically to the product being built. It is
common for many different terms to be generated for the same thing if a glossary is not used
and agreed upon, which can make discussions confusing.
4
• Keep track of requirements
Use Cases
Use cases, developed by Ivar Jacobson in 1986, are a good tool for understanding a product.
They can be defined as a way to identify, clarify, and organize details of a task within a
product. Uses cases take place in particular environments to achieve particular goals. In
other words, it’s a way of explaining a set of sequential interactions users might have with
the features of a product.
A good use case outlines the proposed task from the point of view of a participating actor
(usually a user), and it should not require deep knowledge of technology to understand. Use
cases may be presented in tables as outlined below
5
6
For example, a completed use case would look like:
It is helpful to depict the use cases of a product with a diagram (see below). Use case
diagrams are high-level, visual representations outlining all the tasks supported by the
product being created. Actors and their respective uses cases are also represented. Overall,
the diagram should show the entire product, tasks that may be undertaken while engaging
with the product, and roles supported by the product
7
Use cases are a useful tool for software product managers and their development teams
when establishing requirements. By creating use cases and sharing them with clients, the
project has more definite guidelines, and development tasks become more organized and
elaborate.
Wireframes
One of the most important techniques of product development is the use of wireframes. A
wireframe, also known as a mock-up, can be thought of as a kind of early blueprint. It is a
basic visual representation of the product. See the example below of what a biography web
page might look like
8
Wireframes are used for many purposes. These include:
• demonstrating ideas to clients or users and encouraging their feedback and involvement
• helping the client or users communicate with the software product manager and team
(some people may find it easier to sketch out their ideas to describe them).
Instead, wireframes may suggest things like where buttons, text fields, and images are
placed. The elements displayed should theoretically allow a user to do a task with the
product. As in a blueprint for a house, for example, details such as wall colours or lighting
fixtures are not outlined. Later, detailed user interface (UI) design can develop further.
Wireframes are usually developed quickly after an initial discussion with the client regarding
requirements and presented thereafter. Clients then have a chance to see an early version
of what their product might look like and provide feedback. It also ensures that both the
client and development team are working towards the same vision.
9
Storyboards
Another technique used to help in forming requirements are storyboards. Many disciplines
make use of storyboards. In software development, storyboards are sequential, visual
representations of an interaction with the software product.
There are two main types of storyboards. Both types can be helpful for discussions between
clients and the development team. Storyboards help to elicit further requirements of the
product and refine existing ones.
The first type of storyboard describes high-level user experience with the product. This type
of storyboard tends to look like a comic strip, where each action is illustrated in the
sequence or flow of using a product, including the decision to use the product and outcomes
at the end of an interaction. If multiple features are offered in the product, then each should
get a storyboard.
10
Captains in the panels should read:
1. The Smith family decided to go to Brampton’s Pizza for a nice family dinner.
2. They are seated at a table and use the tablets at the table to browse the menu.
3. They browse the dishes on the application and place their order.
5. The food was delivered to the table once it was read and they have a nice family dinner.
6. Once they were finished their meal, the mother viewed and paid for the bill on the
application.
Generally, the envisioned user, or participating actor (as described in use cases) in this type
of storyboard, is given a persona. Personas provide more elaborate back stories to the
participating actors, including details such as age, ethnicity, income level, job, personality,
etc. Providing high-level details helps the storyboard address specific issues.
11
• Enhancing the possibility of identifying features to improve or create in the software
product • Ensuring the vision of the product remains clear in its use
The second type of storyboard combines wireframes and basic flow from use cases in order
to show how the end-user interacts with the user interface of the product in detail. It is more
closely related to software design.
It also shows all the sequences of user interaction with the product, and the outcomes of
those interactions. Each state of the product during interaction is illustrated with a
wireframe. The user interface element needed to get to the next state is also illustrated.
Transitions between states are generally depicted with an arrowed line.
• Ensuring the development team is aware of the functionalities and feel of the
product .
12
13