IntellAgile www.craiglarman.com www.craiglarman.com mobile +1 214 914 7593 [email protected]

Keynotes and Executive or Short Seminars by Craig Larman

Quotes from Industry Thought Leaders “(Craig is) a great teacher, a brilliant methodologist, and an ‘OO guru’.” —Dr. Philippe Kruchten, architect of the Rational ; Rational Fellow. “Too few people have a knack for explaining things. Fewer still have a handle on analysis and design. Craig Larman has both.” —Dr. John Vlissides, author, Design Patterns and Pattern Hatching. “Craig is articulate, moves people, is caring, is visionary and very perceptive about what works and what does not.” —Peter Coad, former CEO, TogetherSoft; creator of the (early) Coad-Yourdon OOA/D method; author of many influential books on OO and modeling. “People often ask me which is the best book to introduce them to the world of OO design. Ever since I came across it Applying UML and Patterns has been my unreserved choice.” —Martin Fowler, Chief Scientist, ThoughtWorks, and author, UML Distilled.

Introduction

Reflecting nearly 20 years experience developing and coaching OO and iterative methods, Craig Larman is the author of the world’s best-selling OOA/D text, Applying UML and Patterns—An Introduction to OOA/D and the Unified Process, the most popular book on agile methods, Agile and Iterative Development: A Manager’s Guide, and the Java 2 Performance and Idiom Guide. In addition to serving as chief scientist (and previously, director of process) for Valtech, an international consulting group of over 1,400 in eight countries, Craig is known throughout the international software community as an expert and coach in OOA/D and design patterns, agile , the UML, agile modeling, an agile approach to the Unified Process (UP), blending the UP with XP and Scrum practices, and iterative methods.

Craig is also a certified Scrum Master (Scrum is the most popular agile PM method) and trainer of new Scrum Masters.

He travels worldwide, from Italy to India, to fulfill his passion to serve project managers and OO developers through coaching, speaking, and education, helping software organizations succeed with high-impact best practices such as iterative and agile methods, agile modeling with the UML, advanced object design with patterns, and much more.

Keynotes and Executive or Short Seminars There are a range of keynotes, executive seminars, and other short seminars it is my pleasure to present, either in conferences or within an organization. Some of the short versions can be expanded into related full-day courses, such as “Agile and Iterative Development: A Manager’s Guide.” See my course brochure for related longer versions.

In general, “1/2 day” seminars means 3 contact hours, and “full day” means 6 contact hours. IntellAgile

IntellAgile www.craiglarman.com Agile and Iterative Development: A Manager’s Guide

Length: ½ day or full day

Description

This practical, information-packed seminar summarizes the key research, ideas, and practices of iterative development, aimed at executive and project leadership.

Applying modern process ideas has high impact on the success and experience of software development. What are the key practices in iterative and agile methods, and their motivation? What does research indicate are the key factors in success and failure for software projects, and how does this relate to modern methods, such as the Unified Process (UP), Scrum, Evo, and (XP)? How to adopt these within your organization?

This is a definitive guide for managers and students to agile and iterative development methods: what they are, how they work, how to implement them - and why you should.

Using statistically significant research and case studies, noted methods expert Craig Larman presents the most convincing case ever made for iterative development. Larman offers a concise, information-packed summary of the key ideas that drive all agile and iterative processes, with the details of four noteworthy iterative methods: Scrum, XP, RUP, and Evo. Topics include:

– Agile project management practices – Compelling evidence that iterative methods reduce project risk – Frequently asked questions – Agile and iterative values and practices – Dozens of useful iterative and agile practice tips – New management skills for agile/iterative project leaders – Key practices of Scrum, XP, and the UP

Whether you’re an IT executive, project manager, student of software engineering, or developer, Craig will help you understand the promise of agile/iterative development, sell it throughout your organization - and transform the promise into reality.

IntellAgile

IntellAgile www.craiglarman.com Agile and Iterative Estimation and Tracking: A Manager’s Toolkit

Length: ½ day

Description

This practical seminar summarizes agile project management and developer practices to estimate and track iterative or agile-method projects. Topics include:

– planning and estimating an iteration: the iteration plan – planning and estimating a project: the release plan – burn-down charts and tracking – Product Backlog and Iteration Backlog management – tracking an iteration – project velocity – agile earned-value tracking – agile tools for tracking – points – story points – use-case or feature-driven bottom-up architecture-oriented estimating – iterative wide-band delphi estimation – improving accuracy – estimating velocity – ideal engineering time

