background preloader

What’s in a Story?

What’s in a Story?
[This article has been translated into Korean by HongJoo Lee, French by Philippe Poumaroux, Spanish by Adrian Moya, Russian by Denis Oleynik, and German by Julia Kadauke.] Behaviour-driven development is an “outside-in” methodology. It starts at the outside by identifying business outcomes, and then drills down into the feature set that will achieve those outcomes. Introduction Software delivery is about writing software to achieve business outcomes. Usually, the business outcomes are too coarse-grained to be used to directly write software (where do you start coding when the outcome is “save 5% of my operating costs”?) Behaviour-driven development (BDD) takes the position that you can turn an idea for a requirement into implemented, tested, production-ready code simply and effectively, as long as the requirement is specific enough that everyone knows what’s going on. This, then, is the role of a Story. The structure of a story BDD provides a structure for a story. Telling the story 1. Related:  Estimating

Introducing BDD | Dan North History: This article first appeared in Better Software magazine in March 2006. It has been translated into Japanese by Yukei Wachi, Korean by HongJoo Lee, Italian by Arialdo Martini and French by Philippe Poumaroux and most recently into Spanish by Oscar Zárate, Turkish by Selim Öber and Russian. I had a problem. The deeper I got into TDD, the more I felt that my own journey had been less of a wax-on, wax-off process of gradual mastery than a series of blind alleys. My response is behaviour-driven development (BDD). Test method names should be sentences My first “Aha!” renders something like this: The word “test” is stripped from both the class name and the method names, and the camel-case method name is converted into regular text. Developers discovered it could do at least some of their documentation for them, so they started to write test methods that were real sentences. A simple sentence template keeps test methods focused An expressive test name is helpful when a test fails

Why I still use use cases XP pretty much banned use cases, replacing them with the similar sounding “user stories” (see A user story is to a use case as a gazelle is to a gazebo (discussion: Re: A user story is to a use case as a gazelle is to a gazebo)}, and as a result agile zealots have been happy to dump use cases in the trash (along with their project managers, estimates, plans, and architectures). Scrum did similar, using the “product backlog” instead of user stories. Yet as I go around projects, I keep running across organizations suffering from three particular, real, painful, and expensive problems: User stories and backlog items don’t give the designers a context to work from – when is the user doing this, and what is the context of their operation, what is their larger goal at this moment? Use cases are, indeed, heavier and more difficult than either user stories or backlog items, but they bring value for that extra weight. In particular, use cases fix those three problems. Very expensive, very bad. s.

How To Implement Scrum in 10 Easy Steps When I first encountered agile development, I found it hard to understand. Okay, I might not be the brightest person you’ve ever met! But I’m not stupid either, I think :-) There’s a myriad of different approaches, principles, methods and terms, all of which are characterised as ‘Agile’. And from my perspective, all this ‘noise’ makes agile software development sound far harder, far more scientific, and far more confusing than it really needs to be. For this reason, I favour the Scrum agile methodology. Sure, it’s great to have a deep understanding of the underlying values and principles of agile development. Sure, it’s great to have a thorough understanding of why Scrum works. Sure, it’s great to know lots of case studies where Scrum has been applied and try to relate them to your own individual situation. But, fundamentally, I believe you can implement Scrum without all this knowledge. In these 10 posts, I outline specifically how to implement Scrum in 10 easy steps: Kelly.

