What is Agile Software?

DynConDevLogoForWeb

What is Agile Software?

Much has been written about the Agile Software Development Processes. While there are many different approaches to this methodology, they all involve being able to rapidly and effectively deal with changing requirements during the software development lifecycle (SDLC). This article looks at software development from a slightly different perspective; creating software that is in and of itself agile. Software agility can be defined as the ability of software to be adapted for different scenarios with a major focus on re-use.

Even the term “re-use” has different meanings for different development teams. For the purpose of this article, re-use is specifically defined as utilizing the software without any modifications at the source level, and ideally without even requiring a recompilation.

Although this series focuses on Microsoft .NET technologies, including new features available in version 3.5, the basic principles apply to almost all software development environments. Taken individually these principles are not new. Taken as a comprehensive design philosophy, the benefits form positive feedback loops; enhancing the quality of the resulting application with a lower total cost of ownership. Having a clear set of design goals, that are largely independent of the specific application, also identify those aspects of the lifecycle process and methodology that are most applicable to the overall result.

Our experience has shown that agility can be measured in a number of distinct domains. The importance of these domains varies from site to site; but they are present in all but the smallest development environments.

Time – Agility in the time domain is defined by the number of changes (iterations) that occur to a specific software component after it is initially written, debugged, and tested. These changes are typically triggered by the evolution of requirements.

Access – Agility in the access domain is defined as the ability to reuse the code that was developed to be accessed via one mechanism (e.g. Windows Forms Desktop Application) via other means (e.g. WPF Application, Web Service, Web Application).

Usage – Agility In the usage domain is defined as the ability to reuse the code developed for one specific project in other projects. The development of common, shared libraries reduces the project specific workload, and provides a solid foundation for new project development.

Achieving a high degree of agility requires careful planning from the earliest architectural decisions. In most cases, the savings are evident almost immediately. The futures posts in this series will cover specific techniques that have been proved to be beneficial.

Please Stay Tuned.......

_All Material Copyright 2008, All Rights Reserved.
_Dynamic Concepts Development Corp.
331 West 57th Suite #422,
New York, NY 10019

This article is part of the GWB Archives. Original Author: David V. Corbin

New on Geeks with Blogs

  • We Won The One Award I Actually Care About

    Full Scale made the Inc. 5000 for the fifth year straight, the 12th listing across my three companies. Here is why the one award you cannot buy is worth stopping for.

  • Your Customers Build the Features Now

    I let a tool I liked sit dead for a year rather than build the features I wanted. An MCP server meant I never had to, and your customers can do the same to your product.

  • Get the Size of a Directory in Linux the Easy Way

    du -sh for the quick answer, ncdu for the cleanup, df for the disk itself: every command for checking directory size in Linux, plus why du and df never agree.

  • Vim Search and Replace: The Ultimate Guide

    One :%s command replaces every match in a file before a find dialog would even open. The Vim substitute patterns worth the muscle memory: flags, ranges, capture groups, and multi-file edits.