Tools for Supporting and Facilitating Agile Development

•Rinaldo Digiorgio •Romerl Elizes •Dr. Fred Grossman •Dr. Joe Bergin Agenda

• Agile and XP • Tools and Agile/XP • Demonstrations • Database access • GUI • Web application • Pairing (Time permitting) • Futures

Version 0.3 Agile Manifesto

• Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan

Version 0.3 Example of a tool proclaiming support for Agile?

• Rails Example • no heavy tool sets, no elaborate processes, no complex configurations small groups of developers with their favorite editors a transparent environment • Trivially easy to generate HTML documentation for the entire code base • The framework delivers working software early in the development cycle • Rails is obsessive about DRY Don't repeat yourself and convention over configuration

Version 0.3 XP Practices

• Pair Programming • Collective Ownership. Standup Meetings • . Sustainable Pace • Test Driven Coding Standard Development. On-site Customer • Refactoring. Sustainable Pace The Planning Game Small Releases Metaphor

Version 0.3 Simple Design Tools being demonstrated

• CVS, Subversion  Subversion • Ant  Jcoverage • JUnit  CruiseControl • Abbot  Eclipse • Cactus  Sun Studio 8 • HtmlUnit  echoVNC*, VNC* • DbUnit

Version 0.3 Other Tools

• Commercial Tools • Clearcase, PVCS • Intellij • Vendor Tools • Websphere, Oracle, Microsoft • Open Source Tools • Good place to start • http://subversion.tigris.org/ ( bottom left)

Version 0.3 Tools supporting XP Practices • Test Driven Development • Business Logic • JUnit, DbUnit • GUI APP • JUnit, Abbot • Web App • JUnit, HtmlUnit • Continuous Integration • Cruisecontrol, Subversion, CVS • Pair Programming (distributed/co-located) • Java Studio 8

Version 0.3 XP and Testing/QA

• Rom, Rinaldo work examples • Current SDLC’s put QA of release candidates toward the end of the cycle. • Current cost infrastructure tend to target QA in cost cutting measures. • More responsibility of testing should be placed on programming. • Tremendous value of testing for making change and reducing fear Testing

• Goal: Code does what it is supposed to do • Write tests first, they will fail use tools • JUnit • Abbot • HtmlUnit • Monitor Testing • Jcoverage • Part of the Continuous Build process

Version 0.3 Refactoring

• Goal: Implement optimal design • IDEs • Eclipse • NetBeans • Both support • repetition removal • rewrite long methods • use clear names

Version 0.3 Pair Programming

• Goal: team knowledge, sharing and ideas • VNC • Echovnc • Instant Messaging • Skype • Remote desktop • Eclipse Collab tool • NetBeans • Java Studio Enterpise 8

Version 0.3 Collective Ownership

• Goal: team can code and make any change • Source Code Management System enables • Subversion • CVS • Require comments on putbacks, checkins • Broadcast every putback, checkin • Results of every putback result in a build

Version 0.3 Continuous Integration

• Goal:remove change fear, verify system works • Cruisecontrol • Verify system compiles • Run Unit tests • Run coverage test • Deploy system • Run functional tests • With jcoverage enabled

Version 0.3 Coding Practices

• Code and Design Simply • Refactor Mercilessly • (Major IDEs support rfactor) • Develop Coding Standards • Develop a Common Vocabulary • Some of the tools enforce and or aid • Braces ( not really an issue anymore) • Tabs( not really an issue anymore) • naming conventions ( Very important) • Comment style ( in java case javadoc)

• Version 0.3 DbUnit

• Database testing with JUnit • typical environments • local, dev, deployment and production • Best Practices • Use One Database Instance per developer • Good Setup doesn't need cleanup • Use Multiple small Datasets • Perform setup of state data once for entire test class/suite • Connection Management Strategies

Version 0.3 Database Access ( Demo 1)

• Story: Provide methods to get data from DB • Write the test first ( use DbUnit ) • Get A connection to the DB • Get data from the DB • Put the code back to source code repository • Observe the Tools • Cruisecontrol • Jcoverage • Subversion • IDE • Ant

Version 0.3 UI application ( Demo 2)

• Java Swing application accessing a database to retrieve information • The application has a radio button bug • Abbot tools will be used to develop GUI- automated tests • Abbot scripts can be incorporated into JUnit tests • Abbot allows users to visually see tests running GUI applications

Version 0.3 Web application ( Demo 3)

• HTML page accessing a database to retrieve information • The application has a radio button bug • HtmlUnit tools will be used to develop JUnit tests • HtmlUnit tools do not offer any visual capability to see tests running web applications

Version 0.3 Collaboration tools ( Demo 4)

• Collabtool (JSE7 --> NB 4.1/5) • Remote control of others desktop • sharing files • Instant messaging • VNC • Hard for some users doesn't work in corporate environments • echoVNC • A service for Collaboration

Version 0.3 IDE's/Application frameworks with Built in support

• Classical Methods use an IDE and tests • Netbeans • Eclipse • Emerging Test Framework built in IDE optional • • Spring

Version 0.3 Early Adopters

• Maven • Improving the Build process • Project Object Model (POM) • Spring ( IOC/Aspect) • Testing in J2EE world is hard • Code is hard to understand • More manageable • Ruby on Rails

Version 0.3 Dave's Top 10 reasons to like Rails

• Brings Agility to web development • allows you to create cool web pages just like the kids do • My applications stay maintainable as they grow • I get to say yes to clients more often • Testing is built-in and easy so it gets used • Instant Feedback • Metaprogramming • code generators let me get started quickly • No XML! Version 0.3 URLS

➔ http://digiorgio.com:8090/blojsom/blog/Rinaldo/ Reading%20Lists/ ➔ http://collab.netbeans.org/ ➔ xx

Version 0.3