13 research outputs found

    Bibliographie

    Get PDF

    Formalizing the Expertise of the Assembly Language Programmer

    Get PDF
    A novel compiler strategy for generating high quality code is described. The quality of the code results from reimplementing the program in the target language using knowledge of the program's behavior. The research is a first step towards formalizing the expertise of the assembly language programmer. The ultimate goal is to formalize code generation and implementation techniques in the same way that parsing and code generation techniques have been formalized. An experimental code generator based on the reimplementation strategy will be constructed. The code generator will provide a framework for analyzing the costs, applicability, and effectiveness of various implementation techniques. Several common code generation problems will be studied. Code written by experienced programmers and code generated by a conventional optimizing compiler will provide standards of comparison.MIT Artificial Intelligence Laborator

    Increasing Code Completion Accuracy in Pythia Models for Non-Standard Python Libraries

    Get PDF
    Contemporary software development with modern programming languages leverages Integrated Development Environments, smart text editors, and similar tooling with code completion capabilities to increase the efficiency of software developers. Recent code completion research has shown that the combination of natural language processing with recurrent neural networks configured with long short-term memory can improve the accuracy of code completion predictions over prior models. It is well known that the accuracy of predictive systems based on training data is correlated to the quality and the quantity of the training data. This dissertation demonstrates that by expanding the training data set to include more references to specific Python third-party modules, the quality of the predictions increase for those specific Python third-party modules without degrading the quality of predictions of the originally represented modules

    Intelligent software development tools

    Get PDF
    Artificial intelligence can be used to automate various tasks, also within software development. The purpose of this thesis was to research what kind of artificially intelligent software development tools and methods are available, and how they could suit a software development team at Wärtsilä. To illustrate this, a recommendation based on available literature was made on how the Wärtsilä team could possibly take intelligent software development tools into use. Based on the findings, a proof of concept regarding software test automation was developed. First, different types of artificial intelligence were presented, which after a research plan for how to conduct the literature review and the proof of concept was made. To find the most suitable topic for the proof of concept the literature review was first conducted. Focus was set on three areas – artificial intelligence assisted programming, bug handling tools and software testing. Software test automation seemed the most interesting from a Wärtsilä perspective, thus it was selected as the topic for the proof of concept. A prototype of a neural network that analyses C-functions and recommends a unit test based on the similarity to other functions was developed. Conclusions drawn are that artificial intelligence-based methods in software development has potential, but no tool was found that would directly suit Wärtsilä at this point. Either the tools need to be developed further to suit the field of embedded software development, or Wärtsilä could adapt their way of working for some tool to be taken into usage or develop their own solutions. The proof of concept illustrates how an own solution could be an alternative, if developed further in accordance to the improvement suggestions on how to make it more efficient.Tekoälyn avulla voidaan automatisoida monia tehtäviä myös ohjelmistokehityksessä. Tämän diplomityön tarkoitus oli tutkia minkälaisia tekoälypohjaisia työkaluja ja menetelmiä on olemassa ja miten Wärtsilän ohjelmistokehitystiimi voisi näitä hyödyntää. Suositus siitä, miten Wärtsilän tiimi voisi mahdollisesti ottaa tekoälypohjaisia työkaluja käyttöön tehtiin kirjallisuuskatsauksen perusteella. Sen perusteella kehitettiin prototyyppi mikä liittyy ohjelmistotestaukseen automatisointiin. Ensin esiteltiin erilaisia haaroja tekoälystä, jonka jälkeen luotiin tutkimussuunnitelma ja toteutettiin kirjallisuuskatsaus ja prototyypin kehittäminen. Kirjallisuuskatsauksessa keskityttiin kolmeen osa-alueseen – tekoälyllä avustettu koodaus, ohjelmointivirheiden hallinta ja ohjelmistotestaus. Näistä ohjelmistotestaus valittiin prototyypin aiheeksi, koska Wärtsilän tiimin tavoitteiden perusteella se koettiin parhaaksi. Prototyyppinä kehitettiin neuroverkko joka analysoi C-kielessä kirjoitetut funktiot ja suosittelee toisen, samankaltaisen funktion perusteella yksikkötestin testausta varten. Johtopäätöksenä todetaan että tekoälypohjaisilla työkaluilla on potentiaalia, mutta tällä hetkellä ei löydy työkaluja joita voisi suoraan ottaa Wärtsilän käyttöön. Joko työkalut pitäisi kehittää niin, että ne sopisivat myös sulautettujen järjestelmien tuotantoon, tai työtavat pitäisi sopeuttaa työkalujen mukaan, tai kehittää omia ratkaisuja. Työssä esitetään yksi ratkaisu, ja mainitaan parannusehdotuksia, joiden avulla saavutetaan vielä parempi tehokkuus.Artificiell intelligens kan användas för att automatisera olika uppgifter, också inom programmering. Målet med detta examensarbete var att undersöka hurudana intelligenta verktyg och metoder som finns, och hur dessa kunde användas av ett mjukvaruutvecklingsteam på Wärtsilä. Baserat på litteratur gjordes en rekommendation för hur teamet på Wärtsilä eventuellt kunde ta sådana verktyg i bruk. Efter litteraturgranskningen utvecklades en prototyp för automatisk generation av mjukvarutester. Först presenterades olika typer av artificiell intelligens, varefter en forskningsplan gjordes upp för hur litteraturgranskningen skulle genomföras och för hur prototypen skulle utvecklas. För att hitta det mest lämpade användningsområdet för prototypen, krävdes att litteraturgranskningen gjordes först. I den fokuserades det på tre skilda ämnen – programmering, bugghantering och mjukvarutestning assisterade av artificiell intelligens. Intelligent mjukvarutestning verkade mest intressant och lämpligt att utforska mera för Wärtsiläs team. Prototypen som utvecklades var ett neuralt nätverk som analyserar Cfunktioner och rekommenderar ett enhetstest baserat på likheterna till andra funktioner. Slutsatsen av arbetet var att användadet av metoder baserade på artificiell intelligens inom programmering förvisso har potential, men att i detta skede hittades inget verktyg som skulle passa Wärtsilä direkt. Antingen krävs att verktygen utvecklas för att passa industrin, att Wärtsilä anpassar sitt sätt att arbeta eller utvecklar egna intelligenta lösningar. Prototypen som utvecklades illustrerade hur en egenutvecklad lösning kunde vara en möjlighet, om den skulle utvecklas enligt förbättringsförslagen som beskrivs så att den skulle bli mera exakt och effektiv

    Acta Cybernetica : Tomus 7. Fasciculus 2.

    Get PDF

    E/VPL a system for modelling and enacting software processes

    Get PDF
    This research addresses the technical issues involved in specifying and mechanically supporting software development processes and is related to the view of processes as “software”, i.e. as a specifiable and executable entity. Software processes can be described using textual and graphical techniques. This allows interested parties to agree that it reflects the true process, to reason about the process and to identify potential improvements. In designing new or improved processes, an ability to simulate these processes is invaluable. Such simulations, based on the process descriptions, allow one to step through the process tasks in an interactive manner. Thus one can evaluate the effectiveness of processes, assess their behaviour and ask “what-if ’ questions based upon proposed modifications. Simulations with the help of quantitative data, can be run for statistical purposes, where parameters can be varied. Process descriptions can be used as a basis for process automation, as they contain much of the information needed to build a process-centred environment However, many currently available tools, whose origins lie in process definition, allow simulation, but do not generally support real-time execution of process descriptions. This thesis reviews the current state-of-the-art in automated systems that enact software development processes and proposes a system called Enhanced Visual Process Language (E/VPL), which is a graphically-oriented process modelling system. A prototype system has been constructed to implement E/VPL and is evaluated to assess its potential as a process modelling system
    corecore