SlideShare ist ein Scribd-Unternehmen logo
1 von 87
The
xDD
Models
Damian Gordon
The
xDD
Models
Damian Gordon
Contents
1. Overview
2. Details
3. Advantages
4. Disadvantages
5. Interesting
6. Reflection
7. Review
8. Summary
1. Overview
Overview
• xDD
– FDD (Feature-driven Development)
– TDD (Test-driven Development)
– BDD (Behaviour-driven Development)
– MDD (Model-driven Development)
– DDD (Documentation-Driven Development)
– DDD (Domain-Driven Design)
– DDD (Defect-Driven Development)
– RDD (Responsibility-Driven Design)
– UGDD (User Guide-Driven Development)
Overview
• xDD
– A collection of software development processes
that rely on the repetition of very short
development cycles
– Requirements are turned into very specific goals,
e.g. features or tests or behaviours.
Timeline of Methodologies
7
1950s Code & Fix
1960s Design-Code-Test-Maintain
1970s Waterfall Model
1980s Spiral Model
1990s Rapid Application Development, V Model
2000s Agile Methods
Timeline of Methodologies
8
1950s Code & Fix
1960s Design-Code-Test-Maintain
1970s Waterfall Model
1980s Spiral Model
1990s Rapid Application Development, V Model
2000s Agile Methods
Timeline of Methodologies
9
2003
TDD
2004
BDD
1999
FDD
Manifesto for Agile
Software Development
Feature-Driven Development
Feature-Driven Development
• Coad, P., Lefebvre, E., De Luca, J. (1999) “Java
Modelling In Color With UML: Enterprise
Components and Process”, Prentice Hall
International.
Jeff De Luca
• Jeff De Luca is a global
information technology
strategist and an author
in the field of software
development
methodology.
• He is considered the
primary architect of
Feature Driven
Development (FDD)
Test-Driven Development
Test-Driven Development
• Beck, K. (2003) “Test-Driven Development by
Example”, Addison Wesley.
Kent Beck
• Born in 1961.
• An American software
engineer and the
creator of extreme
programming, and
“rediscoverer” of Test-
Driven Development.
Behaviour-Driven Development
Behaviour-Driven Development
• North, D., (2004) “Introducing BDD”,
https://dannorth.net/introducing-bdd/
Dan North
• Born in 1932.
• An American engineer,
business consultant,
and with Kevin Forsberg
co-founder and
executive director of
The Center for Systems
Management
2. Details
Feature-Driven Development
Feature-Driven Development
Feature-Driven Development
• FEATURES: Small, client-valued requirements.
• A lot of Agile methods are designed for small
teams of developer, almost uniquely, FDD was
originally developed for a large team.
• And as such is designed to compensate for the
range of skills that could be found in a large
team.
Feature-Driven Development
1. Develop overall model
2. Build feature list
3. Plan by feature
4. Design by feature
5. Build by feature
Feature-Driven Development
1. Develop overall model
2. Build feature list
3. Plan by feature
4. Design by feature
5. Build by feature
Feature-Driven Development
1. Develop overall model
2. Build feature list
3. Plan by feature
4. Design by feature
5. Build by feature
Feature-Driven Development
• 1. Develop overall model
• This is unusual for an Agile approach, to build a domain object
model, but in FDD this isn’t a large, upfront analysis and
design which is a long, drawn-out, activity.
• Instead, the model is built in an intense, highly iterative,
collaborative and generally enjoyable activity involving
‘domain and development members under the guidance of an
experienced object modeller in the role of Chief Architect‘
• While not mandatory, the object model is typically built using
Peter Coad's modelling in colour technique.
Feature-Driven Development
• Coloured UML
Role
Moment,
Interval
Description
Party, Place,
Thing
Feature-Driven Development
• Part of this phase is to help everyone to gain a good, shared
understanding of the problem domain. This phase also
ensures that there is a high level of communication between
all stakeholders.
• The object model developed concentrates on breadth rather
than depth; depth is added iteratively through the lifetime of
the project. The model is a living artefact, throughout the
project, the model becomes the primary vehicle around which
the team discusses, challenges, and clarifies requirements.
Feature-Driven Development
• 2. Build feature list
• As mentioned above, features are small, client-valued
requirements. Small means a feature typically takes 1-3 days
to implement, occasionally 5 days but never 10 or more days
to implement.
• The feature list is a three-level hierarchy. The upper levels in
the feature list hierarchy are a set of domain subject areas
from the high-level breakdown of the problem domain. Then
within these areas, the team identifies the business activities
of that area and places individual features within one of those
activities.
Feature-Driven Development
• 3. Plan by Feature
• The last initial phase involves constructing an initial schedule
and assigning initial responsibilities.
• The development team sequence the feature sets based on
activities that represent best relative business value, but will
later readjust to take into account technical risk and
dependencies where appropriate.
Feature-Driven Development
• FDD also departs from traditional agile thinking, in that it
chooses not to adopt collective ownership of source code.
Instead, it assigns individual developers to be responsible for
particular classes.
• Class ownership implies responsibility not exclusivity, so a
class owner may allow another developer to make a change to
a class they own. The big difference is that the class owner is
aware of, and approves of, the change and is responsible for
checking that the change is made correctly.
Feature-Driven Development
• 4. Design by Feature
• Each feature is tackled by a feature team (3-5
designers/developers usually working together for 1-3 days).
• Once formed, the Chief Programmer facilitates the
collaborative analysis and design of the features for that
iteration. Depending on the complexity, this may involve the
team walking through the requirements in detail with a
domain expert, and studying any existing relevant documents.
Feature-Driven Development
• The final step in this phase is to review the design. For simple
features, this may be a brief sanity check of the design held
within the feature team. For more significant features, the
Chief Programmer will typically involve other Chief
Programmers or class owners so that they are aware and can
comment on the impact of the proposed design.
Feature-Driven Development
• 5. Build by Feature
• This involves the team members coding up the features,
testing them at both unit level and feature level, and holding
a code inspection before promoting the completed features
into the project's regular build process.
• FDD expects developers to unit test their code. It expects
feature teams to test their features.
Feature-Driven Development
• The reason FDD mandates code inspections is that research
has shown time and again that when done well, inspections
find more defects and different kinds of defects than testing.
Not only that but by examining the code of the more
experienced, knowledgeable developers on the team and
having them explain the idioms they use, less experienced
developers learn better coding techniques.
Test-Driven Development
Test-Driven Development
• Test-Driven Development starts with
developing tests for each one of the features.
• The test might fail as the tests are developed
even before the development.
• Development team then develops and
rewrites the code to pass the test.
Test-Driven Development
1. Add a Test
2. Run all tests and see if the new one fails
3. Write some code
4. Run tests and Refactor code
5. Repeat
Test-Driven Development
• As we can see from the steps, there is no
explicit process to develop the feature list.
• TDD doesn’t care how the features are
developed, but using the Increment Zero
phases of FDD are a good way to go:
1. Develop overall model
2. Build feature list
3. Plan by feature
Test-Driven Development
• 1. Add a Test
• Once the feature list is completed, a feature is selected, and a
test is written that defines a function or improvements of a
function (which should be very succinct).
• To write a test, the developer must clearly understand the
feature's specification and requirements. The developer can
accomplish this through use cases and user stories to cover
the requirements and exception conditions, and can write the
test in whatever testing framework is appropriate to the
software environment.
Test-Driven Development
• User Stories:
• A user story is an informal, natural language
description of one or more features of a
software system. User stories are often
written from the perspective of an end user or
user of a system. They are often recorded on
index cards, on Post-it notes, or in project
management software.
Test-Driven Development
• User Story template:
Test-Driven Development
• 2. Run all tests and see if the new test fails
• We do this BEFORE the code is written, so the goal here is to
ensure that the test harness is working correctly.
• If we run the test and it passes, we can conclude there is
something wrong with the test, if not, the developers can be
more confident in the new test.
Test-Driven Development
• 3. Write the Code
• TDD encourages a collective ownership of source code. The
code written at this stage is not perfect and may, for example,
pass the test in an inelegant way. That is acceptable because it
will be improved in Step 5.
• At this point, the only purpose of the written code is to pass
the test. The programmers should not write code that is
beyond the functionality that the test checks.
Test-Driven Development
• 4. Run Tests and Refactor Code
• If all test cases now pass, the programmers can be confident
that the new code meets the test requirements, and does not
break or degrade any existing features. If they do not, the new
code must be adjusted until they do.
• Next the refactoring process occurs.
Test-Driven Development
• Refactoring:
• Restructuring or rewriting the source code to
improve the non-functional requirements
(internal consistency, readability, etc.),
without changing its function.
Test-Driven Development
• The growing code base must be cleaned up regularly during
test-driven development.
• Duplication must be removed.
• Object, class, module, variable and method names should
clearly represent their current purpose and use, as extra
functionality is added.
• As features are added, method bodies can get longer and
other objects larger. They benefit from being split and their
parts carefully named to improve readability and
maintainability, which will be increasingly valuable later in the
software lifecycle.
Test-Driven Development
• 5. Repeat
• Start with another new test, the cycle is then repeated to
push forward the functionality. The size of the steps should
always be small, with as few as 1 to 10 edits between each
test run.
• If new code does not rapidly satisfy a new test, or other tests
fail unexpectedly, the programmer should undo or revert in
preference to excessive debugging.
• Continuous integration helps by providing revertible
checkpoints.
Behaviour-Driven Development
Behaviour-Driven Development
• Behaviour-Driven Development is an
extension of TDD where there is an additional
focus on the business interests (or “business
drivers”).
• Behaviour-driven development combines the
general techniques and principles of TDD with
ideas from domain-driven design and object-
oriented analysis and design
Behaviour-Driven Development
• BDD adds new strategies:
1. Think from the Outside In
2. Use the Five Whys on User Stories
3. Single Notation
4. Consistent Usage
Test-Driven Development
• 1. Think from the Outside In
• Only implement those features and behaviours that
contribute most directly to these business outcomes, so as to
minimize waste
Test-Driven Development
• 2. Use the Five Whys on User Stories
• The Five Whys is an iterative interrogative technique used to
explore the root cause underlying a particular issue.
• The technique does this by repeating the question "Why?“
five times. Each answer forms the basis of the next question.
• The use of Five in the name derives from an anecdotal
observation on the number of iterations needed to resolve
the problem.
Test-Driven Development
• 2. Use the Five Whys on User Stories
Test-Driven Development
• 3. Single Notation
• Describe features and behaviours in a single notation which is
directly accessible to domain experts, testers and developers,
so as to improve communication
Test-Driven Development
• 4. Consistent Usage
• Apply these techniques all the way down to the lowest levels
of abstraction of the software, paying particular attention to
the distribution of features and behaviours, so that evolution
remains cheap.
3. Advantages
Advantages
• Significantly reduces debug time
Advantages
• Shorter software development cycles
Advantages
• Code being developed is focused on meeting
client requirements
Advantages
• Accommodates teams of developers with a
wide variety of experience
Advantages
• Offers well defined progress tracking and
reporting capabilities
Advantages
• Project costing is done with greater accuracy
4. Disadvantages
Disadvantages
• Can often have very little documentation
compared to other methodologies
Disadvantages
• Can result in over-reliance on Chief
Programmer
Disadvantages
• Might not be suitable for a very small team or
single developer
Disadvantages
• If the requirements are changing rapidly, the
goals keep moving
5. Interesting
Interesting
• FDD was initially devised to accomplish
specific needs of a 15 month, 50 person
project at a large Singapore bank.
Interesting
• FDD defines six milestones per feature that
are to be completed sequentially:
Interesting
• A 2005 study found that using TDD meant
writing more tests and, in turn, programmers
who wrote more tests tended to be more
productive.
Erdogmus, Hakan; Morisio, Torchiano. "On the Effectiveness of Test-first Approach to
Programming". Proceedings of the IEEE Transactions on Software Engineering, 31(1).
January 2005. (NRC 47445). Retrieved 2008-01-1
Interesting
• Test-driven development has been adopted by
Quality Control teams. The six steps of the TDD
sequence are applied with minor semantic
changes:
– "Add a check" replaces "Add a test"
– "Run all checks" replaces "Run all tests"
– "Do the work" replaces "Write some code"
– "Run all checks" replaces "Run tests"
– "Clean up the work" replaces "Refactor code"
– "Repeat"
Interesting
• There are several different examples of BDD
software tools in use in projects today, for
different platforms and programming
languages. Possibly the most well-known is
JBehave, which was developed by Dan North.
• http://jbehave.org
Interesting
• BDD User Stories usually follow the following format:
• Title: The story should have a clear, explicit title.
• Narrative: A short, introductory section that specifies
– who: (which business or project role) is the driver or primary stakeholder of
the story (the actor who derives business benefit from the story)
– what: effect the stakeholder wants the story to have
– why: business value the stakeholder will derive from this effect
• Acceptance Criteria or Scenarios: a description of each specific case of the
narrative. Such a scenario has the following structure:
– It starts by specifying the initial condition that is assumed to be true at the
beginning of the scenario. This may consist of a single clause, or several.
– It then states which event triggers the start of the scenario.
– Finally, it states the expected outcome, in one or more clauses.
6. Reflections
Reflections
• FDD, TDD and BDD are focused on specific
themes:
– Documentation: The amount of documentation in
xDD methodologies is designed to be “just
enough” as opposed to “a lot”.
– Team Skills: The xDD methodologies acknowledge
that different members of the team have different
skill levels.
Reflections
• FDD is designed both for large software
development teams and small developments
as well.
• TDD and BDD are designed principally for
small development teams.
Reflections
• It has been argued that these approaches are
more productive than other methodologies,
as those are attempting to code in large steps.
Reflections
• TDD and BDD have testing as a significant part
of their processes, but nonetheless a testing
phase is also necessary in these
methodologies.
Reflections
7. Review
Review
• What did we learn?
8. Summary
Summary
"X" Driven-Development Methodologies

