Agile Software Development: Hands-on Practices, Principles, Agile Modeling, and TDD

Revision as of 14:08, 18 January 2013 by Clarman (talk | contribs) (→‎Outline)


4-5 days. If the 4-day version; the sessions are 8:15am-5:45pm (for example). If the 5-day session, sessions are 9:00am-5:00pm (for example)

This popular, high-impact, and hands-on course on agile software development is aimed at developers looking for solid core development skills, and is based on industry leader Craig Larman’s extensive experience coaching and applying agile modeling and development (both objected-oriented and non-OO) for decades.

What really matters is not a set of diagrams and documents, but a quality, running system that meets the needs and constraints of various stakeholders. Thus, how can we effectively apply modeling in an agile value-adding practical approach, and how can it be integrated with programming and automated tests to create great software? And how to can we design software with technical agility to enable business agility? Finally, what are the overarching principles to the design of elegant, understandable, and extensible systems?

In this intensive hands-on seminar you will find the answer these questions. There is a little lecture time, but the majority of the time is spent in high-value-education small modeling teams at the whiteboards while the coach rotates and works with each team, coaching the case studies while applying agile modeling, principles and patterns. The coach will also help you implement your systems, while you lean the powerful practice of test-driven development (TDD) with refactoring. Plus, acceptance TDD to move towards "requirements as executable tests."

The course involves multiple iterations of several case studies, in which the teams go through repeating cycles of agile modeling, "specification by examples" table-tests that support acceptance TDD, and then development with unit TDD. On each cycle, the coach gradually introduces more principles and techniques to build software with agility.

We apply a variety of education techniques established over 20 years of coaching and mentoring to maximize the learning, value, and fun, including buzz groups, multi-modal learning, and lots of hands-on practice.

You will leave this workshop with much deeper core skills in agile software development, supporting business agility and creative, collaborative product creation.

Methods of Education

Discussion, presentation, Q&A, workshop exercises


Developers, architects and other technical leaders


Intermediate: This course introduces concepts and techniques that the attendee will apply during the workshop.


Familiarity with an object-oriented programming language


Upon completion of this course, students should be able to:

  • think and design in in low coupled components or objects
  • design with core principles and patterns that enable software with agility
  • do agile modeling
  • do acceptance test-driven development
  • do unit test-driven development
  • apply basic refactorings and refactoring tools
  • write clean code
  • transform agile models into code and tests
  • take a problem through requirements analysis, design, automated tests, and well-crafted software in the context of an iterative and agile process


  • Process and Design Agility — Agile development frameworks aim to increase flexibility or agility in the development organization, and thereby enable business agility. They emphasize increasing transparency, inspection, and adaption, and flexible workers. All this requires processes that encourage flexibility, and software designs and code that encourages agility.
  • Agile and Iterative Software Development — We briefly introduce the family of agile development frameworks, such as Scrum. These frameworks require agile software development practices to enable the agility that they are trying create in the development and business units.
  • 'Agile Modeling — One key enabler of agility is agile modeling, a collaborative technique of modeling together in small groups at giant whiteboard areas. Agile modeling is used throughout this course and you will leave with lots of hands-on experience in this important skill.
  • Requirements with Agility — We explore the techniques and models of agile requirements, including use-case diagrams, user-stories, impact mapping, and more.
  • Specification by Example — This simple and powerful technique for detailed requirements analysis is an important component of the agile toolkit. In this section, we practice, in detail, how to do specification by example.
  • Acceptance Test-Driven Development
  • Lightweight Domain Modeling
  • Agile Modeling: We Model to Have a Conversation —
  • Sketches for Dynamic and Static Views
  • a SOLID GRASP: Core Principles and Patterns of Great Software —
  • Clean Code
  • Unit Test-Driven Development
  • Refactoring
  • Introduction to High-Frequency Design Patterns: Simple Factory, Adapter, and More —

Related Courses


Maximum Participants


Environment - Room, Tools, Texts

Course Environment - Workshop Style2