12 research outputs found

    Streamlining code smells: Using collective intelligence and visualization

    Get PDF
    Context. Code smells are seen as major source of technical debt and, as such, should be detected and removed. Code smells have long been catalogued with corresponding mitigating solutions called refactoring operations. However, while the latter are supported in current IDEs (e.g., Eclipse), code smells detection scaffolding has still many limitations. Researchers argue that the subjectiveness of the code smells detection process is a major hindrance to mitigate the problem of smells-infected code. Objective. This thesis presents a new approach to code smells detection that we have called CrowdSmelling and the results of a validation experiment for this approach. The latter is based on supervised machine learning techniques, where the wisdom of the crowd (of software developers) is used to collectively calibrate code smells detection algorithms, thereby lessening the subjectivity issue. Method. In the context of three consecutive years of a Software Engineering course, a total “crowd” of around a hundred teams, with an average of three members each, classified the presence of 3 code smells (Long Method, God Class, and Feature Envy) in Java source code. These classifications were the basis of the oracles used for training six machine learning algorithms. Over one hundred models were generated and evaluated to determine which machine learning algorithms had the best performance in detecting each of the aforementioned code smells. Results. Good performances were obtained for God Class detection (ROC=0.896 for Naive Bayes) and Long Method detection (ROC=0.870 for AdaBoostM1), but much lower for Feature Envy (ROC=0.570 for Random Forrest). Conclusions. Obtained results suggest that Crowdsmelling is a feasible approach for the detection of code smells, but further validation experiments are required to cover more code smells and to increase external validityContexto. Os cheiros de código são a principal causa de dívida técnica (technical debt), como tal, devem ser detectados e removidos. Os cheiros de código já foram há muito tempo catalogados juntamente com as correspondentes soluções mitigadoras chamadas operações de refabricação (refactoring). No entanto, embora estas últimas sejam suportadas nas IDEs actuais (por exemplo, Eclipse), a deteção de cheiros de código têm ainda muitas limitações. Os investigadores argumentam que a subjectividade do processo de deteção de cheiros de código é um dos principais obstáculo à mitigação do problema da qualidade do código. Objectivo. Esta tese apresenta uma nova abordagem à detecção de cheiros de código, a que chamámos CrowdSmelling, e os resultados de uma experiência de validação para esta abordagem. A nossa abordagem de CrowdSmelling baseia-se em técnicas de aprendizagem automática supervisionada, onde a sabedoria da multidão (dos programadores de software) é utilizada para calibrar colectivamente algoritmos de detecção de cheiros de código, diminuindo assim a questão da subjectividade. Método. Em três anos consecutivos, no âmbito da Unidade Curricular de Engenharia de Software, uma "multidão", num total de cerca de uma centena de equipas, com uma média de três membros cada, classificou a presença de 3 cheiros de código (Long Method, God Class, and Feature Envy) em código fonte Java. Estas classificações foram a base dos oráculos utilizados para o treino de seis algoritmos de aprendizagem automática. Mais de cem modelos foram gerados e avaliados para determinar quais os algoritmos de aprendizagem de máquinas com melhor desempenho na detecção de cada um dos cheiros de código acima mencionados. Resultados. Foram obtidos bons desempenhos na detecção do God Class (ROC=0,896 para Naive Bayes) e na detecção do Long Method (ROC=0,870 para AdaBoostM1), mas muito mais baixos para Feature Envy (ROC=0,570 para Random Forrest). Conclusões. Os resultados obtidos sugerem que o Crowdsmelling é uma abordagem viável para a detecção de cheiros de código, mas são necessárias mais experiências de validação para cobrir mais cheiros de código e para aumentar a validade externa

    UM MAPEAMENTO SISTEMATICO SOBRE CATÁLOGOS DE ANOMALIAS DE CÓDIGO UTILIZADOS EM ESTUDOS EMPIRICOS NA ENGENHARIA DE SOFTWARE.

    Get PDF
    Muitas ferramentas, processos, metodologias e afirmam melhorar ou avaliar a qualidade dos softwares. Entretanto há muitos desafios a serem superados no desenvolvimento de software. Fowler (1999), Beck (2001), contribuíram de forma significativa catalogando diversos problemas de código que foi denominado por eles como “maus cheiros” (Bad Smeel), além disso eles catalogaram possíveis soluções para tratar cheiros de código

    Investigando o impacto da adoção de diferentes heurísticas e thresholds na detecção automática de anomalias de código

    Get PDF
    A análise estática automatizada de código se tornou um importante pilar das práticas modernas de revisão de código em conjunto com testes e revisão manual (Beller, 2016), tendo como principais objetivos encontrar anomalias (cheiros de código ou code smells)e realizar melhorias no código em termos de legibilidade, comentários, consistência e remoção de código morto (Bacchelli; Bird, 2013)

    O PAPEL DOS DESENVOLVEDORES NOS CODE SMELLS EM PROJETOS OPEN SOURCE

    Get PDF
    Este trabalho visa contribuir com evidências experimentais para a discussão sobre CodeSmell (FOWLER, 1999) e a utilidade real de sua identificação e estudo para a indústriade software. Code smells, ou, numa tradução literal, “mal cheiros de código”, é umconceito utilizado na Programação Orientada a Objetos para determinar se um projetopode vir a ter problemas no sua evolução

    Cenário de decisões baseado em métricas de software : definição e implementação de cenários a partir de métricas de design e de vulnerabilidade para tomada de decisão

    Get PDF
    Monografia (graduação)—Universidade de Brasília, Faculdade UnB Gama, Curso de Engenharia de Software, 2014.A qualidade interna é um dos fatores de sucesso de projetos de software, pois corresponde a aspectos primordiais do software tais como manutenibilidade e segurança. Softwares com boa qualidade interna proporcionam maior produtividade uma vez que possibilitam a criação de mais testes automatizados, são mais compreensíveis, reduzem o risco de bugs e facilitam as modificações e evoluções no código. Portanto, o Engenheiro de Software é um dos responsáveis por esse sucesso, uma vez que deve reunir um conjunto de habilidades e conhecimentos que o permitam aplicar práticas, técnicas e ferramentas para a criação de softwares seguros e com bom design. Diante disso, este trabalho aborda as principais ideias e conceitos relacionados à melhoria contínua do código-fonte. Nesse sentido, nesta monografia é destacada a importância da realização de atividades contínuas relacionadas ao design e segurança ao longo de todo o projeto de software, além de discutir a importância da utilização de métricas estáticas de código-fonte para suportar a tomada de decisões, tanto em nível técnico quanto gerencial. Nesse sentido, é apresentado o conceito de Cenários de Decisões que definem uma abstração para escolha e interpretação de métricas, além da proposta de exemplos de utilização destes Cenários para medição da segurança de software. Para suportar a utilização de cenários e métricas no desenvolvimento de software, este trabalho ainda contempla a colaboração na evolução da plataforma livre de monitoramento de código-fonte chamada Mezuro e a construção de uma solução de DataWarehousing.The internal quality is a success factor of software projects because it corresponds to the main aspects of the software such as maintainability and security. Software with good internal quality provides more productivity since it supports the creation of more automated tests, as well as it is more understandable, reduces the risk of bugs, and makes the code changes and developments easier to be done. Therefore, the Software Engineer is a major contributor for this success since he should gather a set of skills and knowledge to apply practices, techniques, and tools for creating secure and well design software. Thus, this research covers the main ideas and concepts related to continuous improvement of source code. In this context, in this degree monograph, we highlight the importance of conducting ongoing activities related to design and security throughout the software project, as well as discuss the importance of using static source code metrics to support decision making at managerial level and technical as well. In this regard, we present the concept of Decisions Scenarios that define an abstraction for metrics choice and interpretation, as well as proposals of examples to use scenarios for measuring software security. To support the use of scenarios and metrics in software development, this work also includes a collaboration for the evolution of a source code monitoring platform called Mezuro and building a datawarehousing solution

    Construção de uma ferramenta flexível de base histórica de medição

    Get PDF
    Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Faculdade UnB Gama, 2018.A medição é uma área importante na engenharia de software, uma vez que ela permite que as organizações consigam fazer estimativas confiáveis sobre prazo, custo e qualidade. Desenvolver um processo de medição bem definido, baseado nos objetivos de negócio, fornece uma fonte de informação confiável para tomada de decisões nos projetos. Problemas relacionados à criação e à manutenção de uma base histórica de medição são recorrentes nas organizações que trabalham com desenvolvimento de software, uma vez que não existem muitas ferramentas que mantém a base histórica das métricas e que existe falta de flexibilidade na criação e edição das métricas na maioria das ferramentas medição disponíveis. Diante deste problema, este trabalho tem como objetivo desenvolver uma ferramenta de base história de medição flexível. A metodologia de pesquisa utilizada foi a revisão sistemática de literatura. Além disso, a metodologia de desenvolvimento foi uma versão simplificada do Scrum. Os resultados da revisão sistemática apresentam as ferramentas de métricas listadas na literatura, quais são as suas funcionalidades, suas vantagens e também desvantagens. Foi obtido também, as principais métricas utilizadas por essas ferramentas. A ferramenta desenvolvida trabalhou boas práticas de programação, buscou utilizar das forças que as ferramentas estudadas mostraram e preencheu as lacunas que essas ferramentas apresentam. Além disso, a ferramenta foi validada por iterações de Interação Humano Computador e em ambiente real de desenvolvimento de software. Os resultados dessa validação foram aplicados em melhorias para o sistema. Assim, o objetivo do estudo foi atingido, uma vez que a ferramenta de base histórica de medições foi construída e validada utilizando boas técnicas de desenvolvimento de software.Measurement is an important area in software engineering once it enables organizations to do reliable estimates of time, cost, and quality. Developing a well-defined measurement process, based on business objectives, provides a reliable source of information for project decision-making. Problems related to the creation and maintenance of a historical measurement base are recurrent in organizations that work with software development since there are few tools that maintain the historical base of the metrics and that there is a lack of flexibility in the creation and edition of the metrics in the majority measuring tools available. Faced with this problem, this work aims to develop a flexible measurement historical base tool. The research methodology used was the systematic review of the literature. In addition, the development methodology was a simplified version of Scrum. The results of the systematic review present metrics tools listed in the literature, what are their functionalities, their advantages and also disadvantages. The main metrics used by these tools were also obtained. The tool developed used good programming practices, sought to use the forces that the tools studied showed and filled the gaps that these tools present. In addition, the tool was validated by Human Computer Interaction iterations and in real software development environment. The results of this validation were applied in improvements to the system. Thus, the objective of the study was reached, since the measurement historical base tool was constructed and validated using good software development techniques

    Aplicação de técnicas de Data Mining na avaliação da qualidade da carne de cordeiro

    Get PDF
    Tese de Mestrado em Engenharia e Gestão de Sistemas de InformaçãoA composição corporal dos animais, de todas as espécies, varia consideravelmente consoante o estádio de crescimento, o plano nutricional e a base genética. Tendo isso em conta, e considerando que os vários tecidos que compõem a carcaça possuem valor económico diferente, é fácil admitir que o valor económico dos animais dependa da composição da carcaça. Assim, este trabalho visa utilizar uma abordagem de Data Mining para prever, utilizando como entradas as medições obtidas na linha de abate, a composição tecidual de carcaças de cordeiro. Cento e vinte e cinco cordeiros da raça Churra Galega Bragançana foram abatidos. Durante o quarteamento das carcaças, foi utilizado um paquímetro para realizar medições da gordura subcutânea entre a 12ª e 13ª costelas (C12), e entre a 1ª e 2ª vértebra lombar (C1). As proporções de Músculo (PM), Osso (PO), Gordura Subcutânea (PGS), Gordura Intermuscular (PGI), e Gordura Pélvica e Renal (PGPR) das carcaças de cordeiro foram colectadas numa base de dados. Utilizamos a biblioteca rminer da ferramenta R e comparamos três técnicas de regressão: Regressão Múltipla (RM), Redes Neuronais Artificiais (RNA) e Máquinas de Vectores de Suporte (MVS). O modelo de RM apresenta o Erro Relativo Absoluto (RAE) mais baixo para PM (RAE=59.4%, P<0.05) e para PGI (RAE=64.1%, P<0.05). O modelo MVS apresenta o RAE mais baixo para PO (RAE=46.1%, P<0.05), para PGPR (RAE=51.5%, P<0.05), e para PGS (RAE=42.2%, P<0.05). Para além disso, um procedimento de análise de sensibilidade revelou a medida C12 como a entrada mais importante para todos os cinco tecidos da carcaça. Foi ainda apresentado um exemplo de um novo sistema de classificação de carcaças, desenvolvido através de um procedimento de Clustering e baseado em dados objectivos.The body composition of animals from all species varies considerably depending on the stage of growth, nutritional plan and genetic basis. Taking this into account, and considering that the various tissues that comprises the carcass have di erent economic value, it is easy to admit that the economic value of an animal depends of the carcass composition. Therefore, this study aims at applying a Data Mining approach to predict, using carcass measurements taken at slaughter line as predictors, the tissue composition of lamb carcasses. One hundred and twenty ve lambs from the Churra Galega Bragançana breed were slaughtered. During quartering, a caliper was used to measure the subcutaneous fat depth between the 12th and 13th ribs (C12), and between the 1st and 2nd lumbar vertebrae (C1). The Muscle (PM), Bone (PO), Subcutaneous Fat (PGS), Inter-muscular Fat (PGI), and Kidney Knob and Channel Fat (PGPR) proportions were computed. We used the rminer R library and compared three regression techniques: Multiple Regression (RM), Arti cial Neural Networks (RNA) and Support Vector Machines (MVS). The RM model presents the lower Relative Absolute Error (RAE) for PM (RAE=59.4%, P<0.05) and PGI (RAE=64.1%, P<0.05). The MVS model presents the lowest RAE for PO (RAE=46.1%, P<0.05), PGPR (RAE=51.5%, P<0.05), and PGS (RAE=42.2%, P<0.05). In addition, a sensitivity analysis procedure revealed the C12 measurement as the most important predictor for all ve carcass tissues. An example of a new carcass classi cation system was also presented, which was developed through a clustering procedure and based on objective data

    Sistema de comunicações tolerante a falhas e de baixa complexidade para um veículo eléctrico

    Get PDF
    Tese de mestrado. Mestrado integrado em Engenharia Electrotécnica e de Computadores. Faculdade de Engenharia. Universidade do Porto. 201

    Otimização e Compressão de Páginas Web para Sistemas Embebidos e desenvolvimento de Equipamentos IOT

    Get PDF
    Este relatório de estágio foi realizado no âmbito do estágio inserido no Mestrado em Engenharia Informática-Internet das Coisas da Escola Superior de Tecnologia de Tomar do Instituto Politécnico de Tomar, e tem como objetivo colocar em ambiente real os conhecimentos adquiridos no percurso académico. O estágio tem inerente 4 projetos associados à área do IOT e da monitorização de ambientes e/ou objetos com recurso a diversas soluções. O primeiro projeto, referente ao equipamento "Nidus" já existente. Este equipamento disponibilizado em vários modelos permite a ligação de vários tipos de sensores e atuadores e centralizar o sistema de monitorização. Este equipamento é capaz igualmente a comunicação dos dados para um portal Cloud onde é possível analisar os dados enviados pelos vários equipamentos. Neste projeto é necessário a análise do estado atual do projeto e dar continuidade ao suporte do Front-end WEB do equipamento. Este projeto pretende estudar e alterar os métodos de desenvolvimento da página referentes á compressão dos ficheiros para reduzir o espaço ocupado pelas páginas WEB em equipamentos de baixos recursos computacionais e armazenamento, a adoção de um melhor método para utilização de imagens nas interfaces WEB em equipamentos com armazenamento limitado e o desenvolvimento de novas funcionalidades tais como um sistema de internacionalização de modo a disponibilizar o equipamento noutros idiomas, sempre tendo em, conta o baixo armazenamento disponível. Os restantes projetos serão desenvolvidos de raiz durante o estágio a pedido dos clientes, por soluções à medida, ou quer pela inovação e evolução dos produtos da empresa, e consistem em novos equipamentos para monitorização. O segundo projeto é referente ao desenvolvimento de um equipamento IOT que tire partido das vantagens da nova tecnologia de comunicação o Narrowband (NBIOT). Neste equipamento irá ser possível adicionar vários sensores já comercializados pela Captemp. O equipamento é capaz de realizar as leituras de todos os sensores conectados, realizar o armazenamento em Log para posterior envio para o portal Cloud para consulta futura ou gestão da alarmística correspondente. Este equipamento é igualmente capaz de realizar uma configuração bidirecional de modo a ser possível realizar a sua configuração através do portal Cloud. Paralelamente aos projetos anteriores e com o emergir de novas tecnologias tais como os Beacons Bluetooth Low Energy e pela sugestão de diversos clientes de uma nova solução de monitorização portátil e simples, foi criado o projeto "Kea Tracker" composto por Beacons e uma aplicação Mobile para Smartphones, responsável por periodicamente realizar a leitura dos sensores presentes nos Beacons, o seu armazenamento e posterior envio para o portal Cloud, à semelhança do projeto anterior. Neste projeto o Beacon é igualmente capaz de registar em Log interno para caso exista falha de comunicação com a aplicação Mobile, posteriormente esses dados serem descarregados quando o Smartphone estiver disponível. O último projeto referente deste estágio, foi solicitado pelo cliente que pretende uma plataforma WEB para localizar pessoas em ambientes indoor. Esta solução baseia-se no desenvolvimento de uma solução composta por localizadores, Gateways e uma plataforma WEB onde seja possível realizar o Tracking de pessoas e de objetos em ambientes indoor num mapa e assim gerir os tempos de acesso a zonas definidas, criar alertas, ou simplesmente gerir o stock dos armazéns. Este projeto, à semelhança do projeto "Kea Tracker", usa como tecnologia de suporte Beacons Bluetooth Low Energy (BLE) para fazer o tracking em tempo real

    Aplicação de técnicas de realidade virtual na simulação do parto

    Get PDF
    O presente projeto tem como objetivo ao desenvolvimento de uma aplicação que forneça um método imersivo capaz de visualizar e interagir com simulações biomecânicas, utilizando realidade virtual. O caso a ser estudado ilustra o parto humano, e todos os processos utilizados de modo a obter o objeto tridimensional que permitirá a criação de uma ferramenta que possa em trabalhos futuros treinar profissionais na área da saúde.This project arises from the need of developing an immersive method to visualize and interact with biomechanical simulations, using virtual reality, namely with online and remote applications. This particular case illustrates a human birth through the vaginal canal. The present research refers the process used to achieve the tridimensional object, in order to create in future projects a tool with training purposes for professionals in the medical area
    corecore