Weitere ähnliche Inhalte

Was ist angesagt?

{Re}designing a Developer Portal
{Re}designing a Developer Portal{Re}designing a Developer Portal
{Re}designing a Developer PortalPronovix
 
Drive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsDrive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsBelatrix Software
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven DevelopmentViraf Karai
 
Flutter vs React Native | Edureka
Flutter vs React Native | EdurekaFlutter vs React Native | Edureka
Flutter vs React Native | EdurekaEdureka!
 
Building a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersBuilding a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersAmazon Web Services
 
Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process John Derrico
 
DevOps at Tokopedia - DevOps Indonesia
DevOps at Tokopedia - DevOps IndonesiaDevOps at Tokopedia - DevOps Indonesia
DevOps at Tokopedia - DevOps IndonesiaKhairul Zebua
 
CI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringCI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringSushma
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...Simplilearn
 
Test Driven Development & CI/CD
Test Driven Development & CI/CDTest Driven Development & CI/CD
Test Driven Development & CI/CDShanmuga S Muthu
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Julien Garderon
 
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...Manuel Pais
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
How to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-BakedHow to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-BakedSusan Schanta
 

Was ist angesagt? (20)

{Re}designing a Developer Portal
{Re}designing a Developer Portal{Re}designing a Developer Portal
{Re}designing a Developer Portal
 
