- Taschenbuch: 270 Seiten
- Verlag: Manning (28. Juni 2011)
- Sprache: Englisch
- ISBN-10: 1617290084
- ISBN-13: 978-1617290084
- Größe und/oder Gewicht: 18,7 x 1,5 x 23,5 cm
- Durchschnittliche Kundenbewertung: 2 Kundenrezensionen
- Amazon Bestseller-Rang: Nr. 32.636 in Fremdsprachige Bücher (Siehe Top 100 in Fremdsprachige Bücher)
Specification by Example: How Successful Teams Deliver the Right Software (Englisch) Taschenbuch – 28. Juni 2011
Wird oft zusammen gekauft
Kunden, die diesen Artikel gekauft haben, kauften auch
Es wird kein Kindle Gerät benötigt. Laden Sie eine der kostenlosen Kindle Apps herunter und beginnen Sie, Kindle-Bücher auf Ihrem Smartphone, Tablet und Computer zu lesen.
Geben Sie Ihre Mobiltelefonnummer ein, um die kostenfreie App zu beziehen.
Über den Autor und weitere Mitwirkende
A UK based consultant, Gojko Adzic helps teams worldwide implement specification by example and agile testing practices. He has written two previous books on the subject and contributed to several open source projects supporting specification by example. Gojko is a frequent speaker at leading software development and testing conferences and runs the UK Agile Testing User Group.
Welche anderen Artikel kaufen Kunden, nachdem sie diesen Artikel angesehen haben?
Gojko covers Specification Workshops, in which teams gain a shared understanding about the features to be implemented. He continues to explain how to derive relevant examples as a specification for the software. While the code is implemented, these examples are automated to the letter, so that an executable specification evolves. Over time a living documentation is created, eventually leading to a well maintainable software system.
Gojko abstracts from the particular tools that support Agile friendly test automation. Instead he explains the approaches that different teams took, and which trade-off decisions they were faced with, and which lessons they learned. By sharing these lessons you can avoid most common mistakes. This book reflects the current state of the art of Specification by Example, and the content comes close to the classic Design Patterns book by Gamma, Helm, Johnson, and Vlissides.
Independent of the specific tools that were used, Gojko identified and described common challenges teams were facing and solutions they found as well as common patterns teams applied successfully.
For beginners this book will give a head start into the topic. Note, however, that this book is not a beginner's guide. Reading Gojko's first book, 'Bridging the Communication Gap', is a useful supplement for getting started.
Practitioners will find both confirmations to already found patterns and solutions as well as new inspiration to improve their practice.
The book is also very suitable for convincing decision makers who want see evidence about ATDD and specification-by-example applied in different organizations.
Die hilfreichsten Kundenrezensionen auf Amazon.com (beta)
I was really looking forward to read this book after hearing an interview with the author on Devnology podcast. It pains me to admit that reading it was not a time well spent. How could the author call his approach "Specification by Example" and offer no end-to-end examples that could be studied, evaluated and replicated? Please comment with a page number(s) for such examples if you disagree, and I will be more than happy to admit my blindness.
The book is divided in three parts. The first part is mainly introduction where Gojko describes the benefits and the key practices that will be described in this book. The second part is the actual description of the key practices and the third part are different case studies about different teams in different companies that have adopted specification by example.
The key practices that are introduced in part one and described in part 2 are:
- Deriving scope from goals
- Specifying collaboratively
- Illustrating using example
- Refining the specification
- Automating without changing the specification
- Validating frequently
- Evolving a documentation system
Deriving scope from goals discusses how customers main concert is not the software but solving a problem and developers shouldn't just expect to get the requirements from the customer but work together with them to help them to solve their problem in the best way. Specifying collaboratively covers how the customer and the teams will cooperatively define the specifications that the team will be implementing later. Illustrating using examples explains how these specifications can be described best by moving from abstract requirements to concrete examples. Refining the specification then takes the essence out of the requirements and describes them in the clearest possible way. After that, the specification can be automated without changing the specification and this chapter gives tips on how to do that. When the specifications are automated, you want to run them frequently which is described in the validate frequently chapter. Evolving a documentation system describes how the specifications become the documentation of what the system does. They stay in-sync with the system because they are continuously executed.
The third part described a couple of case studies of companies that implemented specification by example. I really loved these case studies and they were written very well.
I've read both of Gojko's earlier books and had high expectations for this book. I was not disappointed, it is an excellent follow-up and will be my standard book reference on Specification by Example (or A-TDD as it is also called). The book is not perfect though. As times I felt there was too much focus on documentation and too little on collaboration. Still, I'd rate this book five stars and recommend everyone in an Agile development team to read this and practice specification by example.
* Don't let customers dictate solutions, instead challenge and extract scope/solutions via collaboration.
* Don't make test automation your end-goal. Move on to living documentation (although I have no clue on how to convince teams of the benefits).
* Keep specs readable by business users.
* Adapt your test suites to the current reality.. Fast feedback is key even for acceptance tests.
Nitpicks: Could have been a shorter book. I realized I don't like reading about case studies... maybe others would like it. I strafed over Part III. and at 50$ a pop, the price is a bit steep.
It promotes a set of very important principles (listed in the chapter 2) that, strictly speaking, are not Specification-by-Example specific or even new - most of them are known from 70-s or early 80-s - but anyway are way too often overlooked or forgotten. To name a few of the (the most important as for me):
* Deriving Scope from Goals (a specification should answer not "how?" or even "what?", but "why?" and "what for?").
* Specification Refinement (specification should contain all necessary detail but nothing more and should be expressed on an appropriate level of abstraction).
* Specify Collaboratively - customers, business analyst, developers and testers should participate in the specification creation.
The above mentioned principles are a must for any successful software project - a project (save the most trivial one) seriously violating them can succeed by chance only.
If add to them two Specification-by-Example specific principles - Executable Specification (specification expressed as acceptance tests written not in the technical but in the business language) and Living Documentation (documentation consisting of or generated from automated acceptance tests) you may imagine which benefit Specification-by-Example may bring to your development.
The book considers a usability of Specification-by-Example in different scenarios and in differently organized teams (based on the real-life experience) and provide a well-grounded advices what to do - and what refrain from - based on the conditions in which your teams operates.
All this is on the bright side.
On the dark side are:
* Already mentioned oversaturation with success stories - yes they play as important role as background and illustrations, but may safely be shortened 2-fold at least, as for me.
* The book describes advantages but is almost silent about inherent dangers and drawbacks of the proposed approach. To be honest, it avoids them not completely; there are a few words on some of them here and there - but not enough as for me. And the main dangers - fragmented, incoherent and non-uniform solution and an exponential growth of complexity in the behavioral tests - are not even mentioned explicitly (yes, there are talks about "an appropriate level of abstraction" and "key examples" - but it is not enough).
* The book overestimates a "less rework" effect provided by the approach - as with any specification developed and implemented piecewise there are high chances to miss on early development stages a requirement critical for internal structure of the system inevitably causing a massive rework of the system core. Moreover one of the success stories contains the following passage "From the first day of development, the Talia team used Specification by Example and built up a living documentation system. After a year of development, they had to rewrite the core of the virtual agent engine from scratch." There is no explanation why this "rework from scratch" becomes necessary - but there are good chances that it was for the reasons explained above.
Smaller things that I really like:
* "Building the product right and building the right product are two very different things. We need to do both to succeed."
* "Instead of a technical feature specification, we should ask for a high-level example how a feature would be useful."
* "I generally don't agree with the categorization of requirements into functional and non-functional groups, but that is probably a topic for another book." - BTW, I am likely wrong qualifying this point of view (which I myself advocate from early 90-s) as a "smaller thing".
* "Scripts are not specifications" - perfectly said, scripts inevitably specify "how" not "what for".
And smaller things which I rather dislike:
* Maintenance costs of the automated acceptance are underestimated - along with possible bugs in fixtures.
* "It never happens" syndrome is not dealt with (I mean business customers that tend to specify a happy-path only and for any border cases cut discussion short claiming "it never happens" - needless to say that the question is not "if" but "when" it happens).
* There is a statement in the Introduction/ This book has no source code and does not explain any tools section: "Once you get the communication and collaboration right, a tool might help to make it go smoother." - which is only partially true, as without an appropriate tool it is virtually impossible to obtain an executable specification and a living documentation, 2 major benefits of the Specification-by-Example approach.
* Quite ambiguous/imprecise statements:
o Chapter 2, Evolving a documentation system section states about a living documentation "It is as reliable as the code, but much easier to read and understand." -almost true, as this documentation is almost as reliable as code (subject to misinterpretations/bugs in fixtures, parts of/paths through of the code not covered with automated acceptance tests etc.).
Despite all small (and not so small) problems mentioned above the book is really great!
Its pages describe one of the most effective ways in which teams can build the right product and build that product right. Specification by Example harnesses some key attributes of agile frameworks such as Lean & XP in a mechanism that allows teams to get from business ideas to an implemented and evolving (self-documented) product with the minimum of fuss or waste.
What's more from the research undertaken with real teams in real companies, you the reader, can learn from the many other practitioners who have been using and honing these techniques in the field (that's a real field by the way, with grass and everything).
I think it's rare to get this amount of good practical advice from so many teams distilled into a single reference guide alongside the process.
A fantastic book which should be the accompaniment of every software team member!!!