Module 1
Module 1
Module 1
SOFTWARE ENGINEERING
SOFTWARE
✧ Computer software is the product that software
professionals build and then support over the long term
✧ It encompasses
▪ Programs that execute within a computer of any size and
architecture,
▪ Content that is presented as the computer programs execute, and
▪ Descriptive information in both hard copy and virtual forms that
encompass virtually any electronic media
2
Nature of Software
✧ Software takes on a dual role.
▪ It is a product, and at the same time, the vehicle for delivering a
product.
▪ As a product,
• It delivers the computing potential embodied by computer hardware
or more broadly, by a network of computers that are accessible by
local hardware
▪ As the vehicle used to deliver the product
3
Nature of Software
✧ Software acts as the basis for
○ The control of the computer (operating systems),
4
Failure Curves for Software
▪ In theory, the failure rate curve for software should
take the form of the “idealized curve”
• Undiscovered defects will cause high failure rates early
in the life of a program. However, these are
corrected, and the curve flattens.
▪ The idealized curve is an oversimplification of
actual failure models for software.
▪ However, the implication is clear - software doesn’t
wear out. But it does deteriorate!
5
Failure Curves for Software
▪ During its life, software will undergo change.
▪ As changes are made, it is likely that errors
will be introduced, causing the failure rate
curve to spike as shown in the “actual curve”
▪ Before the curve can return to the original
steady-state failure rate, another change is
requested, causing the curve to spike again
▪ Slowly, the minimum failure rate level begins
to rise – the software is deteriorating due to
change.
6
Nature of Software
✧ Another aspect of wear illustrates the difference between
hardware and software.
▪ When a hardware component wears out, it is replaced by a spare
part.
▪ There are no software spare parts.
▪ Every software failure indicates an error in design or in the process
through which design was translated into machine executable code.
▪ Therefore, the software maintenance tasks that accommodate requests for
change involve considerably more complexity than hardware
maintenance
7
Software Application Domains
✧ Broad categories of computer software
▪ System software
▪ Application software
▪ Engineering/scientific software
▪ Embedded software
▪ Product-line software
▪ Web/Mobile applications
▪ Artificial intelligence software
✧ All the above categories of software present continuing
challenges for software engineers 8
Software Engineering
✧ Software Engineering
▪ The application of a systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software; That is, the application of engineering to
software.
▪ The study of approaches related to the above process
✧ Software Engineering encompasses
▪ A process,
▪ A collection of methods (practice), and
▪ An array of tools that allow professionals to build high-quality computer software.
✧ Software engineers apply the software engineering process.
9
Software Engineering
✧ Software Engineering is important because
▪ It enables us to build complex systems in a timely manner and with high quality
▪ It imposes discipline to work that can become quite chaotic
▪ It also allows the people who build computer software to adapt their approach in
a manner that best suits their needs.
✧ Steps in Software Engineering
▪ We build computer software like we build any successful product,
• By applying an agile, adaptable process that leads to a high-quality result, which meets
the needs of the people who will use the product.
• We apply a Software Engineering approach
10
Software Engineering – Layers
18
The Software Process
✧ In the context of Software Engineering
▪ A process is not a rigid prescription for how to build computer
software.
▪ It is an adaptable approach that enables the people doing the work
(the software team) to pick and choose the appropriate set of work
actions and tasks
19
Software Product
✧ Products or deliverables are the outcomes of a process
activity.
▪ For example, the outcome of architectural design (activity) may be
the software architecture model (deliverable)
✧ From the point of view of a software engineer, the work
products are
▪ The programs, documents, and data that are produced as a
consequence of the activities and tasks defined by the process
20
Software Process – Basic Activities
✧ Four fundamental activities are common to all software
processes
▪ Software Specification
• Customers and engineers define the software that is to be produced and the
constraints on its operation
▪ Software Development
• The software that meets the specification is designed and
programmed for production
▪ Software Validation
• The software is validated to ensure that it does what the customer requires
▪ Software Evolution
• The software is modified to reflect changing customer and market
requirements 21
Software Process Models
✧ A Software Process Model
▪ Also called as Software Development Life Cycle or SDLC
▪ A simplified representation of a software process
▪ Generic process models: High-level, abstract descriptions of software
processes that can be used to explain different approaches to software
development
• The Waterfall Model
• Incremental Development
• Integration and Configuration
22
Waterfall Model
26
Incremental Development
✧ Problems & Drawbacks
▪ The process is not visible. It’s not cost effective to produce documents
that reflect every version of the system
▪ System structure tends to degrade as new increments are added
▪ The problems become acute for large, complex, long-lifetime systems,
where different teams develop different parts of the system.
• Large systems need a stable framework or architecture
• Responsibilities of the different teams working on parts of the system need to be
clearly defined with respect to that architecture.
• This has to be planned in advance rather than developed incrementally
27
Integration and Configuration
Reuse Oriented Software Engineering
28
Reusable Software Components
✧ Three types of software components are frequently
reused
▪ Stand-alone application systems
• Configured for use in a particular environment
▪ Collections of objects
• Developed as a component or as a package to be integrated with a
component framework
▪ Web services
• Developed according to service standards
29
Evolutionary Software Process Models
✧ Software, like all complex systems, evolves over a period
of time
✧ Business and product requirements often change as development
proceeds, making a straight-line path to an end-product
unrealistic
✧ Evolutionary models are iterative
✧ They are characterized in a manner that enables you to develop
increasingly more complete versions of the software.
30
Evolutionary Software Process Models
✧ Two common evolutionary process models
▪ Prototype Software Development or Prototyping
▪ The Spiral Model
31
Prototype Development
✧ Prototype - An early version of a software system
▪ Used to demonstrate concepts, try out design options, and find out
more about the problem and its possible solutions.
▪ Rapid, iterative development of the prototype is essential so that costs
are controlled and system stakeholders can experiment with the
prototype early in the software process
33
Prototype Development
✧ System prototypes
▪ Allow potential users to see how well the system supports their work.
▪ They may get new ideas for requirements and find areas of strength and
weakness in the software.
▪ They may then propose new system requirements
✧ A system prototype
▪ May be used while the system is being designed to carry out design
experiments to check the feasibility of a proposed design.
▪ Example: A database design may be prototyped and tested to check that it
supports efficient data access for the most common user queries
34
Prototype Development Process
✧ A process model for prototype development
35
Prototype Development Process
✧ The objectives of prototyping should be made explicit
from the start of the process. These may be
▪ To develop the user interface
▪ To develop a system to validate functional system requirements
▪ To develop a system to demonstrate the application to managers
36
Prototype Development Process
✧ The next stage in the process is to decide
▪ What to put into and, perhaps more importantly, what to leave out
of the prototype system.
▪ To reduce prototyping costs and accelerate the delivery schedule, you
may leave some functionality out of the prototype
• You may decide to relax non-functional requirements such as
response time and memory utilization.
• Error handling and management may be ignored unless the
objective of the prototype is to establish a user interface
37
Prototype Development Process
✧ The final stage of the process is Prototype Evaluation
▪ Provision must be made during this stage for user training
▪ Prototype objectives should be used to derive a plan for
evaluation
38
Spiral Model
39
Spiral Model
✧ Each phase in this model is split into four sectors (or quadrants).
✧ In the first quadrant, a few features of the software are identified (based on
its importance to the final product), and taken up for immediate
development
✧ With each iteration around the spiral (beginning at the center and moving
outwards), progressively more complete versions of the software are
developed
✧ Thus, implementation of the identified set of features forms a phase
40
Spiral Model
✧ A prominent feature of the spiral model is handling
unforeseen risks that can show up much after the project has
started
41
Spiral Model
✧ Prototyping Vs Spiral
▪ While the prototyping model provides explicit support for risk handling, the
risks are assumed to have been identified completely before the start of the
project.
▪ This is required since the prototype is constructed only at the start of the
project.
▪ In contrast, in the spiral model, prototypes are built at the start of
every phase.
▪ Each phase of the model is represented as a loop
• In each loop, one or more features of the product are elaborated and analyzed, and the
risks at that point of time are identified and are resolved through prototyping.
▪ Based on this, the identified features are implemented.
42
Rapid Software Development
46
Plan-driven Vs Agile development
✧ Plan-driven development
▪ A plan-driven approach to software engineering is based around separate
development stages with the outputs to be produced at each of these stages
planned in advance
▪ Not necessarily waterfall model – plan-driven, incremental
development is possible
▪ Iteration occurs within activities
✧ Agile development
▪ Specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of
negotiation during the software development process.
47
Plan-driven Vs Agile development
48
Plan-driven Vs Agile development
49
Agile methods
✧ Dissatisfaction with the overheads involved in software
design methods of the 1980s and 1990s led to the creation
of agile methods.
✧ Agile development is a philosophy; It’s a way of thinking
about software development
✧ Agile methods are processes that support the agile
philosophy.
▪ Examples include Extreme Programming and Scrum.
50
Agile methods
✧ Agile methods consist of individual elements called
practices
▪ Agile methods combine them in unique ways, accentuating those parts
that support the agile philosophy, discarding the rest, and mixing in a
few new ideas
51
Agile methods
✧ Agile methods:
▪ Focus on the code rather than the design
▪ Are based on an iterative approach to software development
▪ Are intended to deliver working software quickly and evolve this
quickly to meet changing requirements
✧ The aim of agile methods is
▪ To reduce overheads in the software process (e.g., by limiting
documentation) and
▪ To be able to respond quickly to changing requirements without
excessive rework 52
Agile Manifesto
✧ The description of the agile philosophy is the Agile Manifesto, a collection
of 4 values and 12 principles
✧ We are uncovering better ways of developing software by doing it and helping
others do it.
✧ Through this work we have come to value:
▪ Individuals and interactions over processes and tools
▪ Working software over comprehensive documentation
▪ Customer collaboration over contract negotiation
▪ Responding to change over following a plan
✧ That is, while there is value in the items on the right, we value the items on the
left more.
53
Agile Principles
Principles Description
Customer Our highest priority is to satisfy the customer through early and continuous delivery of
Satisfaction valuable software
Changing Welcome changing requirements, even late in development. Agile processes harness
change for the customer's competitive advantage
Requirements
Deliver Deliver working software frequently, from a couple of weeks to a couple of months,
Frequently with a preference to the shorter timescale
Customer Business people and developers must work together daily throughout the project
Collaboration
Build projects around motivated individuals.
Trust Give them the environment and support they need, and trust them to get the job done
Sitting The most efficient and effective method of conveying information to and within a
Together development team is face-to-face conversation
54
Agile Principles
Principles Description
Working
Working software is the primary measure of progress
Software
Sustainable Agile processes promote sustainable development. The sponsors, developers,
Development and users should be able to maintain a constant pace indefinitely
Technical Continuous attention to technical excellence and good design enhances agility
Excellence
Simplicity - the art of maximizing the amount of work not done
Simplicity
- is essential
Self-Organizing The best architectures, requirements, and designs come from self-organizing teams
Teams
Adaptive At regular intervals, the team reflects on how to become more
Planning effective, then tunes and adjust its behavior accordingly
55
The Road to Mastery
✧ Mastering the art of agile development requires real- world
experience using a specific, well-defined agile method
✧ Extreme Programming (XP) suits this purpose very well.
It has several advantages:
▪ XP is most complete when compared to other agile methods
▪ XP places a strong emphasis on technical practices in addition to the
more common teamwork and structural practices.
▪ XP has undergone intense scrutiny
▪ Well documented in the literature
▪ Its capabilities and limitations are very well understood 56
The Road to Mastery
✧ To master the art of agile development, follow these steps:
▪ Decide why you want to use agile development. Will it make your team and
organization more successful? How?
▪ Adopt as many of XP’s practices as you can
▪ Follow the XP practices rigorously and consistently; If a practice doesn’t work,
try to follow the proposed approach more closely
• Teams new to XP often under apply its practices
• Expect to take 2 or 3 months to start feeling comfortable with the practices; another 2 to
6 months for them to become second nature
▪ As you become confident that you are practicing XP correctly, give it several months
• Start experimenting - Each time you make a change, observe what happens and make
further improvements.
57
Extreme Programming
✧ One of the most astonishing premises of Extreme
Programming (XP):
▪ You can eliminate requirements, design, and testing phases as well
as the formal documents that go with them
✧ It's quite different from the way we typically learn to
develop software: many people dismiss it as a fantasy
✧ The traditional approach is: “we need more requirements,
design, and testing, not less!”
▪ That’s true - software projects do need more requirements,
58
design, and testing
Introduction to XP
✧ XP emphasizes face-to-face collaboration
▪ This is so effective in eliminating communication delays and
misunderstandings that the team no longer needs distinct phases.
▪ This allows them to work on all activities every day - with
simultaneous phases
59
Introduction to XP
62
The XP Process
✧ In XP, requirements are expressed as scenarios (called user
stories), which are implemented directly as a series of tasks
✧ Programmers work in pairs and develop tests for each task
before writing the code
✧ All tests must be successfully executed when new code is
integrated into the system
✧ There is a short time gap between releases of the
system
63
Extreme Programming Practices
✧ Incremental planning ✧ Small releases
✧ On-site customer ✧ Test first development
✧ Simple design ✧ Refactoring
✧ Pair programming ✧ Continuous integration
✧ Collective ownership ✧ Sustainable pace
64
XP Lifecycle: Planning
✧ Incremental planning
▪ Requirements are recorded on “story cards”
▪ The stories to be included in a release are determined by the time
available and their relative priority
▪ The developers break these stories into development “tasks”
65
The XP Release Cycle
66
User Stories
✧ Agile methods do not have a separate requirements
engineering activity. Rather, they integrate requirements
elicitation with development.
✧ To make this easier, the idea of ‘user stories’ was
developed
▪ A user story is a scenario of use that might be experienced by a
system user
✧ As far as possible, the customer works closely with the
development team and discusses these scenarios with other
team members 67
User Stories
✧ Together, they develop a “story card” that briefly describes a
story that encapsulates the customer needs.
✧ The development team then aims to implement that
scenario in a future release of the software.
✧ An example of a story card is shown
▪ A short description of a scenario for Prescribing Medication for a
patient
68
User Story – Example : Prescribing Medication
69
User Stories to Tasks
✧ The development team then aims to implement that
scenario in a future release of the software.
✧ User stories may be used in planning system iterations
✧ Once the story cards have been developed, the
development team breaks these down into tasks and
estimates the effort and resources required for
implementing each task
70
Task Card – Examples : Prescribing Medication
71
User Stories to Tasks
✧ This usually involves discussions with the customer to
refine the requirements.
✧ The customer then prioritizes the stories for implementation,
choosing those stories that can be used immediately to
deliver useful business support.
✧ The intention is to identify useful functionality that can be
implemented in about two weeks, when the next release of
the system is made available to the customer
72
XP Lifecycle: Planning
✧ Every XP team includes several business experts - the
On-site Customers - who are responsible for making
business decisions
✧ On-site Customers
▪ Point the project in the right direction by
• Clarifying the Project Vision
• Creating Stories
• Constructing a Release Plan and
• Managing Risks
▪ Should be available full time for the use of the XP team 73
XP Lifecycle: Planning
✧ Programmers provide Estimates and Suggestions
▪ These are blended with customer priorities in a process called the
Planning Game
✧ On-site customers and Programmers
▪ Together as a team, strives to create small, frequent releases that
maximize value
74
XP Lifecycle: Planning
✧ The planning effort is most intense during the first few
weeks of the project
✧ During the remainder of the project, customers continue to
review and improve the vision
✧ In addition to the overall release plan, the team creates a
detailed plan for the upcoming week at the beginning of each
iteration (Iteration Planning)
75
XP Lifecycle: Analysis
✧ Rather than using an upfront analysis phase to define
requirements, on-site customers sit with the team full-
time.
✧ On-site customers
▪ May or may not be real customers depending on the type of project,
but they are the people best qualified to determine what the software
should do
▪ Are responsible for figuring out the requirements for the
software.
▪ Use their own knowledge as customers combined with traditional 76
XP Lifecycle: Analysis
✧ When programmers need information, they simply ask
✧ Customers are responsible for organizing the programmers’
work, so they are ready when they ask for information
✧ Customers figure out
▪ The general requirements for a story before the programmers
estimate it
▪ The detailed requirements for the story before the programmers
implement it
77
XP Lifecycle: Analysis
✧ Some requirements are tricky or difficult to understand
✧ Customers formalize these requirements, with the
assistance of testers, by creating customer tests
▪ Detailed, Automatically checked examples
✧ Customers and testers create the customer tests for a story
around the same time that programmers implement the story
78
XP Lifecycle: Design and Coding
✧ Simple design
▪ Enough design is carried out to meet the current requirements and
no more
✧ Pair programming
✧ Small releases
79
XP Lifecycle: Design and Coding
✧ Simple design
✧ Pair programming
▪ Developers work in pairs, checking each other's work and
providing the support to always do a good job
✧ Small releases
80
XP Lifecycle: Design and Coding
✧ Simple design
✧ Pair programming
✧ Small releases
▪ The minimal useful set of functionality that provides business
value is developed first.
▪ Releases of the system are frequent and incrementally add
functionality to the first release
81
XP Lifecycle: Design and Coding
✧ XP uses incremental design and architecture to
continuously create and improve the design in small
steps.
✧ This work is driven by Test-Driven Development (TDD), an
activity that inextricably weaves together testing, coding,
design, and architecture
✧ To support this process, programmers work in pairs
▪ Increases the amount of brainpower brought to bear on each task
▪ Ensures that one person in each pair always has time to think about
82
larger design issues
XP Lifecycle: Design and Coding
✧ Programmers
▪ Are responsible for managing their development environment
▪ Integrate their code every few hours
▪ Ensure that every integration is technically capable of deployment
✧ To support this effort, programmers also maintain coding
standards and share ownership of the code
✧ The team shares a joint aesthetic for the code
▪ Everyone is expected to fix problems in the code regardless of who
wrote it
83
Pair Programming
✧ Programmers sit together at the same computer to
develop the software.
✧ Pairs are created dynamically so that all team members work
with each other during the development process
84
Pair Programming
✧ Advantages
▪ Helps develop common ownership of code and spreads
knowledge across the team
▪ Serves as an informal review process as each line of code is looked at
by more than one person
▪ Encourages refactoring to improve the software structure
▪ The sharing of knowledge that happens during pair programming is very
important as it reduces the overall risks to a project when team members
leave.
▪ There is some evidence that suggests that a pair working together
is more efficient than two programmers working separately
85
XP Lifecycle: Testing
✧ XP includes a sophisticated suite of testing practices
✧ Each member of the team - programmers, customers, and
testers - makes his own contribution to software quality.
✧ Well-functioning XP teams produce only a handful of bugs per
month in completed work
86
XP Lifecycle: Testing
✧ Extreme Programming developed a new approach to program
testing to address the difficulties of testing without a specification
✧ The program is tested after every change has been made
✧ Key features of testing in XP
▪ Test Driven Development (TDD). Also referred to as Test-First Development
▪ Incremental test development from scenarios
▪ User involvement in test development and validation
▪ Automated test harnesses are used to run all component tests each time that a
new release is built.
87
Test case description for dose checking
88
Test Driven Development
✧ Test Driven Development
▪ Writing tests before code clarifies the requirements to be
implemented.
▪ Tests are written as programs rather than data so that they can be
executed automatically. The test includes a check that it has executed
correctly.
▪ An automated unit testing framework (such as Junit) is used to write
tests for a new piece of functionality before that functionality itself
is implemented
▪ All previous and new tests are run automatically when new
functionality is added, thus checking that the new functionality has 89
XP Lifecycle: Testing
✧ Customer tests help ensure that the programmers’ intent
matches customers’ expectations
✧ Testers help the team understand whether their efforts are in
fact producing high quality code.
▪ Testers use exploratory testing to look for surprises and gaps in the
software
✧ Testers also explore the software’s non-functional
characteristics, such as performance and stability
90
XP Lifecycle: Testing
✧ The team doesn’t perform any manual regression testing
✧ TDD and customer testing leads to a sophisticated suite of
automated regression tests
✧ When bugs are found, programmers create automated tests
to show that the bugs have been resolved
91
XP Lifecycle: Deployment
✧ XP teams keep their software ready to deploy at the end of
any iteration
✧ They deploy the software to internal stakeholders every
week in preparation for the weekly iteration demo
✧ Deployment to real customers is scheduled according to
business needs
92
XP Lifecycle: Deployment
✧ As long as the team is active, it maintains the software it has
released
✧ Depending on the organization, the team may also
support its own software
✧ In other cases, a separate support team may take over
✧ Similarly, when the project ends, the team may hand off
maintenance duties to another team
▪ In this case, the team creates documentation and provides
training as necessary during its last few weeks 93
Other XP Practices
✧ Collective ownership
▪ The pairs of developers work on all areas of the system, so that no
islands of expertise develop, and all the developers take
responsibility for all of the code
▪ Anyone can change anything
✧ Continuous integration
✧ Sustainable pace
✧ Refactoring
94
Other XP Practices
✧ Collective ownership
✧ Continuous integration
▪ As soon as the work on a task is complete, it is integrated into the
whole system.
▪ After any such integration, all the unit tests in the system must pass
✧ Sustainable pace
✧ Refactoring
95
Other XP Practices
✧ Collective ownership
✧ Continuous integration
✧ Sustainable pace
▪ Large amounts of overtime are not considered acceptable
▪ Since, the net effect would reduce the quality of the code and
result in medium-term productivity
✧ Refactoring
96
Other XP Practices
✧ Collective ownership
✧ Continuous integration
✧ Sustainable pace
✧ Refactoring
▪ Changing a software system in such a way that it does not alter the
external behavior of the code yet improves the internal structure.
▪ All developers are expected to refactor the code continuously as soon
as potential code improvements are found
▪ Keeps the code simple and maintainable 97
Refactoring
✧ Conventional wisdom in software engineering is to
design for change.
▪ It is worth spending time and effort anticipating changes as this
reduces costs later in the life cycle.
✧ XP, however, maintains that this is not worthwhile as
changes cannot be reliably anticipated.
✧ Rather, XP proposes constant code improvement
(Refactoring) to make changes easier when they have to be
implemented
98
Refactoring
✧ Programming team look for possible software improvements and
make these improvements even where there is no immediate need
for them
✧ This improves the understandability of the software and so
reduces the need for documentation.
✧ Changes are easier to make because the code is well-
structured and clear.
✧ However, some changes requires architecture refactoring, and this
is much more expensive.
99
Refactoring
✧ Examples of Refactoring
▪ Reorganization of a class hierarchy to remove duplicate code
▪ Tidying up and renaming attributes and methods to make them
easier to understand
▪ The replacement of inline code with calls to methods that have been
included in a program library
10
The XP Team
✧ Team software development is different than working solo on
a project
▪ Information is spread out among many members of the team
✧ XP creates cross-functional teams composed of diverse people
who can fulfill all the team’s roles
✧ XP Teams
▪ Sit together in an open workspace
▪ At the beginning of each iteration, the team meets for a series of activities
▪ Also meet for daily stand-up meetings, which usually take five to ten minutes
each
10
The XP Team
✧ XP Teams
▪ Other than the scheduled activities, everyone on the team plans his
own work
▪ Team members work out the details of each meeting when they need
to.
▪ Sometimes it’s as informal as somebody standing up and
announcing across the shared workspace that he would like to
discuss an issue
✧ This self-organization is a hallmark of agile teams
10
XP Concepts
✧ XP has its own vocabulary. Some of the most common are:
▪ User Stories
▪ Iterations
▪ Velocity
▪ Refactoring
▪ Pair Programming
10
Agile Project Management
✧ The principal responsibility of software project managers is to
manage the project so that the software is delivered on time and
within the planned budget for the project.
✧ The standard approach to project management is plan- driven
▪ Managers draw up a plan for the project showing
• what should be delivered,
• when it should be delivered, and
• who will work on the development of the project deliverables
✧ Agile project management requires a different approach, which is
adapted to incremental development and the practices used in agile
methods. 10
Scrum
✧ Scrum is an agile method that focuses on managing iterative
development rather than specific agile practices
✧ Scrum agile method was developed
▪ To provide a framework for organizing agile projects and,
▪ To some extent at least, provide external visibility of what is going
on.
✧ To make it clear that Scrum was not a method for project
management in the conventional sense,
▪ New terminologies such as ScrumMaster was invented, which replaced
names such as project manager 10
Scrum
✧ There are three phases in Scrum
▪ The initial phase is an Outline Planning phase
• Establish the general objectives for the project and design the
software architecture
▪ This is followed by a series of Sprint Cycles
• Each cycle develops an increment of the system
▪ The Project Closure phase
• Wraps up the project
• Completes required documentation such as system help frames and user
manuals
• Assesses the lessons learned from the project 10
Scrum Terminologies
✧ Development team
▪ A self-organizing group of software developers, which should be no more than 7 people
▪ They are responsible for developing the software and other essential project
documents
✧ Product backlog
▪ This is a list of ‘to do’ items which the Scrum team must tackle
▪ They may be
• Feature definitions for the software
• Software requirements
• User stories
• Descriptions of supplementary tasks that are needed, such as architecture definition or
user documentation.
10
Scrum Terminologies
✧ Scrum
▪ A daily meeting of the Scrum team that reviews progress and
prioritizes work to be done that day.
▪ Ideally, this should be a short face-to-face meeting that includes the
whole team
✧ ScrumMaster
▪ Responsible for ensuring that the Scrum process is followed
▪ Guides the team in the effective use of Scrum
▪ Responsible for interfacing with the rest of the company
▪ Ensures that the Scrum team is not diverted by outside 10
Scrum Terminologies
✧ Product owner
▪ An individual (or possibly a small group) whose job is to
• Identify product features or requirements
• Prioritize these for development and
• Continuously review the product backlog to ensure that the project
continues to meet critical business needs
▪ The Product owner can be a customer but might also be a product
manager in a software company or other stakeholder
representative.
11
Scrum Terminologies
✧ Sprint
▪ A development iteration. Sprints are usually 2-4 weeks long.
✧ Velocity
▪ An estimate of how much product backlog effort that a team can cover
in a single sprint
▪ Understanding a team’s velocity helps to estimate what can be covered
in a sprint and provides a basis for measuring improving performance.
11
Scrum Terminologies
✧ Potentially shippable product increment
▪ The software increment that is delivered from a sprint
▪ ‘Potentially shippable’ means that it is in a finished state
▪ No further work, such as testing, is needed to incorporate it into the
final product.
11
Scrum Process
The Scrum process or Sprint Cycle is shown
11
Scrum Sprint Cycle
✧ Sprints are fixed length, normally 2–4 weeks.
✧ Each process iteration produces a product increment that
could be delivered to customers
✧ The starting point for planning is the product backlog,
which is the list of work to be done on the project.
11
Scrum Sprint Cycle
✧ The initial version of the product backlog may be derived
from
▪ A Requirements Document
▪ A List of User Stories, or
▪ Other description of the software to be developed
✧ The selection phase
▪ All the project team members work with the customer to select the
features and functionality from the product backlog to be developed
during the sprint.
11
Scrum Sprint Cycle
✧ Once these are agreed, the team organize themselves to
develop the software.
✧ During this stage, the team is isolated from the customer and
the organization, with all communications channelled through
the ‘Scrum master’
✧ The role of the Scrum master is to protect the
development team from external distractions.
✧ At the end of the sprint, the work done is reviewed and
presented to stakeholders. The next sprint cycle then begins. 11
Teamwork in Scrum
✧ The ‘Scrum master’ is a facilitator who
▪ Arranges daily meetings
▪ Tracks the backlog of work to be done
▪ Records decisions
▪ Measures progress against the backlog
▪ Communicates with customers and management outside of the team
11
Teamwork in Scrum