Spelling suggestions: "subject:"domainspecific languages"" "subject:"domainhspecific languages""
1 |
Language Evolution to Reduce Code CloningNovakovic, Marko January 2013 (has links)
Domain-specific languages can significantly speed up the development of software applications. However, it usually takes a few iterations of the language design before it achieves such power. At the same time, many domains tend to evolve quite often today, which implies that domain-specific languages have to evolve accordingly. Thus, being able to evolve a language in a painless manner is crucial. Unfortunately, current state-of-the-art research does not provide enough answers on how to efficiently evolve domain-specific languages.
We present an approach to evolving a language in order to reduce the amount of code cloning it introduces. The approach specifically targets those languages whose design causes users to create many duplicated code segments.
We target domain-specific languages as they tend to be more challenging to evolve due to their specifics, but the approach may be applicable to general purpose programming languages as well. The approach was tested on a real-world domain-specific language that is used in a financial domain. We proposed three improvements and current users helped us evaluate them. We found that the proposed improvements would reduce code cloning, which provides evidence that the approach can be used in a real-world environment.
Furthermore, this work provides a solid basis for further research in the area of application of code cloning detection results. In particular, code cloning detection results and the ideas we presented show potential to be extended and used to facilitate domain analysis.
|
2 |
FLECS: A Data-Driven Framework for Rapid Protocol PrototypingBeg, Mirza Omer January 2007 (has links)
Flecs is a framework for facilitating rapid implementation of communication protocols.
Forwarding functionality of protocols can be modeled as a combination of packet processing components called abstract switching elements or Ases. The design of Ases is constrained by the axioms of communication which enables us to formally analyze forwarding mechanisms in communication networks. Ases can be connected in a directed graph to define complex forwarding functionality. We have developed Flecs on top of the Click modular router. The compilers in the Flecs framework translate protocol specifications into its Click implementation. We claim that the use of our framework reduces the implementation time by allowing the programmer to specify Ases and the forwarding configuration in a high-level meta-language and produces reasonably efficient implementations. It allows rapid prototyping through configuration, as well as
specialized implementation of performance-critical functionality through inheritance.
|
3 |
FLECS: A Data-Driven Framework for Rapid Protocol PrototypingBeg, Mirza Omer January 2007 (has links)
Flecs is a framework for facilitating rapid implementation of communication protocols.
Forwarding functionality of protocols can be modeled as a combination of packet processing components called abstract switching elements or Ases. The design of Ases is constrained by the axioms of communication which enables us to formally analyze forwarding mechanisms in communication networks. Ases can be connected in a directed graph to define complex forwarding functionality. We have developed Flecs on top of the Click modular router. The compilers in the Flecs framework translate protocol specifications into its Click implementation. We claim that the use of our framework reduces the implementation time by allowing the programmer to specify Ases and the forwarding configuration in a high-level meta-language and produces reasonably efficient implementations. It allows rapid prototyping through configuration, as well as
specialized implementation of performance-critical functionality through inheritance.
|
4 |
Language Evolution to Reduce Code CloningNovakovic, Marko January 2013 (has links)
Domain-specific languages can significantly speed up the development of software applications. However, it usually takes a few iterations of the language design before it achieves such power. At the same time, many domains tend to evolve quite often today, which implies that domain-specific languages have to evolve accordingly. Thus, being able to evolve a language in a painless manner is crucial. Unfortunately, current state-of-the-art research does not provide enough answers on how to efficiently evolve domain-specific languages.
We present an approach to evolving a language in order to reduce the amount of code cloning it introduces. The approach specifically targets those languages whose design causes users to create many duplicated code segments.
We target domain-specific languages as they tend to be more challenging to evolve due to their specifics, but the approach may be applicable to general purpose programming languages as well. The approach was tested on a real-world domain-specific language that is used in a financial domain. We proposed three improvements and current users helped us evaluate them. We found that the proposed improvements would reduce code cloning, which provides evidence that the approach can be used in a real-world environment.
Furthermore, this work provides a solid basis for further research in the area of application of code cloning detection results. In particular, code cloning detection results and the ideas we presented show potential to be extended and used to facilitate domain analysis.
|
5 |
On the construction of reliable device driversRyzhyk, Leonid, Computer Science & Engineering, Faculty of Engineering, UNSW January 2009 (has links)
This dissertation is dedicated to the problem of device driver reliability. Software defects in device drivers constitute the biggest source of failure in operating systems, causing significant damage through downtime and data loss. Previous research on driver reliability has concentrated on detecting and mitigating defects in existing drivers using static analysis or runtime isolation. In contrast, this dissertation presents an approach to reducing the number of defects through an improved device driver architecture and development process. In analysing factors that contribute to driver complexity and induce errors, I show that a large proportion of errors are due to two key shortcomings in the device-driver architecture enforced by current operating systems: poorly-defined communication protocols between drivers and the operating system, which confuse developers and lead to protocol violations, and a multithreaded model of computation, which leads to numerous race conditions and deadlocks. To address the first shortcoming, I propose to describe driver protocols using a formal, state-machine based, language, which avoids confusion and ambiguity and helps driver writers implement correct behaviour. The second issue is addressed by abandoning multithreading in drivers in favour of a more disciplined event-driven model of computation, which eliminates most concurrency-related faults. These improvements reduce the number of defects without radically changing the way drivers are developed. In order to further reduce the impact of human error on driver reliability, I propose to automate the driver development process by synthesising the implementation of a driver from the combination of three formal specifications: a device-class specification that describes common properties of a class of similar devices, a device specification that describes a concrete representative of the class, and an operating system interface specification that describes the communication protocol between the driver and the operating system. This approach allows those with the most appropriate skills and knowledge to develop specifications: device specifications are developed by device manufacturers, operating system specifications by the operating system designers. The device-class specification is the only one that requires understanding of both hardware and software-related issues. However writing such a specification is a one-off task that only needs to be completed once for a class of devices. This approach also facilitates the reuse of specifications: a single operating-system specification can be combined with many device specifications to synthesise drivers for multiple devices. Likewise, since device specifications are independent of any operating system, drivers for different systems can be synthesised from a single device specification. As a result, the likelihood of errors due to incorrect specifications is reduced because these specifications are shared by many drivers. I demonstrate that the proposed techniques can be incorporated into existing operating systems without sacrificing performance or functionality by presenting their implementation in Linux. This implementation allows drivers developed using these techniques to coexist with conventional Linux drivers, providing a gradual migration path to more reliable drivers.
|
6 |
Improving robustness of ITER maintenance schedulesSchoen, Pepijn January 2013 (has links)
In the experimental ITER fusion reactor, currently under construction in Cadarache, France, components close to the plasma will get activated and contaminated over time. Therefore, these components will need to be maintained remotely in a so called hot cell facility. The maintenance will be executed according to step-by-step procedures, with every procedure meticulously validated and formally described in an Operation Sequence Description (OSD). To support formal validation, OSDs are to be captured in an ITER-dedicated Structured Language (SL), a form of domain specific programming language. The Remote Handling Study Centre (RHSC), located at FOM institute DIFFER, Nieuwegein, The Netherlands, has an ITER Remote Handling Control Room representative setup which connects to a virtual ITER Hot Cell back-end environment. In this setup, Remote Handling maintenance scenarios and procedures can be tested under realistic conditions. In this thesis, a Structured Language for ITER maintenance is proposed, implemented as a prototype to capture several realistic operational sequences from existing projects, and integrated in the RHSC workflow. The Structured Language programs are converted to schedulable tasks, by inferring their resource usage and time duration from the structured task descriptions. These tasks are then scheduled using a proposed set of scheduling heuristics. The resulting schedule is subsequently submitted to many simulated executions, with random variation in the execution time of individual tasks. The variation that is applied in the execution time, is based on representative task execution times was measured for a recent and repetitive set of maintenance tasks performed at JET. It is shown that inserting a certain amount of slack in the schedule improves its robustness. ITER maintenance scheduling should account for uncertainty by including slack in the resulting planning.
|
7 |
Supporting Software Development Tools with An Awareness of Transparent Program TransformationsSong, Myoungkyu 13 June 2013 (has links)
Programs written in managed languages are compiled to a platform-independent intermediate representation, such as Java bytecode. The relative high level of Java bytecode has engendered a widespread practice of changing the bytecode directly, without modifying the maintained version of the source code. This practice, called bytecode engineering or enhancement, has become indispensable in transparently introducing various concerns, including persistence, distribution, and security. For example, transparent persistence architectures help avoid the entanglement of business and persistence logic in the source code by changing the bytecode directly to synchronize objects with stable storage. With functionality added directly at the bytecode level, the source code reflects only partial semantics of the program. Specifically, the programmer can neither ascertain the program's runtime behavior by browsing its source code, nor map the runtime behavior back to the original source code.
This research presents an approach that improves the utility of source-level programming tools by providing enhancement specifications written in a domain-specific language. By interpreting the specifications, a source-level programming tool can gain an awareness of the bytecode enhancements and improve its precision and usability. We demonstrate the applicability of our approach by making a source code editor and a symbolic debugger enhancements-aware. / Master of Science
|
8 |
Domain-specific languages for massively parallel processorsCartey, Luke January 2013 (has links)
Massively Parallel Processors provide significantly higher peak performance figures than other forms of general purpose processors. However, this comes at a cost to the developer, who needs to deal with an increasingly complicated piece of hardware, for which applications need to be tweaked and optimised to achieve high performance. Domain-specific languages have been proposed as a potential solution to this complexity problem: generating GPU applications from high-level, declarative specifications. This thesis explores two related ideas: firstly, is it practical to synthesise DSLs from high-level languages, and secondly, how can we simplify the creation of such DSLs? This thesis proposes a novel approach whereby rather than considering single domains, we consider collections of collaborative domains in order to share common features and thus reduce the cost of development. We achieve this using a DSLs-within-a-DSL approach: a custom designed host language, into which extensions may be embedded. In order to ground our approach in a real case-study, we propose, design and develop a DSLs-within-a-DSL framework for bioinformatics. We use a restricted recursive functional language as the host language, and embed new DSLs into this language. Importantly, we describe how we can use a combination of novel and adopted automatic parallelisation techniques to synthesise a massively-parallel program for a GPU. This automatic parallelisation, achieved through the discovery of a schedule, and program synthesis techniques using the polyhedral model, interacts productively with our embedded extensions. To further simplify development, we provide a series of customisable heuristics for defining GPU parameters such as the block size (number of threads), grid size and location in the memory hierarchy of data-structures. This encapsulates GPU expertise within the compiler itself. We finally demonstrate that the total combination of these techniques results in applications with competitive performance, at much lower development cost and greater flexibility than comparable hand-coded applications.
|
9 |
An insider misuse threat detection and prediction languageMagklaras, Georgios Vasilios January 2012 (has links)
Numerous studies indicate that amongst the various types of security threats, the problem of insider misuse of IT systems can have serious consequences for the health of computing infrastructures. Although incidents of external origin are also dangerous, the insider IT misuse problem is difficult to address for a number of reasons. A fundamental reason that makes the problem mitigation difficult relates to the level of trust legitimate users possess inside the organization. The trust factor makes it difficult to detect threats originating from the actions and credentials of individual users. An equally important difficulty in the process of mitigating insider IT threats is based on the variability of the problem. The nature of Insider IT misuse varies amongst organizations. Hence, the problem of expressing what constitutes a threat, as well as the process of detecting and predicting it are non trivial tasks that add up to the multi- factorial nature of insider IT misuse. This thesis is concerned with the process of systematizing the specification of insider threats, focusing on their system-level detection and prediction. The design of suitable user audit mechanisms and semantics form a Domain Specific Language to detect and predict insider misuse incidents. As a result, the thesis proposes in detail ways to construct standardized descriptions (signatures) of insider threat incidents, as means of aiding researchers and IT system experts mitigate the problem of insider IT misuse. The produced audit engine (LUARM – Logging User Actions in Relational Mode) and the Insider Threat Prediction and Specification Language (ITPSL) are two utilities that can be added to the IT insider misuse mitigation arsenal. LUARM is a novel audit engine designed specifically to address the needs of monitoring insider actions. These needs cannot be met by traditional open source audit utilities. ITPSL is an XML based markup that can standardize the description of incidents and threats and thus make use of the LUARM audit data. Its novelty lies on the fact that it can be used to detect as well as predict instances of threats, a task that has not been achieved to this date by a domain specific language to address threats. The research project evaluated the produced language using a cyber-misuse experiment approach derived from real world misuse incident data. The results of the experiment showed that the ITPSL and its associated audit engine LUARM provide a good foundation for insider threat specification and prediction. Some language deficiencies relate to the fact that the insider threat specification process requires a good knowledge of the software applications used in a computer system. As the language is easily expandable, future developments to improve the language towards this direction are suggested.
|
10 |
Des langages de modélisation dédiés aux environnements de méta-modélisation dédiés / From domain specific modeling languages to domain specific frameworksTemate Ngaffo, Suzy Hélène Germaine 12 November 2012 (has links)
Les langages dédiés (DSL) sont de plus en plus utilisés parce qu’ils permettent aux utilisateurs qui ne sont pas des experts en programmation d’exprimer des solutions avec des langages simples qui capturent l’expertise de leur domaine. C’est encore plus vrai pour les langages dédiés graphiques (DSML) qui ont un niveau d’abstraction plus élevé que les langages dédiés de programmation. Implémenter un DSML revient généralement à fournir un éditeur dédié qui permette aux utilisateurs de manipuler les abstractions de leur domaine (d’instancier le langage). Les expériences ont montré que l’implémentation d’un tel éditeur dédié graphique est coûteuse en termes de temps et de ressources humaines. Nous constatons que la plupart des plates-formes permettant de construire ce type d’éditeur (EMF/GMF, DSL Tools, Obeo Designer, ...) sont génériques. Elles essayent d’adresser le maximum de domaines possibles, ce qui les rend complexes et inadaptées à des cas d’utilisation spécifiques. Si la spécialisation aux domaines a été un succès pour les langages, pourquoi ne pas l’appliquer aux plates-formes de construction d’éditeurs ? Cela reviendrait à concevoir pour un domaine donné, une plate-forme permettant de construire facilement des éditeurs dédiés pour ce domaine. Cette plate-forme n’aurait pas les défauts d’une plate-forme totalement générique parce qu’elle serait restreinte au domaine ciblé. Ce type de plate-forme spécifique à un domaine, nous l’appelons Domain Specific Modeling Framework (DSMF). Le principal inconvénient d’un DSMF est qu’on ne peut l’utiliser que dans le cadre du domaine pour lequel il a été conçu. Cela implique qu’il faille construire un DSMF par domaine et c’est une solution coûteuse. Toutefois, nous pensons que cette approche sur les DSMF peut être généralisée afin d’adresser un grand nombre de domaines. Cette thèse a donc consisté à concevoir et à implanter un environnement qui permet de construire des DSMF de façon modulaire. / Domain Specific Languages (DSLs) are increasingly used in many fields as they allow users to express strategies without being programming experts. This is particularly true for graphical DSLs called Domain Specific Modeling Languages (DSMLs) which are more intuitive than programming DSLs. Implementing a DSML means providing a specific editor which allow users to express the language’s constructions (instantiate the language). Many experiments showed that implementing specific graphical editors is much manpower consuming. Our analysis is that most frameworks for building such editors (e.g. EMF/GMF) are generic, i.e. aim at fulfilling the requirements of any field, which leads to increased complexity and costs a lot in terms of development time. If domain specialization was successful for languages, why don’t we apply it to frameworks ? Specializing such a framework according to the constraints of a domain would allow keeping the definition of a specific editor simple, while fulfilling the requirements of the considered domain. Domain specific frameworks for building DSML editors in specific application fields is a promising approach. Such a framework does not have the limits of generic frameworks because it is restricted to a particular domain. It is more intuitive and simpler to use as it only proposes abstraction of the domain for building DSMLs. We call this type of framework Domain Specific Modeling Framework (DSMF). For example, if we consider the component domain, there are several DSMLs in this domain which share the same layout requirements. We implemented a DSMF for this family of DSMLs. This DSMF is specialized according to the constraints and layout requirements of the component domain (Components, connectors, Bindings, . . .). This specialization allows simple and rapid generation of specific editors devoted to component-based architectures. The principal drawback of a DSMF is its restricted scope to one specific domain. This approach requires to develop one DSMF per domain and the development cost can be significant. A solution may be to generalise the DSMF approach in order to address many application fields. We designed a Generic framework for building DSMFs in a modular way. This thesis is based on the implementation of this framework.
|
Page generated in 0.068 seconds