IntellAgile

IntellAgile www.craiglarman.com The History and Evidence for Iterative Development, and the Historical Accident of the Waterfall

Length: 90 minutes

Description

Although iterative, incremental, and evolutionary “agile” development in software is in the ascendance as the “modern” or agile approach to replace ad hoc or waterfall (sequential lifecycle) development, its practiced and published roots go back surprisingly far. At least as far back as the early 1960s, as a contemporary alternative to the nascent .

In this presentation, I share the fascinating history of iterative development for software projects. It has in fact been successfully applied since the 1960s on some of the largest and most risky projects, including the primary flight control software for the USA Space Shuttle, among countless other projects, some of which will be highlighted. I will also demonstrate that the software engineering thoughtleaders of the past four decades have consistently promoted iterative development in their work and writings, and vigorously advocated avoiding the waterfall model.

I’ll also share the research and standards-body evidence promoting iterative development, and demoting waterfall development. And finally, in light of this, I’ll explore the interesting reasons and historical accidents of why the sequential document-driven waterfall model was promoted in academic texts and among various project management groups, in contradiction to the research, history, and expert advice.

IntellAgile

IntellAgile www.craiglarman.com Scrum: The Most Popular Agile Project Management Method?

Length: ½ day

Description

Scrum is arguably the oldest and most widely applied agile and iterative method, with an emphasis on iterative and adaptive PM practices. It has been applied in thousands of organizations and domains since the early 1990s, on projects large and small, from Yahoo to Medtronics to Primavera, with great results when leadership commits to the deep required changes moving away from command-control and wishful- thinking-predictive management, and with poor results when leadership can’t or won’t make those changes. Scrum can be easily integrated with practices from other iterative methods, such as practices from the Unified Process and Extreme Programming, include test-driven development, agile modeling, use cases, user stories, and so forth. On the surface Scrum appears to be simple, but its emphasis on continuing inspect-adapt improvement cycles and self-organizing systems has subtle implications.

Topics include:

– iterative and evolutionary development – agile and adaptive methods – Scrum principles and practices – Scrum Master – Product Owner – Scrum Team – creating and managing the Product Backlog – Sprint Backlog – tracking progress in Scrum – the iterative Release Planning meeting – the Sprint Planning meeting – the Sprint Retrospective – the Sprint Demo – the daily Scrum meeting – adaptive versus predictive planning – engineering practices to support Scrum: continuous integration, test-driven development, agile inspection – Q&A

IntellAgile

IntellAgile www.craiglarman.com Craig’s Process Tips

Length: 2 hours

Description

A summary of the many concrete process tips—from timeboxed iterations to walls of wonder—that I coach when working with a team for an iteration. It may be considered teaching a “development case” in Unified Process terms. Topics include:

– timeboxed iterations – planning an iteration – Scrum practices; the Scrum meeting and questions; extra questions and secondary meetings – tracking iteration tasks and progress – continuous integration – continuous re-configuration for J2EE applications – tools and physical environment for agile visual modeling – walls of wonder – creativity and group collaboration or facilitation tips: from brain writing to affinity clustering – test first development; unit testing samples; acceptance/system testing samples – high-value UP workproducts to create on most projects – writing a useful document – the per-iteration demo – “essential” and agile UI design modeling – simple, collaborative web-based project tools – useful UML: drawing and diagramming tips – Q&A

IntellAgile

IntellAgile www.craiglarman.com Aspect-Oriented and Meta-Programming with AspectJ

Length: 1.5 hours or ½ day

Description Aspect-oriented programming (AOP) is a technique for improving separation of concerns in and implementation, and an intriguing new approach to thinking about design and programming, falling broadly within the emerging trend of Generative Programming techniques.

AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. AspectJ is a seamless aspect-oriented extension to Java™. It can be used to cleanly modularize the crosscutting structure of concerns such as exception handling, multi-object protocols, synchronization, performance optimizations, and resource sharing. When implemented in a non-aspect-oriented fashion, the code for these concerns typically becomes spread out across entire programs. AspectJ controls such code-tangling and makes the underlying concerns more apparent, making programs easier to develop and maintain.

