Page 216 -
P. 216
ChaptEr 11
OO-METHOD
A Conceptual Schema-Centric Development Approach
osCar pastor, Juan Carlos molina, and Emilio iborra
Abstract: During the past two decades, extensive research and industrial work (object-oriented
methods, formal specification languages, component-based software production, etc.) have been
oriented toward the goal of generating code from a high-level systems specification, which is
normally represented as a conceptual schema. However, the numerous failures in the achieve-
ment of this goal have resulted in overall skepticism when any new approach offering a “press the
button, get all the code” strategy is proposed. In spite of this reticence, the current hype around
model-driven architecture has given new momentum to these strategies. The new methods propose
appropriate model transformations that must cover all the steps of a sound software production
process from an information systems engineering point of view. These must include organizational
modeling, requirements engineering, conceptual modeling, and model-based code-generation
techniques. The conceptual primitives must be precisely and formally defined, and the conversion
between the different models involved and their corresponding software counterparts must be done
in a well-defined way in order to make the full automation of the process possible through the use
of “model compilers.” The objectives of this chapter are: to discuss which conceptual primitives
should be present in a system specification; to analyze how to use UML to represent them; and to
reduce the current complexity of the proposal by identifying only those diagrams and modeling
constructs that are really necessary to create a conceptual schema. This chapter also explains in
detail how to accomplish the transformation process between the problem space and the solution
space. Tool support is also included to make the discussion more practical.
Keywords: Model-Driven Development, Conceptual Modeling, Model-Based Code Generation
INTRODUCTION
The history of software development can be viewed as a succession of increments in the level
of abstraction of a path that moves the activity of “programming” toward representations in the
problem space and away from the sphere of the solution space. Computers were first “programmed”
by wiring, and then programmed through the use of machine code, then through the assembler
language, then by the creation of the first compilers for procedural languages, then through object-
oriented programming and component-based development techniques. At each evolutionary step,
the subsequent increase in the level of abstraction allowed developers to deal with problems that
201