MONTHLY NEWSLETTER

Monthly Newsletters

 
Exploring Agile Development
The primary goal in delivering software is to:
  1. Deliver software that meets the requirements and specifications.
  2. Deliver the software within the time frame promised.
  3. Ensure that the software is of high quality.

Meeting these 3 goals is not easy.  It requires your entire software team to have a defined development / project management methodology, and tools to make implementing the methodology easy.

When choosing your development methodology, you have many to choose from, each having advantages and disadvantages.   The latest buzzword is "Agile Development", this newsletter explores the advantages and disadvantages of Waterfall vs. Agile.

Waterfall Methodology
Traditionally, companies have used the Waterfall methodology.  The Waterfall methodology performs each phase of the software lifecycle sequentially:

  1. The team creates a list of all requirements before any design is done.
  2. Upon requirements completion, a detailed design is created for each requirement.
  3. Upon design completion, all tasks are estimated and submitted for approval.
  4. Upon approval, coding begins and test cases are created in preparation for quality assurance.
  5. Upon code completion, testing begins and continues until all test cases are run and all defects are fixed.
  6. Upon quality assurance completion, the software is documented and moved to production.

Waterfall Methodology Advantages and Disadvantages

The advantage of Waterfall is that it is a very disciplined methodology, producing very detailed specifications that can be translated to user and technical documentation. It also provides very detailed oversight, including continual risk management and disciplined project management planning and measurement.

The disadvantage of the Waterfall methodology is that it takes a long time to deliver software to production (normally more than a year). The reason is due to the effort involved in defining all features of the software and creating detailed designs for all of them. It is also problematic because if major flaws are found in the requirements or design, it does not appear until the testing phase, and reworking a flawed design adds risk to the project as well as a lot of effort. Last, because the duration of Waterfall tends to span a year or more, business rules and needs can change, and the original design of the software may not still apply, making features of the new software obsolete before it ever makes it to production.

Agile Methodology
Agile is all the buzz these days. With Agile, analysis is done similar to the Waterfall method. However, once analysis is done, each requirement is prioritized as follows:

  • High - These are mission critical requirements that absolutely have to be done in the first release.
  • Medium - These are requirements that are important but can be worked around until implemented.
  • Low - These are requirements that are nice-to-have but not critical to the operation of the software.

Agile Methodology Advantages and Disadvantages

Once priorities have been established, the release "iterations" are planned. The first release (Release 1.0) begins by working on just the high priority items. Unlike Waterfall, new requirements can be introduced into the release anytime before quality assurance begins, and high priority items can be reprioritized, allowing you to drop features you had originally slated for the release. Normally, each Agile release iteration takes between 1 to 3 months to deliver.

Below are the advantages of the Agile Iterative Life Cycle:

  1. The Design phase goes much faster, as designs are only done on the items in the current release (Release 1.0 for example).
  2. Coding and Testing go much faster because there are less items to code and test. If major design flaws are found, re-work is much faster since the functional areas have been greatly reduced.
  3. The client gets into production in less than 3 months, allowing them to begin earning revenue or reducing expenses quicker with their product.
  4. If market conditions change for the client, changes can be incorporated in the next iterative release, allowing the software to be much more nimble.
  5. As the software is implemented, the client can make recommendations for the next iteration due to experiences learned in the past iteration.

Searching the Internet for Agile will produce results that discuss different "methods" of Agile. You will see Scrum, Extreme Programming, Adaptive Software Development, Crystal Clear, and many others. These are simply different adaptations of Agile to fit the needs of specific teams.

You may also hear that Agile is a "cowboy coding" methodology. This simply means that teams are coding without regard to how the end product will look and feel, and they make adjustments on the fly to meet the needs of the day. "Cowboy coding" has a negative connotation because it implies that there is no oversight, measurement, or prediction as to when the first usable version of the software will be ready for production.

Conclusion
In the coming months we will discuss Agile development in more detail, and explain how you can use Pragmatic Agile Development (PAD) to gain the benefits of nimbleness of Agile, combined with the oversight, project management, and deliverable measurement, resulting in a methodology that is both nimble and has discipline. Learn more about Pragmatic Agile Development today.

What's Next?
Upcoming newsletters will discuss the following topics:

Start improving your project efficiency and success by signing up for our monthly newsletters today.

Helpful Tools and Templates for Agile and Waterfall Development

Below are some helpful tools and templates to aid you in your Agile and Waterfall development efforts and to deliver software on-time and on-budget:

  • Free Agile and Waterfall Worksheets and Templates
    A comprehensive list of Agile and Waterfalll templates that are free to use in your software projects. Daily meeting roadmap, product backlog, post mortem templates and more.

  • Software Planner
    Software Planner is an award winning application lifecycle management (ALM) tool that helps software companies manage all components of software development including managing customer requirements, project deliverables, test cases, defects, and support tickets. Software Planner is great for Agile and Waterfall projects and has a free trial.

  • Automated Testing Tool
    Automated testing is a key component in Agile and Waterfall development. TestComplete is an award winning automated testing tool that lets you create, manage and run tests for any Windows, Web or Rich Client software and includes unit testing, funtional testing and a lot more.

  • Performance and Memory Profiler
    Software performance is key in any software project's longevity. AQtime is the performance and memory profiler for Win32 and .NET applications with over two dozen performance and memory profilers and productivity tools included.

About the Author

Steve Miller is the Vice President of ALM Solutions at AutomatedQA. With over 23 years of experience, Steve has extensive knowledge in project management, software architecture and test design. Steve publishes a monthly newsletter for companies that design and develop software. You can read other newsletters at http://www.PragmaticSW.com/Newsletters.asp. Steve's email is steve.miller@PragmaticSW.com.
Tools for Managing the Software Development Lifecycle

Sponsored Link


www.SoftwarePlanner.com  
Software Planner is an award winning web-based solution for managing the software life cycle and is perfect for managing Agile and Waterfall projects. Track customer requirements, defects, test cases and support tickets with full traceability and share documents and reports. Provides project management, with importing/exporting from Microsoft Project®, customizable dashboards and Microsoft Outlook® Synchronization. Download the free trial today.

Awards:

Best ALM/QA Tool |  Best Project Management Solution |  Best Bug and Defect Tracking Tool |  SD Times Top 100 |  Best Performance/Test Tool