784 research outputs found

    From Monolithic to Microservice Architecture: The Case of Extensible and Domain-Specific IDEs

    Get PDF
    International audienceIntegrated Development Environments (IDEs) are evolving towards cloud-native applications with the aim to relocate the language services provided by an IDE on distant servers. Existing research works focus on the overall migration process to handle more efficiently their specific requirements. However, the microservicization of legacy monolithic applications is still highly dependent on the specific properties of the application of interest. In this paper, we report our experiment on the microservicization process of the Cloud-Based graphical modeling workbench Sirius Web. We aim to identify the technical challenges related to applications with similar properties, and provide insights for practitioners to migrate their similar applications towards microservices. We discuss the main lessons learned and identify the underlying challenges to be further addressed by the community

    Behind the Intent of Extract Method Refactoring: A Systematic Literature Review

    Full text link
    Code refactoring is widely recognized as an essential software engineering practice to improve the understandability and maintainability of the source code. The Extract Method refactoring is considered as "Swiss army knife" of refactorings, as developers often apply it to improve their code quality. In recent years, several studies attempted to recommend Extract Method refactorings allowing the collection, analysis, and revelation of actionable data-driven insights about refactoring practices within software projects. In this paper, we aim at reviewing the current body of knowledge on existing Extract Method refactoring research and explore their limitations and potential improvement opportunities for future research efforts. Hence, researchers and practitioners begin to be aware of the state-of-the-art and identify new research opportunities in this context. We review the body of knowledge related to Extract Method refactoring in the form of a systematic literature review (SLR). After compiling an initial pool of 1,367 papers, we conducted a systematic selection and our final pool included 83 primary studies. We define three sets of research questions and systematically develop and refine a classification schema based on several criteria including their methodology, applicability, and degree of automation. The results construct a catalog of 83 Extract Method approaches indicating that several techniques have been proposed in the literature. Our results show that: (i) 38.6% of Extract Method refactoring studies primarily focus on addressing code clones; (ii) Several of the Extract Method tools incorporate the developer's involvement in the decision-making process when applying the method extraction, and (iii) the existing benchmarks are heterogeneous and do not contain the same type of information, making standardizing them for the purpose of benchmarking difficult

    30 Years of Software Refactoring Research: A Systematic Literature Review

    Full text link
    Peer Reviewedhttps://deepblue.lib.umich.edu/bitstream/2027.42/155872/4/30YRefactoring.pd

    30 Years of Software Refactoring Research:A Systematic Literature Review

    Full text link
    Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied at different levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloud computing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include other non-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are, nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities, and testing the correctness of applied refactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, and objectives. To structure the field and existing research results, this paper provides a systematic literature review and analyzes the results of 3183 research papers on refactoring covering the last three decades to offer the most scalable and comprehensive literature review of existing refactoring research studies. Based on this survey, we created a taxonomy to classify the existing research, identified research trends, and highlighted gaps in the literature and avenues for further research.Comment: 23 page

    Data-Driven Decisions and Actions in Today’s Software Development

    Full text link
    Today’s software development is all about data: data about the software product itself, about the process and its different stages, about the customers and markets, about the development, the testing, the integration, the deployment, or the runtime aspects in the cloud. We use static and dynamic data of various kinds and quantities to analyze market feedback, feature impact, code quality, architectural design alternatives, or effects of performance optimizations. Development environments are no longer limited to IDEs in a desktop application or the like but span the Internet using live programming environments such as Cloud9 or large-volume repositories such as BitBucket, GitHub, GitLab, or StackOverflow. Software development has become “live” in the cloud, be it the coding, the testing, or the experimentation with different product options on the Internet. The inherent complexity puts a further burden on developers, since they need to stay alert when constantly switching between tasks in different phases. Research has been analyzing the development process, its data and stakeholders, for decades and is working on various tools that can help developers in their daily tasks to improve the quality of their work and their productivity. In this chapter, we critically reflect on the challenges faced by developers in a typical release cycle, identify inherent problems of the individual phases, and present the current state of the research that can help overcome these issues

    Software development process mining: discovery, conformance checking and enhancement

    Get PDF
    Context. Modern software projects require the proper allocation of human, technical and financial resources. Very often, project managers make decisions supported only by their personal experience, intuition or simply by mirroring activities performed by others in similar contexts. Most attempts to avoid such practices use models based on lines of code, cyclomatic complexity or effort estimators, thus commonly supported by software repositories which are known to contain several flaws. Objective. Demonstrate the usefulness of process data and mining methods to enhance the software development practices, by assessing efficiency and unveil unknown process insights, thus contributing to the creation of novel models within the software development analytics realm. Method. We mined the development process fragments of multiple developers in three different scenarios by collecting Integrated Development Environment (IDE) events during their development sessions. Furthermore, we used process and text mining to discovery developers’ workflows and their fingerprints, respectively. Results. We discovered and modeled with good quality developers’ processes during programming sessions based on events extracted from their IDEs. We unveiled insights from coding practices in distinct refactoring tasks, built accurate software complexity forecast models based only on process metrics and setup a method for characterizing coherently developers’ behaviors. The latter may ultimately lead to the creation of a catalog of software development process smells. Conclusions. Our approach is agnostic to programming languages, geographic location or development practices, making it suitable for challenging contexts such as in modern global software development projects using either traditional IDEs or sophisticated low/no code platforms.Contexto. Projetos de software modernos requerem a correta alocação de recursos humanos, técnicos e financeiros. Frequentemente, os gestores de projeto tomam decisões suportadas apenas na sua própria experiência, intuição ou simplesmente espelhando atividades executadas por terceiros em contextos similares. As tentativas para evitar tais práticas baseiam-se em modelos que usam linhas de código, a complexidade ciclomática ou em estimativas de esforço, sendo estes tradicionalmente suportados por repositórios de software conhecidos por conterem várias limitações. Objetivo. Demonstrar a utilidade dos dados de processo e respetivos métodos de análise na melhoria das práticas de desenvolvimento de software, colocando o foco na análise da eficiência e revelando aspetos dos processos até então desconhecidos, contribuindo para a criação de novos modelos no contexto de análises avançadas para o desenvolvimento de software. Método. Explorámos os fragmentos de processo de vários programadores em três cenários diferentes, recolhendo eventos durante as suas sessões de desenvolvimento no IDE. Adicionalmente, usámos métodos de descoberta e análise de processos e texto no sentido de modelar o fluxo de trabalho dos programadores e as suas características individuais, respetivamente. Resultados. Descobrimos e modelámos com boa qualidade os processos dos programadores durante as suas sessões de trabalho, usando eventos provenientes dos seus IDEs. Revelámos factos desconhecidos sobre práticas de refabricação, construímos modelos de previsão da complexidade ciclomática usando apenas métricas de processo e criámos um método para caracterizar coerentemente os comportamentos dos programadores. Este último, pode levar à criação de um catálogo de boas/más práticas no processo de desenvolvimento de software. Conclusões. A nossa abordagem é agnóstica em termos de linguagens de programação, localização geográfica ou prática de desenvolvimento, tornando-a aplicável em contextos complexos tal como em projetos modernos de desenvolvimento global que utilizam tanto os IDEs tradicionais como as atuais e sofisticadas plataformas "low/no code"

    The Design of Open Platforms: Towards an Emulation Theory

    Get PDF
    The enrolment of third-party developers is essential to leverage the creation and evolution of data ecosystems. When such complementary development takes place without any organizational consent, however, it causes new social and technical problems to be solved. In this paper, we advance platform emulation as a theoretical perspective to explore the nature of such problem-solving in the realm of open platforms. Empirically, our analysis builds on a 10-year action design research effort together with a Swedish authority. Its deliberate change agenda was to transform unsolicited third-party development into a sanctioned data ecosystem, which led to a live open platform that is still in production use. Theoretically, we synthesize and extend received theory on open platforms and offer novel product and process principles for this class of digital platforms

    Characterizing data scientists in the real world

    Get PDF
    Dissertação de mestrado integrado em Informatics EngineeringEvery day, data is being collected from all different types of sources. According to the company Domo, data is being collected from ad clicks, likes on social media, shares, transactions, streaming content, and so much more. Their study, which focused on the data generated on the most popular platforms in 2020, shows that, every minute of the day, users sent 12M instant messages, shared 65K photos on Instagram, and conducted 5.7M of searches on Google. Moreover, accordingly to Statista, by 2025, the volume of data created, captured, copied, and consumed worldwide will increase up to 180 zettabytes. This enormous amount of data in itself may not be relevant. The real value of data lies in the information it hides about individuals and the world. As a result, it is more crucial than ever for businesses of all sizes to focus on the data they collect from diverse sources and use the insights they gain to become more competitive in their fields of expertise. In this scenario, companies rely on recruiting professionals to join data science teams capable of gleaning insights and extracting value from data. Data science, as the name implies, can be seen as the science that studies data. It is a multidisciplinary field where professionals, commonly known as data scientists, transform data into insights and decisions. Several researchers have focused on data science, intending to explain it and demonstrate its value in several contexts. However, in this research study, we shifted the focus to those who practice data science. This work aims to take advantage of the information collected through interviews and a public survey to fully understand who is doing data science, how they work, what skills they hold and lack, and which tools they need. Based on the results, we argue that the academic past of data science professionals has little impact on the way they work and that the most difficult challenges they face are obtaining high-quality data and applying deep learning techniques. We also discovered evidence of a gender gap in data science, which the scientific community should address in order to make data science accessible to everyone.Todos os dias são recolhidos milhões dos dados das mais distintas fontes. O último estudo realizado pela empresa Domo sobre a quantidade de dados gerados nas principais plataformas online, mostrou que, a cada minuto de 2020, os utilizadores enviaram mais de 12 milhões de mensagens, partilharam cerca de 65 milhares de fotos no instagram, e fizeram mais de 5.7 milhões de pesquisas no Google. Para além disso, de acordo com um estudo realizado pela plataforma Statista, até 2025, o volume de dados criados, guardados e consumidos a nível global atingirá 180 zettabytes. Essa enorme quantidade de dados, por si só, pode não ser relevante. O valor real dos dados está nas informações que eles escondem sobre a sociedade e o mundo. Assim, é mais crucial do que nunca que as empresas de todos as indústrias se concentrem nos dados que coletam e usar o conhecimento que obtêm para se tornarem mais competitivas nas suas áreas de atuação. Perante este cenário, as empresas têm vindo a apostar cada vez mais no recrutamento de profissionais para integrarem equipas focadas em ciência de dados, capazes de utilizar dados para dar resposta a vários problemas que as afetam. Ciência de dados, como o nome indica, pode ser vista como a ciência que estuda dados. É uma área multidisciplinar onde os profissionais, comumente conhecidos como cientistas de dados, transformam dados em conhecimento que auxilia a tomada de decisões. Nos últimos anos, vários investigadores focaram-se no estudo da ciência de dados, com o objetivo de explicar e demonstrar o seu valor em diversos contextos. No entanto, neste trabalho, mudamos o foco para aqueles que praticam a ciência de dados. Assim, o objetivo deste estudo é aproveitar as informações recolhidas por meio de entrevistas e de um inquérito para melhor conhecer quem trabalha em ciência de dados. Com base nos resultados, argumentamos que o passado acadêmico dos profissionais de ciência de dados tem pouco impacto na forma como trabalham e que os maiores desafios que enfrentam são a obtenção de dados de qualidade e a aplicação de técnicas de deep learning. Também encontramos evidências de uma lacuna de gênero, sendo esta uma questão que deve ser abordada pela comunidade cientifica de forma a tornar a ciência de dados igualmente acessível a todos
    corecore