Frameworks:
supporters and mischiefmakers

Thursday, November 7, 13
David & Oliver

• David: davidtanzer.net, @dtanzer
• Oliver: source-knights.com, @sourceknights
• both independent software consultants
• both striving for simplicity in software development

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
David & Oliver

Starting from greenfield

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
Defining Agile

Modern development framework take
away 80% of the job. Then they make
the remaining work ten times as hard.”
Johannes Brodwall
Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
•
•
•
•
•

Does the software do what it should do?
Who says what it should do?
Are the components implemented correctly?
Are my tests independent? Do they test isolated units?
Who defines my test cases?

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
Testing

• Does the software do what it should do?
• Who says what it should do?
=> Specification by Example, Agile Acceptance Testing

Pro
Cucumber, JBehave,
Jnario
Fitnesse

Maybe
Selenium,
Coded UI Tests

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
JUnit,
Spring, Guice, CDI
Testing

• Are the components implemented correctly?
=> Unit Testing
Pro
JUnit

Maybe
Cucumber, Jnario

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
Selenium
Testing

• Are my tests independent? Do they test isolated units?
=> Unit Testing
Pro
Mockito, JMock
Spring, Guice, CDI

Maybe
JUnit

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
Mockito, JMock
• How can you ensure modularity and flexibility?
• Which libraries do we need in what version?
• How do I get feedback about my code?

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
Configuration / Build

• How can you ensure modularity and flexibility?

Pro
Spring, Guice, CDI
OSGi, Java EE, Fuse
Gradle

Maybe
JPA, Hibernate
Maven

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
JDBC, DB
make, Ant
Configuration / Build

• Which libraries do we need in what version?

Pro
Maven, Gradle

Maybe
Ivy

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
Ant
Configuration / Build / Test

• How do I get feedback about my code?

Pro
Sonar
Gerrit
Jenkins, Hudson,
Team City
Metrics Library

Maybe

Contra

(Bug Tracker)

(User)

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
• How can I deploy my code to different environments?
• How can I manage those environments?

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
Continuous deployment

• How can I deploy my code to different environments?
• How can I manage those environments?

Pro
Puppet, Chef
Vagrant

Maybe
Jenkins, Hudson
Shellscripts, Ant

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
Copying
• How can I make sure that the database schema fits my
software version?
• How can I migrate database data between versions?
• How can I configure databases for different environments?
• How can I provide test data?

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
Configuration / Data

• How can I make sure that the database schema fits my
software version?
• How can I migrate database data between versions?
• How can I configure databases for different environments?
• How can I provide test data?
Pro
DB Maintain
Databene

Maybe
Lots of PL/SQL
scripts
Hibernate auto
migration

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Contra
Summary

•
•
•
•
•
•
•
•
•
•
•
•

Unit Testing
Mocking Framework
Agile Acceptance Testing
Configuration management
Dependency Injection
Build
Continuous Delivery
Continuous Integration
Code review
Version Control
Project management instruments
Micro frameworks?
Copyright © 2010 Source-Knights.com

Thursday, November 7, 13
business@davidtanzer.net
Continuous improvement
oliver.szymanski@source-knights.com

Copyright © 2010 Source-Knights.com

Thursday, November 7, 13

Agile framework Support

  • 1.
  • 2.
    David & Oliver •David: davidtanzer.net, @dtanzer • Oliver: source-knights.com, @sourceknights • both independent software consultants • both striving for simplicity in software development Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 3.
    David & Oliver Startingfrom greenfield Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 4.
    Defining Agile Modern developmentframework take away 80% of the job. Then they make the remaining work ten times as hard.” Johannes Brodwall Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 5.
    • • • • • Does the softwaredo what it should do? Who says what it should do? Are the components implemented correctly? Are my tests independent? Do they test isolated units? Who defines my test cases? Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 6.
    Testing • Does thesoftware do what it should do? • Who says what it should do? => Specification by Example, Agile Acceptance Testing Pro Cucumber, JBehave, Jnario Fitnesse Maybe Selenium, Coded UI Tests Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra JUnit, Spring, Guice, CDI
  • 7.
    Testing • Are thecomponents implemented correctly? => Unit Testing Pro JUnit Maybe Cucumber, Jnario Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra Selenium
  • 8.
    Testing • Are mytests independent? Do they test isolated units? => Unit Testing Pro Mockito, JMock Spring, Guice, CDI Maybe JUnit Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra Mockito, JMock
  • 9.
    • How canyou ensure modularity and flexibility? • Which libraries do we need in what version? • How do I get feedback about my code? Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 10.
    Configuration / Build •How can you ensure modularity and flexibility? Pro Spring, Guice, CDI OSGi, Java EE, Fuse Gradle Maybe JPA, Hibernate Maven Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra JDBC, DB make, Ant
  • 11.
    Configuration / Build •Which libraries do we need in what version? Pro Maven, Gradle Maybe Ivy Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra Ant
  • 12.
    Configuration / Build/ Test • How do I get feedback about my code? Pro Sonar Gerrit Jenkins, Hudson, Team City Metrics Library Maybe Contra (Bug Tracker) (User) Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 13.
    • How canI deploy my code to different environments? • How can I manage those environments? Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 14.
    Continuous deployment • Howcan I deploy my code to different environments? • How can I manage those environments? Pro Puppet, Chef Vagrant Maybe Jenkins, Hudson Shellscripts, Ant Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra Copying
  • 15.
    • How canI make sure that the database schema fits my software version? • How can I migrate database data between versions? • How can I configure databases for different environments? • How can I provide test data? Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 16.
    Configuration / Data •How can I make sure that the database schema fits my software version? • How can I migrate database data between versions? • How can I configure databases for different environments? • How can I provide test data? Pro DB Maintain Databene Maybe Lots of PL/SQL scripts Hibernate auto migration Copyright © 2010 Source-Knights.com Thursday, November 7, 13 Contra
  • 17.
    Summary • • • • • • • • • • • • Unit Testing Mocking Framework AgileAcceptance Testing Configuration management Dependency Injection Build Continuous Delivery Continuous Integration Code review Version Control Project management instruments Micro frameworks? Copyright © 2010 Source-Knights.com Thursday, November 7, 13
  • 18.