231 research outputs found
Collaborative Verification-Driven Engineering of Hybrid Systems
Hybrid systems with both discrete and continuous dynamics are an important
model for real-world cyber-physical systems. The key challenge is to ensure
their correct functioning w.r.t. safety requirements. Promising techniques to
ensure safety seem to be model-driven engineering to develop hybrid systems in
a well-defined and traceable manner, and formal verification to prove their
correctness. Their combination forms the vision of verification-driven
engineering. Often, hybrid systems are rather complex in that they require
expertise from many domains (e.g., robotics, control systems, computer science,
software engineering, and mechanical engineering). Moreover, despite the
remarkable progress in automating formal verification of hybrid systems, the
construction of proofs of complex systems often requires nontrivial human
guidance, since hybrid systems verification tools solve undecidable problems.
It is, thus, not uncommon for development and verification teams to consist of
many players with diverse expertise. This paper introduces a
verification-driven engineering toolset that extends our previous work on
hybrid and arithmetic verification with tools for (i) graphical (UML) and
textual modeling of hybrid systems, (ii) exchanging and comparing models and
proofs, and (iii) managing verification tasks. This toolset makes it easier to
tackle large-scale verification tasks
The State of the Art of Automatic Programming
Automaatprogrammeerimine vĂ”i koodi genereerimine on teatud tĂŒĂŒpi arvutiprogrammide loomisviis, kus kood genereeritakse mĂ”ne tööriista abil, mis vĂ”imaldab arendajatel koodi kirjutada kĂ”rgemal abstraktsioonitasemel. Selliste programmide rakendamine tarkvaraarenduse protsessis on hea viis programmeerijate produktiivsuse tĂ”stmiseks, vĂ”imaldades neil keskenduda pigem kĂ€esolevale ĂŒlesandele kui implementatsiooni detailidele. Senises teaduskirjanduses on vaadeldud konkreetseid lĂ€henemisi vĂ”i meetodeid eraldi. VĂ€ga vĂ€hesed uurimustööd vaatlevad aga kogu valdkonna viimast taset. KĂ€esolevas töös kĂ€sitletakse automaatprogrammeerimist olemasoleva kirjanduse sĂŒstemaatilise kirjandusĂŒlevaate meetodi abil. Töö teeb ĂŒlevaate teemaga seonduvatest algoritmidest, probleemidest ning uurmisvaldkonna avatud uurimiskĂŒsimustest ning vĂ”rdleb valdkonna hetketaset praktika hetketasemega. Vaaldeldud 37 asjakohasest uuringust tegelesid 19 automaatprogrammeerimise ĂŒldise mÀÀratlemise ja alateemadega. KolmkĂŒmmend uuringut pakkusid vĂ€lja konkreetse algoritmi vĂ”i lĂ€henemisviisi. Esitatud tehnikatest rakendati 2 praktikas. Viimasel ajal on automaatprogrammerimise fookus nihkunud programmide sĂŒnteesilt induktiivsele programmeerimisele, mille on pĂ”hjustanud lĂ€bimurded tehisintellekti valdkonnas. MĂ”istete ja alateemade mÀÀratlus on teadlaste vahel ĂŒhtne. Ăigete spetsifikatsioonide sĂ”nastamine ja piisava teabe andmine automatiseerimiseks on endiselt lahtine uurimiskĂŒsimus.Automatic programming or code generation is a type of computer programming where the code is generated using some tools allowing developers to write code at the higher level of abstraction. Implementing these types of programs into the software development process is a good way to boost programmersâ performance by focusing on the task at hand rather than implementation details. Current literature on the subject reviews single approach or method. Very few of them are reviewing state of the art in general. This paper reviews the state of the art of automatic programming by overviewing the existing literature on the topic using systematic literature review method. The paper overviews approaches and algorithms of the topic, examines issues and open questions in the field and compares the state of the art to the state of the practice. Of 37 relevant studies, 19 addressed general definitions and subtopics of automatic programming. 30 presented specific algorithms or approaches. 2 of proposed techniques were implemented in practice. Currently, the focus of automatic programming shifted from program synthesis to inductive programming, caused by a breakthrough in artificial intelligence. Definition of the term and subtopics is consistent between scholars. However, formulating correct specification and providing sufficient information for automation is still an open research question
Reasoned modelling critics: turning failed proofs into modelling guidance
The activities of formal modelling and reasoning are closely related. But while the rigour of building formal models brings significant benefits, formal reasoning remains a major barrier to the wider acceptance of formalism within design. Here we propose reasoned modelling critics â an approach which aims to abstract away from the complexities of low-level proof obligations, and provide high-level modelling guidance to designers when proofs fail. Inspired by proof planning critics, the technique combines proof-failure analysis with modelling heuristics. Here, we present the details of our proposal, implement them in a prototype and outline future plans
Flexible Views for View-based Model-driven Development
Modern software development faces the problem of fragmentation of information across heterogeneous artefacts in different modelling and programming languages. In this dissertation, the Vitruvius approach for view-based engineering is presented. Flexible views offer a compact definition of user-specific views on software systems, and can be defined the novel ModelJoin language. The process is supported by a change metamodel for metamodel evolution and change impact analysis
An application of augmented MDA for the extended healthcare enterprise
Mobile health systems extend the enterprise computing system of the healthcare provider by bringing services to the patient any time and anywhere. We propose a methodology for the development of such extended enterprise computing systems which applies a model-driven design and development approach augmented with formal validation and verification to address quality and correctness and to support model transformation. At the University of Twente we develop context aware m-health systems based on Body Area Networks (BANs). A set of deployed BANs are supported by a server. We refer to this distributed system as a BAN System. Development of such distributed m-health systems requires a sound software engineering approach and this is what we target with the proposed methodology. The methodology is illustrated with reference to modelling activities targeted at real implementations. BAN implementations are being trialled in a number of clinical settings including epilepsy management and management of chronic pain
Ontology-based methodology for error detection in software design
Improving the quality of a software design with the goal of producing a high quality software product continues to grow in importance due to the costs that result from poorly designed software. It is commonly accepted that multiple design views are required in order to clearly specify the required functionality of software. There is universal agreement as to the importance of identifying inconsistencies early in the software design process, but the challenge is how to reconcile the representations of the diverse views to ensure consistency. To address the problem of inconsistencies that occur across multiple design views, this research introduces the Methodology for Objects to Agents (MOA). MOA utilizes a new ontology, the Ontology for Software Specification and Design (OSSD), as a common information model to integrate specification knowledge and design knowledge in order to facilitate the interoperability of formal requirements modeling tools and design tools, with the end goal of detecting inconsistency errors in a design. The methodology, which transforms designs represented using the Unified Modeling Language (UML) into representations written in formal agent-oriented modeling languages, integrates object-oriented concepts and agent-oriented concepts in order to take advantage of the benefits that both approaches can provide. The OSSD model is a hierarchical decomposition of software development concepts, including ontological constructs of objects, attributes, behavior, relations, states, transitions, goals, constraints, and plans. The methodology includes a consistency checking process that defines a consistency framework and an Inter-View Inconsistency Detection technique. MOA enhances software design quality by integrating multiple software design views, integrating object-oriented and agent-oriented concepts, and defining an error detection method that associates rules with ontological properties
Pattern-based refactoring in model-driven engineering
LâingĂ©nierie dirigĂ©e par les modĂšles (IDM) est un paradigme du gĂ©nie logiciel qui utilise les
modĂšles comme concepts de premier ordre Ă partir desquels la validation, le code, les tests
et la documentation sont dérivés. Ce paradigme met en jeu divers artefacts tels que les
modÚles, les méta-modÚles ou les programmes de transformation des modÚles. Dans un
contexte industriel, ces artefacts sont de plus en plus complexes. En particulier, leur
maintenance demande beaucoup de temps et de ressources. Afin de réduire la complexité
des artefacts et le coût de leur maintenance, de nombreux chercheurs se sont intéressés au
refactoring de ces artefacts pour améliorer leur qualité.
Dans cette thĂšse, nous proposons dâĂ©tudier le refactoring dans lâIDM dans sa
globalité, par son application à ces différents artefacts. Dans un premier temps, nous
utilisons des patrons de conception spécifiques, comme une connaissance a priori, appliqués
aux transformations de modÚles comme un véhicule pour le refactoring. Nous procédons
dâabord par une phase de dĂ©tection des patrons de conception avec diffĂ©rentes formes et
différents niveaux de complétude. Les occurrences détectées forment ainsi des opportunités
de refactoring qui seront exploitées pour aboutir à des formes plus souhaitables et/ou plus
complĂštes de ces patrons de conceptions.
Dans le cas dâabsence de connaissance a priori, comme les patrons de conception,
nous proposons une approche basée sur la programmation génétique, pour apprendre des
rÚgles de transformations, capables de détecter des opportunités de refactoring et de les
corriger. Comme alternative Ă la connaissance disponible a priori, lâapproche utilise des
exemples de paires dâartefacts dâavant et dâaprĂšs le refactoring, pour ainsi apprendre les
rĂšgles de refactoring. Nous illustrons cette approche sur le refactoring de modĂšles.Model-Driven Engineering (MDE) is a software engineering paradigm that uses models as
first-class concepts from which validation, code, testing, and documentation are derived.
This paradigm involves various artifacts such as models, meta-models, or model
transformation programs. In an industrial context, these artifacts are increasingly complex.
In particular, their maintenance is time and resources consuming. In order to reduce the
complexity of artifacts and the cost of their maintenance, many researchers have been
interested in refactoring these artifacts to improve their quality.
In this thesis, we propose to study refactoring in MDE holistically, by its application
to these different artifacts. First, we use specific design patterns, as an example of prior
knowledge, applied to model transformations to enable refactoring. We first proceed with a
detecting phase of design patterns, with different forms and levels of completeness. The
detected occurrences thus form refactoring opportunities that will be exploited to implement
more desirable and/or more complete forms of these design patterns.
In the absence of prior knowledge, such as design patterns, we propose an approach
based on genetic programming, to learn transformation rules, capable of detecting
refactoring opportunities and correcting them. As an alternative to prior knowledge, our
approach uses examples of pairs of artifacts before and after refactoring, in order to learn
refactoring rules. We illustrate this approach on model refactoring
- âŠ