Products and Processes in Software Engineering
Here is a diagram illustrating the history of UML.
When we look at this picture, one remark comes immediately to mind.
Why this change, between 1995 and 1996 from “Unified Method” to “Unified Language“? The reason is that, at this period people realized that there was no possibility to propose a unique software development method. The goal of the OOAD at OMG was not only too ambitious, but is was an impossible mission.
There is an infinity of possible software processes answering the question of who is doing what, when, how and why in the software development and maintenance world.
The decision of OMG to reduce the ambition of this initiative was most clever. The goal was then reduced only to define a language for describing a subset of software artefacts. The name was chosen to be Unified Modeling Language. And the discussions on process description were ignored and delayed for further studies. Only when UML got stabilized in its first versions, people at OMG came back to the problem of process description and this effort finally produced the SPEM contribution (Software Process Engineering Metamodel).
This move was not a surprize and corresponded to the classical separation between process and product in most advanced engineering disciplines (think of chemistry for example).
But the language to describe software artefacts (UML) and the language to define software processes (SPEM) could not be completely independent. The idea was thus to consider them as two languages conforming to a common language as a matter of fact a metalnguage. And this metalanguage already existed at OMG: the MOF (Meta Object Facility).
This is not sufficient to make explicit the relations between SPEM and UML, but at least having both languages expressed in terms of a common metalanguage should facilitate in the future the precise expression of their relations.