13 research outputs found

    1 Sharing Bad Practices in Design to Improve the Use of Patterns

    Get PDF
    To ensure the use of good analysis and design practices and an easier maintenance of software, analysts and designers may use patterns. To help them, we propose models inspection in order to detect instantiations of “spoiled pattern ” and models reworking through the use of the design patterns. As a design pattern allows the instantiation of the best known solution for a given problem, a “spoiled pattern ” allows the instantiation of alternative solutions for the same problem: requirements are respected, but architecture is improvable. We have collected a set of alternative solutions and deduced the corresponding spoiled patterns. We have defined a first catalog of these improvable practices from several experiments with students. To overcome the limits imposed by this method (restricted public, limited problems and tiresome validation process), we would like to open this problematic to the expert community. Therefore, we propose a collaborative website sharing bad practices in object oriented design to improve the use of patterns

    Towards using intelligent techniques to assist software specialists in their tasks

    Full text link
    L’automatisation et l’intelligence constituent des prĂ©occupations majeures dans le domaine de l’Informatique. Avec l’évolution accrue de l’Intelligence Artificielle, les chercheurs et l’industrie se sont orientĂ©s vers l’utilisation des modĂšles d’apprentissage automatique et d’apprentissage profond pour optimiser les tĂąches, automatiser les pipelines et construire des systĂšmes intelligents. Les grandes capacitĂ©s de l’Intelligence Artificielle ont rendu possible d’imiter et mĂȘme surpasser l’intelligence humaine dans certains cas aussi bien que d’automatiser les tĂąches manuelles tout en augmentant la prĂ©cision, la qualitĂ© et l’efficacitĂ©. En fait, l’accomplissement de tĂąches informatiques nĂ©cessite des connaissances, une expertise et des compĂ©tences bien spĂ©cifiques au domaine. GrĂące aux puissantes capacitĂ©s de l’intelligence artificielle, nous pouvons dĂ©duire ces connaissances en utilisant des techniques d’apprentissage automatique et profond appliquĂ©es Ă  des donnĂ©es historiques reprĂ©sentant des expĂ©riences antĂ©rieures. Ceci permettra, Ă©ventuellement, d’allĂ©ger le fardeau des spĂ©cialistes logiciel et de dĂ©brider toute la puissance de l’intelligence humaine. Par consĂ©quent, libĂ©rer les spĂ©cialistes de la corvĂ©e et des tĂąches ordinaires leurs permettra, certainement, de consacrer plus du temps Ă  des activitĂ©s plus prĂ©cieuses. En particulier, l’IngĂ©nierie dirigĂ©e par les modĂšles est un sous-domaine de l’informatique qui vise Ă  Ă©lever le niveau d’abstraction des langages, d’automatiser la production des applications et de se concentrer davantage sur les spĂ©cificitĂ©s du domaine. Ceci permet de dĂ©placer l’effort mis sur l’implĂ©mentation vers un niveau plus Ă©levĂ© axĂ© sur la conception, la prise de dĂ©cision. Ainsi, ceci permet d’augmenter la qualitĂ©, l’efficacitĂ© et productivitĂ© de la crĂ©ation des applications. La conception des mĂ©tamodĂšles est une tĂąche primordiale dans l’ingĂ©nierie dirigĂ©e par les modĂšles. Par consĂ©quent, il est important de maintenir une bonne qualitĂ© des mĂ©tamodĂšles Ă©tant donnĂ© qu’ils constituent un artĂ©fact primaire et fondamental. Les mauvais choix de conception, ainsi que les changements conceptuels rĂ©pĂ©titifs dus Ă  l’évolution permanente des exigences, pourraient dĂ©grader la qualitĂ© du mĂ©tamodĂšle. En effet, l’accumulation de mauvais choix de conception et la dĂ©gradation de la qualitĂ© pourraient entraĂźner des rĂ©sultats nĂ©gatifs sur le long terme. Ainsi, la restructuration des mĂ©tamodĂšles est une tĂąche importante qui vise Ă  amĂ©liorer et Ă  maintenir une bonne qualitĂ© des mĂ©tamodĂšles en termes de maintenabilitĂ©, rĂ©utilisabilitĂ© et extensibilitĂ©, etc. De plus, la tĂąche de restructuration des mĂ©tamodĂšles est dĂ©licate et compliquĂ©e, notamment, lorsqu’il s’agit de grands modĂšles. De lĂ , automatiser ou encore assister les architectes dans cette tĂąche est trĂšs bĂ©nĂ©fique et avantageux. Par consĂ©quent, les architectes de mĂ©tamodĂšles pourraient se concentrer sur des tĂąches plus prĂ©cieuses qui nĂ©cessitent de la crĂ©ativitĂ©, de l’intuition et de l’intelligence humaine. Dans ce mĂ©moire, nous proposons une cartographie des tĂąches qui pourraient ĂȘtre automatisĂ©es ou bien amĂ©liorĂ©es moyennant des techniques d’intelligence artificielle. Ensuite, nous sĂ©lectionnons la tĂąche de mĂ©tamodĂ©lisation et nous essayons d’automatiser le processus de refactoring des mĂ©tamodĂšles. A cet Ă©gard, nous proposons deux approches diffĂ©rentes: une premiĂšre approche qui consiste Ă  utiliser un algorithme gĂ©nĂ©tique pour optimiser des critĂšres de qualitĂ© et recommander des solutions de refactoring, et une seconde approche qui consiste Ă  dĂ©finir une spĂ©cification d’un mĂ©tamodĂšle en entrĂ©e, encoder les attributs de qualitĂ© et l’absence des design smells comme un ensemble de contraintes et les satisfaire en utilisant Alloy.Automation and intelligence constitute a major preoccupation in the field of software engineering. With the great evolution of Artificial Intelligence, researchers and industry were steered to the use of Machine Learning and Deep Learning models to optimize tasks, automate pipelines, and build intelligent systems. The big capabilities of Artificial Intelligence make it possible to imitate and even outperform human intelligence in some cases as well as to automate manual tasks while rising accuracy, quality, and efficiency. In fact, accomplishing software-related tasks requires specific knowledge and skills. Thanks to the powerful capabilities of Artificial Intelligence, we could infer that expertise from historical experience using machine learning techniques. This would alleviate the burden on software specialists and allow them to focus on valuable tasks. In particular, Model-Driven Engineering is an evolving field that aims to raise the abstraction level of languages and to focus more on domain specificities. This allows shifting the effort put on the implementation and low-level programming to a higher point of view focused on design, architecture, and decision making. Thereby, this will increase the efficiency and productivity of creating applications. For its part, the design of metamodels is a substantial task in Model-Driven Engineering. Accordingly, it is important to maintain a high-level quality of metamodels because they constitute a primary and fundamental artifact. However, the bad design choices as well as the repetitive design modifications, due to the evolution of requirements, could deteriorate the quality of the metamodel. The accumulation of bad design choices and quality degradation could imply negative outcomes in the long term. Thus, refactoring metamodels is a very important task. It aims to improve and maintain good quality characteristics of metamodels such as maintainability, reusability, extendibility, etc. Moreover, the refactoring task of metamodels is complex, especially, when dealing with large designs. Therefore, automating and assisting architects in this task is advantageous since they could focus on more valuable tasks that require human intuition. In this thesis, we propose a cartography of the potential tasks that we could either automate or improve using Artificial Intelligence techniques. Then, we select the metamodeling task and we tackle the problem of metamodel refactoring. We suggest two different approaches: A first approach that consists of using a genetic algorithm to optimize set quality attributes and recommend candidate metamodel refactoring solutions. A second approach based on mathematical logic that consists of defining the specification of an input metamodel, encoding the quality attributes and the absence of smells as a set of constraints and finally satisfying these constraints using Alloy

    Handling High-Level Model Changes Using Search Based Software Engineering

    Full text link
    Model-Driven Engineering (MDE) considers models as first-class artifacts during the software lifecycle. The number of available tools, techniques, and approaches for MDE is increasing as its use gains traction in driving quality, and controlling cost in evolution of large software systems. Software models, defined as code abstractions, are iteratively refined, restructured, and evolved. This is due to many reasons such as fixing defects in design, reflecting changes in requirements, and modifying a design to enhance existing features. In this work, we focus on four main problems related to the evolution of software models: 1) the detection of applied model changes, 2) merging parallel evolved models, 3) detection of design defects in merged model, and 4) the recommendation of new changes to fix defects in software models. Regarding the first contribution, a-posteriori multi-objective change detection approach has been proposed for evolved models. The changes are expressed in terms of atomic and composite refactoring operations. The majority of existing approaches detects atomic changes but do not adequately address composite changes which mask atomic operations in intermediate models. For the second contribution, several approaches exist to construct a merged model by incorporating all non-conflicting operations of evolved models. Conflicts arise when the application of one operation disables the applicability of another one. The essence of the problem is to identify and prioritize conflicting operations based on importance and context – a gap in existing approaches. This work proposes a multi-objective formulation of model merging that aims to maximize the number of successfully applied merged operations. For the third and fourth contributions, the majority of existing works focuses on refactoring at source code level, and does not exploit the benefits of software design optimization at model level. However, refactoring at model level is inherently more challenging due to difficulty in assessing the potential impact on structural and behavioral features of the software system. This requires analysis of class and activity diagrams to appraise the overall system quality, feasibility, and inter-diagram consistency. This work focuses on designing, implementing, and evaluating a multi-objective refactoring framework for detection and fixing of design defects in software models.Ph.D.Information Systems Engineering, College of Engineering and Computer ScienceUniversity of Michigan-Dearbornhttp://deepblue.lib.umich.edu/bitstream/2027.42/136077/1/Usman Mansoor Final.pdfDescription of Usman Mansoor Final.pdf : Dissertatio

    Pattern-based model transformation: a metamodel-based approach to model evolution

    Get PDF
    Software systems continue to grow in complexity at a rapid pace, creating systems that are complex to build and evolve. The problems that accompany changes in requirements, system upgrades, and error correction produce a desire for software evolution methods that increase the efficiency and effectiveness of adapting complex software to changes. As software systems evolve, design models must be modified to accommodate the required changes. Techniques that control the changes to models in a systematic manner are a key to model evolution. A process that improves the ability to effectively modify a design, thereby enhancing design qualities, supports the need for improved model evolution techniques. Design patterns are common forms of reusable design experiences. They offer solutions to common design problems, reduce complexity by naming and defining abstractions, and provide a foundation for building reusable software. Well-known pattern solutions are expressed in a natural language as fragments of code which are sometimes difficult to understand and implement by software modelers. With increased focus on development of model-driven approaches, rigorous descriptions of design patterns that capture solutions during design instead of implementation are needed. This research defines an approach for the transformation of models that supports controlled model evolution. More precisely, a process for capturing design patterns in UML class diagrams is defined. This process involves defining a metamodel-level representation which specifies how a software developer can introduce design patterns into existing design models. We defined transformation patterns as an extension of the UML metamodel to characterize source and target model elements. The transformation pattern consists of specialized metamodel elements that specify the structure of source and target metamodels. Transformation patterns were specified for the Abstract Factory, Bridge and Visitor design patterns to show how the model-level transformations can be perform on patterns that represent different functionalities. We developed an action language to specify constructs which add, delete, retrieve and connect model elements. We used the constructs of the action language to define transformation specifications that implement model-level transformations on class diagrams. To determine the potential of this approach we manually implemented the transformation specification on a UML design

    Model-Driven Development of Control Applications: On Modeling Tools, Simulations and Safety

    Get PDF
    Control systems are required in various industrial applications varying from individual machines to manufacturing plants and enterprises. Software applications have an important role as an implementation technology in such systems, which can be based on Distributed Control System (DCS) or Programmable Control System (PLC) platforms, for example. Control applications are computer programs that, with control system hardware, perform control tasks. Control applications are efficient and flexible by nature; however, their development is a complex task that requires the collaboration of experts and information from various domains of expertise.This thesis studies the use of Model-Driven Development (MDD) techniques in control application development. MDD is a software development methodology in which models are used as primary engineering artefacts and processed with both manual work and automated model transformations. The objective of the thesis is to explore whether or not control application development can benefit from MDD and selected technologies enabled by it. The research methodology followed in the thesis is the constructive approach of design science.To answer the research questions, tools are developed for modeling and developing control applications using UML Automation Profile (UML AP) in a model-driven development process. The modeling approach is developed based on open source tools on Eclipse platform. In the approach, modeling concepts are kept extendable. Models can be processed with model transformation techniques that plug in to the tool. The approach takes into account domain requirements related to, for example, re-use of design. According to assessment of industrial applicability of the approach and tools as part of it, they could be used for developing industrial DCS based control applications.Simulation approaches that can be used in conjunction to model-driven development of control applications are presented and compared. Development of a model-in-the-loop simulation support is rationalized to enable the use of simulations early while taking into account the special characteristics of the domain. A simulator integration is developed that transforms UML AP control application models to Modelica Modeling Language (ModelicaML) models, thus enabling closed-loop simulations with ModelicaML models of plants to be controlled. The simulation approach is applied successfully in simulations of machinery applications and process industry processes.Model-driven development of safety applications, which are parts of safety systems, would require taking into account safety standard requirements related to modeling techniques and documentation, for example. Related to this aspect, the thesis focuses on extending the information content of models with aspects that are required for safety applications. The modeling of hazards and their associated risks is supported with fault tree notation. The risk and hazard information is integrated into the development process in order to improve traceability. Automated functions enable generating documentation and performing consistency checks related to the use of standard solutions, for example. When applicable, techniques and notations, such as logic diagrams, have been chosen so that they are intuitive to developers but also comply with recommendations of safety standards

    Détection, Explications et Restructuration de défauts de conception : les patrons abßmés.

    Get PDF
    Models driven engineering considers models first class entities for the software development. The models driven processes must be able to take into account the know-how of experts, generally expressed in terms of analysis, architectural of design patterns. To choose the right pattern and to ensure its correct integration within a model constitute curbs with the systematic use of the good design practices. In order to reduce these tasks, we propose an approach based on the automatic inspection of models. In the same manner that there are code review activities aiming at checking the absence of bad coding practices in a program, we have tooled a design review activity identifying, explaining and correcting the bad design practices in a model. A spoiled pattern is comparable with a design pattern, its instantiations solving the same types of problems, but with a different and certainly improvable architecture. Experiments were carried out in order to collect spoiled patterns, allowing us to propose a catalog of bad practices, complementary to the GoF catalog. The detection of the instantiations of spoiled patterns in a UML model is related with a wide graph homomorphism. Graphs UML having typed vertexes, detection is based on local and global structural properties allowing the solving of this NP-Complete problem by successive filtering. Thus, this algorithm is able to detect all the possible instantiations of a spoiled pattern, by managing moreover prohibited and optional edges. The model fragment semantics is given by its intent which is validated by the designer. The intent of the detected fragments and the benefit of a replacement by the adequate pattern are deduced by requests on an ontology conceived for this purpose. The transformation of the fragments into instantiations of design pattern is carried out thanks to model refactoring automatically deduced from the structural differences between a spoiled pattern and an design pattern.L'ingĂ©nierie des modĂšles considĂšre les modĂšles comme des entitĂ©s de premiĂšre classe pour le dĂ©veloppement logiciel. Les processus dirigĂ©s par les modĂšles se doivent d'ĂȘtre capables de prendre en compte le savoir-faire d'experts, gĂ©nĂ©ralement exprimĂ© en termes de patrons, qu'ils soient d'analyse, de conception ou d'architecture. Choisir le bon patron et assurer sa bonne intĂ©gration au sein d'une modĂ©lisation constitue des freins Ă  l'utilisation systĂ©matique des bonnes pratiques de conception. Afin d'allĂ©ger ces tĂąches, nous proposons une approche basĂ©e sur l'inspection automatique des modĂšles. De la mĂȘme maniĂšre qu'il existe des revues de code visant Ă  vĂ©rifier l'absence de mauvaises pratiques de codage dans un programme, nous avons outillĂ© une activitĂ© de revue de conception identifiant, expliquant et corrigeant les mauvaises pratiques de conception dans un modĂšle. Un patron abĂźmĂ© est comparable Ă  un patron de conception, ses contextualisations rĂ©solvant les mĂȘmes types de problĂšmes, mais avec une architecture diffĂ©rente et certainement amĂ©liorable. Des expĂ©rimentations ont Ă©tĂ© menĂ©es afin de collecter des patrons abĂźmĂ©s, nous amenant Ă  proposer un catalogue de mauvaises pratiques, complĂ©mentaire au catalogue du GoF. La dĂ©tection des contextualisations de patrons abĂźmĂ©s dans un modĂšle UML est apparentĂ©e Ă  un morphisme de graphe Ă©tendu. Les graphes UML ayant des sommets typĂ©s, la dĂ©tection s'appuie sur des particularitĂ©s structurelles locales et globales permettant de rĂ©soudre ce problĂšme NP-Complet par des filtrages successifs. Cet algorithme est ainsi capable de dĂ©tecter toutes les contextualisations possibles d'un patron abĂźmĂ©, en gĂ©rant de plus les arcs interdits et facultatifs. La sĂ©mantique d'un fragment de modĂšle est donnĂ©e par son intention et celle-ci est validĂ©e par le concepteur. L'intention des fragments dĂ©tectĂ©s et les bĂ©nĂ©fices d'un remplacement par le patron adĂ©quat sont dĂ©duits par des requĂȘtes sur une ontologie conçue Ă  cet effet. La transformation des fragments en contextualisations de patrons de conception est rĂ©alisĂ©e grĂące Ă  des restructurations de modĂšles dĂ©duites automatiquement des diffĂ©rences structurelles entre un patron abĂźmĂ© et un patron de conception

    Designing Functional Safety Systems: A Pattern Language Approach

    Get PDF
    Human beings, at least most of us, want to feel and be safe. This is one of the fundamental needs of an organism. However, several of the processes and machines used in current societies introduce hazards that could and can harm us causing unnecessary pain and ïŹnancial losses. Still, our modern societies need these processes and machines to operate so we cannot really be without them. Fortunately, there are ways to reduce risks introduced by systems around us to a tolerable level.This thesis considers the design and development of safety-related systems and safetyrelated parts of control systems referred to as functional safety systems. These systems implement safety functions that reduce risks introduced by machines, processes, and other systems. That is, the functions affect the system under control so that the likelihood of occurrence or severity of consequences are reduced.The design and development of safety systems is typically regulated by laws and standards. This increases the cost of safety system development and therefore eventually also the product in which it is incorporated. However, from a manufacturer viewpoint, safety in all its forms is also a potential asset for the companies developing, producing, and selling the systems. An increase in efficiency to develop and design safety systems offers the potential for a larger margin or increased sales due to the reduced price.One way to support design and development efficiency is to apply good design methods and solutions in form of design patterns. In this thesis, a design pattern language for the development and design of functional safety systems is introduced. The purpose of the language is to support the designers in their task to design and implement safety functions in machines and processes. The language considers various aspects of the development and design of safety systems starting from the initial phases of hazard and risk analysis, followed by the selection of the hazard and risk reduction methods, and concluding with the hardware and software structure, functionality, and design principles considerations. Finally, a functional safety system may, and often does, co-exist and co-operate with a control system. Therefore, a part of the pattern language takes this aspect into account.To compile the design pattern language and the included patterns a design science research approach complemented with grounded theory approach is applied The data to identify the patterns is collected from literature, personal experience, interviews, and discussions with industry representatives and people engaged with the design or use of systems including safety systems or functionality. Like the patterns have evolved during the research, so has the approach to identify, document, and process the patterns

    TOWARDS AN INTEGRATED METAMODEL BASED APPROACH TO SOFTWARE REFACTORING

    Get PDF
    corecore