Hierarchical principle and model drive software architecture of complex systems
Yu Yuying 2002-5-17
Written in front
I recently saw that the model driver is gradually noted in China, and some of the controversy about UML and applications have been seen in the past few days ago. As a rest in the busy work, put it out from the past research notes, put it here, communicate with you.
Hierarchical theory is the basic principle of building complex software systems
Nobel Prize winner Herbert A. Simon has been discussed: "It is necessary to construct a comparative formal theory about complex systems. There is a road to help hierarchical theory ... We can expect that in a complexity inevitbook In the world that evolves, complex systems are hierarchical. It is the basic principles of analysis and construction for software such complex man-made transactions such as software.
The software architecture is hierarchical
Roughly observing the development of software expressions (language): starting from the perforated paper belt (the language of the machine), first is assembly language, then the high-level language, then there is an object-oriented language and the so-called fourth-generation language (FGL) The appearance ... It should be noted that each generation of language is not "replacing" the previous generation of language, but in the previous generation language "written" next generation language. During this natural evolutionary process, the level characteristics of the complex system discussed in Simon appeared clearly.
Further, in the simple to complex evolutionary road, the architecture, software development of software development is presented, exhibiting hierarchical features. "Good" software system has a clearer level.
One-dimensional language is the model
I don't want to discuss this problem here, just propose some results. Similar to natural language, existing "programming language" is single-dimensional, and its basic syntax is based on the previous order. When the complexity of the system is improved, it is more difficult to describe the complex system with such language, more effectively modify maintenance; visualization development platform, code management tool (even in a sense, shared components can also be included), etc. The appearance is a supplement to this, but it is still not the final solution. The software description system evolved here, facing a mutation, there will be new species, this new species may be model. The author believes that the main difference between the model and program language is not to graphically, nor is the degree of abstraction, but in terms of expressing the "single order" limit, the simplest example is a two-dimensional table. The model can be more easier and directly expressing complex structures.
Models and languages are description of the system
The traditional programming language and model are all representative systems, the former is suitable for the sequence process, and the latter is suitable for expression of complex structures. The necessity of the model can be seen by the following example:
To accurately retrofit, you can accurately describe a cube, or even 10 cube combinations, but you will not try to describe a house in language, proper way is to use engineering drawings.
The case of establishing an enterprise application system can be inspired from the above example. The enterprise system should be expressed, mainly complicated structures, and the proportion of process is small, so the model is more important.
OMG organization MDA strategy
OMG's latest strategy is to establish model driver architecture (MDA). Its meaning is not three words can be clear, but from the perspective of software evolution, it may have an inevitability, discussion from above, at least It can be attached to two reasons:
More effectively describe the needs of complex systems; the needs of hierarchical distinction between system complications.
Several analysis elements about the model
The author believes that the following features are important to the model of the model in the software system, or there is a special meaning:
Time-Effectiveness of Model: About this most important distinction is that it is "Run-Time Model, or the development period model? This difference is a bit similar to the difference between the language and compilation language, but its significance is not general, the author believes that the "running model" reveals the essence of the model driver. EVOLUTIONABLENESS OF MODEL: Can I continuously adapt to changes in the application environment and demand during the application process of the system, and constantly improve the model or adaptively? This is a measure of model "performance". Hierarchy of Model: As many of the language, there is no reason to think that the model has only one level, when the system is sufficiently complex, the hierarchical division of the model will be necessary. UML and business model
Use the above elements to analyze, you can find:
UML is a model system that is "advanced software language, such as C ), which is time efficient during the development of the software lifecycle, not during operation, and the level of the level is in software components, object level, typical elements are Objects in the software, the action of the software on the software, etc.
Enterprise models (such as ARIS, CIM-OSA, Geram), typical elements are organizational, products, procedures, etc. They are eye-catching from the business objects. The two have gaps at the level, and the final result of the enterprise model is to reach the "development period model" to "run model", and the author believes that it should ultimately be an air-regulated model, which is designed with UML The goal is not in line.
The two are not mutually exclusive, but their "layers" should be considered. According to the author's understanding, OMG's MDA is still unable to be a corporate model, but it is possible to become the foundation of a corporate model. This is not a problem of model quality or ability, but a hierarchical positioning problem.
Written in the back
Object oriented, OOs appear as an evolution in software architectural structure, and has been misunderstood to be substituted to process language (or process-oriented architecture). The author believes that although OO responds a worldview, it is a way of thinking, but does not mean everything; and from level and evolutionary views, it should not be regarded as a simple to existing things. replace. The model or model is driven, it may be another major evolution of the software architecture after the object, but is not used to replace object or structured design. In 1998, the author wrote the text of "ICAC's Information Technology Application" in the 21st Century. The status and role of the model did not know today. Now I firmly believe that for the complex system such as enterprise information systems, I want to be effective. Controllable planning and construction or even "flexibility", can be constantly adjusted during operation, "Model" is necessary, and the model required to express and build complex enterprise systems may be multi-level, so-called " The special implementation system on the general enterprise platform should be a system driven by the runtime model.
Enterprise Engineering Forum 1998 - 2002