Mocks Aren't Stubs The term 'Mock Objects' has become a popular one to describe special case objects that mimic real objects for testing. Most language environments now have frameworks that make it easy to create mock objects. What's often not realized, however, is that mock objects are but one form of special case test object, one that enables a different style of testing. In this article I'll explain how mock objects work, how they encourage testing based on behavior verification, and how the community around them uses them to develop a different style of testing. I first came across the term "mock object" a few years ago in the XP community. Since then I've run into mock objects more and more. But as often as not I see mock objects described poorly. This difference is actually two separate differences. (In the earlier version of this essay I had realized there was a difference, but combined the two differences together. Regular Tests I'll begin by illustrating the two styles with a simple example.

Applying Use Cases in Agile: Use Case 2.0, Slicing and Laminating To incrementally develop and deliver products using agile software development, requirements are gathered and organized into a product backlog. A requirement technique that is used in agile software development is use cases. Some techniques to apply use cases for managing product requirements in agile are use case 2.0, slicing and laminating. Shobha Rangasamy Somasundaram and Amol Sharma wrote a blog post about can formal requirement methods work for agile in which they compare the usage of requirements between waterfall and agile software development: In traditional software development or waterfall process, the following methods are used during the requirements phase - brain storming, questionnaire, modeling, prototyping, observation, focus group, survey, reverse engineering, interview, document analysis, workshop for joint application development (JAD) - collaboration & domain model creation. Andy Hayward explored different requirement techniques in a series of blog post.

promisedata - Data for reusable SE experiments What is PROMISE? PROMISE= PRedictOr Models In Software Engineering. Mantra= Software management decisions should be based on well-understood and well-supported predictive models. Collecting data from real world software engineering projects is problematic. Frequently asked questions: FAQ1: How to reference this data? T. FAQ2: How to view the data? Just read the on-line files. FAQ3: This repo reports "Sorry, truncated results. View the data via the simpler web-based Subversion interface. e.g. see FAQ4: How to read/write comments on the data? Go to the on-line wiki. FAQ5: How to report a bug with the data? Add an issue. FAQ6: How to contribute new data? Place it on-line somewhere then report new data. FAQ7: How to meet the PROMISE community? Come along to the annual conference on predictive models in SE 2012: co-located with ESEM'12

Get started with testing from top to bottom Image via foldedstory.com We are regularly talking to teams who are just starting out with testing their application. Some of them have a few tests, but don’t know where to go next. Others don’t test at all and need help to get started. One team mentioned they felt overwhelmed as there is so much they could test. By starting to test your application from top to bottom you can get over this easily. Start from the top By testing your application you can always be sure the most important steps users can take in your application work. As easy as this sounds we’ve seen teams struggle with coming to that conclusion and then following through. You should start by defining what the most important steps in your product are. Get everyone in your team to write down 8 scenarios they think are the most important ones in your application. All of them should be structured with Given, When and Then steps. Another example would be And one more This should only be the beginning of testing your application.

What Characteristics Make Good Agile Acceptance Criteria? | Segue Technologies - Custom Software Development, Professional Website Design, Information Technology Good Acceptance Criteria will help get your Agile project from “It Works as Coded” to “It Works as Intended.” Read on and see how. A User Story is a description of an objective a person should be able to achieve, or a feature that a person should be able to utilize, when using a software application. User Stories have been classically written in the following form: As an <actor phrase > I want <action phrase> so that <outcome phrase> For example: As an Administrator, I want to be able to create User Accounts so that I can grant users access to the system. A User Story cannot stand alone. What Are These Acceptance Criteria and What Makes a “Good” One? Microsoft Press defines Acceptance Criteria as “Conditions that a software product must satisfy to be accepted by a user, customer or other stakeholder.” These criteria define the boundaries and parameters of a User Story/feature and determine when a story is completed and working as expected. An Example

Estimation is at the root of most software project failures | Rob Bowley I believe estimation, and the way it’s regularly misused, is at the root of the majority of software project failures. In this article I will try to explain why we’re so bad at it and also why, once you’ve fallen into the trap of trying to do anything but near future estimation, no amount of TDD, Continuous Delivery or *insert your latest favourite practice here* will help. The simple truth is we’ll never be very good at estimation, mostly for reasons outside of our control. However many prominent people in the Agile community still talk about estimation as if it’s a problem we can solve and whilst some of us are fortunate to work in organisations who appreciate the unpredictable nature of software development, most are not. I recently tweeted something which clearly resonated with a lot of people: It was in response to this article Mike Cohn posted proposing a technique for providing estimates for a full backlog of 300(!) Right? Wrong. 1. 2. Estimates are rarely ever just estimates

Related: