12 research outputs found
Streamlining code smells: Using collective intelligence and visualization
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.
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
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
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
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
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
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
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
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
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