There’s the program, and there’s the model. At least that is the conventional view. Do we need to consider the model and the program as separate entities?
Eiffel says no. If the model and the program are kept distinct, the core software engineering problem of harnessing change remains: how to make sure that the model and the program remain compatible? That goal is impossible to achieve: as soon as a program is released, it will undergo change; and as soon as the model is finalized, the world it describes will undergo change.
Integrating the model and the program
The Eiffel answer is model-driven in the best sense of the term: the language is so clear and simple that the model directly yields the program and the program includes the model.
The language includes high-level facilities, many of them unique to Eiffel, which make it an ideal tool for expressing high-level properties of the model behind the program. There is no need in Eiffel for costly back-and-forth trips between the world of the model and the world of the program. They are the same world.
Powerful language capabilities
Many of the mechanisms that give Eiffel its power as a programming language double up as modeling facilities, applicable to the description of today’s complex systems independently of any computer implementation concerns.
Classes, with the information hiding principle, strictly enforced in Eiffel, let you describe a system modularly: each model component is independent from the details of the others; the resulting models are easy to adapt to changes in the problem domain.
Deferred classes allow you to write components without defining any implementation, focusing on the modeling aspects yet leaving a bridge
Inheritance (single and multiple) enables you to define model components by extending, specializing and combining existing components, applying the best techniques of software engineering to the modeling of arbitrary systems.
Design by Contract ™ empowers you to associate fundamental properties with the fundamental components and operations of the model. No widely available environment other than Eiffel enables you to equip every model element with such clear and precise semantic specifications.
The list goes on. Everything in Eiffel is focused on giving you the power to produce clear and scalable models of systems of all kinds and complexity, computer-related or not.
The straight link to the code
With other “model-driven” approaches, when you produce a model at great effort all that you get is a model: a description of the system. If you want to build the corresponding software, you have to jump into a different world, the world of low-level programming languages. With Eiffel’s seamless development methodology you never have to switch: you simply extend the model with the design- and implementation-oriented elements that are necessary to produce a running program.
The path from model to program is progressive and smooth, allowing you to work at each step at the most appropriate level of abstraction and detail, and to move back and forth effortlessly between the two sides.
In Eiffel there are no separate “modeling” and “coding” tools. The same environment, EiffelStudio, provides clear, high-level representations of the properties of model and program. Tools such as EiffelStudio’s Diagramming Tool automatically produce graphical representations, and conversely you can edit the diagrams directly with the guarantee that the program text will automatically be updated.
The direct connection between model and program is your best insurance against change. Since the model and the program are part of the same product, written in the same language and supported by the same tools, change on either side will be carried out to the other: when the modeled domain undergoes change, as it inevitably will, the program will follow; and when implementation constraints change, the model will follow.
Try the modeling power of Eiffel for yourself
You do not have to settle for tools and notations that artificially separate the model from the program. Download EiffelStudio now to see how your project can benefit from the combined power of the best modeling principles and the best programming tools within a single, integrated environment.