MDA is an acronym for Model Driven Architecture. Conceptually, it is not limited to, but currently largely consists of, automatic generation of computer code. KitAlpha is the core of the Eclipse-based system Capella, maintained by PolarSys, which is a conceptual framework aligned with EATSv5.
Within MDA, the automatic generation of computer code is a means to an end. But it is a necessary means, a step on the path to climbing the staircase, to close the gap between reality and intent. Model Driven Architecture intent is closely aligned, as foundational underpinning, with the evolutionary development of Architecture Machines, as envisioned by Nicholas Negroponte when, in the Epilogue to The Architecture Machine (1970), he describes Robot Architects.
There are a series of stages of work [not measured by science through Physics1which is a problem with how we do engineering] that are required to achieve intent. The first of which is to create an intention. That involves tasks elucidated by people such as Arthur Koestler. Whether intent is capable of accomplishment by automation is a subject for another discussion; for now, we assume not. Given a concept of intention as a vision of a “to be” state which does not exist2Is not part of the current “as is” environment., but which hypothetically can, and maybe should, exist; there comes a question of design. This is where the concept of an Architecture Machine begins to come into focus. However, while theories of procedural, algorithmic, driven design exist (one example being John N. Warfield’s Science of Generic Design3Others include Alexander’s pattern-based, or Rittel’s IBIS systems.), this is still territory for human cognitive activity; not a process where computers, as Robot Architects, are adequately functional. However, it is an area where computers (more correctly computational processes, which computers can be exceptional human augmentation devices) can be significantly beneficial in current capability, as assistants to humans.
Different horses for different courses is a phrase which gets lost in the consideration of how humans grapple with the capability of their own creations. Computers are tools, created by humans, to perform computations4“Computers” were originally people hired to perform the detailed math required to accomplish the calculations required to understand projectile arcs, and other related mathematics for a variety of purposes; such as how far an artillery shell could travel, given an initial thrust and angle of departure.. Computations consist of the mathematics of addition, subtraction, multiplication and division; but they also consist of logic, making comparisons of various forms, and following steps of action based on the results of logical analysis. And, to become meaningful, data manipulation. Although a machine has no real concept of what any of its data actually means as information; humans have devised [too many?] consistent [and inconsistent] protocols for the interpretation of bits of data as symbolic representations of information. Within a set of automated processes where consistency of data representation exists, computers can be said to be information processing tools, and not just data processing devices. However, if any component within an automated system is not aligned with respect to the the rules for consistency, for example if data which was supposed to be encoded for machine type A5For example, an EBCDIC mainframe computer., becomes mixed in raw, untranslated form with data originated by machine type B6For example, an ASCII personal computer. of another architecture, and the automated system in “unaware” of the mixture7Due to the lack of an appropriate “translator” bridging process., the entire system can easily devolve to GIGO. Humans are also fully functional in the production of GIGO products, but “To err is human; but to really foul things up, you need a computer.“8To create vast quanties of worthless sh*t in nano-seconds; to create tens of thousands of consistently incorrectly calculated savings account accruals as part of a production run process; or to spread propaganda and lies globally in seconds.
- Computers have, and automation in general has, certain characteristics and behaviors which make them/it effective.
- Individual people, and humans in general, have certain characteristics and behaviors which make them effective.
They aren’t the same characteristics. They are orthogonal.
- Computers (when correctly programmed, and when operating according to specification9A set of conditions which are always required but seldom repeated, because we’re human and hate repeating the same phrases over and over and over again.) will do the same tasks, over and over; and they will do it faster than any human, with consistency, accuracy, and precision.
- Humans are the most difficult things on Earth to program to do any task, with any degree of consistency, for any length or time, with any degree of replicated accuracy or precision; let alone a combination of these elements.
- Computers have no imagination. In fact, it’s contrary to their effectiveness. Computers that “make up” answers to computational problems outside of their programmed logical instruction sets, and are declared defective. Inventing new answers to multiplication results (as was accomplished by both an instance of IBM S/370-95 microcode, and a Pentium chip) does not qualify as a good or correctly operating automation component10Any argument that claims it wasn’t the computer, but the designers, who “made up” and were to blame for the incorrect results only reinforces my point. .
- People have great imaginations. Including being able to imagine Commander Data being a sentient member of a Starship crew, after being able to imagine Starships, and intergalactic travel as semi-near term112338; near, or far? possibilities if not probabilities.
Orthogonal properties are the basis for determining effective means to compute and implement schemes for coverage of space. The principle property of a line with direction, a vector, is distance. Depth. Intensity. Two orthogonal lines are the basis for a geometric pattern which can enable accurate analysis of a space defined by those axes on a plane; a grid, a matrix, and a relational space between the vectors where positive and negative trade-offs can be measured, evaluated, and achieved by bringing both factors to bear on a concern.
- People created computers; computers did not create people.
- People provide specifications to computers; and define, through logical constructs, how computers (the digital, machine versions) should should accomplish their intended function within the context of a problem, or solution, set.
- Performing and monitoring the computations is tedious, and monotonous; and providing instructions is error prone, and testing for errors is tedious and monotonous.
- But, computers are good at tedium, and are not subject to monotony (although they do wear out and break down).
- Human programmers, the people who actually write and compose the computer code into the packages required for the machines to perform their function, are human, have minds that wander, are looking for psychological enrichment, and tend to want to add their own aspects of creativity to the tasks that they do; just like all other humans in the tasks that they do, day in and day out. Human code wanders.
- Automated programmers (assemblers, compilers and interpreters at the lowest levels) don’t wander in their work; they work fast; and they provide consistent and accurate results in the code which they write (the fundamental detailed instructions which are the actual instructions followed by the silicon and other circuits at the bottom of the machines).
The core of the equation around the issue of artificial intelligence, or augmented intelligence, is moving the hypotenuse defined by the orthogonal vectors to encapsulate more space in the plane of accomplishment between the two vectors. Leveraging speed, volume and accuracy in simple tasks, to compound tasks creates increased area on the plane (e.g., Moore’s law). Adding an additional orthogonal axis creates a space where the plane becomes volumetric. Adding another axis (time) develops dynamics. Normal humans have difficulty dealing with, and visualizing, more than three to four vectors (3D; and, with time, 4D). Computers (hypothetically) can’t visualize anything; but they can create visualizations (as instructed by humans), including animated movies.
Using computers to “write code” is not the same thing as computers crafting code, but the difference, at a point, becomes hard to distinguish and somewhat besides the point.
MDA is, effectively, an algorithm for using computers to write code, based on higher level models than those scripted in basic computer languages. Fortran and COBOL were languages for humans to write high level models of information flows and computations which humans wished to have accomplished by machines; and then those models (programs) were fed to computers (running Fortran and COBOL compilers) to re-write as machine language instructions. Not always correctly, or in the most effective manner, but adequate to task, and faster and more consistently than humans code write the same machine code. Java compilers write P-code, which is then read by a JVM (Java Virtual Machine) which write machine code just-in-time (JIT) for execution on the machine it runs on. Interpreters, like PHP and BASIC, read scripts and write code to execute the scripts, command by command, as execution occurs. The programs, and scripts, define models of the code to be written. Computers follow the model as they write, or more correctly translate, the models to executable action sets for implementation on the host computer, or on some peripheral device which the computer controls. MDA is a technique for programming at a higher level, with higher level modeling capabilities, at higher levels of abstraction.
- Code Migration
- PHP Code Generation
- AF WP Plugin Modules
- EATSv5 PHP
- MDA Code Generation
- WordPress Hooks