copyright © 2015 curt hill software development paradigms what do you need to know?
TRANSCRIPT
Copyright © 2015 Curt Hill
Software Development Paradigms
What do you need to know?
Introduction
• Most of this should be a review from previous courses
• We will consider briefly the following:– Waterfall model– eXtreme Programming (XP)– Scrum
• You should know something already on all of these topics
Copyright © 2015 Curt Hill
Waterfall Model
• This is a classic engineering model • Predates software engineering in
its use by other engineering disciplines
Copyright © 2015 Curt Hill
Waterfall Model
Copyright © 2015 Curt Hill
RequirementsDesign
Unit Implementation
Operation & Maintenance
System Integration
Waterfall Problems
• Works better for very large projects– Must have solid managerial support
• Many such projects are canceled before rolling out the product
• The volatility of requirements• Technical debt accumulates and is
not visible until late in the project
Copyright © 2015 Curt Hill
Technical Debt
• Unfinished work that is required by a design– Most often seen in projects that are
released early
• Like financial debt this accrues interest making changes more difficult later– Prevents or makes more difficult
enhancements
Copyright © 2015 Curt Hill
Waterfall Debt• We do not see the problems early
enough– Requirements were insufficient– Design was poor– Early code was not good
• These problems come home to roost at the end of the project – This is when it is most difficult to
change
• About 18% of real world projects are using Waterfall
Copyright © 2015 Curt Hill
Alternatives• Agile, iterative, evolutionary are now
much more common• The idea is quickly develop small code
bases that deal with just the basics• Add one feature at a time• We prepare for failure by being ready
to junk the whole mess if it does not satisfy the users
• All stakeholders review
Copyright © 2015 Curt Hill
eXtreme Programming (XP)
• One of the first agile methodologies• Goals to produce high quality
software and increase programmer productivity
• XP has a set of:– Activities– Values– Rules– Principles
Copyright © 2015 Curt Hill
XP Activities
• Coding – duh!• Testing
– Unit tests– Acceptance tests
• Listening– To the business experts and each
other
• Designing– Overall structure of the system
Copyright © 2015 Curt Hill
XP Values 1• Communication
– Between the business experts and every member of the XP team
• Simplicity– Find the simplest solution – it can be
made more complicated later
• Feedback– System: unit and integration tests– Customers: acceptance tests– Team: to the customers on
requirements Copyright © 2015 Curt Hill
XP Values 2
• Courage– Design for today, not tomorrow– Be fearless in refactoring, not
allowing a poor design to hold things back
• Respect– For self: believe that you can produce
high quality code– For others: do nothing that will cause
impediments for rest of team
Copyright © 2015 Curt Hill
XP Rules• Frequent small releases• Code unit tests before the unit• Pair programming• Only one pair integrates code at a
time• No release unless code passes all
unit tests• Finding a bug tests are improved• Collective code ownership
Copyright © 2015 Curt Hill
XP Principles• Feedback
– Frequently and promptly to keep project on track
• Simplicity– Often we are asked to consider the future– XP rejects, as the future is unpredictable
• Change– Is inevitable– Accept and move on from there
Copyright © 2015 Curt Hill
Scrum• An agile development process• A process framework to manage
software development• It defines scrum teams with:
– Roles– Events– Artifacts– rules
• Its approach is not incompatible with XP
• What is scrum named after?
Copyright © 2015 Curt Hill
Scrum Team• Three distinct roles:
– Product Owner– Development Team– Scrum Master
• Teams are self-organizing• Should have all the skills needed to
accomplish their goal• Products are produced incrementally• Each increment should produce a
workable product
Copyright © 2015 Curt Hill
Terminology• Product Backlog
– Prioritized list of the features needed in the product
• Sprint – A time period that sees the production of a
new or improved workable product– This is intending to implement a Sprint Goal– Typically less than a month
• Sprint Backlog– Those features intended to be implemented
in this sprint
Copyright © 2015 Curt Hill
Product Owner
• Creates and manages the Product Backlog– The only one to do so
• Sole interface with the business– Should be a business expert, not
necessarily a development expert
• Makes sure the Development team understands the items in the backlog
Copyright © 2015 Curt Hill
Development Team• Do the work of development• Organize and manage their own
work– Self organizing
• Cross functional– All the skills necessary must be
present in the team
• No:– Sub-teams– Titles– No ranking in importance
Copyright © 2015 Curt Hill
Scrum Master• Interface between the team and
nearly everyone else• Insulates the team from outside
pressures• Assists the Product Owner in
managing the Backlog and facilitating events
• Assists the team in a coaching fashion• Not a project manager
Copyright © 2015 Curt Hill
Events
• The sprint• Sprint Planning
– A meeting that determines what can be delivered and this will be done
• Daily Scrum– A short meeting to synchronize
activities
• Sprint Review– Final meeting in the Sprint to determine
what has and has not been done
Copyright © 2015 Curt Hill
XP and Scrum• Scrum is an agile management
methodology, while XP is an agile engineering methodology
• Duration of increments– XP 1-2 weeks, Scrum 2-4
• Work goals– XP in customer defined order, Scrum
has some choice
• Goal changes are disallowed in Scrum but possible in XP
Copyright © 2015 Curt Hill
Finally
• System development methodologies vary substantially
• Traditional methodologies do well with good specifications and solid organizational support
• Agile methodologies can do well where these are absent– Many software development projects are
knowledge acquisition projects which tends to favor the agile approach
Copyright © 2015 Curt Hill