Drive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsDrive business outcomes using Azure Devops
Drive business outcomes using Azure Devops
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
 
Flutter vs React Native | Edureka
Flutter vs React Native | EdurekaFlutter vs React Native | Edureka
Flutter vs React Native | Edureka
 
Building a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersBuilding a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on Containers
 
Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process
 
DevOps at Tokopedia - DevOps Indonesia
DevOps at Tokopedia - DevOps IndonesiaDevOps at Tokopedia - DevOps Indonesia
DevOps at Tokopedia - DevOps Indonesia
 
CI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringCI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality Engineering
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
 
Test Driven Development & CI/CD
Test Driven Development & CI/CDTest Driven Development & CI/CD
Test Driven Development & CI/CD
 
Welcome to Azure DevOps
Welcome to Azure DevOpsWelcome to Azure DevOps
Welcome to Azure DevOps
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation
 
Agile contracts
Agile contractsAgile contracts
Agile contracts
 
Platform engineering
Platform engineeringPlatform engineering
Platform engineering
 
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...
Keynote: Frozen DevOps? The not-so-technical Last Mile @ DevOpsDays Portugal,...
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
How to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-BakedHow to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-Baked
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
 
Devops
DevopsDevops
Devops
 

Ähnlich wie "X" Driven-Development Methodologies

Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Developmentdcsunu
 
