Tools for Supporting and Facilitating Agile Development
Total Page:16
File Type:pdf, Size:1020Kb
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 • Continuous Integration. 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 Java 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 • Ruby On Rails • 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.