SlideShare a Scribd company logo
1 of 32
Download to read offline
@hendrikEbberswww.guigarage.com
Feature Driven Development
@hendrikEbberswww.guigarage.com
default branchAbout me
Hendrik Ebbers @hendrikEbbers
www.guigarage.com
JUG DortmundMastering
JavaFX 8
Controls
DataFX, AquaFX,
Vagrant-Binding
@hendrikEbberswww.guigarage.com
default branchContent
features workflows feature toggles
@hendrikEbberswww.guigarage.com
default branchWhat is a feature?
„play“ button
feature
@hendrikEbberswww.guigarage.com
default branchWhat is a feature?
„play“ button
feature
@hendrikEbberswww.guigarage.com
private single developer project
Ribbon interface
removed
„play“ button added
multi touch
support Hibernate version
changed
@hendrikEbberswww.guigarage.com
structure of a complex application
Backend
Frontend / UI
Persistence
@hendrikEbberswww.guigarage.com
Let’s start with the UI
trunk
button on UI
@hendrikEbberswww.guigarage.com
Diff of the first commit
<form >
<input type="button" value=„play“ onclick=„rpc.play()“>
</form>
class PlayService {
!
public void play() {
throw new RuntimeException(„Not implemented!“);
}
!
}
@hendrikEbberswww.guigarage.com
Commit history
button on UI
JPA classes
new media service
bugfix #235
trunk
@hendrikEbberswww.guigarage.com
Houston, we have a problem
button on UI
JPA classes
new media service
bugfix #235
Application can’t be released!
trunk
@hendrikEbberswww.guigarage.com
Concurrent development = Concurrent problems
Jim
Bob
Martin
John
bugfix 7
new
middleware
rest
services
security
issues
@hendrikEbberswww.guigarage.com
Concurrent development = Concurrent problems
button on UI
JPA classes
new media service
bugfix #235
trunk
Ribbon interface
removed (50%)
Ribbon interface
removed (100%)
testcommit
refactored most
entities
@hendrikEbberswww.guigarage.com
Concurrent development = Concurrent problems
button on UI
JPA classes
new media service
bugfix #235
trunk
Ribbon interface
removed (50%)
Ribbon interface
removed (100%)
testcommit
refactored most
entities
Application can NEVER be released!
@hendrikEbberswww.guigarage.com
Using a feature branch
button on UI
JPA classes
new media service
mergebranch
develop
feature
branch
@hendrikEbberswww.guigarage.com
Release cycle?
Application can be released!
@hendrikEbberswww.guigarage.com
Concurrent development?
Application can be released!
feature 1
feature 2
@hendrikEbberswww.guigarage.com
Problem: merge hell
Application can be released!
merge hell
f# 1 f# 4 f# 2 f# 3 f# 5
t = 2 month
@hendrikEbberswww.guigarage.com
Application can be released!
hidden button
and middleware
backend
visible
button
easy
merge
easy
merge
easy
merge
Solution: Dark launching & small branches
@hendrikEbberswww.guigarage.com
Solution: update the feature branch
Application can be released!
merge merge merge
adding button
localization of
button title
final
button icon
!
easy merge /
pull request
@hendrikEbberswww.guigarage.com
Problem: changes creates bugs
Application can be released!
bugs?
Point of no return
@hendrikEbberswww.guigarage.com
Solution: Feature Toggles
!
if(MY_FEATURE.isActive( )) {
showPlayButton( );
} activate
feature
the feature
check
@hendrikEbberswww.guigarage.com
Fallback to old implementations
!
if(NEW_PERSISTENCE.isActive( )) {
return jpaCall( );
} else {
return jdbcCall( );
}
old new
@hendrikEbberswww.guigarage.com
Java APIs
JSF
Support
Spring
Support Java EE
Support
Admin
Console
Activation
Strategies
State
Repositories
User
Authentification
Java SE
Support
@hendrikEbberswww.guigarage.com
Java APIs
JavaFX
Support
Observer
pattern
Binding
Supports
predefined
annotations
@hendrikEbberswww.guigarage.com
Define Features as enum
!
@Issue(„JFX-638“)
@EnabledByDefault
NEW_PERSISTENCE,
!
@Issue(„JFX-492“)
@EnabledByDefault
TWITTER_SUPPORT,
. . .
add
metadata to
describe the
feature
@hendrikEbberswww.guigarage.com
Features state and activation
!
MY_FEATURE.isActive( )
always
always on
dev system
next 3 hours
for random
users
stored in db
defined in
property file
@hendrikEbberswww.guigarage.com
Administration view
< >
!
http://www.my-app/administration/togglz
@hendrikEbberswww.guigarage.com
Fronted support
!
<h:panelGroup rendered="#{features['PLAY_FEATURE']}">
<h:commandButton value=„play" />
</h:panelGroup>
@FXML
@HideByFeature("PLAY_FEATURE")
private Button playButton;
JavaFX
JSF
@hendrikEbberswww.guigarage.com
Take care of your features
FEATURE_1,
FEATURE_2,
FEATURE_3,
FEATURE_4,
FEATURE_5,
. . .
FEATURE_1462,
FEATURE_11463,
Where is my
feature???
Don’t forget
to clean up!
(once a feature is
live for a defined
period of time)
@hendrikEbberswww.guigarage.com
Conclusion
button &
feature toggle
backend
remove
feature toggle
use feature
toggles
clean upuse short
living
branches
describe your
features with
metadata
&
provide
feature
administration
&
@YourTwitterHandle#DVXFR14{session hashtag} @hendrikEbberswww.guigarage.com
Q
&
A