Software vjhghjjkhjkkkghhjhEngineering.pdf
Software vjhghjjkhjkkkghhjhEngineering.pdfSoftware vjhghjjkhjkkkghhjhEngineering.pdf
Software vjhghjjkhjkkkghhjhEngineering.pdfavishekpradhan24
 
Phases in Agile Development- 9.pptx
Phases in Agile Development- 9.pptxPhases in Agile Development- 9.pptx
Phases in Agile Development- 9.pptxAlishaFida1
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia eventXebia India
 
Component based development | what, why and how
Component based development | what, why and howComponent based development | what, why and how
Component based development | what, why and howRakesh Kumar Jha
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile DeveloperBSGAfrica
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentRuhaim Izmeth
 
CISSP - Software Development Security
CISSP - Software Development SecurityCISSP - Software Development Security
CISSP - Software Development SecurityKarthikeyan Dhayalan
 
Project Life Cycle and Effort Estimation
Project Life Cycle andEffort EstimationProject Life Cycle andEffort Estimation
Project Life Cycle and Effort Estimationssuserb7c8b8
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software EngineeringPurvik Rana
 
Student feedback system
Student feedback systemStudent feedback system
Student feedback systemAkshay Surve
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentnikhil sreeni
 
Software Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptxMohamedElshaikh10
 
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfuppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfutubashaikh26
 

Ähnlich wie "X" Driven-Development Methodologies (20)

Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Software vjhghjjkhjkkkghhjhEngineering.pdf
Software vjhghjjkhjkkkghhjhEngineering.pdfSoftware vjhghjjkhjkkkghhjhEngineering.pdf
Software vjhghjjkhjkkkghhjhEngineering.pdf
 
Lecture 5
Lecture 5 Lecture 5
Lecture 5
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 
Phases in Agile Development- 9.pptx
Phases in Agile Development- 9.pptxPhases in Agile Development- 9.pptx
Phases in Agile Development- 9.pptx
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
Component based development | what, why and how
Component based development | what, why and howComponent based development | what, why and how
Component based development | what, why and how
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
Manual Software testing - software development life cycle
Manual Software testing - software development life cycleManual Software testing - software development life cycle
Manual Software testing - software development life cycle
 
Chapter 2
Chapter 2 Chapter 2
Chapter 2
 
