Scrum and Test-driven development - Presentation Transcript
Software Development Methodologies: Scrum and Test-Driven Development Gábor Török, Agil Eight Oct 15, 2007 Forum Nokia Developer Day, October 2007
Agile Software Development
“ Agile methods are a family of development processes, not a single approach to software development. ” ( Wikipedia )
Some basic principles
Frequent delivery == short iterations
Close (preferably face-to-face) cooperation with business people and developers
Simplicity
Self-organizing teams
Regular adaptation to changing circumstances
Trusted people , fewer but more competent
Cost-effective , an answer to the changing needs of recent years: producing quality software in shorter time, react on rapidly changing requirements more efficiently.
Developer Day, October 14 th – 15 th 2007
Agile Software Development
Whilst being incremental agile development differs from other methods in that its time periods are measured in weeks rather than months and work is performed in a highly collaborative manner.
Compared to the Waterfall model
The waterfall model is the most predictive of the methodologies, stepping through requirements capture, analysis, design, coding, and testing in a strict, pre-planned sequence.
Waterfall model is inflexible : commitments are made early on, and it is difficult to react to changes in requirements.
Agile methods, in contrast, produce completely developed and tested features (a very small subset of the whole, though)
Developer Day, October 14 th – 15 th 2007
Scrum
“ Scrum is an iterative, incremental process for developing any product or managing any work.” ( www.controlchaos.com )
Its attributes are
Wrapper for existing engineering practices
Produces a potentially shippable set of functionality at the end of every iteration
Short iterations, typically between 2-4 weeks
Cross-functional team, close co-operation with customer
Prefers rapidly changing requirements
Developer Day, October 14 th – 15 th 2007
Scrum
Characteristics of Scrum
Product backlog: prioritized list of tasks to be done
Sprint: iteration of work, typically between 2-4 weeks
Sprint planning session/review: meeting for planning the upcoming sprint or reviewing what the team has achieved
Daily scrum: short daily meeting for team to synchronize
Roles
Product Owner: representative of customer/stakeholders
ScrumMaster: facilitator for the team and product owner
Team: people doing the actual work
Burndown chart: shows remaining work over time. X axis is time, Y axis is work.
A software development technique that involves repeatedly first writing a test case and then implementing only the code necessary to pass the test.
As an aspect of Extreme Programming (XP), TDD requires that an automated unit test is written before each aspect of the code itself.
Development cycle
Add a test
Run all tests and see the new one fail
Write code that satisfies test
Run all tests again and see them succeed
Refactor if neccessary
Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
Benefits
Less use of a debugger
Less defects
Build software better and faster it drives design and looks functionality from user's point of view
Limitations
Code quality is much based on the quality of the test itself discussions and code reviews are needed to avoid low-quality code
TDD is difficult to use in some situations, such as graphical user interface or relational database mock objects can help
Mock objects are simulating objects that mimic the behavior of real objects in controlled ways. The aim is that production code should be unaware of whether it's using mock or real objects.
Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
Tools (Symbian)
SymbianOSUnit from Penrillian
Based on open source CxxUnit developers may be familiar with it
Unit++
Also open source: http://unitpp.sourceforge.net/
EUnit from SysopenDigia (commercial)
etc.
No mock object framework for Symbian , there are some for C++ in general (e.g. Mockpp)
Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
Continuous Integration (CI)
“ A software development practice where members of a team integrate their work frequently , usually each person integrates at least daily.” (Martin Fowler)
CI leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly reduced risks .
On completing the definition
Automated, self-testing and fast builds
Make it easy for anyone to get the latest executable
Automate deployment
Everyone can see what's happening: progress, statistics on code coverage/tests, etc.
Developer Day, October 14 th – 15 th 2007
Continuous Integration (CI)
Tools (Symbian)
First of all, there are no CI tools around specific for Symbian development
CruiseControl
Java (Ant, JUnit), .NET (NAnt, NUnit) or Ruby-based versions
Open Source
Anthill
Java- and Ant-based
Open Source
Continuum
Java- and Ant/Maven-based
Open Source
Developer Day, October 14 th – 15 th 2007
A Working Solution Developer Day, October 14 th – 15 th 2007 CruiseControl Build tool Build script Ant SDK with build tools SVN checkout clean build test package builds reports notification / monitoring commits changes SymbianAnt SymbianOSUnit Symbian performs uses uses uses gets data from executes artifacts
A Working Solution
SDK
E.g. S60, UIQ
Subversion
Open source version control system
http://subversion.tigris.org/
CruiseControl
Tool for a continuous build process (includes Ant)
http://cruisecontrol.sourceforge.net/
SymbianOSUnit
Popular C++ unit testing framework, open source
http://www.symbianosunit.co.uk/
SymbianAnt
Glue between Ant (CruiseControl) and SymbianOSUnit
http://www.agileight.com/
Developer Day, October 14 th – 15 th 2007
More Information About Scrum and TDD
Scrum
http://www.controlchaos.com/
http://www.scrumalliance.org/
Agile Software Development with SCRUM by Ken Schwaber
0 comments
Post a comment