More Related Content

What's hot

Mobile Software Engineering Crash Course - C04 Android Cont.
Mobile Software Engineering Crash Course - C04 Android Cont.Mobile Software Engineering Crash Course - C04 Android Cont.
Mobile Software Engineering Crash Course - C04 Android Cont.
Mohammad Shaker
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mohammad Shaker
 

What's hot (8)

Deploying Apps Heroku
Deploying Apps HerokuDeploying Apps Heroku
Deploying Apps Heroku
 
Paco van Beckhoven - Keeping your head cool with a serverless voice controlle...
Paco van Beckhoven - Keeping your head cool with a serverless voice controlle...Paco van Beckhoven - Keeping your head cool with a serverless voice controlle...
Paco van Beckhoven - Keeping your head cool with a serverless voice controlle...
 
Mastering the Master Detail Pattern
Mastering the Master Detail PatternMastering the Master Detail Pattern
Mastering the Master Detail Pattern
 
Getting your app ready for android n
Getting your app ready for android nGetting your app ready for android n
Getting your app ready for android n
 
Mobile Software Engineering Crash Course - C04 Android Cont.
Mobile Software Engineering Crash Course - C04 Android Cont.Mobile Software Engineering Crash Course - C04 Android Cont.
Mobile Software Engineering Crash Course - C04 Android Cont.
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhone
 
Firebase play-games-services-unity
Firebase play-games-services-unityFirebase play-games-services-unity
Firebase play-games-services-unity
 
Angular Best Practices @ Firenze 19 feb 2018
Angular Best Practices @ Firenze 19 feb 2018Angular Best Practices @ Firenze 19 feb 2018
Angular Best Practices @ Firenze 19 feb 2018
 

Viewers also liked

Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
Ulas Karademir
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
rebekinha
 

Viewers also liked (20)

Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Feature Driven Development (FDD)
Feature Driven Development (FDD)Feature Driven Development (FDD)
Feature Driven Development (FDD)
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
 
Feature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralFeature-Driven Development - Visão Geral
Feature-Driven Development - Visão Geral
 
Reúso
ReúsoReúso
Reúso
 
Distributed agile testing_for_enterprises
Distributed agile testing_for_enterprisesDistributed agile testing_for_enterprises
Distributed agile testing_for_enterprises
 
Distributed Agile
Distributed AgileDistributed Agile
Distributed Agile
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Agile and Modeling / MDE : friends or foes? (Agile Tour Nantes 2010)
Agile and Modeling / MDE : friends or foes? (Agile Tour  Nantes 2010)Agile and Modeling / MDE : friends or foes? (Agile Tour  Nantes 2010)
Agile and Modeling / MDE : friends or foes? (Agile Tour Nantes 2010)
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
 
Agile & Open Unified Processes
Agile & Open Unified ProcessesAgile & Open Unified Processes
Agile & Open Unified Processes
 
