Design-Testing-Programming Skills for Agile Developers

Net Objectives Pattern Repository

The purpose of this repository, sponsored by Net Objectives, is to serve as a central clearing house for patterns in software. You are free to use this material for your edification and study, and, optionally, you may contribute your views on patterns and forces in software development by joining our Yahoo Lean Programming Group: http://tech.groups.yahoo.com/group/leanprogramming/
 read more »

Alan Shalloway

Display Order:
-10
Staff Last Name:
Shalloway
Staff First Name:
Alan
Staff Title:
CEO, Senior Consultant, Trainer, Author
Company Role:
Executive
Senior Consultant
Location:
Seattle
Expertise:
Lean, Agile, Scrum Coach, Design Patterns, Object-Oriented
Picture:
Alan Shalloway, CEO & Senior Consultant
Alan Shalloway is the founder and CEO of Net Objectives. With almost 40 years of experience, Alan is an industry thought leader, trainer and coach in the areas of Lean Software Development, The Lean-Agile Connection and using Design Patterns in agile environments. Alan has developed training and coaching methods for Lean-Agile that have helped his clients achieve long-term, sustainable productivity gains using the methods. He is a popular speaker at prestigious conferences worldwide as well as a trainer/coach.  read more »

Encapsulate That!

Presenter Image File Name:
scott_bain.jpg
Presenter Name(s):
Scott Bain

This presentation is about the 'Magic Consulting Card' in design, and how it can be used to find design patterns in problem domains.

Publish Date:
02/01/2008
Length:
35-40 minutes

Define Tests Up-Front

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
Discusses both why TDD works, and why it isn’t really testing up-front.

With the advent of agile methods, Test-Driven Development (TDD) has been gaining momentum. A mantra of agile is that stories are completed, not merely written, every iteration. This means they have to go through testing to be considered “done, done, done.” Many teams have experienced the productivity gains and value of TDD. Many teams have, unfortunately, shied away from it as well. We believe that the value and reason that TDD works is not fully appreciated. This chapter discusses both why TDD works, and why it isn’t really testing up-front.

Publish Date:
12/12/2008

Code Qualities

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
For each quality we will describe it generally, mention any principles, suggest practices, note any indicators, and any testing issues.

For each quality we will describe it generally, mention any principles that it adheres to or promotes, suggest practices that will help you to enhance the quality, note any indicators that might tell you that your code is lacking in the quality (pathologies), and any testing issues that might help you to see how well you are achieving them. First, however, we’ll start with an analogy.

Publish Date:
12/10/2008

Summary Prepare for Change

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
Describes one way of dealing with change: to prepare for it without creating unnecessary complexity.

In this summary we will examine one way of dealing with change: to prepare for it without creating unnecessary complexity. Even if you understand this, you’re quite likely going to find yourself in the position of having to convince someone else, so this argument is one it may be useful for you to have in mind.

Publish Date:
12/10/2008

Summary Separation of Concerns

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
Explores this principle and how we are promoting it by recommending specific practices.

Creating software is more than one activity. The software that we create does more than one thing, and does most of the things it does in more than one way. Software has to be changed for more than one reason, and these changes are of various types. Clarity, consistency, and efficiency can be fundamentally increased by adhering to the notion of the Separation of Concerns. In this summary, we will examine this principle and how we are promoting it by recommending specific practices in this book.

Publish Date:
12/10/2008

Refactor To The Open Closed

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
Reviews the aspects as they are traditionally understood, and then repurposes them in a more agile way.

Solving tricky problems can often involve changing your point of view. In this chapter we’ll examine one particularly tricky problem – how to avoid overdesign without suffering the problems that often accompany an insufficient or naïve design – by rethinking two arguably well known aspects of development: the Open-Closed Principle, and the discipline of Refactoring. We’ll begin by examining these aspects as they are traditionally understood, and then repurpose them in a more agile way.

Publish Date:
12/10/2008

When and How to Use Inheritance

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
What is inheritance good for, and when should it be used?

The mechanism of inheritance is provided in some form by most modern programming languages. However, its improper use can lead to brittle, unnecessarily inflexible architectures that sacrifice encapsulation for little or no gain. This should not, however, lead a developer to conclude that inheritance is bad, or even that it should be used in a minimal, last-resort way. The real question is: what is inheritance good for, and when should it be used?

Publish Date:
12/10/2008

Encapsulate That!

Resource Type:
Article
Access Level:
Guest Access
Subcategory:
Design Issues
Author(s):
Alan Shalloway, Scott Bain, Amir Kolsky, and Rob Myers
Short Description:
Shows encapsulation in its most obvious and straightforward forms, expands these concepts into the patterns, and all the qualities of code that make it fundamentally easier to maintain, debug, enhance, and scale.

Encapsulation is a word that’s been with us in software development for a long time; but if you asked people what it means, many would say something like “hiding data”. In fact, there are quite a few books and websites that would use that as the definition of the word. However, we have found that an examination of the true meaning of encapsulation can be enormously beneficial and can make many other aspects of Object-Oriented design (design patterns, for instance) easier to understand and to use.
 read more »

Publish Date:
12/10/2008