Agile Project Management
Agile Project ManagementAgile Project Management
Agile Project Management
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
CISSP - Software Development Security
CISSP - Software Development SecurityCISSP - Software Development Security
CISSP - Software Development Security
 
Project Life Cycle and Effort Estimation
Project Life Cycle andEffort EstimationProject Life Cycle andEffort Estimation
Project Life Cycle and Effort Estimation
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
 
Student feedback system
Student feedback systemStudent feedback system
Student feedback system
 
ppt_se.pdf
ppt_se.pdfppt_se.pdf
ppt_se.pdf
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Software Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptx
 
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfuppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
 

Mehr von Damian T. Gordon

Universal Design for Learning, Co-Designing with Students.
Universal Design for Learning, Co-Designing with Students.Universal Design for Learning, Co-Designing with Students.
Universal Design for Learning, Co-Designing with Students.Damian T. Gordon
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesDamian T. Gordon
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud ComputingDamian T. Gordon
 
Evaluating Teaching: SECTIONS
Evaluating Teaching: SECTIONSEvaluating Teaching: SECTIONS
Evaluating Teaching: SECTIONSDamian T. Gordon
 
Evaluating Teaching: MERLOT
Evaluating Teaching: MERLOTEvaluating Teaching: MERLOT
Evaluating Teaching: MERLOTDamian T. Gordon
 
Evaluating Teaching: Anstey and Watson Rubric
Evaluating Teaching: Anstey and Watson RubricEvaluating Teaching: Anstey and Watson Rubric
Evaluating Teaching: Anstey and Watson RubricDamian T. Gordon
 
Designing Teaching: Pause Procedure
Designing Teaching: Pause ProcedureDesigning Teaching: Pause Procedure
Designing Teaching: Pause ProcedureDamian T. Gordon
 
Designing Teaching: ASSURE
Designing Teaching: ASSUREDesigning Teaching: ASSURE
Designing Teaching: ASSUREDamian T. Gordon
 
Designing Teaching: Laurilliard's Learning Types
Designing Teaching: Laurilliard's Learning TypesDesigning Teaching: Laurilliard's Learning Types
Designing Teaching: Laurilliard's Learning TypesDamian T. Gordon
 
Designing Teaching: Gagne's Nine Events of Instruction
Designing Teaching: Gagne's Nine Events of InstructionDesigning Teaching: Gagne's Nine Events of Instruction
Designing Teaching: Gagne's Nine Events of InstructionDamian T. Gordon
 
Designing Teaching: Elaboration Theory
Designing Teaching: Elaboration TheoryDesigning Teaching: Elaboration Theory
Designing Teaching: Elaboration TheoryDamian T. Gordon
 
Universally Designed Learning Spaces: Some Considerations
Universally Designed Learning Spaces: Some ConsiderationsUniversally Designed Learning Spaces: Some Considerations
Universally Designed Learning Spaces: Some ConsiderationsDamian T. Gordon
 

Mehr von Damian T. Gordon (20)

Universal Design for Learning, Co-Designing with Students.
Universal Design for Learning, Co-Designing with Students.Universal Design for Learning, Co-Designing with Students.
Universal Design for Learning, Co-Designing with Students.
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
REST and RESTful Services
REST and RESTful ServicesREST and RESTful Services
REST and RESTful Services
 
Serverless Computing
Serverless ComputingServerless Computing
Serverless Computing
 
Cloud Identity Management
Cloud Identity ManagementCloud Identity Management
Cloud Identity Management
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and Docker
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Introduction to ChatGPT
Introduction to ChatGPTIntroduction to ChatGPT
Introduction to ChatGPT
 
How to Argue Logically
How to Argue LogicallyHow to Argue Logically
How to Argue Logically
 
Evaluating Teaching: SECTIONS
Evaluating Teaching: SECTIONSEvaluating Teaching: SECTIONS
Evaluating Teaching: SECTIONS
 
Evaluating Teaching: MERLOT
Evaluating Teaching: MERLOTEvaluating Teaching: MERLOT
Evaluating Teaching: MERLOT
 
Evaluating Teaching: Anstey and Watson Rubric
Evaluating Teaching: Anstey and Watson RubricEvaluating Teaching: Anstey and Watson Rubric
Evaluating Teaching: Anstey and Watson Rubric
 
Evaluating Teaching: LORI
Evaluating Teaching: LORIEvaluating Teaching: LORI
Evaluating Teaching: LORI
 
Designing Teaching: Pause Procedure
Designing Teaching: Pause ProcedureDesigning Teaching: Pause Procedure
Designing Teaching: Pause Procedure
 
Designing Teaching: ADDIE
Designing Teaching: ADDIEDesigning Teaching: ADDIE
Designing Teaching: ADDIE
 
Designing Teaching: ASSURE
Designing Teaching: ASSUREDesigning Teaching: ASSURE
Designing Teaching: ASSURE
 
