13 research outputs found
Recommended from our members
SMILE/ MARVEL: Two Approaches to Knowledge-Based Programming Environments
This technical report consists of three related papers in the area of intelligent assistance for software development and maintenance. Intelligent Assistance without Artificial Intelligence describes SMILE, a software engineering environment that assists teams of programmers without using AI technology. An Architecture for Intelligent Assistance in Software Development presents an AI approach to generalizing the capabilities of SMILE. Granularity Issues in a Knowledge-Based Programming Environment briefly describes MARVEL, an intelligent assistant based on this AI approach, and compares it to SMILE
Recommended from our members
Intelligent Assistance for Software Development and Maintenance
This article presents an architecture for controlled automation in software development environments.
Controlled automation enables environments to behave as intelligent assistants by
answering questions about the software project and automatically invoking tools to further the
users’ goal of producing a working software system. The discussion of the architecture focuses
primarily on the programming stages of development and maintenance. An environment assists
programmers by understanding the technical aspects of the evolving software system and by actively
participating in the programming process. The architecture supports these capabilities by
providing two kinds of knowledge representation: (1) the knowledge specific to a particular
software project is represented as entities in a database and (2) the knowledge that models programming
activities in general is represented as rules amenable to forward and backward chaining.
These rules enable an environment to automatically carry out each activity sometime between
when its conditions are satisfied and its results are required. The rules are grouped into
collections called strategies. One or more specific strategies are employed according to each
user’s current context and goals, and determine when forward or backward chaining should be
applied and which rules are considered during chaining. This architecture has been validated
through a prototype implementation that models the capabilities of an existing environment that
supports automation
Formalizing the Expertise of the Assembly Language Programmer
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
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
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
Recommended from our members
Towards an Intelligent Debugging System for Pascal Programs: On the Theory and Algorithms of Plan Recognition in Rich's Plan Calculus
This thesis presents work in progress on building an intelligent general purpose, domain-free debugging system for Pascal programs. This system (IDS) is based on Rich’s surface plan/plan calculus graph formalisms, and this thesis develops theory and algorithms for performing program understanding within this framework.
This thesis is in three parts, the first part describes why an ability to do both plan recognition and general purpose reasoning is essential for debugging programs.
The second part of this thesis describes the plan calculus and shows how it offers the ability to combine both general purpose reasoning, and (graph-based) plan recognition. It then goes on to present a new polynomial time algorithm (a generalisation of traditional chart parsing for string grammars) for doing bottom-up, or top-down, analysis of surface plans. This algorithm is presented in the framework of restricted structure sharing flow graph grammars developed for this purpose. To justify the use of such grammars this part of the thesis develops the theory of deterministic operations in the plan calculus, and also develops the theory of generalised control flow environments to justify the way control flow information is handled.
The final part gives an overview of IDS, and modifies the above algorithm to cope with various parts of the plan calculus that do not exactly fit into the framework we have developed. Thus this thesis gives a complete account of how to perform plan recognition in Rich’s framework. This part of the thesis also describes the translation process from Pascal to surface plans, and presents a technique for translating plans expressed in Rich’s notation, into suitable rules for the parser to use. Finally it presents some preliminary work on exactly how a debugging system using these techniques might go about locating and fixing bugs in programs
E/VPL a system for modelling and enacting software processes
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