Twenty years ago, based on observations of Smalltalk programmers and their informal design methods I developed a set of principles called "Responsibility-Driven Design". Since then, many have explained their approach by characterizing what drives them. You now can be Test-Driven, Behavior-Driven, Domain Driven, Contract Driven. This talk explores the principles and values behind various practices and asks what a responsible designer should learn by looking across this landscape.
For as long as I've been involved with Object Oriented Programming I've heard the exhortations to "favor composition over inheritance." My own experience has validated that advice, but solid material demonstrating or explaining this advice seems to be lacking. Even if you accept the benefits of a compositional design there's still the looming issue of determining just how you can compose your system and many developers struggle with object structures and relationships...
The vision of object-oriented programming was to capture the end user mental model in the code. Until recently, programming languages weren't able to do that. With DCI, we can now use most professional programming languages to achieve the object vision—which is curiously similar to the goals of Agile software development. We now can capture both domain structure and structures from user experience analysts. Learn how in this seminar—and learn more in Rickard Öberg's associated presentation!
This talk is the second of three in an Øredev series.