Spelling suggestions: "subject:"antipatterns"" "subject:"antipattern""
1 |
A Systematic Literature Review on the Methodologies for Detecting REST Antipatterns in RESTful APIsNeagu, Andrei January 2022 (has links)
Context: API growth is accelerating. RESTful APIs are gaining traction and are backed by major players. Extending the APIs commonly introduce antipatterns, which are bad solutions to problems. Objective: The purpose of this review is to identify and analyze the current, state-of-the-art approaches in detecting antipatterns in RESTful APIs. Method: Six research questions are clearly defined. Search strings are used in digital libraries to identify studies in the field of antipatterns in RESTful APIs. The studies must come from reputable sources. Studies are subjected to inclusion-exclusion and quality assessment. Results: Eight studies were selected. Each study has one main approach. Three classes were created to identify the types of approaches. All approaches require expert domain knowledge to apply and vary in the difficulty of application. The accuracy of the approaches is above 80\%. Four types of antipatterns were identified and the approaches detect one or multiple types of antipatterns. Conclusion: Various techniques were discovered, each selected study presented a single technique. Classifications for the techniques and antipatterns were made. The research field is young with future work planned.
|
2 |
Automating the Characterization and Detection of Software Performance Antipatterns Using a Data-Driven ApproachChalawadi, Ram Kishan January 2021 (has links)
Background: With the increase in automating the performance testing strategies, many efforts have been made to detect the Software Performance Antipatterns (SPAs). These performance antipatterns have become a major threat to software platforms at the enterprise level, and detecting these anomalies is essential in any company dealing with performance-sensitive software as these processes should be performed quite often. Due to the complexity of the process, the manual identification of performance issues has become challenging and time-consuming. Objectives: The thesis aims to address and solve the issues mentioned above by developing a tool that automatically Characterizes and Detects Software Performance Antipatterns. The goal is to automate the parameterization process of the existing approach that helps characterize SPAs and improve the interpretation of detection of SPAs. These two processes are integrated into the tool designed to be deployed in the CI/CD pipeline. The developed tool is named Chanterelle. Methods: A case study and a survey has been used in this research. A case study has been conducted at Ericsson. A similar process as in the existing approach has been automated using python. A literature review is conducted to identify an appropriate approach to improve the interpretation of the detection of SPAs. A static user validation has been conducted with the help of a survey consisting of Chanterelle feasibility and usability questions. The responses are provided by Ericsson staff (developers and tester in the field of Software performance) after the tool is presented. Results: The results indicate that the automated parameterization and detection process proposed in this thesis have a considerable execution time compared to the existing approaches and helps the developers interpret the detection results easily. Moreover, it does not include domain experts t run the tests. The results of the static user validation show that Chanterelle is feasible and usable as a tool to be used by the developers. Conclusions: The validation of the tool suggests that Chanterelle helps the developers to interpret the performance-related bugs easily. It performs the automated parameterization and detection process in a considerable time when compared with the existing approaches.
|
3 |
Detection of Java EE EJB Antipattern Instances using Framework-Specific ModelsStephan, Matthew January 2009 (has links)
Adding flexibility to a process or technology often comes with a price. This holds true in the case of the amendments made to Java EE platform to upgrade to version 5. Java EE 5 allows Enterprise Java Bean (EJB) developers the ability to configure EJBs via Java 5 annotations, through XML deployment descriptors, or through a combination of both. While this adds flexibility to the EJB configuration process, it also comes with the price of an EJB project's stakeholder not being able to ascertain the current configuration of an EJB
project until runtime, due to the multiple sources of configuration and the complex overriding rules. Furthermore, to detect errors in configuration or perform
antipattern instance detection it is clearly beneficial to have a representation of an EJB project that accurately represents the current configuration of the system.
This thesis first presents an EJB Framework Specific Modeling Language (FSML) that formalizes the EJB domain's specific components in the form of a cardinality-based feature model. By having such a model and using and extending the existing FSML infrastructure, one retrieves a Framework Specific Model (FSM) through reverse engineering that represents all the information from the various sources of EJB configuration. By analyzing this FSM, we can create another model that represents the resolved configuration of an EJB project. We employ model filtration to highlight specific sources of configuration. We then use open-source and custom EJB
projects to evaluate the EJB FSML and the resolved model.
Models admit antipattern instance detection. This thesis presents two methods for running antipattern instance detection on an EJB project using existing EJB antipatterns in literature: 1) queries in Java that execute against the resolved configuration model; and 2) queries written in .QL, an object-oriented query language, against the EJB project's source code. We compare these two techniques qualitatively and propose a
new approach based on this comparison that entails modeling the antipatterns and their symptoms within an FSML model declaratively.
|
4 |
Detection of Java EE EJB Antipattern Instances using Framework-Specific ModelsStephan, Matthew January 2009 (has links)
Adding flexibility to a process or technology often comes with a price. This holds true in the case of the amendments made to Java EE platform to upgrade to version 5. Java EE 5 allows Enterprise Java Bean (EJB) developers the ability to configure EJBs via Java 5 annotations, through XML deployment descriptors, or through a combination of both. While this adds flexibility to the EJB configuration process, it also comes with the price of an EJB project's stakeholder not being able to ascertain the current configuration of an EJB
project until runtime, due to the multiple sources of configuration and the complex overriding rules. Furthermore, to detect errors in configuration or perform
antipattern instance detection it is clearly beneficial to have a representation of an EJB project that accurately represents the current configuration of the system.
This thesis first presents an EJB Framework Specific Modeling Language (FSML) that formalizes the EJB domain's specific components in the form of a cardinality-based feature model. By having such a model and using and extending the existing FSML infrastructure, one retrieves a Framework Specific Model (FSM) through reverse engineering that represents all the information from the various sources of EJB configuration. By analyzing this FSM, we can create another model that represents the resolved configuration of an EJB project. We employ model filtration to highlight specific sources of configuration. We then use open-source and custom EJB
projects to evaluate the EJB FSML and the resolved model.
Models admit antipattern instance detection. This thesis presents two methods for running antipattern instance detection on an EJB project using existing EJB antipatterns in literature: 1) queries in Java that execute against the resolved configuration model; and 2) queries written in .QL, an object-oriented query language, against the EJB project's source code. We compare these two techniques qualitatively and propose a
new approach based on this comparison that entails modeling the antipatterns and their symptoms within an FSML model declaratively.
|
5 |
Studying the Relation between Linguistic and Design Quality in RESTful APIsLarsson, Edvin, Hägglund, Jesper January 2020 (has links)
REST (REpresentational State Transfer) is commonly used for designing APIs. Two main categories of REST API quality have been identified in previous research: linguistic and design quality. Linguistic quality revolves around the design of the URIs. Design quality revolves around the metadata and body in HTTP requests and responses. For enabling and simplifying communications with REST, both linguistic and design quality are important, however, previous research has shown that even major APIs using REST are not always following best practices for linguistic and design quality. This study investigates if there is a statistical relation between linguistic and design quality. We selected 326 API endpoints from ten public APIs for this study. This study has reused and improved a Java-based tool in previous research for detecting aspects of linguistic quality in the APIs endpoints. For this study, we also developed a tool based on Node.js for detecting aspects of design quality in the API endpoints. These two tools are applied on the same API endpoints to be able to study the statistical relation. A Chi-Square test, implemented with R, showed that there is a significant statistical relation in our findings between linguistic and design quality. Pairwise phi-coefficient comparisons, implemented with Python, between each combination of the linguistic and design aspects used in this study identified eight weak and two moderate relations among the linguistic and design quality aspects. However, sample tests showed that the Java-based tool for detecting linguistic quality were not accurate, which made us fail to answer our problem formulation.
|
6 |
Are APIs with Poor Design Subject to Poor Lexicon? : A Google PerspectiveSadia, Ahmad, Zarraa, Osama January 2020 (has links)
REST (Representational state transfer) is an architectural style for distributed hypermedia systems. The simplicity of REST allows straightforward communication between HTTP clients and servers using URIs (Uniform Resource Identifiers) and HTTP methods, e.g., GET, POST, PUT, and DELETE. To do the communication effectively between clients and servers, there is a set of best design practices (design and linguistic patterns) shall be followed, and a set of poor design practices (design and linguistic antipatterns) shall be avoided. This study aims to determine whether there is a relationship between design and linguistic quality in Google RESTful APIs. To find this relation, a tool is developed to detect patterns and antipatterns in REST APIs both in terms of design and linguistic quality. The input of this tool is qualitative data (Google APIs) and its output is quantitative data. Using this quantitative data, a statistical study is then performed to detect the relation. The tests that are conducted to obtain the final results are Chi-squared and Phi Coefficient tests. The result of Chi-squared that considered all the groups of patterns and antipatterns shows that there is a statistically significant relation between design and linguistic quality. However, when we assess the individual pair of patterns and antipatterns, our Phi Coefficient tests show that for most of the cases, there is no or negligible relationship between linguistic and design patterns and antipatterns.
|
7 |
An empirical study of the impact of two antipatterns on program comprehensionAbbes, Marwen 11 1900 (has links)
Les antipatrons sont de “mauvaises” solutions à des problèmes récurrents de conception logicielle. Leur apparition est soit due à de mauvais choix lors de la phase de conception soit à des altérations et des changements continus durant l’implantation des programmes.
Dans la littérature, il est généralement admis que les antipatrons rendent la compréhension des programmes plus difficile. Cependant, peu d’études empiriques ont été menées pour vérifier l’impact des antipatrons sur la compréhension. Dans le cadre de ce travail de maîtrise, nous avons conçu et mené trois expériences, avec 24 sujets chacune, dans le but de recueillir des données sur la performance des sujets lors de tâches de compréhension et d’évaluer l’impact de l’existence de deux antipatrons, Blob et Spaghetti Code, et de leurs combinaisons sur la compréhension des programmes. Nous avons mesuré les performances des sujets en terme : (1) du TLX (NASA task load index) pour l’éffort ; (2) du temps consacré à l’exécution des tâches ; et, (3) de leurs pourcentages de réponses correctes. Les données recueillies montrent que la présence d’un antipatron ne diminue pas sensiblement la performance des sujets alors que la combinaison de deux antipatrons les entrave de façon significative. Nous concluons que les développeurs peuvent faire face à un seul antipatron, alors que la combinaison de plusieurs antipatrons devrait être évitée, éventuellement par le biais de détection et de réusinage. / Antipatterns are “poor” solutions to recurring design problems which are conjectured in the literature to make object-oriented systems harder to maintain. However, little quantitative evidence exists to support this conjecture. We performed an empirical study to investigate whether the occurrence of antipatterns does indeed affect the understandability of systems by developers during comprehension and maintenance tasks.
We designed and conducted three experiments, each with 24 subjects, to collect data on the performance of these subjects on basic tasks related to program comprehension and assess the impact of two antipatterns and their combinations: Blob and Spaghetti Code. We measured the subjects’ performance with: (1) TLX (NASA task load index) for their effort; (2) the time that they spent performing their tasks; and, (3) their percentages of correct answers. The collected data shows that the occurrence of one antipattern does not significantly decrease developers’ performance while the combination of two antipatterns impedes developers significantly. We conclude that developers can cope with one antipattern but that combinations thereof should be avoided possibly through detection and refactorings.
|
8 |
Detecção dinâmica de antipadrões em sistemas baseados em serviços utilizando um sistema multiagenteRégis, Hugo Nathan Barbosa 31 August 2017 (has links)
Submitted by Lara Oliveira (lara@ufersa.edu.br) on 2018-03-20T21:54:36Z
No. of bitstreams: 1
HugoNBR_DISSERT.pdf: 2536238 bytes, checksum: 0dfec391fbd30092d6d905cfe4301c34 (MD5) / Approved for entry into archive by Vanessa Christiane (referencia@ufersa.edu.br) on 2018-06-18T17:00:26Z (GMT) No. of bitstreams: 1
HugoNBR_DISSERT.pdf: 2536238 bytes, checksum: 0dfec391fbd30092d6d905cfe4301c34 (MD5) / Approved for entry into archive by Vanessa Christiane (referencia@ufersa.edu.br) on 2018-06-18T17:00:34Z (GMT) No. of bitstreams: 1
HugoNBR_DISSERT.pdf: 2536238 bytes, checksum: 0dfec391fbd30092d6d905cfe4301c34 (MD5) / Made available in DSpace on 2018-06-18T17:00:49Z (GMT). No. of bitstreams: 1
HugoNBR_DISSERT.pdf: 2536238 bytes, checksum: 0dfec391fbd30092d6d905cfe4301c34 (MD5)
Previous issue date: 2017-08-31 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior / During development of Service-Based Systems (SBS), bad solutions, design or
implementation errors can lead to antipatterns that, as opposed to patterns, are bad
specifications for recurring problems. Antipatterns result in deviations of functionality during
the execution of the system, not adequately satisfying its requirements, which can degrade the
Quality of Service (QoS) of the SBS. Its detection and correction are of extreme importance,
the emergence of antipatterns may hinder future maintenance and evolution of SBS. As
detection method, this work proposes the use of a Multiagent System (MAS), executing
search at runtime and notifying the system administrator of QoS drops on the SBS caused by
antipatterns. The detection of these antipatterns allows the agents to act in correction the
project using the solution recommended by the MAS for the detected problem. The results
show that, in the worst cases, the emergence of antipatterns reached extrapolate up to twice
the response time of services in a Web Service. The MAS was able to detect, in execution
time, the 3 antipatterns studied at work. When adopted, the solutions proposed by the MAS
also normalized the response time / Durante o desenvolvimento de Sistemas Baseados em Serviços (SBS), soluções ruins, erros
de projeto ou implementação podem conduzir ao surgimento de antipadrões, que em oposição
aos padrões, são especificações ruins para problemas recorrentes. Antipadrões acarretam em
desvios de funcionalidade durante a execução do sistema, não satisfazendo adequadamente
aos seus requisitos, o que pode degradar a Qualidade de Serviço (QoS) de um SBS. Sua
detecção e correção são de extrema importância pois o surgimento de antipadrões pode
dificultar a manutenção e a futura evolução do SBS. Como método de detecção, este trabalho
propõe o uso de um Sistema Multiagente (SMA), realizando buscas em tempo de execução e
notificando ao administrador do sistema sobre quedas de QoS no SBS causadas por
antipadrões. A detecção desses antipadrões permite a atuação dos agentes na correção do
projeto, usando a solução recomendada pelo SMA para o problema detectado. Os resultados
mostraram que, nos piores casos, o surgimento de antipadrões chegou a extrapolar em até o
dobro de tempo de resposta dos serviços em um Web Service. O SMA foi capaz de detectar,
em tempo de execução, os 3 antipadrões estudados no trabalho. Quando adotadas, as soluções
propostas pelo SMA também normalizaram o tempo de resposta / 2018-03-20
|
9 |
An empirical study of the impact of two antipatterns on program comprehensionAbbes, Marwen 11 1900 (has links)
No description available.
|
10 |
Patterns and quality of object-oriented software systemsKhomh, Foutse 04 1900 (has links)
Lors de ces dix dernières années, le coût de la maintenance des systèmes orientés objets s'est accru jusqu' à compter pour plus de 70% du coût total des systèmes. Cette situation est due à plusieurs facteurs, parmi lesquels les plus importants sont: l'imprécision des spécifications des utilisateurs, l'environnement d'exécution changeant rapidement et la mauvaise qualité interne des systèmes. Parmi tous ces facteurs, le seul sur lequel nous ayons un réel contrôle est la qualité interne des systèmes. De nombreux modèles de qualité ont été proposés dans la littérature pour contribuer à contrôler la qualité. Cependant, la plupart de ces modèles utilisent des métriques de classes (nombre de méthodes d'une classe par exemple) ou des métriques de relations entre classes (couplage entre deux classes par exemple) pour mesurer les attributs internes des systèmes. Pourtant, la qualité des systèmes par objets ne dépend pas uniquement de la structure de leurs classes et que mesurent les métriques, mais aussi de la façon dont celles-ci sont organisées, c'est-à-dire de leur conception, qui se manifeste généralement à travers les patrons de conception et les anti-patrons.
Dans cette thèse nous proposons la méthode DEQUALITE, qui permet de construire systématiquement des modèles de qualité prenant en compte non seulement les attributs internes des systèmes (grâce aux métriques), mais aussi leur conception (grâce aux patrons de conception et anti-patrons). Cette méthode utilise une approche par apprentissage basée sur les réseaux bayésiens et s'appuie sur les résultats d'une série d'expériences portant sur l'évaluation de l'impact des patrons de conception et des anti-patrons sur la qualité des systèmes. Ces expériences réalisées sur 9 grands systèmes libres orientés objet nous permettent de formuler les conclusions suivantes:
• Contre l'intuition, les patrons de conception n'améliorent pas toujours la qualité des systèmes; les implantations très couplées de patrons de conception par exemple affectent la structure des classes et ont un impact négatif sur leur propension aux changements et aux fautes.
• Les classes participantes dans des anti-atrons sont beaucoup plus susceptibles de changer et d'être impliquées dans des corrections de fautes que les autres classes d'un système.
• Un pourcentage non négligeable de classes sont impliquées simultanément dans des patrons de conception et dans des anti-patrons. Les patrons de conception ont un effet positif en ce sens qu'ils atténuent les anti-patrons.
Nous appliquons et validons notre méthode sur trois systèmes libres orientés objet afin de démontrer l'apport de la conception des systèmes dans l'évaluation de la qualité. / Maintenance costs during the past decades have reached more than 70% of the overall costs of object-oriented systems, because of many factors, such as changing software environments, changing users' requirements, and the overall quality of systems. One factor on which we have a control is the quality of systems. Many object-oriented software quality models have been introduced in the literature to help assess and control quality. However, these models usually use metrics of classes (such as number of methods) or of relationships between classes (for example coupling) to measure internal attributes of systems. Yet, the quality of object-oriented systems does not depend on classes' metrics solely: it also depends on the organisation of classes, i.e. the system design that concretely manifests itself through design styles, such as design patterns and antipatterns.
In this dissertation, we propose the method DEQUALITE to systematically build quality models that take into account the internal attributes of the systems (through metrics) but also their design (through design patterns and antipatterns). This method uses a machine learning approach based on Bayesian Belief Networks and builds on the results of a series of experiments aimed at evaluating the impact of design patterns and antipatterns on the quality of systems. These experiments, performed on 9 large object-oriented open source systems enable us to draw the following conclusions:
• Counter-intuitively, design patterns do not always improve the quality of systems; tangled implementations of design patterns for example significantly affect the structure of classes and negatively impact their change- and fault-proneness.
• Classes participating in antipatterns are significantly more likely to be subject to changes and to be involved in fault-fixing changes than other classes.
• A non negligible percentage of classes participate in co-occurrences of antipatterns and design patterns in systems. On these classes, design patterns have a positive effect in mitigating antipatterns.
We apply and validate our method on three open-source object-oriented systems to demonstrate the contribution of the design of system in quality assessment.
|
Page generated in 0.0864 seconds