Scrum and Test-driven development


Published on

Published in: Technology, Business
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Scrum and Test-driven development

    1. 1. Software Development Methodologies: Scrum and Test-Driven Development Gábor Török, Agil Eight Oct 15, 2007 Forum Nokia Developer Day, October 2007
    2. 2. Agile Software Development <ul><li>“ Agile methods are a family of development processes, not a single approach to software development. ” ( Wikipedia ) </li></ul><ul><li>Some basic principles </li></ul><ul><ul><li>Frequent delivery == short iterations </li></ul></ul><ul><ul><li>Close (preferably face-to-face) cooperation with business people and developers </li></ul></ul><ul><ul><li>Simplicity </li></ul></ul><ul><ul><li>Self-organizing teams </li></ul></ul><ul><ul><li>Regular adaptation to changing circumstances </li></ul></ul><ul><ul><li>Trusted people , fewer but more competent </li></ul></ul><ul><li>Cost-effective , an answer to the changing needs of recent years: producing quality software in shorter time, react on rapidly changing requirements more efficiently. </li></ul>Developer Day, October 14 th – 15 th 2007
    3. 3. Agile Software Development <ul><li>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. </li></ul><ul><li>Compared to the Waterfall model </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Waterfall model is inflexible : commitments are made early on, and it is difficult to react to changes in requirements. </li></ul></ul><ul><ul><li>Agile methods, in contrast, produce completely developed and tested features (a very small subset of the whole, though) </li></ul></ul>Developer Day, October 14 th – 15 th 2007
    4. 4. Scrum <ul><li>“ Scrum is an iterative, incremental process for developing any product or managing any work.” ( ) </li></ul><ul><li>Its attributes are </li></ul><ul><ul><li>Wrapper for existing engineering practices </li></ul></ul><ul><ul><li>Produces a potentially shippable set of functionality at the end of every iteration </li></ul></ul><ul><ul><li>Short iterations, typically between 2-4 weeks </li></ul></ul><ul><ul><li>Cross-functional team, close co-operation with customer </li></ul></ul><ul><ul><li>Prefers rapidly changing requirements </li></ul></ul>Developer Day, October 14 th – 15 th 2007
    5. 5. Scrum <ul><li>Characteristics of Scrum </li></ul><ul><ul><li>Product backlog: prioritized list of tasks to be done </li></ul></ul><ul><ul><li>Sprint: iteration of work, typically between 2-4 weeks </li></ul></ul><ul><ul><li>Sprint planning session/review: meeting for planning the upcoming sprint or reviewing what the team has achieved </li></ul></ul><ul><ul><li>Daily scrum: short daily meeting for team to synchronize </li></ul></ul><ul><li>Roles </li></ul><ul><ul><li>Product Owner: representative of customer/stakeholders </li></ul></ul><ul><ul><li>ScrumMaster: facilitator for the team and product owner </li></ul></ul><ul><ul><li>Team: people doing the actual work </li></ul></ul><ul><li>Burndown chart: shows remaining work over time. X axis is time, Y axis is work. </li></ul>Developer Day, October 14 th – 15 th 2007
    6. 6. Scrum Developer Day, October 14 th – 15 th 2007 ( )
    7. 7. <ul><li>A software development technique that involves repeatedly first writing a test case and then implementing only the code necessary to pass the test. </li></ul><ul><li>As an aspect of Extreme Programming (XP), TDD requires that an automated unit test is written before each aspect of the code itself. </li></ul><ul><li>Development cycle </li></ul><ul><ul><li>Add a test </li></ul></ul><ul><ul><li>Run all tests and see the new one fail </li></ul></ul><ul><ul><li>Write code that satisfies test </li></ul></ul><ul><ul><li>Run all tests again and see them succeed </li></ul></ul><ul><ul><li>Refactor if neccessary </li></ul></ul>Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
    8. 8. <ul><li>Benefits </li></ul><ul><ul><li>Less use of a debugger </li></ul></ul><ul><ul><li>Less defects </li></ul></ul><ul><ul><li>Build software better and faster  it drives design and looks functionality from user's point of view </li></ul></ul><ul><li>Limitations </li></ul><ul><ul><li>Code quality is much based on the quality of the test itself  discussions and code reviews are needed to avoid low-quality code </li></ul></ul><ul><ul><li>TDD is difficult to use in some situations, such as graphical user interface or relational database  mock objects can help </li></ul></ul><ul><li>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. </li></ul>Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
    9. 9. <ul><li>Tools (Symbian) </li></ul><ul><ul><li>SymbianOSUnit from Penrillian </li></ul></ul><ul><ul><ul><li>Based on open source CxxUnit  developers may be familiar with it </li></ul></ul></ul><ul><ul><li>Unit++ </li></ul></ul><ul><ul><ul><li>Also open source: </li></ul></ul></ul><ul><ul><li>EUnit from SysopenDigia (commercial) </li></ul></ul><ul><ul><li>etc. </li></ul></ul><ul><li>No mock object framework for Symbian , there are some for C++ in general (e.g. Mockpp) </li></ul>Test-Driven Development (TDD) Developer Day, October 14 th – 15 th 2007
    10. 10. Continuous Integration (CI) <ul><li>“ A software development practice where members of a team integrate their work frequently , usually each person integrates at least daily.” (Martin Fowler) </li></ul><ul><li>CI leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly  reduced risks . </li></ul><ul><li>On completing the definition </li></ul><ul><ul><li>Automated, self-testing and fast builds </li></ul></ul><ul><ul><li>Make it easy for anyone to get the latest executable </li></ul></ul><ul><ul><li>Automate deployment </li></ul></ul><ul><ul><li>Everyone can see what's happening: progress, statistics on code coverage/tests, etc. </li></ul></ul>Developer Day, October 14 th – 15 th 2007
    11. 11. Continuous Integration (CI) <ul><li>Tools (Symbian) </li></ul><ul><ul><li>First of all, there are no CI tools around specific for Symbian development </li></ul></ul><ul><ul><li>CruiseControl </li></ul></ul><ul><ul><ul><li>Java (Ant, JUnit), .NET (NAnt, NUnit) or Ruby-based versions </li></ul></ul></ul><ul><ul><ul><li>Open Source </li></ul></ul></ul><ul><ul><li>Anthill </li></ul></ul><ul><ul><ul><li>Java- and Ant-based </li></ul></ul></ul><ul><ul><ul><li>Open Source </li></ul></ul></ul><ul><ul><li>Continuum </li></ul></ul><ul><ul><ul><li>Java- and Ant/Maven-based </li></ul></ul></ul><ul><ul><ul><li>Open Source </li></ul></ul></ul>Developer Day, October 14 th – 15 th 2007
    12. 12. 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
    13. 13. A Working Solution <ul><li>SDK </li></ul><ul><ul><li>E.g. S60, UIQ </li></ul></ul><ul><li>Subversion </li></ul><ul><ul><li>Open source version control system </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>CruiseControl </li></ul><ul><ul><li>Tool for a continuous build process (includes Ant) </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>SymbianOSUnit </li></ul><ul><ul><li>Popular C++ unit testing framework, open source </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>SymbianAnt </li></ul><ul><ul><li>Glue between Ant (CruiseControl) and SymbianOSUnit </li></ul></ul><ul><ul><li> </li></ul></ul>Developer Day, October 14 th – 15 th 2007
    14. 14. More Information About Scrum and TDD <ul><li>Scrum </li></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li>Agile Software Development with SCRUM by Ken Schwaber </li></ul></ul><ul><li>Test-Driven Development </li></ul><ul><ul><li> </li></ul></ul><ul><ul><li>http :// </li></ul></ul><ul><ul><li>Test Driven Development: By Example by Kent Beck </li></ul></ul>Developer Day, October 14 th – 15 th 2007
    15. 15. Personal Information <ul><li>Gábor Török </li></ul><ul><li>Company: Agil Eight </li></ul><ul><li>Company e-mail: [email_address] </li></ul><ul><li>Company URL: </li></ul><ul><li>Private e-mail: [email_address] </li></ul><ul><li>Blog: </li></ul>Developer Day, October 14 th – 15 th 2007
    16. 16. Thank you! Developer Day, October 14 th – 15 th 2007