Agile Development Methodology

From Cyborg Anthropology
Revision as of 16:08, 22 June 2010 by Caseorganic (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Definition of Methodology

In his Dissertation on People and Methodologies in Software Development, Alistair Cockburn related an experience he had in a room full of senior consultants from Coopers & Lybrand, Ernst & Young, Andersen Consulting, and the IBM Consulting Group. One of them stood up and said (words to the effect of): “Let’s get clear what we mean by methodology. It is the roles, teams, skills, processes, techniques, tools, and standards used by the project team.” The others in the room nodded their heads, and the meeting proceeded. As one of the senior consultants later told me, “If it is what one or two people do while working on a task, it is technique. If it is what the team uses to coordinate their work, then it’s methodology” [2].

Cockburn points out after presenting the Merriam-Webster dictionary definition of method, "a systematic procedure"; that is, similar to a technique. He also points out that in European research literature, the word method can be used to describe a framework for learning.

In contrast to these definitions, Cockburn writes that he uses "methodology to connote the conventions people agree to across the team (including development techniques). While the techniques disappear into each person’s skill set, the conventions in play do not disappear into skill set".



Books

Psychology of Computer Programming by Gerald M. Weinberg

Long regarded as one of the first books to pioneer a people-oriented approach to computing, The Psychology of Computer Programming endures as a penetrating analysis of the intelligence, skill, teamwork, and problem-solving power of the computer programmer.

Returning to topics that are strikingly relevant to today's issues in programming, Gerald M. Weinberg provides a characteristically fresh perspective on his original insights, highlighting the similarities and differences between now and then. Using a conversational style that invites the reader to join him, Weinberg reunites with some of his most enduring, straight-from-the-heart observations on the human side of software engineering.


Toyota Kata: Managing People for Improvement, Adaptiveness and Superior Results by Mike Rother

Drawing on six years of research into Toyota's employee-management routines, Toyota Kata examines and elucidates, for the first time, the company's organizational routines--called kata--that power its success with continuous improvement and adaptation. The book also reaches beyond Toyota to explain issues of human behavior in organizations and provide specific answers to questions such as:

  • How can we make improvement and adaptation part of everyday work throughout the organization?
  • How can we develop and utilize the capability of everyone in the organization to repeatedly work toward and achieve new levels of performance?
  • How can we give an organization the power to handle dynamic, unpredictable situations and keep satisfying customers?

Mike Rother explains how to improve our prevailing management approach through the use of two kata: Improvement Kata--a repeating routine of establishing challenging target conditions, working step-by-step through obstacles, and always learning from the problems we encounter; and Coaching Kata: a pattern of teaching the improvement kata to employees at every level to ensure it motivates their ways of thinking and acting.

With clear detail, an abundance of practical examples, and a cohesive explanation from start to finish, Toyota Kata gives executives and managers at any level actionable routines of thought and behavior that produce superior results and sustained competitive advantage.


Scrum and XP from the Trenches

The tricky part to agile software development is that there is no manual telling you exactly how to do it. You have to experiment and continuously adapt the process until it suits your specific situation.

This book aims to give you a head start by providing a detailed down-to-earth account of how one Swedish company implemented Scrum and XP with a team of approximately 40 people and how they continuously improved their process over a year's time.

Under the leadership of Henrik Kniberg they experimented with different team sizes, different sprint lengths, different ways of defining "done", different formats for product backlogs and sprint backlogs, different testing strategies, different ways of doing demos, different ways of synchronizing multiple Scrum teams, etc. They also experimented with XP practices - different ways of doing continuous build, pair programming, test driven development, etc, and how to combine this with Scrum.

Your team's constraints may dictate a different configuration of practices (and even compromises), but here is an example of how to approach the "continuous improvement" process that will make your Agile process work best for you.

This book includes:

  • Practical tips and tricks for most Scrum and XP practices
  • Typical pitfalls and how they were addressed
  • Diagrams and photos illustrating day-to-day work
  • Testing and test-driven development
  • Scaling and coordinating multiple teams
  • Dealing with resistance from inside and outside the team
  • Planning and time estimation techniques
  • Forwards by Jeff Sutherland and Mike Cohn

168 pages, 6" x 9", ISBN: 978-1-4303-2264-1


Writing Effective Use Cases by Alistair Cockburn

Alistair Cockburn's Writing Effective Use Cases is an approachable, informative, and very intelligent treatment of an essential topic of software design. "Use cases" describe how "actors" interact with computer systems and are essential to software-modeling requirements. For anyone who designs software, this title offers some real insight into writing use cases that are clear and correct and lead to better and less costly software.

The focus of this text is on use cases that are written, as opposed to modeled in UML. This book may change your mind about the advantages of writing step-by-step descriptions of the way users (or actors) interact with systems. Besides being an exceptionally clear writer, the author has plenty to say about what works and what doesn't when it comes to creating use cases. There are several standout bits of expertise on display here, including excellent techniques for finding the right "scope" for use cases. (The book uses a color scheme in which blue indicates a sea-level use case that's just right, while higher-level use cases are white, and overly detailed ones are indigo. Cockburn also provides notational symbols to document these levels of detail within a design.)

This book contains numerous tips on the writing style for use cases and plenty of practical advice for managing projects that require a large number of use cases. One particular strength lies in the numerous actual use cases (many with impressive detail) that are borrowed from real-world projects, and demonstrate both good and bad practices. Even though the author expresses a preference for the format of use cases, he presents a variety of styles, including UML graphical versions. The explanation of how use cases fit into the rest of the software engineering process is especially good. The book concludes with several dozen concrete tips for writing better use cases.