This tutorial will introduce aspect-oriented programming and show how to use AspectJ to implement crosscutting concerns in a concise, modular way. It includes numerous examples to develop participants’ understanding of AOP through AspectJ, including persistence, mock objects, and JavaBeans bound properties implemented with AspectJ. It will also demonstrate AspectJ’s integration with IDEs such as Eclipse.

Participants may optionally wish bring a laptop installed with AspectJ and integration with one of its supported IDEs, as there may be a few short programming experiments to add some fun.

IntellAgile

IntellAgile www.craiglarman.com Applying Agile Modeling, with UML and Patterns

Length: ½ day

Description

What really matters is not a set of UML diagrams, but a running system that meets the needs and constraints of various stakeholders. Thus, what is the value of using the UML or of modeling? In this presentation, we will examine the following related issues:

How can modeling and the UML add value to a project? Best—and worst—practices for applying the UML. The visual environment. How to effectively use a UML CASE tool. Great patterns in analysis and design. Applying agile modeling in the context of iterative development and the Unified Process

You will take away knowledge of the high-impact practices and priorities in effectively model and apply the UML.

Agile Modeling (AM) is a practical method for effective modeling and documentation; it express values that good developers have been applying for many years, while providing a set of more concrete practices as well. Agile models are “just barely good,” they don't have to be perfect, and are created with the simplest tool that can possibly work. Agile modeling is applicable to requirements analysis, UI design, architectural analysis, and object design. Some agile models are just text, but many will be a simple use of a standard diagramming notation such as the UML. This workshop helps you apply agile modeling by highlighting the important practices, and applying it with hands-on exercises.

Additional topics include:

– Key ideas in iterative and agile modeling – AM values – AM core principles – AM core practices – AM supplementary principles and practices – AM and documentation – What AM isn’t – AM examples – Tools and physical environment for agile modeling – CASE tools and AM – walls of wonder – Applying the UML in AM – Patterns in AM – AM in Extreme Programming – AM in the Unified Process – “essential” and agile UI design modeling – Drawing and diagramming tips – Q&A

IntellAgile

IntellAgile www.craiglarman.com Agile and Iterative Requirements Analysis

Length: 2 hours

Description

Every problem looks like a thumb if you only have a hammer. XP story cards or use cases can arguably cover the 80% case, but there are more skillful and light techniques that can be brought to bear on requirements analysis. In this session you'll learn a suite of elicitation, recording, and tracking techniques for requirements, applied in the context of a timeboxed iterative lifecycle. You will learn high-touch and low-tech, agile methods of questioning and discovery, including brain writing, dot voting, assembly-line writing, meta-questioning, and affinity clustering. We will examine, for both functional and non-functional requirements, the uses and variations of XP story cards, and standard Unified Process documents including use cases (applying Cockburn's popular format and guidelines), vision, glossary, and supplementary specification. And we'll examine the appropriate application of more complex specification techniques, including operation contracts, business rules, and UML diagrams such as statecharts. And, as the work occurs within an iterative process, we'll examine “the simplest tools that could possibly work” for recording and communicating growing and changing specifications, including ways to track partial use case completion across iterations. You will leave with a larger suite of tools for agile requirements analysis.

Topics include:

– Proof: Iterative and Evolutionary Requirements – The Historical Mistake that Led to Promoting Waterfall and Big Up-Front Requirements – Setting and Roles – Agile Requirements – Requirements Across Iterations – Adaptive Planning – Rapid Elicitation Techniques: From Brain Writing to Rotation Espionage – Organization Requirements for Agile Development – Rapid Value and Risk Assignment – Agile Methods and Modeling – Use Cases in Iterative Development – Tracking Requirements Across Iterations

IntellAgile

IntellAgile www.craiglarman.com Defending the Middleweight Title: UP and XP

Length: 90 minutes

Description

The XP has much to commend it, and its creators have been careful to define the boundaries of its applicability. But not every project can be, or should be, run the XP way. Contrary to some misperception, the Unified Process (particularly the RUP refinement) is itself an agile and adaptive process, and can— indeed, should—be combined with the majority of XP practices. Yet, the UP has some different—and I claim, more skillful—values and practices, and extends beyond the scope of project size and disciplines covered by XP. You’ll learn why the UP is a better fit for most projects than pure XP, its added value, aspects of the XP that are inconsistent with the UP, and how to combine the UP with some XP practices to define an agile UP.

IntellAgile

IntellAgile www.craiglarman.com Two Agile UP-Related Seminars

The following two seminars can be done split as shown in 2 sessions, or combined into a full day session.

