Home > Performance Requirements, Software Development > Performance Requirements and Agile Projects

Performance Requirements and Agile Projects

Share

It looks like agile methodologies are somewhat struggling with performance requirements (and non-functional requirements in general). Probably there are several reasons for that. One is that actually even traditional software development methodologies and processes never came with a good approach to handle performance requirements. They are, of course, considered in both literature and practical projects – but are usually handled rather in ad hoc manner. Actually the process of gathering and elaboration of performance requirements is rather agile in itself, and attempts to make it rigorous and formal look unnatural and have never fully succeeded – so it should be easier and more natural to do it as part of agile methods. Still the challenge of handling multidimensional and difficult to formalize performance requirements remains intact and the difference is rather in minor adjustments to agile processes than in the essence of performance requirements.

Another reason is that practical agile development is struggling with performance in general. Theoretically it should be a piece of cake: every iteration you have a working system and know exactly where you stand with the system’s performance. You shouldn’t wait until the end of the waterfall process to figure out where you are – on every iteration you can track your performance against requirements and see the progress (making adjustments on what is already implemented and what is not yet). Clearly it is supposed to make the whole performance engineering process much more straightforward.

Unfortunately, it looks like it doesn’t always work this way in practice. So such notions as “hardening iterations” and “technical debt” get introduced. Although it is probably the same old problem: functionality gets priority over performance (which is somewhat explainable: you need first some functionality before you can talk about its performance). So performance related activities slip toward the end of the project, and the chance is missed to implement a proper performance engineering process built around performance requirements.

Another issue here is that agile methods are oriented toward breaking projects into small tasks, which is quite difficult to do with performance (and many other non-functional requirements) – performance-related activities usually span the whole project.

There is no standard approach to specifying performance requirements in agile methods. Mostly it is suggested to present them as user stories or as constraints. And the difference is not so much in the way the requirements are presented, both ways rather use plain text.

User stories assume using a user voice form. Cohn, for example, suggests to use the “As a , I want , so that ” template for user stories (although he cautions that the user story template should only be used as a thinking tool, it should not be used as a fixed template). For constraints, both traditional expressions and user voice forms may be used.

The difference between user stories and constraints approaches is not in performance requirements per se, but how to address them during the development process. The point of the constraint approach is that user stories should represent finite manageable tasks, while performance-related activities can’t be handled as such because they usually span multiple components and iterations. Those who suggest to use user stories address that concern in another way – for example, separating cost of initial compliance and cost of ongoing compliance.

  1. February 4th, 2013 at 06:27 | #1

    The problem with Agile usually isn’t automation – it is that most organizations refuse to implement Agile processes correctly. They end up being date driven instead of feature driven. The developers begin to take control of the life cycle, and documentation and sound process goes out the window. We’re currently talking about this and discussing this in our blog series called “Agile or Fragile” over at our blog:

    http://northwaysolutions.com/blog/agile-vs-fragile-how-to-tell-which-your-organization-is

    It’s true that performance testing is complex no matter how limited the scope, and that it requires someone with the niche skills to pull it off fast, but I don’t think this should limit performance testing in Agile projects. If the performance team is as involved upfront as the development team – of the performance engineer IS a developer-in-test this makes it so much easier to deliver.

  2. February 4th, 2013 at 14:57 | #2

    Scott,

    I agree. Automation becomes a problem WHEN you have agile and performance testing processes implemented properly and indeed deliver working versions of software with incremental functionality frequently. Otherwise you probably have other problems to solve first (which, unfortunately, looks rather typical).

    Alex

  1. January 24th, 2013 at 17:01 | #1
Powered by Sweet Captcha
Verify your real existence,
Drag the dress to the hanger
  • captcha
  • captcha
  • captcha
  • captcha