Upload
aditya-taneja
View
253
Download
4
Embed Size (px)
DESCRIPTION
Modern Software Development Methodologies & Case Study (Google)
Citation preview
Modern Software Methodologies
ADITYA TANEJA (12 CSU 141)
KUSHAGRA GUPTA (12 CSU 142)
Software Development Processes
History of
This approach is highly risky, often more costly and
generally less efficient than Agile approaches
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Takes too long
Changes
Skipped
You don’t realize any value until the end of the project
You leave the testing until the end
You don’t seek approval from the stakeholders until late in the day
AGILEIterative
AdaptableRapid
CooperativeQuality-driven
Not a process, it's a philosophy or set of values
Individuals and interactions over
processes and tools
Working software over comprehensive
documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
Agile Manifesto
Agile Umbrella
Agile
Crystal
XPScrum DSDMFDD
Kanban RUP
RUP (120+)
XP (13)
Scrum (9)
Kanban (3)
Do Whatever!! (0)
More Prescriptive
More Adaptive
and few more…
RUP has over 30 roles, over 20 activities, and over 70 artifacts
more rules to follow
fewer rules to follow
ScrumA light-weight Agile process tool
Split your organizationinto small, cross-functional, self-organizing teams.
Split your work into a list of small, concrete deliverables.
Sort the list by priority and estimate the relative effort of each item.
Scrum Team
Scrum Master
Product/ Project Owner
Split time into short fixed-length iterations/ sprints (usually 2 – 4
weeks), with potentially shippable code demonstrated after each iteration.
Scrum (contd..)
January May
Optimize the release plan and update priorities in
collaboration with the customer, based on insights gained by inspecting the release after each iteration.
Optimize the process by having a retrospective after each
iteration.
Single Scrum Process
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Iterative Scrum
Scrum Terminologies
The project/ product is described as a list of features: the backlog.
The features are described in terms of user stories.
The scrum team estimates the work associated with each story.
Features in the backlog are ranked in order of importance.
Result: A ranked and weighted list of product features, a
roadmap.
Daily scrum meeting to discuss the work done yesterday and
the work to be done today and also the obstacles involved.
Scrum planning example
Iteration cycle of 3 weeks
Working hours per day is 8 120hrs
Total hours of work iteration can accommodate
8hrs x 5days x 3weeks =
Product backlog of 20 stories
Each story effort is 10 hrs
Iteration backlog or number of stories per iteration
12 user story
Scrum in a nutshell..
So instead of a large group spending a long time building a
big thing, we have a small team spending a short time building a small thing.
But integrating regularly to see the whole.
KanbanJust-in-time (JIT)
Visualize the Work
Measure & Manage FlowSignboard
Limit Work-In-Progress
Visual Card
KanbanLean approach to Agile development
Similar to Scrum in the sense that you focus on features as opposed to groups of features – however Lean takes this
one step further again.
You select, plan, develop, test and deploy one feature (in its simplest form) before you select, plan, develop, test and deploy the next feature.
Aim is to eliminate ‘waste’ wherever possible…
Kanban (contd…)
Visualize the workflow
Limit WIP (Work In Progress)
Split the work into pieces, write each item on a card and put on the wall.
Use named columns to illustrate where each item is in the workflow.
Assign explicit limits to how many items may be in progress at each stage.
Measure the lead time (average time to complete one
item, sometimes called “cycle time”)
Optimize the process to make lead time as small and predictable as possible.
SDM used by Google Inc.
Google’s Software Development Methodology is similar to
Agile, precisely, it’s
“ Break things & Move Over Fast “
kind of a strategy which is implemented in the following
manner via these tools developed by Google :
Percolator
Dremel
Pregel
Hadoop(free, Java-based programming framework that supports the processing of large data sets in a distributed computing environment. It is part of the Apache project sponsored by the Apache Software ) traces its origins to Google where two early projects GFS (Google File System) and GMR (Google Map Reduce) were written besides Big Table, to manage large volumes of data. These systems are great at crunching large volumes of data in a distributed computing environment (with commodity servers) in batch mode. Any changes to the data requires streaming over the entire data-set and thus big latency.
Now Google finds itself limited by its own invention of GFS/GMR/BigTable. Hence they have been working on the post-Hadoop set of data crunching tools – Percolator, Dremel, and Pregel.
Here is a brief narration of each of these tools:
Percolator is a system for incrementally processing updates to a large data set. By replacing a batch-based indexing system with one on incremental processing with Percolator, you significantly speed up the process and reduce analysis time. Percolator’s architecture provides horizontal scalability and resilience. The best candidates for this are large indices where the performance improvement factor can be 100. The big advantage of Percolator is that the indexing time is now proportional to the size of the page, not to the size of the index.
Dremel is for ad-hoc analytics. It is a scalable, interactive ad-hoc query system for analysis of read-only nested data. By combining multi-level execution trees and columnar data layout, it is capable of running aggregation queries over trillion-row tables in seconds. Dremel claims to be about 100 times faster than MapReduce. It’s architecture is similar to Pig and Hive, but instead of MapReduce, it’s engine is based on aggregator trees.
Pregel is a system for large-scale graph processing and graph data analysis. It is designed to execute graph algorithms faster and API is easy to use. As to be expected Pregel is architected for efficient, scalable, and fault-tolerant implementation on clusters of thousands of commodity computers. Graphs are everywhere –social networks, computer network topologies, games among soccer teams, citations among scientific papers, and the most pervasive graph is the web itself. Pregel is a scalable infrastructure to mine a wide range of graphs and programs are expressed as a sequence of iterations. Google has been using Pregel internally for some time now.
The 20% Time Rule
Google encourages their employees to devote 20% of their time working on any project they want. The idea is to spur innovation by letting smart people do what they’re interested in.Think about how awesome that is: No matter what your boss tells you, you could take some actual work time to focus on something you find interesting.
Gmail, AdSense, and Google News were supposedly created thanks to this very policy!