Professional Documents
Culture Documents
SW Methodologies - Part1-V02
SW Methodologies - Part1-V02
Development and
Prototyping
Software Development Methodologies
Topics
• Software development life cycle (SDLC)
• Waterfall
• Spiral
• Agile
– Scrum
Learning Objectives
1 Understand the roots of agile modeling in prototyping and the
four main types of prototyping
2 Understand agile modeling and the core practices that
differentiate it from other development methodologies
3 Understand Scrum as an agile method to improve development
of complex projects.
4 Learn about DevOps as a cultural shift in the way to organize
rapid systems development and operations
5 Learn the importance of values critical to agile modeling
6 Understand how to improve efficiency for users who are
knowledge workers using either structured methods or agile
modeling
Software Development Life Cycle (SDLC)
• A process is needed to develop software for complex
systems
– Waterfall
– Spiral
– Prototyping
– Agile
▪ Scrum
Waterfall Model
Waterfall Process (1)
• Requirement
– What the project is suppose to accomplish
▪ Describe in a requirement document
• Design
– Plan for how to implement the system
– What OO classes will be needed
▪ Attributes and methods
▪ Determine relationship between objects (inheritance)
▪ Determine hardware/software/language/OS/etc
• Implementation
– Develop software/hardware
Waterfall Process (2)
• Testing
– Verify software against the requirement document
▪ Unit and system
• Maintenance/Deployment
– Install and use the software for the intended use
Issues with Waterfall (2)
• If a problem shows up in a later phase, the cause may be
in an earlier phase
– For example, an problem in testing may stem from a
design issue
– Customers do not see the final product until
deployment
▪ Wrong product could have been built
– Therefore, V Model came to exist in order to perform
verification on each process.
V model
V model
Waterfall Process Improved
• To get customer involvement and feedback earlier in the
software development cycle (SDLC), Barry Boehm (USC)
developed the spiral model
– Iterate the waterfall process
– Early phases focus on the development of prototypes
▪ A prototype is a small system that shows some
aspects of the final system
– Should be able to be developed quickly
• Graphical user interfaces (GUIs), interfaces, etc.
– The spiral process has a greater chance to delivering a
system that meets the customers expectations
Spiral Model
Spiral Process Improved
• To get consistent customer involvement and feedback
throughout the entire in the software development cycle,
the Agile development methodology was created
• The premise behind agile is documented in the Agile
Manifesto
– See next slide and
– http://agilemanifesto.org/
Agile Modeling, but First Prototyping
• Agile modeling is a collection of innovative, user-centered
approaches to system development
• Prototyping is an information-gathering technique useful
in seeking
– User reactions
– Suggestions
– Innovations
– Revision plans
Prototyping
• Types of Prototyping
• 1) Throw-away prototyping
• 2) Evolutionary prototyping
Prototyping
Throw-away Prototyping
Intended to help elicit and develop the system
requirements
The requirements which should be prototyped
are those which cause most difficulties to
customers and which are the hardest to
understand. Little documentation is needed.
Prototyping
Prototyping
Evolutionary Prototyping
• Intended to deliver a workable system quickly to
the customer
• The requirements which should be supported by
the initial versions of this prototype are those
which are well-understood and which can deliver
useful end-user functionality.
Prototyping
Prototyping
Approaches to Prototyping
• 1) Paper prototyping
• 2) ‘Wizard of Oz’ prototyping
• 3) Executable prototyping
Paper Prototyping
Slide 35
Prototyping : Disadvantages
Introduction
Epic
Feature
User Story
Behavior-Driven Development
Agile Requirements
Agile Manifesto
Manifesto principle #1 - Our highest priority is to
satisfy the customer through early and
continuous delivery of valuable software.
Manifesto principle #2 - Welcome changing
requirements, even late in development. Agile
processes harness change for the customer's
competitive advantage.
Agile Requirements
Key Principles for Agile Requirements
Active user involvement is very important
Agile teams must be empowered to make decisions
Requirements emerge and evolve as software is
developed
Agile requirements are ‘barely sufficient’
Requirements are developed in small, bite-sized
pieces
Cooperation, collaboration and communication
between all team members is essential
Agile Requirements
Introduction
Epic
Feature
User Story
Behavior-Driven Development
Epic
Example of Epics:
As a bank, we want to extend our services by
offering life and health insurances.
We want to add a biometric recognition to
increase security without hassle.
As the marketing department, we want to
create an interactive app to cater to more
customers.
Epic
Introduction
Epic
Feature
User Story
Behavior-Driven Development
Feature
Introduction
Epic
Feature
User Story
Behavior-Driven Development
User Stories
Example
As a user, I want to upload photos so that I can
share photos with others.
User story:
A short, written description of a piece of
functionality that will be valuable to a
user
(or owner) of the software.
It provides a simple way for developers
and customers to split up what the
system needs to do so the system can be
delivered in pieces.
User Stories
• What (goal)
• Why (reason)
– gives clarity as to why a feature is useful
– can influence how a feature should function
– can give you ideas for other useful features
that support the user's goals
User Story Example: Front of Card
Requirements documents
Use Cases
Scenarios
Not good user stories
Stories are too small
Dependent stories
Too Many details
Including UI detail too soon
Thinking too far ahead
Splitting too many stories
Customer has trouble prioritizing
Customer won’t write and prioritize the stories
Example
Introduction
Epic
Feature
User Story
Behavior-Driven Development
Behavior-Driven Development
• Benefit
• BDD is helpful in communicating requirements
effectively.
• Requirements are specified in a way that they
are explicit, executable and testable.
• A common language is used to allow the
business, development and testing staff to
understand requirements, thus facilitating
communication with less ambiguity.
Behavior-Driven Development
• Given a customer with who has been registered in the system, when he reviews the
menu and request a new order for food and/or drink, then the customer can follow up
the status of the order by the restaurant online system and can see how much the
order will take to be ready.
• Given a customer with who has been registered in the system, when he tried to add,
drop, or change a quantity of some items in his order, then the customer will be able
to know if his request is accepted or it was too late to change the order.
• Given a customer with who has been registered in the system, when he tried to
cancel an order, then the customer will be able to know if his request is accepted or it
was too late to cancel the order.
Example
006 Adding Staff Members
As a restaurant manager for the OVIPs Restaurant System, I want to add staff
members and their relative information so I can assign each of them role
description.
• Scenario #1: Adding New Staff
• Given a restaurant manager with the required privileges, when he
adds new staff member to the system, then the manager will be able
to assign this staff an existing role from a list of available roles in the
system.
Example
007 Staff Member Management
As a restaurant manager for the OVIPs Restaurant System, I want to be
able to change the staff roles so I can better manage them.
•Scenario #1: Editing Existing Staff Members Roles
Given a restaurant manager with the required privileges, when he
edits an existing staff member, then the manager will be able to
assign this staff member a new role from an existing role from a list of
available roles in the system.
•Scenario #2: Editing Existing Staff Members Information
Given a restaurant manager with the required privileges, when he
edits an existing staff member, then the manager will be able to
change the member information in the system such contact and
address information.
Example
008 Menus Management
As a restaurant manager for the OVIPs Restaurant System, I want to be able to
create new menus and manage current menus so I can better serve my
customers
• Scenario #1: Creating New Menus
• Given a restaurant manager or a staff member with the required privileges, when he
creates a new menu in the system, then he can add new menu items to this menu.
• Given a restaurant manager or a staff member with the required privileges, when he
edits an existing menu, then the manager will be able to add new menu items, delete
menu items, or move menu items from menu to menu.
• Given a restaurant manager or a staff member with the required privileges, when he
deletes an existing menu, then the system will no longer display this menu and its items
will be free to be added to other menus.
Example
009 View Orders
As a restaurant manager for the OVIPs Restaurant System, I want to be able to
view tables’ orders sorted by date or customers so I can track them in case I
need to.
• Small releases
– Small releases allow developers to frequently receive feedback, detect bugs early, and
monitor how the product works in production.
– Release software every two to four weeks
• System metaphor
– All programmers should understand the whole system
• Refactoring
– Continually clean up the code
– Refactoring is about removing redundancy, eliminating unnecessary functions, increasing
code coherency, and at the same time decoupling elements.
Extreme Programming Paradigms(2)
• Continuous integration
– Developers always keep the system fully integrated.
– Build the entire software baseline at least once a day
• Coding standards
– All programmers must following a well established
standard
• Collective code ownership
– All programmers should be able to change any
software
Extreme Programming Paradigms(3)
• Simplicity
– Design everything as simple as possible
• Planning game
– Iteration Planning: This plans the activities and tasks
of the developers
– Release Planning: This is focused on determining
what requirements are included in which near-term
releases, and when they should be delivered
• Whole team
– Everyone needs to be involved
▪ Customers, users, developers, testers, etc.
Extreme Programming Paradigms(4)
• Sustainable pace
– programmers should not work more than 40 hour
weeks
• Test driven development
1. Each new feature begins with writing a test
–This test must inevitably fail because it is
written before the feature has been
implemented
2. The next step is to write some code that causes the
test to pass
3. Go back to step 1
Test Driven Development
Scrum
• Iterative, incremental framework
• Encourages continuous improvement
• Small pieces of functionality are developed and tested
Scrum Definitions (1)
• Sprint
– The basic unit of development in Scrum
– A sprint is a “timeboxed" effort; that is, it is restricted
to a specific duration
▪ The duration is fixed in advance for each sprint
and is normally between one week and one month,
although two weeks is typical
Scrum Definitions (2)
• User story
– One or more sentences in the everyday language of
the end user that captures what needs to be
developed
▪ Use Case
▪ Format: “As a <type of user>, I want <some goal>
so that <some reason>
▪ Contains a detailed description, story point
estimation, priority, assignee(s), list of tasks and
tests, definition of done
Scrum Definitions (3)
• Backlog
– Work to be done
– Composed of stories
• Story point
– A story point is a relative measure used to determine (or
estimate) the difficulty of implementing a given user story
• Velocity
– Story Points earned per sprint
• Definition of Done
– A clear and concise list of requirements that software must
adhere to for the product owner to call it complete
Definition of Done
• Code produced that adheres to a coding standard
• Code commented
• Code checked into source control system
• Peer reviewed (or produced with pair programming)
• Unit tests written and passed
• Relevant documentation/diagrams produced and/or
updated
• Product owner concurs
Scrum (1 of 2)
• Begin the project with a high-level plan that can be
changed on the fly
• Success of the project is most important
• Individual success is secondary
• Project leader has some (not much) influence on the
detail
• Systems team works within a strict time frame (two to
four weeks for development)
Roles Played in Scrum
• There are three roles in Scrum:
– Product owner
– Scrum Master
– Team member
• Scrum Teams are cross-functional, meaning the
members have all the skills necessary to create value
each Sprint.
• They are also self-managing, meaning they internally
decide who does what, when, and how.
• The Scrum Team typically has 10 or fewer people.
Product owner
• The Product Owner is accountable for maximizing the
value of the product resulting from the work of the Scrum
Team.
• The Product Owner is also accountable for effective Product
Backlog management, which includes:
– Developing and explicitly communicating the Product Goal
– Creating and clearly communicating Product Backlog items
– Ordering Product Backlog items
– Ensuring that the Product Backlog is transparent, visible
and understood.
Product owner
• The Product Owner is one person, not a committee.
• The Product Owner may represent the needs of many
stakeholders in the Product Backlog.
• Those wanting to change the Product Backlog can do so
by trying to convince the Product Owner.
• For Product Owners to succeed, the entire organization
must respect their decisions.
Scrum Master
• The Scrum Master is accountable for the Scrum Team’s
effectiveness.
• The Scrum Master serves the Scrum Team in several
ways, including:
– Coaching the team members in self-management and
cross-functionality
– Helping the Scrum Team focus on creating high-value
Increments that meet the Definition of Done;
– Causing the removal of impediments to the Scrum
Team’s progress
– Ensuring that all Scrum events take place and are
positive, productive, and kept within the timebox.
Scrum Master
• The Scrum Master serves the Product Owner in several
ways, including:
– Helping find techniques for effective Product Goal
definition and Product Backlog management
– Helping the Scrum Team understand the need for
clear and concise Product Backlog items
– Helping establish empirical product planning for a
complex environment
– Facilitating stakeholder collaboration as requested or
needed
Team Members
• Team members:
– Work to create and improve user stories
– Generate estimates
– Self-organize to complete the work
– Exhibit willingness to participate in any activity to help
the project
– Creating a plan for the Sprint, the Sprint Backlog
– Instilling quality by adhering to a Definition of Done
– Adapting their plan each day toward the Sprint Goal
Scrum (2 of 2)
• Product backlog
• Sprint backlog
• Sprint
• Daily scrum
• Demo
Product Backlog
• Features and other deliverables designers intend for the
product based on user stories
• The list of user stories is reorganized so that the most
important user stories appear on the top
A Product Backlog Registry
Sprint Cycle
• Stories are deliverables the team accomplishes
• Tasks are parts of the story or units of work that each
team members does
• The sprint cycle can vary in length, but the usual is two
weeks
• At the end of the cycle, determine whether the product
should be released
Two-Week Release Advantages
• Team spirit remains high
• Completing the product is more real to the team
• Continual feedback from customers
Scrum vs. Waterfall (1)
• Volatile requirements
– Waterfall – may cause extensive rework
– Scrum – should require reduced rework due to the
iterative nature
• Product
– Waterfall – Customer views the finished product
– Scrum – Customer constantly sees the product (more
confidence)
Scrum vs. Waterfall (2)
• Visibility
– Waterfall – Little visibility
– Scrum – Progress is constantly demonstrated
• Verification
– Waterfall – Begins after implementation
(development) is complete
– Scrum – Constantly testing using continuous
integration
Lessons Learned from Agile Modeling (1 of 2)
• Short releases allow the system to evolve
• Pair programming enhances the overall quality
• Onsite customers are mutually beneficial to the business
and the agile development team
Other Unique Scrum Features
• Scrum planning meeting
• Planning poker
• Daily meetings
• Sprint burndown chart
• Sprint review
Scrum Planning Meeting
• Two parts to a Scrum planning meeting:
– Product owner presents the list of features on the
wish list of user stories
– Estimate the resources needed to complete all of the
features
▪ Common way to do this is to play planning poker
Planning Poker
• Planning poker is a way to help the team determine
estimates for completing the features from user stories
• There are rules for the game
Planning Poker Rules (1 of 3)
• A moderator keeps the estimation meeting running
efficiently
• The product owner presents one of the user stories that
needs estimating
• Each team member chooses a card with a number on it
and lays it face down
• A lower numbered card means that a project can be
completed faster
Planning Poker Rules (2 of 3)
• The numbers may represent the number of days it takes
to finish a feature, story points, or even difficulty in
abstract terms
• Team members turn over their cards at the same time
Planning Poker Rules (3 of 3)
• The team members with the highest and lowest estimates
may defend their ratings
• The entire team can discuss the estimates
• A new hand is then played and so on
Daily Scrum Meetings
• Called a stand-up meeting because it lasts only a few
minutes
• Team members tell each other what tasks they’ve been
working on since the previous daily Scrum
• Tasks they expect to complete during the current daily
Scrum
• Obstacles might get in their way
Sprint Burndown Chart
• Way to keep track of performance
– Horizontal axis tracks the time that has elapsed
– Vertical axis may track the number of tasks remaining
or the number of hours to complete the remaining
tasks
– Red line shows hours of work remaining, and the
yellow bars show the number of tasks remaining
A Burndown Chart
Lessons Learned from Agile Modeling (2 of 2)
• The 40-hour work week improves worker effectiveness
• Balanced resources and activities support project goals
• Agile values are crucial to success
Sprint Review
• Team gets together in a meeting to review the work done
• Note any tasks that were not completed
• User stories completed are prominently documented
• User stories the team committed to that were not finished
are noted
Scrum Process Summarized
Scrum Process Summarized
Scrum Meetings
Meeting Frequency Participants Output
Product Planning Before the first Product owner Product backlog
Sprint (PO) and
stakeholders
Sprint Planning 1 At the beginning PO, Scrum Sprint backlog
of each Sprint Master and Team