The Agile Unified Process Distilled Length: ½ day The Unified Process (UP) has emerged as a popular modern process for software development—and with good reason, as it includes skillful best practices such as iterative and adaptive incremental development, and early attention to high-risk and high-value issues. Furthermore, the UP encourages flexible adoption within its process framework, providing a structure that can scale up to projects involving hundreds of developers, or down to projects of just a few.

Contrary to some misperception, the UP encourages a light approach. Knowing and adopting the critical elements of the UP, avoiding some common misunderstandings, and reducing attention to its many optional elements, are keys to its successful—and agile—application. In this tutorial you will learn the essential and most useful UP concepts and practices, the keys to its successful introduction in an organization, and how to apply the UP in an adaptive and agile spirit.

Topics include: – The key UP ideas to know and apply. – The motivation and business case for the UP. – What UP artifacts are really worth creating? – UP anti-patterns: common worst-practices in adoption and use. – How to adopt the UP within an organization.

The Agile Unified Process and XP—What About…? Length: ½ day Continuing from the morning tutorial’s introduction to key UP ideas and practices, the afternoon session examines more high-impact topics for success with the UP.

For example, many Extreme Programming (XP) practices and values are either part of the UP, or specializations of more general UP guidelines. What are these, and which may be adopted consistent with and within a UP project? Nevertheless, this tutorial motivates the need for more than pure XP on many projects, and promotes the skillful capacity of the UP to provide a variety of optional practices and artifacts on larger or higher-ceremony projects. You will learn why a combination of primarily the UP with some XP practices is an excellent process approach.

You will learn about the following: – XP practices within the UP. – Challenges of pure XP. – How to plan an iterative UP project. – Tips for good UP artifacts and models. – UP models and the UML. – How to define a UP development case. – How to do architectural analysis and describe architectures in the UP. – How to fail with the UP: You know you didn’t understand it when…

IntellAgile

IntellAgile www.craiglarman.com Introduction to Mastering Design Patterns

Length: full day

Description

During both initial software development and subsequent modification, a major cost that is often not appreciated is the quality of the design. These include the scalability, ease of comprehension, flexibility, and robustness in the face of change. Various studies indicate that after initial release, at least 50% of effort and cost is spent in modification. To save money, it is rational to take a long-term view of product development and invest in skillful designs that reduce these costs. This tutorial will provide designers with the skills to create quality object-oriented designs that support reduced modification costs and increased comprehensibility.

Design patterns are about the reuse of excellent, established design ideas, rather than code— best-practice formulas from experienced object-oriented developers. There is an established set of popular and useful patterns, such as the "gang-of-four" (GoF) design patterns described in the hugely popular and influential book Design Patterns, the annual PLOP workshop patterns, and other sources, such as the Pattern-Oriented Software Architecture series. In this information-intensive tutorial, participants will learn how to apply the majority of high-frequency GoF design patterns.

You will learn to apply patterns for: – Varying algorithms, including Strategy – Varying instance behavior, including Decorator – Access control, including Façade and Singleton – Organization of work, including Command – Structural decomposition, including Composite – Varying event response, including Observer – Varying interfaces, including Adapter – Varying instance creation, including Abstract Factory – Varying implementations, including Bridge – And more, including coverage of idioms for package design

This seminar is intended for object-oriented developers and architects with at least six months of deep object-oriented programming experience.

IntellAgile

IntellAgile www.craiglarman.com 3,000 Students Later: How to Teach OOA/D and Design Patterns

Length: ½ day

Description

Taking a course or reading a book in UML notation does not constitute learning how to think in objects, although this is the unfortunate norm among many consumers and suppliers of object technology education. Over the last 15 years I have had the good fortune to personally mentor or teach between 2,000 and 3,000 students (in industry and colleges) of object-oriented analysis and design (OOA/D), and have reflected on, and experimented with, curriculums—both poor and good—to help people master this subtle art.

Many presentations (in print or course) on learning OOA/D emphasize activities such as use case or static class modeling. In these, when it comes time to discuss the specific design of object responsibilities and collaborations, there is typically some hand-waving or a minimalist discussion of the subject, or the detailed object interactions are presented as a “fait accompli”, as though it were a minor problem, once the classes have been found and named. Ironically, nothing could be further from the truth for the object novice. It is profoundly difficult to learn, and is the true “make-or-break” skill in developing object systems. A good use case model is of little value if the resulting design of software objects is garbage.

