Fighting Against Over-Engineering

I've been trying to help some folks who have a "search" algorithm that's slow.

They know it's slow -- that's pretty obvious.

They're -- unfortunately -- sure that asyncio will help. That's not an obvious conclusion. It involves no useful research. Indeed, that's a kind of magical thinking. Which leads me to consider …

more ...



Problems, problems, problems

Centuries ago -- it seems -- Jim Coplien facilitated a session for us at ChiliPLoP . Eventually, I figured out that patterns are a solution to a problem in a context which resolves various alternative forces, and has some understood consequences. Context - Problem - Forces - Solution - Consequences.

In this month's CACM, the article on …

more ...



How to Avoid Problem-Solving

One of the best ways to avoid problem solving is to treat the problem as fluff. Often, our users begin the conversation with this assumption, and we play along. Other times, we make this choice because we're just too lazy (or negligent) to make an effort.

Here's how it plays …

more ...

Object Modeling (Revised)

Objectives

To write software, we need to understand what we're doing. We need to have a well-defined universe of discourse. This understanding must be documented. The documentation proceeds through increasingly refined levels of documentation.

  1. English prose.
  2. Diagrams and other semi-formal notations.
  3. Formal notations (BNF, IDL, Java, etc.)

Sometimes, the first …

more ...

Deployment

The deployment document describes an installation of the system, with specific host names and addresses. This document is the last of the formal deliverables, and forms the basis for an operator's or user's guide.

The deployment follows successful implementation of the design, based on the architecture and requirements.

Content

UML …

more ...

Implementation

An implementation document is prepared along with the software to present the packaging and component structure, including visible interfaces of components. This shows the structure of the final deliverables, and describes the files, databases and other persitent features of the system. This document will also identify all third-party components used …

more ...