Distributed Agile Teams
Distributed Agile TeamsDistributed Agile Teams
Distributed Agile Teams
 
Apresentação dissertação
Apresentação dissertaçãoApresentação dissertação
Apresentação dissertação
 
Crystal Methodology
Crystal MethodologyCrystal Methodology
Crystal Methodology
 
Crystal Agile
Crystal AgileCrystal Agile
Crystal Agile
 
Crystal
CrystalCrystal
Crystal
 

Similar to Feature driven development

SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
reebalazs
 
Devoxx 09 (Belgium)
Devoxx 09 (Belgium)Devoxx 09 (Belgium)
Devoxx 09 (Belgium)
Roger Kitain
 

Similar to Feature driven development (20)

Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
 
Cordova: Making Native Mobile Apps With Your Web Skills
Cordova: Making Native Mobile Apps With Your Web SkillsCordova: Making Native Mobile Apps With Your Web Skills
Cordova: Making Native Mobile Apps With Your Web Skills
 
Killer Salesforce Admin Activity Hacks
Killer Salesforce Admin Activity HacksKiller Salesforce Admin Activity Hacks
Killer Salesforce Admin Activity Hacks
 
Tour of Mobile usability testing apps and services
Tour of Mobile usability testing apps and servicesTour of Mobile usability testing apps and services
Tour of Mobile usability testing apps and services
 
Web-development-git
Web-development-gitWeb-development-git
Web-development-git
 
Webinar: This Launch Will Self-Destruct in 3...2...1
Webinar: This Launch Will Self-Destruct in 3...2...1Webinar: This Launch Will Self-Destruct in 3...2...1
Webinar: This Launch Will Self-Destruct in 3...2...1
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Creating an Uber Clone - Part XXXIII - Transcript.pdf
Creating an Uber Clone - Part XXXIII - Transcript.pdfCreating an Uber Clone - Part XXXIII - Transcript.pdf
Creating an Uber Clone - Part XXXIII - Transcript.pdf
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make it
 
Creating Openbravo Workspace Widgets
Creating Openbravo Workspace WidgetsCreating Openbravo Workspace Widgets
Creating Openbravo Workspace Widgets
 
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
 
TechEvent Advanced Service Worker / PWA with Google Workbox
TechEvent Advanced Service Worker / PWA with Google WorkboxTechEvent Advanced Service Worker / PWA with Google Workbox
TechEvent Advanced Service Worker / PWA with Google Workbox
 
How to Install Magento 2 [Latest Version]
How to Install Magento 2 [Latest Version]How to Install Magento 2 [Latest Version]
How to Install Magento 2 [Latest Version]
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJS
 
Presentation of the KansaiScene API at #kansaimashapp
Presentation of the KansaiScene API at #kansaimashappPresentation of the KansaiScene API at #kansaimashapp
Presentation of the KansaiScene API at #kansaimashapp
 
Mobile html5 today
Mobile html5 todayMobile html5 today
Mobile html5 today
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)
 
Going web native
Going web nativeGoing web native
Going web native
 
Devoxx 09 (Belgium)
Devoxx 09 (Belgium)Devoxx 09 (Belgium)
Devoxx 09 (Belgium)
 

More from Hendrik Ebbers

Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
Hendrik Ebbers
 

More from Hendrik Ebbers (20)

Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
 
Beauty & the Beast - Java VS TypeScript
Beauty & the Beast - Java VS TypeScriptBeauty & the Beast - Java VS TypeScript
Beauty & the Beast - Java VS TypeScript
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
Multidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UXMultidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UX
 
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
 
Java ap is you should know
Java ap is you should knowJava ap is you should know
Java ap is you should know
 
JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016
 
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ DevoxxBUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
 
Extreme Gui Makeover
Extreme Gui MakeoverExtreme Gui Makeover
Extreme Gui Makeover
 
JavaFX Enterprise
JavaFX EnterpriseJavaFX Enterprise
JavaFX Enterprise
 
Bonjour for Java
Bonjour for JavaBonjour for Java
Bonjour for Java
 
DataFX - JavaOne 2013
DataFX - JavaOne 2013DataFX - JavaOne 2013
DataFX - JavaOne 2013
 
Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
 

Recently uploaded

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 

Recently uploaded (20)

Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 

Feature driven development