ApacheCon US 2008 Session

Enough Rope to Shoot Yourself in the Foot: Using a Holistic Analysis and Design Approach to Avoid Hanging Your Open Source Based Application Project

There are excellent open source code bases available for every sort of application infrastructure and even ready to use enterprise automation components. These commodity software elements give developers more flexibility and efficiency than has ever been possible before. Business and personal objectives can be automated with so much ease that efforts more and more tend to succeed or fail in spectacular ways. Most projects succeed or fail before development begins, or because of factors that have little to do with development, even though they are usually not recognized until late in the development process where the rubber really hits the road. With so much power and so much variability some understanding of good analysis, design and development practices and common missteps is invaluable.

This presentation will cover recommended artifacts and processes to facilitate communication and groups efforts and move from gathering and formalizing general concepts and ideas all the way through implementation and testing using a business process focused approach. The approach presented is a complete process and set of artifacts that ties together many common tools in a consistent and easy to follow way, even for large groups. The artifacts include common tools such as use cases and stories that are often misapplied or used ineffectively because of a lack of definition and understanding of what those artifacts are for and how they will be used. We will also discuss how certain artifacts and steps can be skipped for efforts with fewer requirements and fewer people, with a focus on the ones that make the biggest difference. This presentation will include discussion of the transition from design to implementation in terms of the Apache Open For Business Project, but all analysis and design artifacts discussed outside of implementation are applicable to any technology or set of systems.