Master DonNTU Starodubtsev Dmytro Name: Starodubtsev Dmytro
University: 2005-2011 years  — Donetsk National Technical University
Faculty: Computer Sciences and Technologies
Department: Computer Engineering
Speciality: System programming
Theme of master's work: Component-based simulation software development for distributed parallel simulation environment (DPSE)
Scientific advisor: Doctor of technical sciences, professor Svjatnyj Vladimir Andreevich

Abstract

Component-based simulation software development for distributed parallel simulation environment (DPSE)

Introduction

    Distributed parallel simulation environments become more important in industry and science. Now most of the scientific and industrial projects have the stage of simulation before implementing, the result of which is a kind of "way to life". Therefore, this area is received big attention; it is constantly evolving, and simulation environment become more complex. Hundreds of computers are used for their work. Multiple-computer calculating centers exist in many major scientific laboratories. But the use of simulation and design of such environments requires new means to develop the parallel simulation software.

    The solution of this problem is to use a component-based approach in the development of distributed simulation environments. This method of design simulation software has several advantages, currently described in the synopsis.

Goals and problems

    The purpose of this master's thesis is to find ways to implement the simulation software for distributed parallel simulation environment using a component-based approach in its development.

    This problem requires solving the following set of objectives:

  • consideration of paradigms of software development;
  • study of component-based approach programming;
  • analysis of the classical architecture of the distributed parallel simulation environment;
  • the separation of the distributed parallel environment for simulation subsystems;
  • comparison of the simulation environment subsystems and components;
  • implementation of the components of the distributed parallel simulation environment.

Relevance and motivation

    The idea of realization of a distributed parallel simulation environment using a component-based programming approach arose because the objects of simulation became very complex and, hence, the simulation process too.

    In modern science and industry is much easier at first to make simulation of developed project, instead of doing his prototype. It saves time and money. In today's IT-world, these two things are very important.

    IT-sphere  — one of the fastest growing industries. Constantly change requirements for simulation environments: complexity, object modeling, the laws describing the model.

    It needs to accelerate and simplify the development of simulation environments. This can be done through the division of the distributed parallel environment for simulation subsystems, representing them as independent components. And after this we must to develop only the interface of interaction between them. As a result, each component operates independently on the others, and if necessary (their improvement, correction), they can simply be replaced.

Supposed scientific novelty

    The novelty of this work is realization of a distributed parallel simulation environment using a component-based programming approach, which will give new opportunities to use, reconfiguration of such environments.

Expected practical results

    The proposed idea of a distributed parallel simulation environments enable completely different look at this problem. Creation of a new environment will become much easier; replacing of components will require a minimum of effort.

Review of research and developments on the subject

    Local level (professors of the faculty, graduate students and masters of DonNTU). Consideration of issues related to the implementation of distributed parallel simulation environments involved:

1. Feldmann L. P.,Svjatnyj V. A., Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK.
This report describes the architecture of DPSE, the principles of its creation and decomposition into subsystems

2. Voytov A. Subject of master’s thesis "Development of parallel MIMD-simulator, 2nd level of parallelization"

3. Stepanov I. Subject of master’s thesis “Distributed parallel simulation environment”

4. Nazarenko K. Subject of master’s thesis «MIMD-simulator and optimizer of parallel models of discrete dynamical systems"

5. Zima K. Subject of master’s thesis “Parallel simulation environment for discrete systems”

    Search of developments on this topic at the national level:

6. Tomashewskiy V. Modeling of systems. - K.: Publishing Group BHV, 2005 - p. 9-14.
Questions modeling systems, queuing systems and simulation are discussed in the book

    At the global level were found the following publications on the topic:

7. Tick J., Special Aspects of Component Based Software Development

8. Crnkovic I., Larsson M. Component-Based Software Engineering – New Paradigm of Software Development
Last two sources describe a component-based programming: principles, benefits, history, algorithms to build applications.

9. Feldmann L. P.,Svjatnyj V. A., Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK.

