104 research outputs found

    Multi-platform data processing engine

    Get PDF
    Modern software often must run on multiple different platforms, devices, CPU architectures and software stacks. To simplify development of software and to minimize implementation mistakes, it is often desired to reuse a single implementation in multiple platforms instead of developing and maintaining another implementation of the software. The objective of this thesis is to find a technology for a medium sized software company. The technology should allow running the same code on three platforms, which are web browsers, servers, and edge devices. This thesis consists of two parts. The first part describes multi-platform computing, and its history, its common problems and the runtime environments related to the case company’s problem. The second part defines the requirements for the chosen technology, selects a set of technologies to review in detail, reviews the chosen technologies and implements and benchmarks a proof-of-concept. The study resulted in a recommendation of a technology to the case company. The study also identified the constraints and problems that the technology has. Some recommendations for future development of multi-platform software were given. In the study it became clear that the greatest constraints for solving the problem were the web browser environment and edge devices. The choice in technologies for the web is not as wide as in the case of servers and edge devices. Also, the limited resources of edge devices were an issue. The study found out that in multi-platform software a constraint on one of the platforms applies to all the platforms used. Other general observations were also made.Moderneja ohjelmistoja usein käytetään monella eri alustalla, laitteella, prosessoriarkkitehtuurilla ja ohjelmistopaketilla. Ohjelmistokehityksen yksinkertaistamiseksi ja virheiden vähentämiseksi toteutuksissa yleensä toivotaan, että yhtä toteutusta voitaisiin käyttää monella eri alustalla sen sijaan, että kehitettäisiin ja ylläpidettäisiin uutta toteutusta ohjelmistosta. Tämän opinnäytetyön tavoitteena on valita teknologia keskisuurelle ohjelmistoyritykselle. Kyseisen teknologian tulisi mahdollistaa saman koodin ajamisen kolmella alustalla, jotka ovat webselaimet, palvelimet ja edge-laitteet. Opinnäytetyö koostuu kahdesta osasta. Ensimmäinen osa kuvailee alustariippumatonta tietojenkäsittelyä, sen historiaa, sen yleisiä ongelmia ja toimeksiantajayrityksen ongelmaan liittyvät suoritusympäristöt. Toinen osa määrittelee valittavalle teknologialle asetettavat vaatimukset, valitsee joukon teknologioita tarkempaan arviointiin, arvioi valittuja teknologioita ja toteuttaa prototyypin sekä mittaa sen suorituskykyä. Tutkimuksen tuloksena annettiin suositus teknologiasta toimeksiantajayritykselle. Tutkimus myös tunnisti rajoitteet ja ongelmat, joita kyseisellä teknologialla on. Tulokset sisälsivät myös joitakin suosituksia alustariippumattoman ohjelmiston kehitykseen tulevaisuudessa. Tutkimuksessa tuli selväksi, että suurimmat rajoitteet ongelman ratkaisemiseksi olivat webselainympäristö sekä edge-laitteet. Vaihtoehtoja teknologioille webselaimia varten ei ole yhtä paljon kuin palvelimille ja edge-laitteille. Edge-laitteiden rajalliset resurssit olivat myös ongelma. Tutkimuksessa selvisi, että alustariippumattomassa ohjelmistossa yhden alustan rajoite pätee kaikkiin käytettyihin alustoihin. Myös muita yleisiä havaintoja tehtiin

    Embedding an interpreter to a multi-threaded program

    Get PDF
    Ohjelmat koostuvat nykypäivänä useista eri kielillä tehdyistä osista. Eri kieliä käytetään niiden tarjoamien erilaisten etujen takia. Samassa ohjelmassa kieliä voidaan sekoittaa sulauttamalla yhden kielen tulkki toisella kielellä toteutettuun ohjelmaan, jolloin tulkin avulla yksi kieli voi suorittaa toisen kielen ohjelmia. Toimiakseen yhdessä kielten välille tulee rakentaa rajapinta, jonka avulla ne voivat kommunikoida. Kielet ovat jo tarkoitusperiensä perusteella eriävät, joten niiden välisen rajapinnan toteutuksessa on erilaisia yhteensopivuusongelmia. Lisäksi useiden sulautettavien kielten tulkit on suunniteltu vain yksisäikeiseen suoritukseen, joten niiden käyttö monisäikeisessä ohjelmassa voi vaarantaa ohjelman tehokkuuden tai eheyden. Tässä työssä etsimme kielten välisen rajapinnan ja monisäikeisyyden ongelmia tulkin sulautuksessa ja niihin käytettyjä ratkaisuja kirjallisuuden avulla. Sulautamme käytännöntyönä Lua-kielen tulkin C++-kieliseen monisäikeiseen MMORPG-pelin palvelinohjelmaan. Sulautetun kielen käyttötapaus asettaa käytännön rajoja suoritusnopeudelle, joten rinnakkaisuuden säilyttäminen on ensiarvoisen tärkeää. Käytännöntyössä sulautetun kielen tulkista luodaan monta toisistaan eristettyä instanssia, joita voidaan suorittaa rinnakkain eri säikeillä. Käyttötapauksen takia instanssit joutuvat jakamaan tietoa keskenään, joka tapahtuu tiedon sarjallistamisen kautta. Työn soveltava osa ja siinä käytettyjä ratkaisuja arvioidaan simuloimalla palvelinohjelman rakennetta ja suoritusta. Vertaamme tulkin yksisäikeistä sulautusta rinnakkaiseen toteutukseen ja toteamme, että testitilanteessa pääsemme haluttuihin melkein ideaalisiin suoritusnopeuksiin rinnakkaisuutta tukevan toteutuksen avulla. Nopeutuksen lisäksi toteamme muistinkulutuksen kasvun olevan vähäistä saatuihin hyötyihin nähden.Programs today consist of several parts made in different languages. Different languages ​​are used because of the different benefits they offer. In the same program, languages ​​can be mixed by embedding an interpreter of a language into a program implemented in another language, so that the interpreter allows one language to run programs made in another. In order for the languages to work together, they ​​need to be built into an interface that allows them to communicate. Languages ​​are already different in their purpose, so various compatibility issues raise in the implementation of the interface between them. In addition, interpreters for multiple embeddable languages ​​are designed for single-threaded execution only, so using them in a multi-threaded program can compromise the efficiency or integrity of the program. In this work, we look for the problems of language interface and multi-threading in interpreter embedding and the solutions used for them with the help of the literature. As a practical work, we integrate a Lua interpreter into a multithreaded MMORPG server program programmed in C++. The use case of the embedded language sets practical limits on execution speed, so maintaining concurrency is paramount. In practical work, many isolated instances of the embedded language interpreter are created, which can be performed in parallel with different threads. Due to the use case, the instances have to share information with each other, which takes place through the serialization of the information. The applied part of the work and the solutions used in it are evaluated by simulating the structure and execution of the server program. We compare a single-threaded embedding of the interpreter to a parallel implementation and find that in the test situation we achieve the desired near-ideal execution speeds with the help of the parallel implementation. In addition to acceleration, we find that the increase in memory consumption is small relative to the benefits obtained

    On the Multi-Language Construction

    Get PDF
    Modern software is no more developed in a single programming language. Instead, programmers tend to exploit cross-language interoperability mechanisms to combine code stemming from different languages, and thus yielding fully-fledged multi-language programs. Whilst this approach enables developers to benefit from the strengths of each single-language, on the other hand it complicates the semantics of such programs. Indeed, the resulting multi-language does not meet any of the semantics of the combined languages. In this paper, we broaden the boundary functions-based approach a la Matthews and Findler to propose an algebraic framework that provides a constructive mathematical notion of multi-language able to determine its semantics. The aim of this work is to overcome the lack of a formal method (resp., model) to design (resp., represent) a multi-language, regardless of the inherent nature of the underlying languages. We show that our construction ensures the uniqueness of the semantic function (i.e., the multi-language semantics induced by the combined languages) by proving the initiality of the term model (i.e., the abstract syntax of the multi-language) in its category

    On the definition of non-player character behaviour for real-time simulated virtual environments.

    Get PDF
    Computer games with complex virtual worlds, which are populated by artificial characters and creatures, are the most visible application of artificial intelligence techniques. In recent years game development has been fuelled by dramatic advances in computer graphics hardware which have led to a rise in the quality of real-time computer graphics and increased realism in computer games. As a result of these developments video games are gaining acceptance and cultural significance as a form of art and popular culture. An important factor for the attainment of realism in games is the artificially intelligent behaviour displayed by the virtual entities that populate the games' virtual worlds. It is our firm belief that to further improve the behaviour of virtual entities, game AI development will have to mirror the advances achieved in game graphics. A major contributing factor for these advancements has been the advent of programmable shaders for real-time graphics, which in turn has been significantly simplified by the introduction of higher level programming languages for the creation of shaders. This has demonstrated that a good system can be vastly improved by the addition of a programming language. This thesis presents a similar (syntactic) approach to the definition of the behaviour of virtual entities in computer games. We introduce the term behaviour definition language (BDL), describing a programming language for the definition of game entity behaviour. We specify the requirements for this type of programming language, which are applied to the development and implementation of several behaviour definition languages, culminating in the design of a new game-genre independent behaviour definition (scripting) language. This extension programming language includes several game AI techniques within a single unified system, allowing the use of different methods of behaviour definition. A subset of the language (itself a BDL) was implemented as a proof of concept of this design, providing a framework for the syntactic definition of the behaviour of virtual entities in computer games

    Programmiersprachen und Rechenkonzepte

    Get PDF
    Seit 1984 veranstaltet die GI-Fachgruppe "Programmiersprachen und Rechenkonzepte" regelmäßig im Frühjahr einen Workshop im Physikzentrum Bad Honnef. Das Treffen dient in erster Linie dem gegenseitigen Kennenlernen, dem Erfahrungsaustausch, der Diskussion und der Vertiefung gegenseitiger Kontakte. In diesem Forum werden Vorträge und Demonstrationen sowohl bereits abgeschlossener als auch noch laufender Arbeiten vorgestellt, unter anderem (aber nicht ausschließlich) zu Themen wie - Sprachen, Sprachparadigmen - Korrektheit von Entwurf und Implementierung - Werkzeuge - Software-/Hardware-Architekturen - Spezifikation, Entwurf - Validierung, Verifikation - Implementierung, Integration - Sicherheit (Safety und Security) - eingebettete Systeme - hardware-nahe Programmierung. In diesem Technischen Bericht sind einige der präsentierten Arbeiten zusammen gestellt

    Views and concerns and interrelationships : Lessons learned from developing the multi-View software engineering environment PIROL

    Get PDF
    Software-Entwicklungsumgebungen sind komplexe Systeme mit besonderen Anforderungen an Modularität und Anpaßbarkeit. Diese Arbeit beschreibt die Entwicklung der Umgebung PIROL. Die Beschreibung ist dabei in eine Abfolge der folgenden 12 Themen gegliedert. (1) Metamodellierung ist das Grundkonzept, nach dem PIROL seine Daten gemäß einem objektorientierten Datenmodell zerlegt, so daß beliebige Werkzeuge auch auf die Daten anderer Werkzeuge auf sinnvolle Art und Weise zuzugreifen können. (2) Das Metamodell wird zur persistenten Speicherung der Daten auf Konzepte des Repositories H-PCTE abgebildet. (3) Die Granularität eines Metamodells ist für die Effektivität und Effizienz des Gesamtsystems entscheidend. PIROL unterstützt hybride Modellierung als Kompromiß beider Extreme. (4) Durch Methoden des Metamodells wird Verhaltensmodellierung für verschiedenste Aufgaben unterstützt. (5) Ausnahmebehandlung wird systematisch unterstützt. (6) Verschiedene Mechanismen zur Wahrung der Datenintegrität sind enthalten. (7) Das System wurde nach einer Client-Server Architektur entwickelt, deren zentrale Komponente eine "Workbench" ist, die die Repository-Sprache Lua/P ausführt. (8) Steuerungsintegration erlaubt durch verteilte Steuerflüsse das enge Zusammenspiel lose gekoppelter Komponenten. (9) Die koordinierte Zusammenarbeit mehrerer Benutzer wird unterstützt. (10) Die logische Unabhängigkeit von Werkzeugen wird durch das neue Konzept der Dynamic View Connectors erreicht. (11) Allgemeine Dienste sind in der Umgebung einheitlich verfügbar. (12) Das System unterstützt die Weiterentwicklung. All diese Themengebiete sind sehr eng miteinander verzahnt und die Darstellung ist zu großem Teil der gegenseitigen Beeinflussung gewidmet. Es wird gezeigt, wie eine Großzahl der Entwurfsentscheidungen genau aus diesen Beeinflussungen motiviert sind. Die Beschreibung folgt damit dem Konzept der "Concern Interaction Matrix", das hier zur Bewältigung von Komplexität vorgeschlagen wird. Dabei werden Charakteristika einzelner Anliegen und einzelner Zusammenhänge herausgearbeitet. Die Beschreibung PIROLs wird durch die Liste der integrierten Werkzeuge, Ansätze von Laufzeit-Messungen und einige Betrachtungen zur Beurteilung abgerundet. Abschließend werden verschiedene Konzepte rund um den Begriff "Sichten" erörtert. Sichten sind ein zentrale Anliegen von PIROL. Außerdem generalisiert die Diskussion über die mehrdimensionale Darstellung des Hauptteiles. Es werden Begrifflichkeit, Konzepte und Techniken für Sichten in der Softwaretechnik vorgestellt und diskutiert. Dabei wird die Brücke geschlagen von Sichten in objektorientierten Datenbanken, über aspekt-orientierte Softwareentwicklung bis hin zum allgemeinen "Concern Modeling", zu dem die o.g. Methode einen Beitrag leisten soll. Sichten werden dabei als ein zentrales Konzept der Softwaretechnik neben Abstraktion und Zerlegung beurteilt. Dynamic View Connectors sind ein wesentlicher Beitrag von PIROL, durch den Datenbanksichten und aspektorientierte Programmierung zusammengeführt werden. Zwar ist der Sichten-Begriff längst nicht so scharf definiert, wie die Begriffe Abstraktion und Zerlegung, aber gerade die Überlappungen und Diskrepanzen, die durch Sichten abgebildet werden können, machen dies Konzept zu einem starken Strukturierungsprinzip, das zwar einigen Aufwand zur Behandlung von Inkonsistenzen erfordert, aber andererseits hilft, komplexe Systeme handhabbar und wartbar zu gestalten.Software engineering environments are complex systems with special requirements regarding modularity and adaptability. This thesis describes the development of the environment PIROL. The description is structured as a sequence of the following 12 concerns: (1) Meta modeling is the basic concept by which PIROL decomposes its data in accordance to an object-oriented data model. This allows arbitrary tools to access data of other tools in a meaningful way. (2) For persistent storage the model is mapped to the concepts of the repository H-PCTE. (3) The granularity of a meta model determines effectiveness and efficiency of the system. PIROL supports hybrid modeling as a compromise between extremes. (4) By methods of the meta model behavior modeling is supported for a wide range of tasks. (5) Exception handling is supported systematically. (6) Several mechanisms for preserving data integrity are integrated. (7) The system follows a client-server architecture. As its, central component the "workbench" executes the repository language LuaP. (8) Control integration allows for close cooperation of loosely coupled components by means of distributed control flows. (9) The coordinated cooperation of multiple users is supported. (10) Logical independence of tools is achieved by the novel concept of Dynamic View Connectors. (11) Common services are available throughout the environment in a uniform way. (12) The system is prepared for evolution. All these concerns are tightly interlocked. A considerable share of the presentation is dedicated to such mutual interactions. Is is shown, how a large number of design decisions is motivated exactly by these interactions. The description follows the concept of a "Concern Interaction Matrix" which is proposed for managing complexity. Characteristics of concerns and their interactions are elaborated. The description of PIROL is completed by a list of integrated tools, initial performance measurements and evaluation. Finally, several concepts relating to the notion of "views" are discussed. Views are a central concern of PIROL. Furthermore, the discussion generalizes over the multi-dimensional presentation in the body of this thesis. Notions, concepts and techniques for views in software engineering are presented and discussed. This discussion connects views in object-oriented databases, aspect-oriented software development and general "concern modeling", to which the method of "Concern Interaction Matrices" contributes. Views are regarded as a central concept of software engineering at the same level as abstraction and decomposition. Dynamic View Connectors are a significant contribution of PIROL that combines database views and aspect-oriented programming. The notion of "views" is defined with far less precision than abstraction and decomposition, but indeed by the overlap and mismatches, which can be captured by views, this concept is a strong principle for structuring software and information. Effort is needed for handling inconsistencies as they may arise, but after all, views are a suitable means for managing the complexity of systems and for designing these systems for evolution
    corecore