Thursday, June 5, 2008

Essence and accidents of enterprise software

Fred Brooks, drew on an ancient philosophical tradition of distinguishing between “essential” and “accidental” properties to describe software. Essential properties are those properties 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 have a V8 or V6, an automatic or manual transmission. These are “accidental” properties that do not affect the basic car-ness of a car.

Brooks argued that the essence of software development consists of working out the specification and verification of a highly precise and richly detailed set of interlocking business concepts to be componentized into parts of a software system. What makes software development difficult is its essential complexity, to quantify and componentize business concepts into interrelated parts. These parts will be in the place of particulars in natural world, the business context of the software under development, constrained by “natural laws,” or business logic and business rules. The task involves not only in quantifying and componentizing business concepts but also in determining the lower principle in form of business logic and business rules that constrain these business components.

Representing these business components using a computer languages is an accidental property. Major gains have been being realized: the invention of high level languages, movement to interactive computing from batch processing, and development of powerful integrated environments, and newer technologies including Service Oriented Architecture and Business Process Management that make representing business components ever easier. But in terms of describing software’s essential property – systematic and disciplined practice to quantify and componentize business concepts and identify constraints to these business components, we fairly begin. It is not that there is a lack of research in understanding and representing business concepts in quantitative and systematic way, but it is more about awareness, the worldview of what software is.

No comments: