|
| Essence Before Accidents |
| Ensure quality before construction |
|
Plato differentiates two properties of existence: essential property and accidental property. Essential property is the property that a thing must have to be that thing. A car must have an engine, wheels, and a transmission in order to be a car. A car might or might not have a V-8 or V-6 engine or an automatic or manual transmission. These are "accidental" properties that do not affect the basic "car-ness" of a car. It is the realm of essence, perceived through the mind, which is permanent and immutable. It is this world that is more real and objective; the world of change is merely an imperfect image of this world. Essential properties are the cause and accidental properties are the effect. Essential properties explain why things are the way they are and are the source of all things. The cause precedes and is independent of the effect; the effect depends on and is derived from the cause.
Frederick Brooks, in his paper "No Silver Bullet - Essence and Accidents of Software Engineering," said, "The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions. This essence is abstract in that such a conceptual construct is the same under many different representations. It is nonetheless highly precise and richly detailed." He continued, "I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems."
The task of enterprise software design is to describe both essential and accidental properties. A design has the highest quality and lowest cost and is fastest when we describe essential property in completion before accidental property. To describe accidental property before essential property is to create shadow without knowing the body first. Agile development and rapid prototyping are techniques to discover the body by lavishly creating and recreating the shadows. How many shadows to test before the true body can be found, or whether the true body can be found at all, is unknown.
In the UCRequirement model, the business model is the essential property and the user model is the accidental property. By first modeling business processes in completion, we are able to derive user processes with efficiency and accuracy and with little intellectual rework. The requirements model as a whole, in turn, becomes the essential property of the enterprise software. |
|
|