XA
ASERT LOGO Advanced Software Engineering, Research and Training
Allowing Secure Applications to be Rapidly Developed and Deployed

Pragmatic Agile

Presented at: Agile Development Conference 2005
Author: Paul King
Last Revised: November 2005

Synopsis

As Agile Development moves on from its honeymoon period and enters mainstream IT, many gaps still exist in our knowledge of how to best use the theory and practices espoused by many in the Agile community. This presentation aims to provide you with ideas to help bridge these gaps. It attempts to give you insightful guidelines to use when addressing typical problems that face many Agile projects. Some of the points discussed include:

Agile Planning

During early planning stages, an assessment must be made on whether to use an Agile, traditional or a hybrid approach. If an Agile or hybrid approach is adopted there are still decisions to be made about what Agile practices will be used throughout the project. These can be made project wide, on a per-release or per-story basis or for particular tasks within a story. Similarly, decisions can be made on what metrics and coding standards to apply for differents parts of the project.

Pair Programming Pair programming is a practice which usually produces higher-quality software with fewer defects but with implied higher development costs. How does an Agile project go about balancing the quality and cost drivers?
Emergent Design Emergent design allows decisions about design and architecture to be delayed until a time when more information is known and changes to requirements can be reflected in the decisions. This provides enormous flexibility and eliminates wasting time on unneeded features which are thought useful up-front. A weakness in the approach is that it doesn't help identify wide-ranging design and architecture decisions which, if determined up-front, may save numerous dead-ends and reduce unproductive steps. What signs should an Agile team look for to ensure they don't suffer the pitfalls of emergent design?
Refactoring Refactoring makes the code-base better but too much refactoring brings the team to a halt and has diminishing returns. What triggers can a team use to ensure that it is doing the right amount of refactoring.
Test-Driven Development Test-driven development uses test code to elaborate requirements. No production code is written unless a failing test exists. Surely then, the code will be fully-tested and the need for testers will be minimal. Well, actually there are many flaws in this thinking and many traps. We will discuss a few and examine how the Tester's role fits into the Agile team. Similar questions can be asked about how the Business Analyst's role fits into the emergent design practice?
Continuous Integration Continuous integration is a process which delivers working software in very short timeframes: minutes, hours, days. However, projects don't work in isolation, in a typical large organisation, a blend of Agile and non-Agile projects will exist. How do Agile projects coordinate with non-Agile projects?
Other Factors Coding and documentation standards provide metrics so that Agile teams can avoid the pitfalls of the traditional unmaintainable code-bases of the past. But what happens if the metrics are made too extreme? What new problems might an Agile team face? How does a project team cope with publishing "honest" metrics in a world used to "bending" of the truth? What documentation approaches should they consider?
Agile Deployment What approach should Agile projects take towards deployment and release planning. Ideally Agile projects can deliver production-ready software on a near-daily basis. But the practicalities of interacting with non-Agile third parties, other projects or even customers means that careful iteration and release planning approaches are typically required. What can organisations do to make their deployment more agile?

Our experiences have shown that various agile practices can be blended together to improve the longer-term quality and maintainability of your software, though usually at the cost of slow apparent early progress. The old saying "more haste, less speed" at work. Having said that, there are many things which can be done to make Agile very productive as well. We hope to give you some food for thought.

Throughout the talk, references are given to best-of-breed tools to assist we Agile development projects. A number of open source tools and Eclipse plugins are included within these references.

Slides: PDF
ASERT can also provide you with a seminar or workshop on this topic. The author is also able to present on this topic at conferences. Please contact us for details.

Publication Information

Creative Commons License

This work is licensed under a Creative Commons License. You may use these slides as per the terms outlined in that license. Please read all the details by following the link. For the impatient, the summary is, provided you give credit to the original authors, you may use the slides for non-commercial purposes, e.g. personal study, giving a lunch-time talk to your colleagues or making a presentation at your local user group.

Further Information

About the Author

Dr Paul King is Managing Director and Principal Consultant for ASERT. His career spans technical and managerial roles in various organisations underpinned by deep knowledge of the information technology & telecommunications markets and a passion for the creation of innovative organisations. Throughout his career, Dr King has provided technical and strategic business consulting to hundreds of organizations throughout the U.S., Europe and Asia Pacific. He is an expert, practitioner and trainer in J2EE, XML and Web Services technologies. He has numerous publications in National and International conferences, journals and trade magazines. He has been awarded prizes for his research, publications and presentations and is a frequent invited guest speaker at International Conferences. He has also contributed to numerous international standards. If you wish to contact the author, send an email to paulk at asert dot com dot au.

About ASERT

ASERT are experts using WebLogic/Workshop, WebSphere/WSAD, JDeveloper/Oracle and Visual Studio/.Net and a range of other tools and technologies. ASERT practices a range of development methodologies to meet our customers needs including traditional modelling through to agile techniques. ASERT helps organisations define and make best use of their eBusiness platforms. We do this by providing professional and cost-effective training and consulting & system development solutions. If you wish to make a general enquiry, see the Contact Details information.

If you have found this overview useful, why not consider taking ASERT's Web Services, XML, Java/J2EE or Security training courses. For more info, see: Training Course Information.

If you need help with Web Service Mentoring or Software Development why not consider ASERT's consulting and mentoring services. For more info, see: Professional Services Information.

Disclaimer and Legals

The presentation may contain various terms which are trademarks or registered trademarks of their respective owners. All information in this presentation is copyright ASERT unless otherwise attributed and is provided as is with no explicit or implied warranties. ASERT and the author(s) have used their best efforts in preparing the information contained in this presentation; however, neither ASERT nor the author(s) can be held responsible for any damage that you may incur as a result of using this information. Please contact ASERT if you notice any inaccurate information.