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. Developer Day, October 14 th  – 15 th  2007
Scrum Developer Day, October 14 th  – 15 th  2007 ( www.controlchaos.com )
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 Test-Driven Development http://www.testdriven.com/ http ://www.agiledata.org/essays/tdd.html Test Driven Development: By Example  by  Kent Beck Developer Day, October 14 th  – 15 th  2007
Personal Information Gábor Török Company: Agil Eight Company e-mail:  [email_address] Company URL:  http://www.agileight.com/ Private e-mail:   [email_address] Blog:   http://mobile-thoughts.blogspot.com/ Developer Day, October 14 th  – 15 th  2007
Thank you! Developer Day, October 14 th  – 15 th  2007

Scrum and Test-driven development

  • 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.
    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
  • 3.
    Agile Software DevelopmentWhilst 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
  • 4.
    Scrum “ Scrumis 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
  • 5.
    Scrum Characteristics ofScrum 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. Developer Day, October 14 th – 15 th 2007
  • 6.
    Scrum Developer Day,October 14 th – 15 th 2007 ( www.controlchaos.com )
  • 7.
    A software developmenttechnique 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
  • 8.
    Benefits Less useof 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
  • 9.
    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
  • 10.
    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
  • 11.
    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
  • 12.
    A Working SolutionDeveloper 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.
    A Working SolutionSDK 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
  • 14.
    More Information AboutScrum and TDD Scrum http://www.controlchaos.com/ http://www.scrumalliance.org/ Agile Software Development with SCRUM by Ken Schwaber Test-Driven Development http://www.testdriven.com/ http ://www.agiledata.org/essays/tdd.html Test Driven Development: By Example by Kent Beck Developer Day, October 14 th – 15 th 2007
  • 15.
    Personal Information GáborTörök Company: Agil Eight Company e-mail: [email_address] Company URL: http://www.agileight.com/ Private e-mail: [email_address] Blog: http://mobile-thoughts.blogspot.com/ Developer Day, October 14 th – 15 th 2007
  • 16.
    Thank you! DeveloperDay, October 14 th – 15 th 2007