2.2.6 SYNTHESIS MODELS
Object technology is used here to define the various disciplines of the object-oriented paradigm. Object-oriented programming (OOP) techniques have spawned object-oriented analysis (OOA) and object-oriented design (OOD) techniques. There seems to be as many definitions of the object-oriented paradigm as there are object-oriented programmers. Purists, even those sullied by the hacking aspects of programming, are quick to recant the "rules" defining object-orientation. In general, object technology can be recognized as including the elements of Table 4.
Abstractions providing encapsulation of attributes and services
Classification
Inheritance of attributes and services
Messaging used by objects to communicate.
How object technology is defined must not overshadow what object orientation provides. Essentially, object technology allows encapsulation of data and processing constructs for all aspects of the software life cycle. Object technology is useful in eliminating unforeseen "side effects" of program changes during development and maintenance.
Side effects are a major issue in software engineering. While both the result of code changes and of actual application execution may not be predictable, the scope of their effects must be. An object-oriented system creates "self-managing" entities whose capabilities are pre-specified. Services are provided by the objects themselves - as opposed to being imposed upon the objects. Essentially, a request must be made to an object requesting that some predefined routine be carried out. As such, during development or maintenance, changes to one independent object will not affect the operation of another.
Engineering design environments reflect programming environments. As some programming languages such as Pascal, C, or LISP are largely imperative, reflecting the sequential nature of the underlying computation mechanism, certain engineering modeling languages can likewise be thought of as imperative, with the user working through idea conception to all the details of its implementation.
In recent years, software abstractions have been more and more distanced from their underlying computational mechanisms. Programming languages have evolved to be declarative in nature. Like SQL, Prolog, and the spreadsheet paradigm, the concept, or high-level description is provided by the user while implementation and manifestation of results is completely handled by the computer. The correlation of the declarative approach to engineering design is found in the literature of design synthesis, where function is specified by the user and the implementation of form is generated automatically.
A design-with-objects approach makes use of the declarative abstractions. By way of an example, a CAE system may be provided a palette of available tools from which the designer may choose. The designer may "cut and paste" the icon of a particular tool into the process design, perhaps a particular molding machine that is available. All available information about that machine is available through the machines's representational object. The system could have on-line access to such process requirements as machine tonnage specification, shot size, machine dimensions and then perform the dimensioning of a corresponding mold in much the same manner that a word processor handles routine formatting.