In 1986, Frederick P. Brooks published No Silver Bullet, a small treatise that makes an important distinction in terms of software development–between accidental difficulties and inherent difficulties.

Accidental difficulties are things like a slow compiler, a difficult language syntax, etc. — things which can, by and far, be surmounted by technology, eventually–faster CPUs, more memory, and everyone’s happy!

Inherent difficulties, on the other hand, deal with difficulties inherent to software that will not be overcome by technology.  Things like software complexity, good design, integration of complex parts, and so on.

While Brooks makes some good points, we can extract, from his article, why Agile Software methodologies increase the success rate of software projects by a great degree.

Complexity: Software is made up of multiple differing and complex parts.  System-wide complexity is difficult to overcome.  The larger a piece of software becomes, the more complex.  Agile software solves this by using architectural spikes and iterative design–only the minimum necessary architecture comes out, and iterative design keeps the relative complexity low.

Conformity: Software is made up of multiple different parts and offers many different interfaces to mesh–between two classes, between interfaces, between users and the system, between the system and the underlying OS.  Agile software solves this with early integration and iterative usability testing, where integration between different parties becomes resolved very early on.

Changeability: Software, once released, comes under pressure to change–change from external users, from coders, from testers, from stakeholders.  Agile software solves this with iterative development which includes refactoring and burn-down–so architectural changes get implemented and bugs get fixed, before problems can grow and expand.

Invisibility/Abstraction: Software deals with invisible and abstract entities–classes, interfaces, delegates, database query plans, pointers–concepts that take serious brain-power to comprehend.  While not unique to agile software, agile software solves this with UML diagrams, class diagrams, and other concrete geometrics.

So while there may be "no silver bullet" in software development, Agile Software methodologies provide a strong and compelling base from which to deal with the inherent complexities of software development.

By Ashiq Alibhai

Other Interesting Posts

 

2 Responses to No Silver Bullet vs. Agile Software

  1. Agile Software also weighs heavily on unit testing and test-first development, which helps make complexity a little easier to bear.

  2. Bryana says:

    The magnitude of usability improvements is usually large. This is not a matter of increasing use by a few percent. It is common for web design efforts to result in a hundred percent or more increase in traffic or sales.

Leave a Reply

Your email address will not be published. Required fields are marked *

*


+ 3 = 12

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>