OverviewSoftware development methodologies have been with us for a long time now. These methodologies typically tend to include a process, modeling techniques, or both. Some examples of the past and present methods include Structured Systems Analysis and Design Methodology (SSADM), Object Modeling Technique (OMT), the Rational Unified Process (RUP), and many others. Recent studies have shown us that the traditional approach of doing big requirements up front (BRUF) or big design up front (BDUF) using a waterfall approach such as SSADM not only can result in a significant waste of time and effort but also can cause many software developments projects to be challenged and/or fail entirely. The ProblemIn the past, many projects have approached software development in a serial fashion, that is, completing each phase of a software development lifecycle (e.g. requirements, architecture, design, coding, testing) in its entirety before moving on to the next phase. Furthermore, many of these projects estimate the time frames to complete a project based on these big, up front efforts, which is similar to looking into a "crystal ball." To make matters worst, most organizations attempt to keep the big documentation (produced up front) up-to-date throughout the lifecycle but are almost never able to keep it current, as the project progresses. This method of working results in failed and/or challenged projects, as reflected in the following diagram from the Standish Group International, Inc. (standishgroup.com): The Standish Group further claims that the larger a project gets, the higher it is at risk of failing as reflected in the following numbers. Furthermore, many applications build in features, which are either never used, rarely used or only sometimes used (as shown in the following graph); needless to say this results in more expensive software and wasted efforts: One Possible Solution: AgilityAccording to the Standish Group, the top ten factors for a project's success are:
Many of the problems outlined earlier in this document, can be solved using newer, truly iterative style, methodologies. In 2001, seventeen methodologists came together to unify their methodologies under one umbrella – they jointly defined the term, Agile (agilemanifesto.org, agilealliance.com). The remarkable thing about this event was that these seventeen methodologists agreed on a common set of principles (see story at http://martinfowler.com/articles/agileStory.html). Some of the underlying values of the various Agile methods include:
My Perspective
In my opinion, which is based on the Agile values mentioned above combined with many years of experience in IT, some current issues with software development include:
This web site attempts to address these three issues via its methodology, modeling, madness, and resources web pages. The Agile CommunityIf you are interested in learning more about Agile methods and/or participating in the agile community, visit one of the following web sites: Agile Alliance, scrumdevelopment, extremeprogramming, agilemodeling, and Agile Draw.
|
||||||