Software engineering books often get bogged down in theory. Not so in Writing Effective Use Cases, a slender volume with a practical focus, a concise presentation style, and something truly valuable to say. This book will benefit most anyone who designs software for a living. --Richard Dragan

Topics covered:

  • Introduction to use cases
  • Requirements
  • Usage narratives
  • Actors and goals
  • Stakeholders
  • Graphical models for use cases
  • Scope for use cases (enterprise-level through nuts-and-bolts use cases)
  • Primary and supporting actors
  • Goal levels: user goals, summary level, and subfunctions
  • Preconditions, triggers, and guarantees
  • Main success scenarios
  • Extensions for describing failures
  • Formats for use cases (including fully dressed one- and two-column formats)
  • Use case templates for five common project types
  • Managing use cases for large projects
  • CRUD use cases
  • Business-process modeling
  • Missing requirements
  • Moving from use cases to user-interface design
  • Test cases
  • eXtreme Programming (XP) and use cases
  • Sample problem use cases
  • Tips for writing use cases
  • Use cases and UML diagrams

Agile Software Development Ecosystems by Jim Highsmith

In a highly volatile software development environment, developers must be nimble, responsive, and able to hit a moving target--in short, they must be agile. Agile software development is designed to address this need for speed and flexibility. Agility describes a holistic, collaborative environment in which you can both create and respond to change by focusing on adaptability over predictability, people over process. Agile software development incorporates proven software engineering techniques, but without the overhead and restrictions of traditional development methodologies. Above all, it fulfills its promise of delivering software that serves the client's business needs.

Written by one of the leaders of the Agile movement, and including interviews with Agile gurus Kent Beck, Robert Charette, Alistair Cockburn, Martin Fowler, Ken Schwaber, and Ward Cunningham, Agile Software Development Ecosystems crystallizes the current understanding of this flexible and highly successful approach to software development. It presents the key practices of all Agile development approaches, offers overviews of specific techniques, and shows how you can choose the approach that best suits your organization.

This book describes--in depth--the most important principles of Agile development: delivering value to the customer, focusing on individual developers and their skills, collaboration, an emphasis on producing working software, the critical contribution of technical excellence, and a willingness to change course when demands shift. All major Agile methods are presented:

   * Scrum
   * Dynamic Systems Development Method
   * Crystal Methods
   * Feature-Driven Development
   * Lean Development
   * Extreme Programming
   * Adaptive Software Development

Throughout the book, case stories are used to illustrate how Agile practices empower success around the world in today's chaotic software development industry. Agile Software Development Ecosystems also examines how to determine your organization's Agile readiness, how to design a custom Agile methodology, and how to transform your company into a truly Agile organization.


Crystal Clear: A Human-Powered Methodology for Small Teams by Alistair Cockburn

Carefully researched over ten years and eagerly anticipated by the agile community, Crystal Clear: A Human-Powered Methodology for Small Teams is a lucid and practical introduction to running a successful agile project in your organization. Each chapter illuminates a different important aspect of orchestrating agile projects.

Highlights include

  • Attention to the essential human and communication aspects of successful projects
  • Case studies, examples, principles, strategies, techniques, and guiding properties
  • Samples of work products from real-world projects instead of blank templates and toy problems
  • Top strategies used by software teams that excel in delivering quality code in a timely fashion
  • Detailed introduction to emerging best-practice techniques, such as Blitz Planning, Project 360º, and the essential Reflection Workshop
  • Question-and-answer with the author about how he arrived at these recommendations, including where they fit with CMMI, ISO, RUP, XP, and other methodologies
  • A detailed case study, including an ISO auditor's analysis of the project

Perhaps the most important contribution this book offers is the Seven Properties of Successful Projects. The author has studied successful agile projects and identified common traits they share. These properties lead your project to success; conversely, their absence endangers your project.

Why Crystal Clear?[3]

  • It’s based on observations of many successful teams. Those observations give Crystal a sounder base than most competing methodologies, which typically trace their roots back to a smaller number of projects. For example, XP was “born” on the C3 project.
  • It has a different slant on things. We’ve come to expect a certain “mechanical” feel to processes, “Do A, B and C, and the result will be D, where D is great software!”. We’ve come to expect methodologies to contain details such as diagramming notations and workflows. And yet, somehow, that’s not what matters most. Crystal Clear describes the things that really do matter, the things that make the most difference to the success or failure of a project.
  • It supports fixed price contracts. Whether you love them or hate them, you probably use them. Crystal Clear is flexible enough to suit.
  • It’s not “all or nothing”. Crystal Clear will be useful to the people who adopt it, but it will also be useful to people who don’t adopt it. At least, not all of it. Teams using RUP, XP or other methodologies can “borrow” useful techniques from Crystal Clear. Likewise, if you are doing Crystal Clear, you can borrow good bits from other methodologies.
  • It gives you useful guidance on how to adopt the methodology, and how to tailor it to your organisation. I find this a stark contrast with RUP, which says “tailor me”, but doesn’t seem to give enough guidance on exactly how to do so.
  • It “feels right”, because it has a lot in common with the successful projects I’ve worked on in the past. This is not surprising, considering it’s based on observations of successful projects!
  • Crystal Clear is just a book (and a growing community of users). If you want to adopt Crystal Clear, it will only cost you the price of a book, plus a little of your time (days, rather than months).

Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister

Demarco and Lister demonstrate that the major issues of software development are human, not technical. Their answers aren't easy--just incredibly successful.

(It has 85 5 star ratings on Amazon.com).

Research Methodologies

Information gathering can come from many sources and be outputted to many sources.

Making use of multiple information-gathering approaches[1]