Little Design Up Front

Little design up front is the process of modeling some small subsystem of a product before you start coding. (Compare with BigDesignUpFront, where an entire project or system is modeled before implementation begins). BigDesignUpFront can often be an AntiPattern for numerous reasons; but LittleDesignUpFront (or numerous instances of LittleDesignUpFront on a project) is frequently useful.

But be careful... if a PointyHairedBoss sees LDUF occurring, he may attempt to morph it into part of a BDUF.


I often find it a useful exercise to a) diagram a system on paper (a PaperModel), b) implement it (perhaps making changes to the PaperModel as warranted by the feedback provided by implementation/test activities), and then c) do one of the following:


Of course, many say TheSourceCodeIsTheDesign--in which case LittleDesignUpFront should exactly be equal to PaperModel.


The Benefit of Little Design Up Front

What is the benefit of doing mental and paper implementations first? There is only benefit if the "design" reduces the time and effort to get to the software implementation. What is the rationale used to justify Little Design Up Front?

I find that, in CeePlusPlus at least, a quick CrcCard session saves me a lot of trouble. I'm not quite sure if that would fall under the original author's concept of Little Design.


The main aspects of LittleDesignUpFront (on BigDesignUpFront; someone suggested a better title--LittleDesignAllAlong?) are:

Another way to look at it is the LDUF is strictly a programmer's tool; not a manager's tool (DistinguishProgrammersAndManagersTools). BDUF is frequently the latter; more often than not a BDUF is done so that management has (often false) confidence that adequate due diligence is being paid to design. The problem, of course, is that one of the following occurs:


See: BigReductionUpFront


EditText of this page (last edited October 11, 2004) or FindPage with title or text search