"Agile methods generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals." [Wikipedia]My initial thoughts are that the concepts of agility are not necessarily the same as the principles behind agile software development. Agility to me seems to be a property, something that can be stated. ASWD seems to be a process, with methods, that can be applied as a strategy.
Where did ASWD come from? There is a manifesto for agile development back from 2001. Alister Cockburn has a book titled Agile Software Development from 2002 that is highly cited (draft version 3 available here) according to Google. It addresses communication and rules for successful projects.
So then, what is agility in a software product? According to the book, "an agile process is both light and sufficient". That definition is applied to the process, not the software itself. Their example is that a 40 person team is not as agile as a 6 person team, which makes sense. I think applying the term agile to the product itself leads into a lot of what SaaS and SOA is attempting to accomplish. But again, those are paradigms, processes, shifts in development strategies.
Reflections on Software Agility and Agile Methods: Challenges, Dilemmas, and the Way Ahead, by Linda Levine, compares ASWD with differing processes such as the Capability Maturity Model CMU and the Spiral loops from Barry Bohem. Even though the paper is talking about Software Agility, it still seems to be talking about the process of generating the software, not an aspect of the software itself. For agile software I keep thinking back to our computer security class here and the definition of "good software" which was high-cohesion, low-coupling, modular, etc. Do those properties overlap with what an agile component would possess? I think its the best start to defining an agile component (if such a definition doesn't already exist).
Also from wikipedia, is this section (currently marked for deletion citing a strong bias and weasel wording):
Proponents also argue that process-oriented methods, especially methods that rely on repeatable results and that incrementally reduce waste and process variation like Six Sigma, have a tendency to limit an organisation's adaptive capacity (their "slack"), making them less able to respond to discontinuous change - i.e., less agile. It is proposed that "agile", "lean" and "evolutionary" are strategies that need to be properly understood and appropriately applied to any specific context. That is, there is a time to be "agile", a time to be "lean" and a time to be "evolutionary." Some agilists agree with this position, promoting the concept of agile methods as one set of tools that should be available to managers for use in appropriate situations, not as one-size-fits-all methods that should be forced onto all organizations. [link]Its interesting. From that viewpoint, we wouldn't want a system that is necessarily agile, or one that is evolutionary, but some type of hybrid. The reference for that entire section is:
"Managing Agile Projects." Ed. Kevin Aguanno. Oshawa, Ontario: Multi-Media Publications Inc., 2005. ISBN 1-895186-11-0.
---
You have to go to the aerospace industry before you see the term agility applied to a tangible product. The following is taken from "Flexibility in system design and implications for aerospace systems":
Agility is another term related to the ability to respond to change. It was first introduced in manufacturing environments then broadened to encompass the extended enterprise. It is often loosely defined, and used to characterize different things in a business environment. For instance, in Pathways to Agility, Oleson [12] describes “agile strategic planning processes”, “agile automation”, and discusses the need for “agile business relationships” with suppliers and customers. He defines agility as the “ability to respond with ease to unexpected but anticipated events”. Similarly, Fricke et al. [13] define agility as the “property of a system to implement changes rapidly”, and flexibility as the “property of a system to be changed easily and without undesired effects.” “Agility” is thus used as a desired qualitative attribute for an enterprise to thrive in a hyper-competitive environment. It is difficult however to see how the definitions of flexibility and agility provided by Fricke et al. [13] differ or overlap, and to grasp the concrete content of “agility”.13. E. Fricke, A. Schulz, S. Wenzel, H. Negele, Design for changeability of integrated systems within a hyper-competitive environment, in: INCOSE Colorado 2000 Conference, Denver, March 2000.

0 comments:
Post a Comment