Principles of component-based design of Hardware-Software Systems

    Since the emergence of programming as a separate branch of science and industry, it is pursued constantly by various changes and innovations. This is due to the fact that people have not yet found the ideal technology of development of software and hardware systems. Therefore, from time to time on programming come ideas of fundamental changes. Scientists identify several stages of evolution towards the creation of software. For example, in [7] the author proposes the following structure:

  • machine level languages;
  • low-level programming languages;
  • high-level programming language.

    Languages of the first two groups are not used, or have a very narrow range of applications. Most common are high-level programming languages. Their use is most convenient to perform most tasks. They are designed so that people could intuitively understand the program. But even among them there are a range of ideas to write code. In [2] is distinguished the following classification of high-level languages:

  • "Spaghetti code" (Fortran). This period has replaced the low-level programming languages. At that time it was a breakthrough in the industry, a new era. But now we will soon see the shortcomings of this stage: too small functional, complex compilation, poorly readable code. But still, it was the start of a new era.
  • "Divide and conquer.” Programs became too large and complex to understand. The solution found by the code apart. They were procedures, functions, modules. At some time it gave peace of scientists and programmers. But later, with the development of technology, this became no longer sufficient.
  • "The world is structured" (Pascal, Ada, C). This period came in the seventies of last century. Scientists have finally understood that programming should be structured. Programming languages have been enriched by new technologies that give solutions within a few decades.
  • "Think of object-oriented" (C, Java, C #). This new paradigm came after the era of structured programming. It has set new and higher level of integration between data and operations on them that allowed them to combine into logical units.
  • "Component-based technologies". Further development of science has given life new idea. In fact, it was not new. It was first expressed in the famous NATO conference of software development in 1968 in Garmisch (Germany). But to realize this paradigm required time. It stems from the idea of object-oriented programming. The program should to consist of parts. But they are given another assignment and importance. Components become like multifunction modules, which can work separately, be re-used. Now it is a completely new paradigm in programming, which allowed to make another step in the development of digital technologies.

    [3] gives the following definition for the direction of component-based programming:

    "Component-Oriented Programming  — one of the paradigms in programming, has emerged as a kind of discipline, that is, set of certain restrictions which are attached on the mechanism of the OOP, when it became clear that the uncontrolled use of the OOP is a cause of problems associated with the reliability of large software systems. These so-called problem of fragile base types: appears when you try to change the implementation of the base type (base class) due to the refusal descendant classes."

    Single component is a software package or module, which includes a set of functions and data.

    All program functions are placed in different parts. The data, which are placed in a single component, are unrelated to the data from the other. The interaction between the components implement by using of special interfaces. Through them, just the necessary data are passed, and about inner working of each other's components do not know.

    This idea allows for many variations in working with component-based software. Components are interchangeable. The main condition is an implementation of the necessary functions and support of interaction interfaces. Components that have good performance, can be used in new projects, which saves time and money. An important condition to use the component is a full documentation of the interaction interface. This problem has always been given much attention, because one small mistake in the documents and codes of programs can lead to malfunction of all system.

    Main features and advantages of component-based approach in programming can be formulated as follows, [2]:

  • Significant reduction in total development costs of the system;
  • Significant reduction in the time of project development;
  • Quality and reliability is enhanced by the reuse of components from previous projects, where they worked good;
  • Maintenance, repair are simple, because it needs only to replace one component;
  • High level of abstract representation allows to create more larger projects.

    The cycle of development of component-based software has certain stages, compliance with which makes the work more cost-effective and efficient [4]:

  1. Search of components, which can be used in the project. At this stage developer makes a list of all possible options for further consideration;
  2. Select of components which best suited the requirements of the project;
  3. The development of components that were not found among the developed earlier;
  4. Complete adaptation to the requirements of all the components that are in the project;
  5. Assembling and launch of the project;
  6. Stage of inspection and testing. Replacement, installation or removal of certain components. It may become necessary if during the test defects were discovered, were added new features. This phase is gradually transformed into a full-scale use of the project.

    The described technique is shown in Figure 1. The method of component-based application development

Figure 1  — The method of component-based application development (Animation consists from 5 frames with delay 700 ms between frames; delay before repeat is 1200 ms, number of cycles of reproduction is limited to 7, size 770*264, 112kB, created in MP GIF Animator)

    The paradigm of component-based software is already very well established in our lives. And in such fields as development of control systems, monitoring, simulation of complex systems, has replaced object-oriented programming.

Distributed parallel simulation environments and their architecture

    For modeling and simulation of dynamical systems with concentrated or distributed parameters usually distributed parallel simulation environments (DPSE) are used. DPSE is a set of user-friendly simulation technology hardware, system software for the architecture, specially developed software for modeling, simulation and technical support of subsystems that supports all stages of the parallel modeling and simulation of dynamic systems under all possible requirements.

    [5] shows the structure of DPSE, shown in Fig. 2. DPSE is regarded as a complex HW/SW-system. It can be divided into relatively independent and parallel operating subsystems, depending on the functions they perform. This allows another way to present the process of developing of simulation environments.

Component-based organization of DPSE

    Based on the structure of the DPSE, as shown in Figure 2, we can appropriate the following components, according to the functions entrusted to them [5]:

  1. Dialog subsystem is intended for presentation of DPSE. Perform the following tasks: dialogue and learning of developer and user; interaction with all the resources of the environment; harmonization of tasks of simulation, planning and management of this process.
  2. Topological analysis subsystem  — verbal and graphic description of the encoding for the primary topology; decomposition and approximation of the obtained secondary topologies, forming of current vector and matrix; transformation of topological data in a form suitable for generating equations; issuance of the analysis of topology.
  3. Generation of equations subsystem  — communications with the subsystem of the topological analysis, transformation of its work in vector-matrix form, the generation of discrete simulation models for calculating; visualization of results.
  4. The subsystem of virtual parallel simulation models  — interactive mapping of hierarchy of virtual parallel simulation models, depending on the options for parallelization; topology created in the subsystem of topological analysis are provided in compliance levels of the virtual parallel simulation model, the formation of systems of equations for all levels of the model, interactive training of methods of implementing the discrete virtual parallel simulation model.
  5. Parallel solution of the equations subsystem  — the interaction with the subsystems of topological analysis and virtual parallel simulation models; issuance ways to implement the discrete models, solution of systems of equations using parallel libraries, the definition of convergence, stability, precision, optimization of variable parameters; transforming solutions for visual presentation.
  6. Data exchange subsystem  — includes list of components and resources of DPSE; exchange of data on request from the component, the mapping of data flows by the user, the system of testing to determine the parameters of the data transmission network and the optimization of parallel programs using the exchange operations.
  7. Load balancing subsystem  — determine the level of the load between the virtual processes and processors, load balancing between them; comparative analysis of approaches of parallelization by the criteria of load balancing.
  8. Visualization subsystem  — integration with the GUI and subsystem solutions of the equations; preparation of simulation results for the visualization; interactive display of diagrams in time and after the simulation experiment.
  9. Storage subsystem  — interacts with all subsystems and stores all possible information about the environment (data about software and hardware architecture, user data, modeling data, data about transformation and simulation systems); archiving some of the serial and parallel programs that are suitable for possible use, information about tests planned experiments and archiving of results.
  10. IT-support subsystem  — the organization of distributed computing, communication and simulation resources in accordance with modern technology networks; remote WEB-based applications for modeling and simulation; functioning circuits «WEB-client (the model-developer)  — WEB-server  — PARSIMULATOR (parallel simulator) and «WEB-client (the model-developer)  — WEB-Server  — DATABASE (database servers)"; integration with other subsystems.
Системная организация РПМС

Figure 2 – Systemic organization of DPSE

Summary

   Distributed parallel simulation environments become more complex. Their development and maintenance become more difficult. Therefore, for the development of DPSE we must to use new technologies that will take properties of software and hardware.

   This opportunity provides a component-based approach of software development. When using it, the model environment is divided into subsystems that serve as a component. Each component performs a specific group of functions and interacts with other components. With proper distribution of functions, design of hardware, implementation of database and interface interaction, documentation of designing methods distributed parallel simulation environment get a lot of advantages. The development, replacement and upgrading components, the reorganization of environment become much easier.

References
  1. Томашевський В.М. Моделювання систем.  — К.: Видавнича група BHV, 2005  — c. 9-14.
  2. Tick T. Special Aspects of Component Based Software Development / Internet resource.  — Mode of access: http://citeseerx.ist.psu.edu/viewdoc/download~.pdf
  3. Компонентно-орієнтоване програмування / Вікіпедія / Internet resource.  — Mode of access: http://uk.wikipedia.org/wiki/Компонентно-орієнтоване_програмування
  4. Crnkovic I., Larsson M. Component-Based Software Engineering  — New Paradigm of Software Development. / Malardalen University Sweden / Internet resource.  — Mode of access: http://www.mrtc.mdh.se/publications/0293.pdf
  5. Feldmann L. P., Svjatnyj V. A. , Resch M., Zeitz M. FORSCHUNGSGEBIET: PARALLELE SIMULATIONSTECHNIK. / Сайт национальной библиотеки им. В.И. Вернадского / Internet resource.  — Mode of access: http://www.nbuv.gov.ua/portal/natural/Npdntu/Pm/2008/08flpfps.pdf
  6. Что такое компонентно-ориентированное программирование (краткая справка) / РОССИЙСКАЯ АКАДЕМИЯ НАУК Институт ядерных исследований / Internet resource.  — Mode of access: http://www.inr.ac.ru/~info21/info/qtocop.htm
  7. История развития языков программирования / Сайт программирования / Internet resource.  — Mode of access: http://life-prog.ru/view_articles.php?id=41
  8. Эволюция языков программирования / Школьные страницы / Internet resource.  — Mode of access: http://schools.keldysh.ru/sch444/MUSEUM/LANR/evol.htm
  9. История языков программирования / Википедия / Internet resource.  — Mode of access: http://ru.wikipedia.org/wiki/История_языков_программирования
  10. Component-based software engineering / Wikipedia / Internet resource.  — Mode of access: http://en.wikipedia.org/wiki/Component-based_software_engineering
  11. Компонентно-ориентированное программирование / Википедия / Internet resource.  — Mode of access: http://ru.wikipedia.org/wiki/Компонентно-ориентированное_программирование

Copyright © Starodubtsev 2010 DonNTU