The 36th Installment
“The World of the Model and the World of Code”
by Chuzo Akiguchi,
Professor, Masters Program of Information Systems Architecture
The World of the Model and the World of Code
In the past, there was a category in the software process:; upstream and downstream. It seems appropriate for me to call them the model and code today. There seems to be a wider gap between the two. In this essay, I would like to express my view about how valuable it is to come and go between the two worlds.
From the viewpoint of building information systems, the description that expresses a vague concept in the real world using defined language and words as formally and objectively as possible at an appropriate level of abstraction but avoiding too much detail is called the “model.”. Many models are mostly shownusing diagrams. Entity-relationship diagrams (ERD) and their deviations, data-flow diagrams, and a variety of UML diagrams are used as tools (descriptive methods) to describe the model, because the static structure and the dynamic structure (behavior) can be expressed at an appropriate level of abstraction. Residents in the world of models are called consultants or analysts. As senior engineers, they earn far more than the teaching staff at universities and seem to be proud that they are the only ones who understand the real nature of information systems.
On the other hand, residents in the world of code concentrate on the descriptions expressed and executed directly on computers, i.e. program code. Code is written with a programming language. The programming language is designed to balance the two requirements of: expressive power to describe the problem you want to solve in a form human beings can easily understand, and efficient execution of the description on computers. The tasks you want to execute on computers have as great a variety as the professions of human beings. Therefore, the list of even general-purpose programming languages is endless:; Ada, Pascal, C, Smalltalk, C++, Java, Perl, Python, Ruby, and Scala, in addition to Fortran, COBOL, Algol, and Lisp. Furthermore, a myriad of original languages exist to accommodate the characteristics of the problems you want to solve in each discipline and have their own reasons for existing. The residents of the world of code are absorbed in brushing up coding skills using programming languages as powerful tools and even establishing new programming methodologies. The beauty of a completed program is as significant as a work of art. Programming requires sophisticated expertise. However, residents n the world of code accept the same or a lower salary as teaching staff at a university according to the average evaluation by today’s society. They are distressed because they must leave this comfortable world of code if they seek a higher salary.
Programming languages require efficient, accurate, and concise descriptions. They are stringent and do not allow vagueness. Rresidents in the world of models are weary of it. On the other hand, residents in the world of code are not accustomed to abstracting and modeling a vague and sometimes inconsistent concept at an appropriate level. As technologies advance and the target systems become huge, it is not easy to cover both areas. However, it is not bad to experience another world sometimes, while maintaining a firm footing in the core technology domain. Rresidents in the world of models know of the existence of gods and devils in the details when they look into the world of code to realize their models. It is recommended for the residents in the world of code to try to use the tools in the world of models. It will be a good opportunity to have another look at the structure of the whole system, and they will be able to grasp the system from an architectural level. They may bear the cool title of “IT architect” and earn as much as the teaching staff at a university .
I would like to create a beautiful model that leads to beautiful code. This is because I believe it produces a system with beautiful architecture. Beautiful architecture is the basis for the sound development of software. To achieve this, I am convinced that it is the only way to come and go between the two worlds and accumulate experience in both worlds.