Francis Palma - Academia.edu (original) (raw)
Papers by Francis Palma
Proceedings of the 14th International Conference on Predictive Models and Data Analytics in Software Engineering, 2018
Aim: In this study, we aim to re-evaluate research questions on the ability of a logistic regress... more Aim: In this study, we aim to re-evaluate research questions on the ability of a logistic regression model proposed in a previous work to predict and prioritize the failing test cases based on some test quality metrics. Background: The process of prioritizing test cases aims to come up with a ranked test suite where test cases meeting certain criteria are prioritized. One criterion may be the ability of test cases to find faults that can be predicted a priori. Ranking test cases and executing the top-ranked test cases is particularly beneficial when projects have tight schedules and budgets. Method: We performed the comparison by first rebuilding the predictive models using the features from the original study and then we extended the original work to improve the predictive models using new features by combining with the existing ones. Results: The results of our study, using a dataset of five open-source systems, confirm that the findings from the original study hold and that our p...
Software Quality Journal, 2021
Community-aware metrics through socio-technical developer networks or organizational structures h... more Community-aware metrics through socio-technical developer networks or organizational structures have already been studied in the software bug prediction field. Community smells are also proposed to identify communication and collaboration patterns in developer communities. Prior work reports a statistical association between community smells and code smells identified in software modules. We investigate the contribution of community smells on predicting bug-prone classes and compare their contribution with that of code smell-related information and state-of-the-art process metrics. We conduct our empirical analysis on ten open-source projects with varying sizes, buggy and smelly class ratios. We build seven different bug prediction models to answer three RQs: a baseline model including a state-of-the-art metric set used, three models incorporating a particular metric set, namely community smells, code smells, code smell intensity, into the baseline, and three models incorporating a ...
Smart devices (or things) in the realm of IoT (Internet of Things) talk to each other and transfe... more Smart devices (or things) in the realm of IoT (Internet of Things) talk to each other and transfer data over the Internet. IoT vendors provide APIs for their clients to send data to the gateways and application servers. However, there is a lack of guidelines on how a vendor would design its API and resource URIs (Uniform Resource Identifiers). A generic design solution – design patterns – would make the API design and development easier for the vendors. Design patterns are reusable solutions to recurring problems and provide improved reusability and understandability. Currently, there are no design patterns for IoT APIs that IoT vendors can use. In this paper, we analyzed more than 1,300 URIs from 13 IoT APIs including IBM Watson and Microsoft Azure, and proposed eight novel design patterns for IoT APIs. We analyzed two datasets: (1) analysis set with 70% of all our URIs to define design patterns for IoT APIs and (2) validation set with the remaining 30% of the URIs to verify the pr...
RESUME Les logiciels bases sur les services (SBSs) sont developpes en utilisant l’Architecture Or... more RESUME Les logiciels bases sur les services (SBSs) sont developpes en utilisant l’Architecture Orientee Services (SOA), comme les SOAP Web services, Service Component Architecture (SCA) et REST. Pourtant, comme tous les autres systemes complexes, les SBSs sont sujets aux changements. Les changements peuvent etre fonctionnelles ou non fonctionnelles et peuvent apparaitre a la conception ou a l’implementation. Ces changements peuvent degrader la qualite de la conception et la qualite de service (QoS) dans les SBS en introduisant des mauvaises solutions—antipatrons de services. La presence d’antipatron de services dans les SBSs peut entraver l’entretien futur et l’evolution de SBSs. L’evaluation de la qualite de la conception et de la qualite de service de SBSs via la detection des antipatrons de services peut faciliter leur maintenance et leur evolution. Bien qu’il existe quelques points communs entre les differentes technologies SBS, ils varient dans leurs (1) building blocks, (2) le...
Service-Oriented Computing
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Service-based Systems (SBSs) are developed on top of diverse Service-Oriented Architecture (SOA) ... more Service-based Systems (SBSs) are developed on top of diverse Service-Oriented Architecture (SOA) technologies or architectural styles. Like any other complex systems, SBSs face both functional and non-functional changes at the design or implementation-level. Such changes may degrade the design quality and quality of service (QoS) of the services in SBSs by introducing poor solutions—service antipatterns. The presence of service antipatterns in SBSs may hinder the future maintenance and evolution of SBSs. Assessing the quality of design and QoS of SBSs through the detection of service antipatterns may ease their maintenance and evolution. However, the current literature lacks a unified approach for modelling and evaluating the design of SBSs in term of design quality and QoS. To address this lack, this paper presents a meta-model unifying the three main service technologies: REST, SCA, and SOAP. Using the meta-model, it describes a unified approach, UniDoSA (Unified Specification and Detection of Service Antipatterns), supported by a framework, SOFA (Service Oriented Framework for Antipatterns), for modelling and evaluating the design quality and QoS of SBSs. We apply and validate UniDoSA on: (1) 18 RESTful APIs, (2) two SCA systems with more than 150 services, and (3) more than 120 SOAP Web services. With a high precision and recall, the detection results provide evidence of the presence of service antipatterns in SBSs, which calls for future studies of their impact on QoS.
Software: Practice and Experience
This systematic literature review paper investigates the key techniques employed to identify smel... more This systematic literature review paper investigates the key techniques employed to identify smells in different paradigms of software engineering from object‐oriented (OO) to service‐oriented (SO). In this review, we want to identify commonalities and differences in the identification of smells in OO and SO systems. Our research method relies on an automatic search from the relevant digital libraries to find the studies published since January 2000 on smells until December 2017. We have conducted a pilot and author‐based search that allows us to select the 78 most relevant studies after applying inclusion and exclusion criteria. We evaluated the studies based on the smell detection techniques and the evolution of different methodologies in OO and SO. Among the 78 relevant studies selected, we have identified six different studies in which linguistic source code analysis received less attention from the researchers as compared to the static source code analysis. Smells like the yo‐yo problem, unnamed coupling, intensive coupling, and interface bloat received considerably less attention in the literature. We also identified a catalog of 30 smells infrequently reported for SO systems and that require further attention. Moreover, a suite of 20 smells reported for SO systems can also be detected using static source code metrics in OO. Finally, our review highlighted three major research trends that are further subdivided into 20 research patterns initiating the detection of smells toward their correction.
International Journal of Cooperative Information Systems
Identifier lexicon may have a direct impact on software understandability and reusability and, th... more Identifier lexicon may have a direct impact on software understandability and reusability and, thus, on the quality of the final software product. Understandability and reusability are two important characteristics of software quality. REpresentational State Transfer (REST) style is becoming a de facto standard adopted by software organizations to build their Web applications. Understandable and reusable Uniform Resource Identifers (URIs) are important to attract client developers of RESTful APIs because good URIs support the client developers to understand and reuse the APIs. Consequently, the use of proper lexicon in RESTful APIs has also a direct impact on the quality of Web applications that integrate these APIs. Linguistic antipatterns represent poor practices in the naming, documentation, and choice of identifiers in the APIs as opposed to linguistic patterns that represent the corresponding best practices. In this paper, we present the Semantic Analysis of RESTful APIs (SARA)...
2016 IEEE 15th International Symposium on Network Computing and Applications (NCA), 2016
Service-Oriented Computing, 2015
Identifier lexicon has a direct impact on software understandability and reusability and, thus, o... more Identifier lexicon has a direct impact on software understandability and reusability and, thus, on the quality of the final software product. Understandability and reusability are two important characteristics of software quality. REST (REpresentational State Transfer) style is becoming a de facto standard adopted by many software organisations. The use of proper lexicon in RESTful APIs might make them easier to understand and reuse by client developers, and thus, would ease their adoption. Linguistic antipatterns represent poor practices in the naming, documentation, and choice of identifiers in the APIs as opposed to linguistic patterns that represent best practices. We present the DOLAR approach (Detection Of Linguistic Antipatterns in REST), which applies syntactic and semantic analyses for the detection of linguistic (anti)patterns in RESTful APIs. We provide detailed definitions of ten (anti)patterns and define and apply their detection algorithms on 15 widely-used RESTful APIs, including Facebook, Twitter, and YouTube. The results show that DOLAR can indeed detect linguistic (anti)patterns with high accuracy and that they do occur in major RESTful APIs.
2015 IEEE 2nd International Workshop on Patterns Promotion and Anti-patterns Prevention (PPAP), 2015
Antipatterns in Service-based Systems (SBSs)service antipatterns-represent "bad" solutions to rec... more Antipatterns in Service-based Systems (SBSs)service antipatterns-represent "bad" solutions to recurring design problems. In opposition to design patterns, which are good solutions, antipatterns should be avoided by the engineers. Antipatterns may also be introduced due to diverse changes performed against new user requirements and execution contexts. Service antipatterns may degrade the quality of design and may hinder the future maintenance and evolution of SBSs. The detection of service antipatterns is important to improve the design quality of SBSs and to ease their maintenance. A better understanding of service antipatterns is a must prerequisite to perform their detection. This paper presents a taxonomy of service antipatterns in Web services and SCA (Service Component Architecture), the two common SBSs implementation technologies. The presented taxonomy will facilitate engineers their understanding on service antipatterns. Other substantial benefits of the presented taxonomy include: (1) assisting in the specification and detection of service antipatterns, (2) revealing the relationships among various groups of service antipatterns, (3) grouping together antipatterns that are fundamentally related, and (4) providing an overview of various system-level design problems ensemble.
2014 IEEE 7th International Conference on Service-Oriented Computing and Applications, 2014
Like any other software systems, service-based systems (SBSs) evolve frequently to accommodate ne... more Like any other software systems, service-based systems (SBSs) evolve frequently to accommodate new user requirements. This evolution may degrade their design and implementation and may cause the introduction of common bad practice solutions-antipatterns-in opposition to patterns which are good solutions to common recurring design problems. We believe that the degradation of the design of SBSs does not only affect the clients of the SBSs but also the maintenance and evolution of the SBSs themselves. This paper presents the results of an empirical study that aimed to quantify the impact of service patterns and antipatterns on the maintenance and evolution of SBSs. We measure the maintenance effort of a service implementation in terms of the number of changes and the size of changes (i.e., code churns) performed by developers to maintain and evolve the service; two effort metrics that have been widely used in software engineering studies. Using data collected from the evolutionary history of the SBS FraSCAti, we investigate if (1) services involved in patterns require less maintenance effort; (2) services detected as antipatterns require more maintenance effort than other services; and (3) if some particular service antipatterns are more change-prone than others. Results show that (1) services involved in patterns require less maintenance effort, but not at statistically significant level; (2) services detected as antipatterns require significantly more maintenance effort than non-antipattern services; and (3) services detected as God Component, Multi Service, and Service Chain antipatterns are more change-prone (i.e., require more maintenance effort) than the services involved in other antipatterns. We also analysed the relation between object-oriented code smells and service patterns/antipatterns and found a significant difference in the proportion of code smells contained in the implementations of service patterns and antipatterns.
Lecture Notes in Computer Science, 2013
During their evolution, Service Based Systems (SBSs) need to fit new user requirements and execut... more During their evolution, Service Based Systems (SBSs) need to fit new user requirements and execution contexts. The resulting changes from the evolution of SBSs may degrade their design and Quality of Service (QoS), and thus may cause the appearance of common poor solutions, called Antipatterns. Like other complex systems, antipatterns in SBSs may hinder the future maintenance and evolution. Therefore, the automatic detection of such antipatterns is an important task for assessing the design and QoS of SBSs, to facilitate their maintenance and evolution. However, despite of their importance, no tool support exists for the detection of antipatterns in SBSs. In this paper, we introduce a prototype tool, called Soda, for detecting SOA (Service Oriented Architecture) antipatterns in SBSs.
International Journal of Cooperative Information Systems, 2013
Like any other large and complex software systems, Service-Based Systems (SBSs) must evolve to fi... more Like any other large and complex software systems, Service-Based Systems (SBSs) must evolve to fit new user requirements and execution contexts. The changes resulting from the evolution of SBSs may degrade their design and quality of service (QoS) and may often cause the appearance of common poor solutions in their architecture, called antipatterns, in opposition to design patterns, which are good solutions to recurring problems. Antipatterns resulting from these changes may hinder the future maintenance and evolution of SBSs. The detection of antipatterns is thus crucial to assess the design and QoS of SBSs and facilitate their maintenance and evolution. However, methods and techniques for the detection of antipatterns in SBSs are still in their infancy despite their importance. In this paper, we introduce a novel and innovative approach supported by a framework for specifying and detecting antipatterns in SBSs. Using our approach, we specify 10 well-known and common antipatterns, ...
Service-Oriented Computing, 2014
REST (REpresentational State Transfer), relying on resources as its architectural unit, is curren... more REST (REpresentational State Transfer), relying on resources as its architectural unit, is currently a popular architectural choice for building Web-based applications. It is shown that design patterns-good solutions to recurring design problems-improve the design quality and facilitate maintenance and evolution of software systems. Antipatterns, on the other hand, are poor and counter-productive solutions. Therefore, the detection of REST (anti)patterns is essential for improving the maintenance and evolution of RESTful systems. Until now, however, no approach has been proposed. In this paper, we propose SODA-R (Service Oriented Detection for Antipatterns in REST), a heuristics-based approach to detect (anti)patterns in RESTful systems. We define detection heuristics for eight REST antipatterns and five patterns, and perform their detection on a set of 12 widely-used REST APIs including BestBuy, Facebook, and DropBox. The results show that SODA-R can perform the detection of REST (anti)patterns with high accuracy. We also found that Twitter and DropBox are not well-designed, i.e., contain more antipatterns. In contrast, Facebook and BestBuy are well-designed, i.e., contain more patterns and less antipatterns.
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering - SIGSOFT/FSE '11, 2011
The prioritization of requirements is a crucial activity in the early phases of the software deve... more The prioritization of requirements is a crucial activity in the early phases of the software development process. It consists of finding an order relation among requirements, considering several requirements characteristics, such as stakeholder preferences, technical constraints, implementation costs and user perceived value. We propose an interactive approach to the problem of prioritization based on Satisfiability Modulo Theory (SMT) techniques and pairwise comparisons. Our approach resorts to interactive knowledge acquisition whenever the relative priority among requirements cannot be determined based on the available information. Synthesis of the final ranking is obtained via SMT constraint solving. The approach has been evaluated on a set of requirements from a real healthcare project. Results show that it overcomes other interactive state-of-the art prioritization approaches in terms of effectiveness, efficiency and robustness to decision maker errors.
2nd International Symposium on Search Based Software Engineering, 2010
The order in which requirements are implemented in a system affects the value delivered to the fi... more The order in which requirements are implemented in a system affects the value delivered to the final users in the successive releases of the system. Requirements prioritization aims at ranking the requirements so as to trade off user priorities and implementation constraints, such as technical dependencies among requirements and necessarily limited resources allocated to the project. Requirement analysts possess relevant knowledge about the relative importance of requirements. We use an Interactive Genetic Algorithm to produce a requirement ordering which complies with the existing priorities, satisfies the technical constraints and takes into account the relative preferences elicited from the user. On a real case study, we show that this approach improves non interactive optimization, ignoring the elicited preferences, and that it can handle a number of requirements which is otherwise problematic for state of the art techniques.
Proceedings of the 14th International Conference on Predictive Models and Data Analytics in Software Engineering, 2018
Aim: In this study, we aim to re-evaluate research questions on the ability of a logistic regress... more Aim: In this study, we aim to re-evaluate research questions on the ability of a logistic regression model proposed in a previous work to predict and prioritize the failing test cases based on some test quality metrics. Background: The process of prioritizing test cases aims to come up with a ranked test suite where test cases meeting certain criteria are prioritized. One criterion may be the ability of test cases to find faults that can be predicted a priori. Ranking test cases and executing the top-ranked test cases is particularly beneficial when projects have tight schedules and budgets. Method: We performed the comparison by first rebuilding the predictive models using the features from the original study and then we extended the original work to improve the predictive models using new features by combining with the existing ones. Results: The results of our study, using a dataset of five open-source systems, confirm that the findings from the original study hold and that our p...
Software Quality Journal, 2021
Community-aware metrics through socio-technical developer networks or organizational structures h... more Community-aware metrics through socio-technical developer networks or organizational structures have already been studied in the software bug prediction field. Community smells are also proposed to identify communication and collaboration patterns in developer communities. Prior work reports a statistical association between community smells and code smells identified in software modules. We investigate the contribution of community smells on predicting bug-prone classes and compare their contribution with that of code smell-related information and state-of-the-art process metrics. We conduct our empirical analysis on ten open-source projects with varying sizes, buggy and smelly class ratios. We build seven different bug prediction models to answer three RQs: a baseline model including a state-of-the-art metric set used, three models incorporating a particular metric set, namely community smells, code smells, code smell intensity, into the baseline, and three models incorporating a ...
Smart devices (or things) in the realm of IoT (Internet of Things) talk to each other and transfe... more Smart devices (or things) in the realm of IoT (Internet of Things) talk to each other and transfer data over the Internet. IoT vendors provide APIs for their clients to send data to the gateways and application servers. However, there is a lack of guidelines on how a vendor would design its API and resource URIs (Uniform Resource Identifiers). A generic design solution – design patterns – would make the API design and development easier for the vendors. Design patterns are reusable solutions to recurring problems and provide improved reusability and understandability. Currently, there are no design patterns for IoT APIs that IoT vendors can use. In this paper, we analyzed more than 1,300 URIs from 13 IoT APIs including IBM Watson and Microsoft Azure, and proposed eight novel design patterns for IoT APIs. We analyzed two datasets: (1) analysis set with 70% of all our URIs to define design patterns for IoT APIs and (2) validation set with the remaining 30% of the URIs to verify the pr...
RESUME Les logiciels bases sur les services (SBSs) sont developpes en utilisant l’Architecture Or... more RESUME Les logiciels bases sur les services (SBSs) sont developpes en utilisant l’Architecture Orientee Services (SOA), comme les SOAP Web services, Service Component Architecture (SCA) et REST. Pourtant, comme tous les autres systemes complexes, les SBSs sont sujets aux changements. Les changements peuvent etre fonctionnelles ou non fonctionnelles et peuvent apparaitre a la conception ou a l’implementation. Ces changements peuvent degrader la qualite de la conception et la qualite de service (QoS) dans les SBS en introduisant des mauvaises solutions—antipatrons de services. La presence d’antipatron de services dans les SBSs peut entraver l’entretien futur et l’evolution de SBSs. L’evaluation de la qualite de la conception et de la qualite de service de SBSs via la detection des antipatrons de services peut faciliter leur maintenance et leur evolution. Bien qu’il existe quelques points communs entre les differentes technologies SBS, ils varient dans leurs (1) building blocks, (2) le...
Service-Oriented Computing
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Service-based Systems (SBSs) are developed on top of diverse Service-Oriented Architecture (SOA) ... more Service-based Systems (SBSs) are developed on top of diverse Service-Oriented Architecture (SOA) technologies or architectural styles. Like any other complex systems, SBSs face both functional and non-functional changes at the design or implementation-level. Such changes may degrade the design quality and quality of service (QoS) of the services in SBSs by introducing poor solutions—service antipatterns. The presence of service antipatterns in SBSs may hinder the future maintenance and evolution of SBSs. Assessing the quality of design and QoS of SBSs through the detection of service antipatterns may ease their maintenance and evolution. However, the current literature lacks a unified approach for modelling and evaluating the design of SBSs in term of design quality and QoS. To address this lack, this paper presents a meta-model unifying the three main service technologies: REST, SCA, and SOAP. Using the meta-model, it describes a unified approach, UniDoSA (Unified Specification and Detection of Service Antipatterns), supported by a framework, SOFA (Service Oriented Framework for Antipatterns), for modelling and evaluating the design quality and QoS of SBSs. We apply and validate UniDoSA on: (1) 18 RESTful APIs, (2) two SCA systems with more than 150 services, and (3) more than 120 SOAP Web services. With a high precision and recall, the detection results provide evidence of the presence of service antipatterns in SBSs, which calls for future studies of their impact on QoS.
Software: Practice and Experience
This systematic literature review paper investigates the key techniques employed to identify smel... more This systematic literature review paper investigates the key techniques employed to identify smells in different paradigms of software engineering from object‐oriented (OO) to service‐oriented (SO). In this review, we want to identify commonalities and differences in the identification of smells in OO and SO systems. Our research method relies on an automatic search from the relevant digital libraries to find the studies published since January 2000 on smells until December 2017. We have conducted a pilot and author‐based search that allows us to select the 78 most relevant studies after applying inclusion and exclusion criteria. We evaluated the studies based on the smell detection techniques and the evolution of different methodologies in OO and SO. Among the 78 relevant studies selected, we have identified six different studies in which linguistic source code analysis received less attention from the researchers as compared to the static source code analysis. Smells like the yo‐yo problem, unnamed coupling, intensive coupling, and interface bloat received considerably less attention in the literature. We also identified a catalog of 30 smells infrequently reported for SO systems and that require further attention. Moreover, a suite of 20 smells reported for SO systems can also be detected using static source code metrics in OO. Finally, our review highlighted three major research trends that are further subdivided into 20 research patterns initiating the detection of smells toward their correction.
International Journal of Cooperative Information Systems
Identifier lexicon may have a direct impact on software understandability and reusability and, th... more Identifier lexicon may have a direct impact on software understandability and reusability and, thus, on the quality of the final software product. Understandability and reusability are two important characteristics of software quality. REpresentational State Transfer (REST) style is becoming a de facto standard adopted by software organizations to build their Web applications. Understandable and reusable Uniform Resource Identifers (URIs) are important to attract client developers of RESTful APIs because good URIs support the client developers to understand and reuse the APIs. Consequently, the use of proper lexicon in RESTful APIs has also a direct impact on the quality of Web applications that integrate these APIs. Linguistic antipatterns represent poor practices in the naming, documentation, and choice of identifiers in the APIs as opposed to linguistic patterns that represent the corresponding best practices. In this paper, we present the Semantic Analysis of RESTful APIs (SARA)...
2016 IEEE 15th International Symposium on Network Computing and Applications (NCA), 2016
Service-Oriented Computing, 2015
Identifier lexicon has a direct impact on software understandability and reusability and, thus, o... more Identifier lexicon has a direct impact on software understandability and reusability and, thus, on the quality of the final software product. Understandability and reusability are two important characteristics of software quality. REST (REpresentational State Transfer) style is becoming a de facto standard adopted by many software organisations. The use of proper lexicon in RESTful APIs might make them easier to understand and reuse by client developers, and thus, would ease their adoption. Linguistic antipatterns represent poor practices in the naming, documentation, and choice of identifiers in the APIs as opposed to linguistic patterns that represent best practices. We present the DOLAR approach (Detection Of Linguistic Antipatterns in REST), which applies syntactic and semantic analyses for the detection of linguistic (anti)patterns in RESTful APIs. We provide detailed definitions of ten (anti)patterns and define and apply their detection algorithms on 15 widely-used RESTful APIs, including Facebook, Twitter, and YouTube. The results show that DOLAR can indeed detect linguistic (anti)patterns with high accuracy and that they do occur in major RESTful APIs.
2015 IEEE 2nd International Workshop on Patterns Promotion and Anti-patterns Prevention (PPAP), 2015
Antipatterns in Service-based Systems (SBSs)service antipatterns-represent "bad" solutions to rec... more Antipatterns in Service-based Systems (SBSs)service antipatterns-represent "bad" solutions to recurring design problems. In opposition to design patterns, which are good solutions, antipatterns should be avoided by the engineers. Antipatterns may also be introduced due to diverse changes performed against new user requirements and execution contexts. Service antipatterns may degrade the quality of design and may hinder the future maintenance and evolution of SBSs. The detection of service antipatterns is important to improve the design quality of SBSs and to ease their maintenance. A better understanding of service antipatterns is a must prerequisite to perform their detection. This paper presents a taxonomy of service antipatterns in Web services and SCA (Service Component Architecture), the two common SBSs implementation technologies. The presented taxonomy will facilitate engineers their understanding on service antipatterns. Other substantial benefits of the presented taxonomy include: (1) assisting in the specification and detection of service antipatterns, (2) revealing the relationships among various groups of service antipatterns, (3) grouping together antipatterns that are fundamentally related, and (4) providing an overview of various system-level design problems ensemble.
2014 IEEE 7th International Conference on Service-Oriented Computing and Applications, 2014
Like any other software systems, service-based systems (SBSs) evolve frequently to accommodate ne... more Like any other software systems, service-based systems (SBSs) evolve frequently to accommodate new user requirements. This evolution may degrade their design and implementation and may cause the introduction of common bad practice solutions-antipatterns-in opposition to patterns which are good solutions to common recurring design problems. We believe that the degradation of the design of SBSs does not only affect the clients of the SBSs but also the maintenance and evolution of the SBSs themselves. This paper presents the results of an empirical study that aimed to quantify the impact of service patterns and antipatterns on the maintenance and evolution of SBSs. We measure the maintenance effort of a service implementation in terms of the number of changes and the size of changes (i.e., code churns) performed by developers to maintain and evolve the service; two effort metrics that have been widely used in software engineering studies. Using data collected from the evolutionary history of the SBS FraSCAti, we investigate if (1) services involved in patterns require less maintenance effort; (2) services detected as antipatterns require more maintenance effort than other services; and (3) if some particular service antipatterns are more change-prone than others. Results show that (1) services involved in patterns require less maintenance effort, but not at statistically significant level; (2) services detected as antipatterns require significantly more maintenance effort than non-antipattern services; and (3) services detected as God Component, Multi Service, and Service Chain antipatterns are more change-prone (i.e., require more maintenance effort) than the services involved in other antipatterns. We also analysed the relation between object-oriented code smells and service patterns/antipatterns and found a significant difference in the proportion of code smells contained in the implementations of service patterns and antipatterns.
Lecture Notes in Computer Science, 2013
During their evolution, Service Based Systems (SBSs) need to fit new user requirements and execut... more During their evolution, Service Based Systems (SBSs) need to fit new user requirements and execution contexts. The resulting changes from the evolution of SBSs may degrade their design and Quality of Service (QoS), and thus may cause the appearance of common poor solutions, called Antipatterns. Like other complex systems, antipatterns in SBSs may hinder the future maintenance and evolution. Therefore, the automatic detection of such antipatterns is an important task for assessing the design and QoS of SBSs, to facilitate their maintenance and evolution. However, despite of their importance, no tool support exists for the detection of antipatterns in SBSs. In this paper, we introduce a prototype tool, called Soda, for detecting SOA (Service Oriented Architecture) antipatterns in SBSs.
International Journal of Cooperative Information Systems, 2013
Like any other large and complex software systems, Service-Based Systems (SBSs) must evolve to fi... more Like any other large and complex software systems, Service-Based Systems (SBSs) must evolve to fit new user requirements and execution contexts. The changes resulting from the evolution of SBSs may degrade their design and quality of service (QoS) and may often cause the appearance of common poor solutions in their architecture, called antipatterns, in opposition to design patterns, which are good solutions to recurring problems. Antipatterns resulting from these changes may hinder the future maintenance and evolution of SBSs. The detection of antipatterns is thus crucial to assess the design and QoS of SBSs and facilitate their maintenance and evolution. However, methods and techniques for the detection of antipatterns in SBSs are still in their infancy despite their importance. In this paper, we introduce a novel and innovative approach supported by a framework for specifying and detecting antipatterns in SBSs. Using our approach, we specify 10 well-known and common antipatterns, ...
Service-Oriented Computing, 2014
REST (REpresentational State Transfer), relying on resources as its architectural unit, is curren... more REST (REpresentational State Transfer), relying on resources as its architectural unit, is currently a popular architectural choice for building Web-based applications. It is shown that design patterns-good solutions to recurring design problems-improve the design quality and facilitate maintenance and evolution of software systems. Antipatterns, on the other hand, are poor and counter-productive solutions. Therefore, the detection of REST (anti)patterns is essential for improving the maintenance and evolution of RESTful systems. Until now, however, no approach has been proposed. In this paper, we propose SODA-R (Service Oriented Detection for Antipatterns in REST), a heuristics-based approach to detect (anti)patterns in RESTful systems. We define detection heuristics for eight REST antipatterns and five patterns, and perform their detection on a set of 12 widely-used REST APIs including BestBuy, Facebook, and DropBox. The results show that SODA-R can perform the detection of REST (anti)patterns with high accuracy. We also found that Twitter and DropBox are not well-designed, i.e., contain more antipatterns. In contrast, Facebook and BestBuy are well-designed, i.e., contain more patterns and less antipatterns.
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering - SIGSOFT/FSE '11, 2011
The prioritization of requirements is a crucial activity in the early phases of the software deve... more The prioritization of requirements is a crucial activity in the early phases of the software development process. It consists of finding an order relation among requirements, considering several requirements characteristics, such as stakeholder preferences, technical constraints, implementation costs and user perceived value. We propose an interactive approach to the problem of prioritization based on Satisfiability Modulo Theory (SMT) techniques and pairwise comparisons. Our approach resorts to interactive knowledge acquisition whenever the relative priority among requirements cannot be determined based on the available information. Synthesis of the final ranking is obtained via SMT constraint solving. The approach has been evaluated on a set of requirements from a real healthcare project. Results show that it overcomes other interactive state-of-the art prioritization approaches in terms of effectiveness, efficiency and robustness to decision maker errors.
2nd International Symposium on Search Based Software Engineering, 2010
The order in which requirements are implemented in a system affects the value delivered to the fi... more The order in which requirements are implemented in a system affects the value delivered to the final users in the successive releases of the system. Requirements prioritization aims at ranking the requirements so as to trade off user priorities and implementation constraints, such as technical dependencies among requirements and necessarily limited resources allocated to the project. Requirement analysts possess relevant knowledge about the relative importance of requirements. We use an Interactive Genetic Algorithm to produce a requirement ordering which complies with the existing priorities, satisfies the technical constraints and takes into account the relative preferences elicited from the user. On a real case study, we show that this approach improves non interactive optimization, ignoring the elicited preferences, and that it can handle a number of requirements which is otherwise problematic for state of the art techniques.