Designing Teaching: Laurilliard's Learning Types
Designing Teaching: Laurilliard's Learning TypesDesigning Teaching: Laurilliard's Learning Types
Designing Teaching: Laurilliard's Learning Types
 
Designing Teaching: Gagne's Nine Events of Instruction
Designing Teaching: Gagne's Nine Events of InstructionDesigning Teaching: Gagne's Nine Events of Instruction
Designing Teaching: Gagne's Nine Events of Instruction
 
Designing Teaching: Elaboration Theory
Designing Teaching: Elaboration TheoryDesigning Teaching: Elaboration Theory
Designing Teaching: Elaboration Theory
 
Universally Designed Learning Spaces: Some Considerations
Universally Designed Learning Spaces: Some ConsiderationsUniversally Designed Learning Spaces: Some Considerations
Universally Designed Learning Spaces: Some Considerations
 

Kürzlich hochgeladen

HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxnelietumpap1
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 

Kürzlich hochgeladen (20)

HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptx
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 

"X" Driven-Development Methodologies

  • 2. Contents 1. Overview 2. Details 3. Advantages 4. Disadvantages 5. Interesting 6. Reflection 7. Review 8. Summary
  • 3.
  • 5. Overview • xDD – FDD (Feature-driven Development) – TDD (Test-driven Development) – BDD (Behaviour-driven Development) – MDD (Model-driven Development) – DDD (Documentation-Driven Development) – DDD (Domain-Driven Design) – DDD (Defect-Driven Development) – RDD (Responsibility-Driven Design) – UGDD (User Guide-Driven Development)
  • 6. Overview • xDD – A collection of software development processes that rely on the repetition of very short development cycles – Requirements are turned into very specific goals, e.g. features or tests or behaviours.
  • 7. Timeline of Methodologies 7 1950s Code & Fix 1960s Design-Code-Test-Maintain 1970s Waterfall Model 1980s Spiral Model 1990s Rapid Application Development, V Model 2000s Agile Methods
  • 8. Timeline of Methodologies 8 1950s Code & Fix 1960s Design-Code-Test-Maintain 1970s Waterfall Model 1980s Spiral Model 1990s Rapid Application Development, V Model 2000s Agile Methods
  • 11. Feature-Driven Development • Coad, P., Lefebvre, E., De Luca, J. (1999) “Java Modelling In Color With UML: Enterprise Components and Process”, Prentice Hall International.
  • 12. Jeff De Luca • Jeff De Luca is a global information technology strategist and an author in the field of software development methodology. • He is considered the primary architect of Feature Driven Development (FDD)
  • 14. Test-Driven Development • Beck, K. (2003) “Test-Driven Development by Example”, Addison Wesley.
  • 15. Kent Beck • Born in 1961. • An American software engineer and the creator of extreme programming, and “rediscoverer” of Test- Driven Development.
  • 17. Behaviour-Driven Development • North, D., (2004) “Introducing BDD”, https://dannorth.net/introducing-bdd/
  • 18. Dan North • Born in 1932. • An American engineer, business consultant, and with Kevin Forsberg co-founder and executive director of The Center for Systems Management
  • 19.
  • 23. Feature-Driven Development • FEATURES: Small, client-valued requirements. • A lot of Agile methods are designed for small teams of developer, almost uniquely, FDD was originally developed for a large team. • And as such is designed to compensate for the range of skills that could be found in a large team.
  • 24. Feature-Driven Development 1. Develop overall model 2. Build feature list 3. Plan by feature 4. Design by feature 5. Build by feature
  • 25. Feature-Driven Development 1. Develop overall model 2. Build feature list 3. Plan by feature 4. Design by feature 5. Build by feature
  • 26. Feature-Driven Development 1. Develop overall model 2. Build feature list 3. Plan by feature 4. Design by feature 5. Build by feature
  • 27. Feature-Driven Development • 1. Develop overall model • This is unusual for an Agile approach, to build a domain object model, but in FDD this isn’t a large, upfront analysis and design which is a long, drawn-out, activity. • Instead, the model is built in an intense, highly iterative, collaborative and generally enjoyable activity involving ‘domain and development members under the guidance of an experienced object modeller in the role of Chief Architect‘ • While not mandatory, the object model is typically built using Peter Coad's modelling in colour technique.
  • 28. Feature-Driven Development • Coloured UML Role Moment, Interval Description Party, Place, Thing
  • 29. Feature-Driven Development • Part of this phase is to help everyone to gain a good, shared understanding of the problem domain. This phase also ensures that there is a high level of communication between all stakeholders. • The object model developed concentrates on breadth rather than depth; depth is added iteratively through the lifetime of the project. The model is a living artefact, throughout the project, the model becomes the primary vehicle around which the team discusses, challenges, and clarifies requirements.
  • 30. Feature-Driven Development • 2. Build feature list • As mentioned above, features are small, client-valued requirements. Small means a feature typically takes 1-3 days to implement, occasionally 5 days but never 10 or more days to implement. • The feature list is a three-level hierarchy. The upper levels in the feature list hierarchy are a set of domain subject areas from the high-level breakdown of the problem domain. Then within these areas, the team identifies the business activities of that area and places individual features within one of those activities.
  • 31. Feature-Driven Development • 3. Plan by Feature • The last initial phase involves constructing an initial schedule and assigning initial responsibilities. • The development team sequence the feature sets based on activities that represent best relative business value, but will later readjust to take into account technical risk and dependencies where appropriate.
  • 32. Feature-Driven Development • FDD also departs from traditional agile thinking, in that it chooses not to adopt collective ownership of source code. Instead, it assigns individual developers to be responsible for particular classes. • Class ownership implies responsibility not exclusivity, so a class owner may allow another developer to make a change to a class they own. The big difference is that the class owner is aware of, and approves of, the change and is responsible for checking that the change is made correctly.
  • 33. Feature-Driven Development • 4. Design by Feature • Each feature is tackled by a feature team (3-5 designers/developers usually working together for 1-3 days). • Once formed, the Chief Programmer facilitates the collaborative analysis and design of the features for that iteration. Depending on the complexity, this may involve the team walking through the requirements in detail with a domain expert, and studying any existing relevant documents.
  • 34. Feature-Driven Development • The final step in this phase is to review the design. For simple features, this may be a brief sanity check of the design held within the feature team. For more significant features, the Chief Programmer will typically involve other Chief Programmers or class owners so that they are aware and can comment on the impact of the proposed design.
  • 35. Feature-Driven Development • 5. Build by Feature • This involves the team members coding up the features, testing them at both unit level and feature level, and holding a code inspection before promoting the completed features into the project's regular build process. • FDD expects developers to unit test their code. It expects feature teams to test their features.
  • 36. Feature-Driven Development • The reason FDD mandates code inspections is that research has shown time and again that when done well, inspections find more defects and different kinds of defects than testing. Not only that but by examining the code of the more experienced, knowledgeable developers on the team and having them explain the idioms they use, less experienced developers learn better coding techniques.
  • 38. Test-Driven Development • Test-Driven Development starts with developing tests for each one of the features. • The test might fail as the tests are developed even before the development. • Development team then develops and rewrites the code to pass the test.
  • 39. Test-Driven Development 1. Add a Test 2. Run all tests and see if the new one fails 3. Write some code 4. Run tests and Refactor code 5. Repeat
  • 40. Test-Driven Development • As we can see from the steps, there is no explicit process to develop the feature list. • TDD doesn’t care how the features are developed, but using the Increment Zero phases of FDD are a good way to go: 1. Develop overall model 2. Build feature list 3. Plan by feature
  • 41. Test-Driven Development • 1. Add a Test • Once the feature list is completed, a feature is selected, and a test is written that defines a function or improvements of a function (which should be very succinct). • To write a test, the developer must clearly understand the feature's specification and requirements. The developer can accomplish this through use cases and user stories to cover the requirements and exception conditions, and can write the test in whatever testing framework is appropriate to the software environment.
  • 42. Test-Driven Development • User Stories: • A user story is an informal, natural language description of one or more features of a software system. User stories are often written from the perspective of an end user or user of a system. They are often recorded on index cards, on Post-it notes, or in project management software.
  • 44. Test-Driven Development • 2. Run all tests and see if the new test fails • We do this BEFORE the code is written, so the goal here is to ensure that the test harness is working correctly. • If we run the test and it passes, we can conclude there is something wrong with the test, if not, the developers can be more confident in the new test.
  • 45. Test-Driven Development • 3. Write the Code • TDD encourages a collective ownership of source code. The code written at this stage is not perfect and may, for example, pass the test in an inelegant way. That is acceptable because it will be improved in Step 5. • At this point, the only purpose of the written code is to pass the test. The programmers should not write code that is beyond the functionality that the test checks.
  • 46. Test-Driven Development • 4. Run Tests and Refactor Code • If all test cases now pass, the programmers can be confident that the new code meets the test requirements, and does not break or degrade any existing features. If they do not, the new code must be adjusted until they do. • Next the refactoring process occurs.
  • 47. Test-Driven Development • Refactoring: • Restructuring or rewriting the source code to improve the non-functional requirements (internal consistency, readability, etc.), without changing its function.
  • 48. Test-Driven Development • The growing code base must be cleaned up regularly during test-driven development. • Duplication must be removed. • Object, class, module, variable and method names should clearly represent their current purpose and use, as extra functionality is added. • As features are added, method bodies can get longer and other objects larger. They benefit from being split and their parts carefully named to improve readability and maintainability, which will be increasingly valuable later in the software lifecycle.
  • 49. Test-Driven Development • 5. Repeat • Start with another new test, the cycle is then repeated to push forward the functionality. The size of the steps should always be small, with as few as 1 to 10 edits between each test run. • If new code does not rapidly satisfy a new test, or other tests fail unexpectedly, the programmer should undo or revert in preference to excessive debugging. • Continuous integration helps by providing revertible checkpoints.
  • 51. Behaviour-Driven Development • Behaviour-Driven Development is an extension of TDD where there is an additional focus on the business interests (or “business drivers”). • Behaviour-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object- oriented analysis and design
  • 52. Behaviour-Driven Development • BDD adds new strategies: 1. Think from the Outside In 2. Use the Five Whys on User Stories 3. Single Notation 4. Consistent Usage
  • 53. Test-Driven Development • 1. Think from the Outside In • Only implement those features and behaviours that contribute most directly to these business outcomes, so as to minimize waste
  • 54. Test-Driven Development • 2. Use the Five Whys on User Stories • The Five Whys is an iterative interrogative technique used to explore the root cause underlying a particular issue. • The technique does this by repeating the question "Why?“ five times. Each answer forms the basis of the next question. • The use of Five in the name derives from an anecdotal observation on the number of iterations needed to resolve the problem.
  • 55. Test-Driven Development • 2. Use the Five Whys on User Stories
  • 56. Test-Driven Development • 3. Single Notation • Describe features and behaviours in a single notation which is directly accessible to domain experts, testers and developers, so as to improve communication
  • 57. Test-Driven Development • 4. Consistent Usage • Apply these techniques all the way down to the lowest levels of abstraction of the software, paying particular attention to the distribution of features and behaviours, so that evolution remains cheap.
  • 60. Advantages • Shorter software development cycles
  • 61. Advantages • Code being developed is focused on meeting client requirements
  • 62. Advantages • Accommodates teams of developers with a wide variety of experience
  • 63. Advantages • Offers well defined progress tracking and reporting capabilities
  • 64. Advantages • Project costing is done with greater accuracy
  • 66. Disadvantages • Can often have very little documentation compared to other methodologies
  • 67. Disadvantages • Can result in over-reliance on Chief Programmer
  • 68. Disadvantages • Might not be suitable for a very small team or single developer
  • 69. Disadvantages • If the requirements are changing rapidly, the goals keep moving
  • 71. Interesting • FDD was initially devised to accomplish specific needs of a 15 month, 50 person project at a large Singapore bank.
  • 72. Interesting • FDD defines six milestones per feature that are to be completed sequentially:
  • 73. Interesting • A 2005 study found that using TDD meant writing more tests and, in turn, programmers who wrote more tests tended to be more productive. Erdogmus, Hakan; Morisio, Torchiano. "On the Effectiveness of Test-first Approach to Programming". Proceedings of the IEEE Transactions on Software Engineering, 31(1). January 2005. (NRC 47445). Retrieved 2008-01-1
  • 74. Interesting • Test-driven development has been adopted by Quality Control teams. The six steps of the TDD sequence are applied with minor semantic changes: – "Add a check" replaces "Add a test" – "Run all checks" replaces "Run all tests" – "Do the work" replaces "Write some code" – "Run all checks" replaces "Run tests" – "Clean up the work" replaces "Refactor code" – "Repeat"
  • 75. Interesting • There are several different examples of BDD software tools in use in projects today, for different platforms and programming languages. Possibly the most well-known is JBehave, which was developed by Dan North. • http://jbehave.org
  • 76. Interesting • BDD User Stories usually follow the following format: • Title: The story should have a clear, explicit title. • Narrative: A short, introductory section that specifies – who: (which business or project role) is the driver or primary stakeholder of the story (the actor who derives business benefit from the story) – what: effect the stakeholder wants the story to have – why: business value the stakeholder will derive from this effect • Acceptance Criteria or Scenarios: a description of each specific case of the narrative. Such a scenario has the following structure: – It starts by specifying the initial condition that is assumed to be true at the beginning of the scenario. This may consist of a single clause, or several. – It then states which event triggers the start of the scenario. – Finally, it states the expected outcome, in one or more clauses.
  • 78. Reflections • FDD, TDD and BDD are focused on specific themes: – Documentation: The amount of documentation in xDD methodologies is designed to be “just enough” as opposed to “a lot”. – Team Skills: The xDD methodologies acknowledge that different members of the team have different skill levels.
  • 79. Reflections • FDD is designed both for large software development teams and small developments as well. • TDD and BDD are designed principally for small development teams.
  • 80. Reflections • It has been argued that these approaches are more productive than other methodologies, as those are attempting to code in large steps.
  • 81. Reflections • TDD and BDD have testing as a significant part of their processes, but nonetheless a testing phase is also necessary in these methodologies.
  • 84. Review • What did we learn?