Archive for March, 2007
Refactoring
Monday, March 26th, 2007Some people will tell you that “Refactoring” is just another word for “rework”.
Almost, but not quite.
Properly understood, “refactoring” implies an important distinction: it doesn’t change the end result. Refactoring is changing software code in order to improve its internal structure, without changing its external behavior. [Fowler] So, when you decide to change how the system […]
Active Stakeholder Participation
Friday, March 23rd, 2007As mentioned in the previous post, one of the key success factors for doing iterative and incremental development successfully is Active Stakeholder Participation.
…Active Stakeholder Participation is an expansion of eXtreme Programming (XP)’s On-Site Customer that describes the need to have on-site access to people, typically users or their representatives, who have the authority and ability […]
Iterative and Incremental Development
Tuesday, March 20th, 2007There are many aspects of software development that are often given “lip service”, but (relatively) seldom implemented successfully. Near the top of this list, you’ll find the next three topics we are going to cover: Iterative and Incremental Development, Refactoring, and Test Driven Development.
We’ll start with Iterative Development:
The basic idea behind iterative enhancement is to
develop […]
The Waterfall Must Die
Tuesday, March 20th, 2007Up to now, we’ve been talking about design goals, giving special attention to Domain Modeling and Domain Driven Design. We talked about doing our design with a focus on creating a “ubiquitous language”, such that the software people and the business people call the same things by the same names, and understand them to work […]
Design Patterns: Now What?
Monday, March 19th, 2007In our last post, we introduced Design Patterns. Today, we’re going to talk about how this changes things, and how it doesn’t.
When I discovered Design Patterns, I was initially skeptical, but by the time I finished PoEAA, I had design pattern stars in my eyes. Some of the patterns were difficult to understand (some I […]
Design Patterns
Friday, March 16th, 2007As I mentioned before, there was a point in time where I became aware that there was a significant body of work out there on object-oriented design and processes. Of course, I knew the major OO principles already (Inheritance, Modularity, Encapsulation, Polymorphism), but as far as deep thinking philosophical views on design in an object […]
How should we then live?
Wednesday, March 14th, 2007If we are convinced of the value of domain driven design, what do we do next?
1. Don’t try to model everything
Let me ’splain.
[pause]
No, there is too much. Let me sum up. - Inigo Montoya
You could create a complete set of UML structural diagrams for your entire application (package diagrams, class diagrams) and some detailed interaction […]
What is a domain model?
Wednesday, March 14th, 2007Maybe I’ve convinced you that a domain model is useful. Maybe I haven’t. Either way, let’s talk more about what a domain model is.
It is not a UML diagram. It is not a bunch of Objects in an object oriented programming language. (go ahead, cry “heresy!” if it will make you feel better)
A domain model […]
So, what are our design goals?
Monday, March 12th, 2007So, assuming we’ve established the need for an “on purpose” design approach, and the need for a process to support our design goals, the question remains: what are those design goals?
(I’m going to skip over all the thought progressions about creating “quality software within time and budget constraints”, and just get on with the point, […]
Process and Design
Friday, March 9th, 2007Why begin with design?
As we begin our discussion about software architecture, there are a lot of places we could choose to start. We could start by talking about phases of the software development life cycle, UML, Use Case diagrams, or the Microsoft Solutions Framework. But I think that there is actually a “right place” […]
Chris Hefley (the indomitableHef) is a software developer/architect from Nashville, TN.