White Papers


Name Type Description Date  

Requirements and Analysis: Techniques and Tools

By Bryan Campbell

The Requirements Discipline

  • Requirements Drive Development:  A Use Case-driven Process

As stated in previous posts and in articles like Real World Development Practices:  RUP and XP , I apply much of Craig Larman’s UP style and its emphasis on rightsized, “essential” use cases, which then collectively act as a lynch pin that links together the disparate disciplines of Business Modeling, Requirements, Analysis and Design, Implementation, Test and Project Management.  Furthermore, achieving success with use cases is more difficult than it first appears, and many pitfalls in usage await the inexperienced practitioner.  Consistent application of the techniques espoused by Alistair Cockburn’s de facto standard for specifying use cases and structuring them in relation to goals, which provides a repeatable, traceable discipline for use case development and maintenance.

  • Executable Requirements:  Aligning Requirements and Development

These days I particularly like the idea of ‘Executable Requirements’ (XR) to capture requirements.  This approach has the benefit of not only enabling the Pull method described above but they also ensure that software developed matches the specifications provideds.  XR bsaically provides a mechanism where a requirement is captured in a ‘pass/fail’ style using an Excel or HTML table to define the requirements.  The power of this approach is that it not only moves requirements out of the fuzzy, prose style that can plague use cases (and which is why use cases have so many sections) but also allow a team to automate a series of tests that demonstrate that a requirement has been ‘fulfilled’.  For those of us with a testing orientation we can immediately see the opportunity to regress through all of our tests every iteration and ensure that new changes don’t break old functionality.  There’s a lot to this subject and something that I’ll update on more in the future but there are some good reference sources for this such as the Fitnesse wiki and Ward Cunningham’s Functional Integration Testing (FIT) Framework.

  • Managing Risk and Non-functional Requirements (ATAM, EVO)

Addressing Non-Functional or Supplementary Specifications is often a neglected component of software development.  Notable references in this area are Tom Gilb’s iterative EVO method, which emphasizes full and careful definition of non-functional requirements (which Gilb calls “attributes” leveraging his Planguage approach) and SEI’s ATAM (Architecture Tradeoff Analysis Method) methodology.  Documentation of all significant architectural decisions – a component of the ATAM approach – as a key mechanism for reasoning about and justifying choices between architectural options.  This fits well with leveraging risk analysis as a major driver of iteration plans.

  • Early, Continuous Delivery of Business Value: Complementing the Risk Driver

The agile methods complement UP by providing an important emphasis, not only on risk reduction, but also on the early and continuous delivery of business value.  Hence, a full iterative development discipline has two drivers: delivery of useful functionality and management of risks.  The use case-driven approach, when combined with non-functional drivers and the dispatching of work into developer tasks provides tangible evidence of progress to the business at each iteration’s end.  (See some of the XP,  EVO, and FDD links for further details.)

The Analysis Discipline

  • From Use Cases to Developer Tasks

The Larman method takes analysts and designers through a series of simple intermediate steps leading up to operation contracts on a system or service level interface.  In accordance with Agile Modeling [below], intermediate artifacts need neither be formally developed nor maintained if the ceremony level of the process does not warrant it.  I also believe strongly in a “pull”-driven approach to developer task definition, a key element in Lean Programming.

  • Applying Analysis Patterns to Streamline Design

I encourage analysts to leverage Martin Fowler’s Analysis Patterns, rather than reinvent the wheel.  This emphasis provides synergy with the product line process mentioned later, and also opens the analysis up to alignment with standardized vertical models such as well defined reference models (e.g. Insurance Application Architecture).  Another useful source of such patterns is Penker and Eriksson’s book.

March 22, 2015

A Unified Approach to Agility

By Bryan Campbell

With the increasing interest in Agile techniques such as Scrum and XP, I often come across clients and project managers assuming that these approaches alone are sufficient to ensure the success of their projects.  In actuality, the Agile Principles are really a value system that help contribute to effective behaviors on a project.  None of the agile techniques recommend dispensing with the well defined practices that govern effective project implementations such as risk, scope and change management (amongst others).  In fact most of the Agile techniques found in current literature are intended to work within existing frameworks and metamodels, without which your projects won’t succeed.

Read the article

August 4, 2014

Leveraging Offshore Software Development Centers

By Bryan Campbell

If you’ve been working in the software development industry for the last five years you’ll have heard the increasing clamor to use offshore development resources. Most of the initial interest on offshore was focused on the significant cost savings that it could offer, however, recently these claims have been enhanced with promises of increased quality thanks to the high CMM certifications of many offshore development organizations. This article is a short primer on some real world experiences that might help you if you’re either thinking of following this approach or you’re in the midst of an offshore software development project. Read the Article
August 1, 2014

Iterative Development Testing Approaches

By Bryan Campbell

Over the past five years, there has been increasing interest in agile development approaches to software development (such as eXtreme Programming), however, integrating these into a unified testing approach can be challenging given their rapid delivery model.   Applying a testing framework to an agile development approach provides a greater opportunity to ensure a robust and high quality application. This paper reviews a web-services software development project completed at the end of the year 2000 for a large Fortune 500 company. The project used an object-oriented design and blended the more formal Rational Unified Process (RUP) with the low ceremony approached advocated by eXtreme Programming (XP). The application testing approach applied the unit test framework of XP with a formal testing methodology required by the client for this high profile project. The paper describes the process followed and key learnings discovered throughout the project lifecycle.
July 29, 2014

Ten Tough Questions to Ask When Developing a Project Test Plan

By Bryan Campbell

One reason so many software development projects fail is a poor testing framework to ensure what is developed will actually work in production. Developing a comprehensive test plan for a software development projects requires a specialized skill set but as a project manager you need to be able to ask the right questions before signing off. This article is part of a series that provides ten tough questions every project manager should ask when reviewing the testing components of a project plan.
July 29, 2014