In this tutorial you will learn concepts and techniques to improve object design education, to help students master these critical skills. We will explore:

– Anthony’s Education Patterns – Larman’s General Education Patterns – Larman’s OT-Specific Education Patterns – how to use and teach the GRASP patterns for responsibility assignment – what is the connection between analysis, design, and code artifacts, and how to teach this – what are the most important GoF design patterns to teach, and how – other fundamental principles to stress in introductory object design curriculum – how not to teach OOA&D (and thus, what would constitute a poor course) – how not to teach object-oriented programming – the kinds of exercises and problems—both individual and collective—that help comprehension and retention

IntellAgile

IntellAgile www.craiglarman.com Fast Java Fast

Length: 1.5 hours or ½ day

Description

This information-rich fast-paced tutorial draws upon and extends performance tips from Larman and Guthrie’s popular book Java 2 Performance and Idiom Guide and their recent performance-related experiences with server-side Java technology applications. It is also updated to account for performance strategies influenced by recent library and JVM optimizations.

The tutorial presents a collection of specific tips and general strategies that can improve the performance of Java technology applications. The objective is to help the beginner to intermediate Java developer over the chasm of performance pitfalls with which the Java platform challenges us. Thus, this presentation includes many tips to optimize for speed and space in both local and distributed Java systems, exploring, for example:

– performance hotspots in the Java libraries – reducing overactive garbage collection – why and how to avoid fine-grained polymorphic designs – why more threads can reduce performance – how to build faster, more scalable servers – Swing performance tips – and many other practical performance guidelines . . .

IntellAgile

IntellAgile www.craiglarman.com J2EE and EJB Design Patterns

Length: 1.5 hours or ½ day

Description Even in the relatively new domains of J2EE and Enterprise JavaBeans (EJB), some repeating best-practice patterns have emerged to resolve the forces and complications of distributed development, many now summarized in the popular text Core J2EE Patterns. In this tutorial, you will the most useful and frequently applicable J2EE design patterns across the presentation, “business logic,” and integration tiers, including those for:

– Remote communication – The appropriate design of Entity Beans – The design and responsibilities of Session Beans – Front-end controllers – Data access – Proxy access – Replicated objects

In addition, we will briefly explore the influence of EJB 2.0 and some frameworks (such as Apache Struts) on the use of these patterns.

IntellAgile

IntellAgile www.craiglarman.com Great Analysis Patterns of the Masters

Length: 1.5 hours

Description Analysis patterns are useful, repeating model fragments within conceptual/domain/information models, such as best-practice advice on how to model information about parties and organizations, quantities and measurements, accounting information, historical data, and so forth. Interestingly, in addition to Martin Fowler’s seminal book by the same name (Analysis Patterns), “analysis patterns” have been presented in other literature, sometimes by authors unfamiliar with Fowler’s work. These include David Hay’s patterns, Peter Coad’s and Eric Lefebvre’s domain neutral components, and Silverston’s data model resources. In this tutorial, you will learn some of the most frequently applicable high-value analysis patterns, that—if applied—will reduce the time required to create robust object models for information systems. Further, the tutorial will illustrate some underlying connections between the analysis and data model patterns work of these experts.

IntellAgile

IntellAgile www.craiglarman.com Writing Effective Use Cases: Requirements Analysis in the UP

Length: ½ day

Description

A use case is a way of describing the required behavior of a system, centered around what the system offers its users. And they play a central role in the requirements analysis discipline of the Unified Process. Use cases are easy to read, and simple in concept, but surprisingly tricky to write.

Based on Alistair Cockburn’s widely popular approach to use case writing, in this tutorial you will learn how to write, review, organize, and use them. It will be part lecture, and part hands-on exercises. Attendees will brainstorm a list of use cases for a system, write a main scenario, and uncover failure scenarios. The exercises are designed to allow the attendees to practice the writing skills, and discover where use cases get difficult. At the end of the tutorial, the attendee will have the basic vocabulary of use cases, will have seen examples of good and bad ones, and will have experienced the variations in writing that will show up in real use cases.

A few more “advanced” use case topics will be covered, such as the suitable use of the Extends and Includes relationships, the appropriate use of use-case diagrams, and where to place UI design information.

Finally, you will learn about the various requirements artifacts in the Unified Process (UP) and the relationship between use cases and other requirements analysis work products.

IntellAgile