41 |
[en] TO COLLABORATE OR NOT TO COLLABORATE?: IMPROVING THE IDENTIFICATION OF CODE SMELLS / [pt] COLABORAR OU NÃO COLABORAR?: MELHORANDO A IDENTIFICAÇÃO DE ANOMALIAS DE CÓDIGOROBERTO FELICIO DE OLIVEIRA 17 January 2018 (has links)
[pt] Anomalias de código são estruturas anômalas de código que podem indicar
problemas de manutenção. A identificação de anomalias é necessária para
revelar elementos de código mal estruturados, tais como classes e métodos.
Porém, a identificação individual de anomalias, realizada por um único desenvolvedor,
pode ser ineficaz. Estudos reportam limitações da identificação
individual de anomalias. Por exemplo, a identificação de anomalias requer
uma compreensão profunda de múltiplos elementos de um programa, e
cada elemento é melhor entendido por um desenvolvedor diferente. Logo,
um desenvolvedor isolado frequentemente tem dificuldades para encontrar,
confirmar e refutar uma suspeita de anomalia. Identificação colaborativa
de anomalias, que é realizada em conjunto por dois ou mais colaboradores,
tem o potencial para resolver esse problema. Porém, há pouca evidência
empírica sobre a eficácia da identificação colaborativa de anomalias. Nesta
tese, nós conduzimos estudos empíricos para entender a eficácia da identificação
individual e colaborativa de anomalias. Computamos e comparamos
a eficácia de colaboradores e desenvolvedores isolados com base no número
de anomalias identificadas corretamente. Conduzimos tais estudos em empresas
e laboratórios de pesquisa, totalizando 67 desenvolvedores, incluindo
desenvolvedores novatos e experientes. Também definimos alguns fatores de
influência sobre a eficácia da identificação colaborativa de anomalias, tais
como a granularidade da anomalia. Revelamos e caracterizamos algumas
atividades colaborativas que melhoram a eficácia dos desenvolvedores na
identificação de anomalias. Finalmente, identificamos oportunidades para
melhorar certas atividades colaborativas. Nossos resultados sugerem que
colaboradores são significativamente mais eficazes que desenvolvedores
isolados, tanto desevolvedores novatos quanto experientes. Concluímos que
colaborar é vantajoso para melhorar a identificação de uma vasta gama de
tipos de anomalia. / [en] Code smells are anomalous code structures which often indicate maintenance
problems in software systems. The identification of code smells is
required to reveal code elements, such as classes and methods, that are
poorly structured. Some examples of code smell types perceived as critical
by developers include God Classes and Feature Envy. However, the individual
smell identification, which is performed by a single developer, may
be ineffective. Several studies have reported limitations of individual smell
identification. For instance, the smell identification usually requires an indepth
understanding of multiple elements scattered in a program, and each
of these elements is better understood by a different developer. As a consequence,
a single developer often struggles and to find to confirm or refute
a code smell suspect. Collaborative smell identification, which is performed
together by two or more collaborators, has the potential to address this
problem. However, there is little empirical evidence on the effectiveness of
collaborative smell identification. In this thesis, we addressed the aforementioned
limitations as follows. First, we conducted empirical studies aimed at
understanding the effectiveness of both collaborative and individual smell
identification. We computed and compared the effectiveness of collaborators
and single developers based on the number of correctly identified code
smells. We conducted these studies in both industry’s companies and research
laboratories with 67 developers, including novice and professional
developers. Second, we defined some influential factors on the effectiveness
of collaborative smell identification, such as the smell granularity. Third, we
revealed and characterized some collaborative activities which improve the
developers effectiveness for identifying code smells. Fourth, we also characterized
opportunities for further improving the effectiveness of certain
collaborative activities. Our results suggest that collaborators are more effective
than single developers in: (i) both professional and academic settings,
and (ii) identifying a wide range of code smell types.
|
42 |
[en] REUSE-ORIENTED APPROACH FOR INCREMENTAL AND SYSTEMATIC DEVELOPMENT OF INTENTIONAL UBIQUITOUS APPLICATIONS / [pt] ABORDAGEM ORIENTADA À REUTILIZAÇÃO DE SOFTWARE PARA DESENVOLVIMENTO INCREMENTAL E SISTEMÁTICO DE APLICAÇÕES UBÍQUAS INTENCIONAISMILENE SERRANO 26 January 2017 (has links)
[pt] Aplicações ubíquas estão inseridas em ambientes inteligentes integrados ao mundo físico e compostos de usuários com diferentes preferências, dispositivos heterogêneos e vários provedores de serviço e conteúdo. Além disso, essas aplicações são especializadas em oferecer serviços e conteúdos em qualquer lugar
e momento, auxiliando os usuários em suas atividades diárias sem incomodá-los. Baseado nesse mundo idealizado, o paradigma em qualquer lugar e momento impõe alguns desafios para a comunidade de Engenharia de Software, tais como: heterogeneidade de dispositivos, ambientes distribuídos, mobilidade, satisfação de usuário, adaptação de conteúdo, sensibilidade de contexto, privacidade, personalização, transparência, invisibilidade e constante evolução das tendências tecnológicas. Visando lidar com esses novos desafios tecnológicos, é proposta uma abordagem orientada à reutilização de software para desenvolvimento incremental e sistemático de aplicações ubíquas intencionais. Foram escolhidos dois principais objetivos para conduzir a pesquisa dessa tese: (i) a construção de conjuntos de apoio, orientados à reutilização de software, com base em uma investigação detalhada de aplicações ubíquas e do paradigma de Sistemas Multi-Agentes Intencionais – ou seja, Desenvolvimento para Reutilização; e (ii) o desenvolvimento incremental e sistemático de aplicações ubíquas, dirigidas por Sistemas Multi-Agentes Intencionais, com base na abordagem orientada à reutilização de software – ou seja, Desenvolvimento com Reutilização. Algumas contribuições do nosso trabalho são: (i) uma arquitetura orientada à reutilização de software e baseada nos conjuntos de apoio – i.e. blocos de construção principalmente compostos de modelos conceituais, frameworks, padrões e bibliotecas – obtidos a partir da Engenharia de Domínio das Aplicações Ubíquas; (ii) uma Engenharia de Aplicações Ubíquas orientada à reutilização de software visando o desenvolvimento incremental e sistemático de aplicações ubíquas com base nos blocos de construção propostos; (iii) um modelo de raciocínio focado em regras condicionais de lógica nebulosa e no modelo Crença-Desejo-Intenção para melhorar a capacidade cognitiva dos agentes; (iv) um mecanismo específico, baseado em agentes intencionais, para lidar com questões de privacidade, balanceando privacidade e personalização bem como transparência e invisibilidade; (v) um catálogo que graficamente apresenta os principais requisitos não-funcionais ubíquos, as interdependências entre eles e formas de se operacionalizá-los com base na combinação de tecnologias tradicionais e emergentes; (vi) ontologias para permitir a construção dinâmica de interfaces e melhorar a comunicação e inter-operabilidade dos agentes de software; e (vii) um modelo de banco de dados dinâmico para carregar e recuperar os perfis ubíquos (ex. perfis de usuário, dispositivo, rede e contrato), melhorando o gerenciamento de dados em tempo de execução. A abordagem proposta foi avaliada desenvolvendo diferentes aplicações ubíquas (ex. aplicações ubíquas de comércio eletrônico e de clínica odontológica). / [en] Ubiquitous applications are embedded in intelligent environments integrated into the physical world and composed of users with different preferences, heterogeneous devices and several content and service providers. Moreover, they focus on offering services and contents anywhere and at any time by assisting the users in their daily activities without disturbing them. Based on this idealized world, the anywhere and at any time paradigm poses some challenges for the Software Engineering community, such as: device heterogeneity, distributed environments, mobility, user satisfaction, content adaptability, context awareness, privacy, personalization, transparency, invisibility and constant evolution of technological trends. In order to deal with these new technological challenges, we propose a Reuse-Oriented Approach for Incremental and Systematic Development of Intentional Ubiquitous Applications. We have chosen two main goals that drive our research in this thesis: (i) the construction of reuse-oriented support sets based on an extensive investigation of ubiquitous applications and the Intentional-Multi-Agent Systems paradigm – i.e. Development for Reuse; and (ii) the incremental and systematic development of Intentional-Multi-Agent-Systems-driven ubiquitous applications based on the reuse-oriented approach – i.e. Development with Reuse. Some contributions of our work are: (i) a reuse-oriented architecture centered on support sets – i.e. building blocks mainly composed of conceptual models, frameworks, patterns and libraries – obtained from the Domain Engineering of Ubiquitous Applications; (ii) a reuse-oriented Ubiquitous Application Engineering for incremental and systematic development of intentional ubiquitous applications centered on the proposed building blocks; (iii) a reasoning engine focused on fuzzy conditional rules and the Belief-Desire-Intention model to improve the agents cognitive capacity; (iv) a specific mechanism based on intentional agents to deal with privacy issues by balancing privacy and personalization as well as transparency and invisibility; (v) a catalogue that graphically presents the main ubiquitous non-functionalrequirements, their interdependencies and ways to operationalize them based on the combination of traditional and emergent technologies; (vi) ontologies to allow the dynamic construction of interfaces and to improve the communication and inter-operability of software agents; and (vii) a dynamic database model to store and retrieve the ubiquitous profiles (e.g. user, device, network and contract profiles) by improving the data management on the fly. The proposed approach was evaluated by developing different ubiquitous applications (e.g. e-commerce and dental clinic ubiquitous applications).
|
43 |
[en] SEMANTIC WEB INTEROPERABILITY: ONE STRATEGY FOR THE TAXONOMIC ONTOLOGY ALIGNMENT / [pt] INTEROPERABILIDADE SEMÂNTICA NA WEB: UMA ESTRATÉGIA PARA O ALINHAMENTO TAXONÔMICO DE ONTOLOGIASCAROLINA HOWARD FELICISSIMO 07 January 2005 (has links)
[pt] Com a evolução da Web atual para a Web Semântica, acredita-
se que as informações disponíveis estarão estruturadas de
forma a permitir o processamento automático de seu conteúdo
por máquinas. Além do processamento individual, deseja-se
uma melhor troca de informações entre aplicações Web. Para
estes propósitos, são necessários mecanismos que garantam a
interoperabilidade semântica, i.e., identificação e
compatibilidade de informações. Neste sentido, ontologias
são utilizadas como um recurso para disponibilizar um
vocabulário estruturado e livre de ambigüidades. Ontologias
fornecem um padrão bem definido para a estruturação da
informação e promovem um formalismo passível de
processamento automático. Neste trabalho, propomos uma
estratégia para interoperabilidade de ontologias. O
Componente para Alinhamento Taxonômico de Ontologias -
CATO, resultado da implementação desta estratégia proposta,
alinha automaticamente as taxonomias de ontologias
comparadas. O alinhamento realizado é obtido em três etapas
executadas seqüencialmente. A primeira etapa compara
lexicalmente os conceitos das ontologias entradas e usa um
mecanismo de poda estrutural dos conceitos associados como
condição de parada. A segunda etapa compara estruturalmente
as hierarquias das ontologias identificando as
similaridades entre suas sub-árvores comuns. A terceira
etapa refina os resultados da etapa anterior classificando
os conceitos identificados como similares em bem similares
ou pouco similares, de acordo com um percentual de
similaridade prédefinido. / [en] With the Web evolving towards a Semantic Web, it is
believed that the available information will be presented
in a meaningful way to allow machines to automatically
process its content. Besides the individual processing, a
better information exchange among Web applications is
desired. For this purpose, mechanisms are called for
guarantee the semantic interoperability, that is, the
identification and compatibility of information. In this
direction, ontologies are used as one resource to make
available a structured vocabulary, free of ambiguities.
Ontologies provide a well-defined standard to structure the
information and to promote formalism for automatic
processing. In this work, we propose one strategy for
ontology interoperability. The Ontology Taxonomic Alignment
Component - CATO, which is the result of the implementation
of this proposed strategy, provides an automatic taxonomic
ontologies alignment. In this way, the alignment is
obtained by a three-step process. The first step is the
lexical comparison between the concepts from the entries
ontologies. It uses a trimming mechanism of the related
associated concepts as a stop condition. The second step
is the structural comparison of the ontologies structures
used to identify the similarities between common sub-trees.
The third step refines the results of the previous step,
classifying the similar identified concepts as very similar
or little similar, according to a pre-defined similarity
measurement.
|
44 |
[en] A FRAMEWORK FOR SOFTWARE ENGINEERING PROCESS REPRESENTATION AND ANALYSIS / [pt] UM FRAMEWORK PARA A REPRESENTAÇÃO E ANÁLISE DE PROCESSOS DE SOFTWARELEANDRO RIBEIRO DAFLON 16 August 2004 (has links)
[pt] Diversas organizações buscam por padrões e guias de
trabalho para atingir
um processo de desenvolvimento maduro. Entretanto, mudanças
e evoluções no
negócio e na tecnologia implicam constantemente em mudanças
e evoluções no
processo. Esta dissertação propõe um framework que permite
as organizações
definirem e analisarem seus processos de desenvolvimento de
software no
contexto da organização ou projeto. Dessa forma,
integração, alteração e
evoluções do processo são facilitadas. A definição de um
processo está baseada no
conceito de Unidades de Processo. As Unidades de Processo
representam blocos
de construção utilizados na elaboração de novos modelos de
processo, podendo
utilizar partes de modelos de processos existentes ou não.
A análise do processo é
baseada em normas de qualidade ou modelos de maturidade,
como SW-CMM,
CMMI, ISO 12207. / [en] Many organizations search for standards and guidance to
achieve a mature
process. However, change and evolution of business and
technology imply
constant change and evolution of development processes. In
this dissertation we
propose a framework that offers an infrastructure allowing
organizations to define
and analyze software engineering process at organization
level or project level.
Besides that, it facilitates integration, change and
process evolution. The
definition of a process is based on a concept Process
Units. These represent
building blocks for tailoring integrated development
processes, by reusing or not
parts of existing process models. The process analysis is
based on quality
standards or maturity models, such as SW-CMM, CMMI, ISO
12207.
|
45 |
[en] PEOPLE RECOMMENDATION IN SOCIAL NETWORKS BASED IN USER CONNECTIONS / [pt] RECOMENDAÇÃO DE PESSOAS EM REDES SOCIAIS COM BASE EM CONEXÕES ENTRE USUÁRIOS07 March 2014 (has links)
[pt] Os sites de redes sociais ganharam importância nos últimos anos. Neles,
seus usuários podem se conectar com outros usuários para interagir entre si.
Porém, geralmente o número de usuários cadastrados é muito grande e, por isso,
encontrar outros usuários afins para se conectar não é fácil. Sistemas de
recomendação são ferramentas de software que provem sugestões de diversos
tipos de itens para usuários e podem ser aplicados para recomendar pessoas
(outros usuários) em redes sociais. Sistemas que recomendam pessoas utilizam
técnicas específicas e, devido às implicações sociais envolvidas nas relações
pessoais, devem levar alguns fatores em consideração. A ausência de dados
confiáveis torna a tarefa de gerar recomendações úteis mais difícil. Este trabalho
discute o assunto e apresenta um sistema de recomendação de pessoas para sites
de redes sociais com base em conexões entre usuários. Para testar o sistema
apresentado, realizamos um experimento com o Peladeiro, um site real de uma
rede social que conta com mais de 500 mil usuários, onde poucos dados estão
disponíveis para serem utilizados. / [en] Social networking websites have gained importance in recent years. In
them, users can connect with other users to interact with. However, generally, the
number of registered users is very large. Therefore, find other users with common
interests is not easy. Recommender systems are software tools which generate
suggestions for various types of items to users and can be applied to recommend
people (other users) on social networks. Systems that recommend people use
specific techniques and, due to the social implications involved in personal
relationships, must take several factors into consideration. The lack of data
available makes the task of generate good recommendations more difficult. This
paper discusses the theme and presents a person recommendation system for
social networking websites based in user connections. To test the system
presented, we conducted an experiment with Peladeiro, a real website of a social
network that has over 500 000 users, where few reliable data are available.
|
46 |
[en] A CLOUD COMPUTING PLATFORM FOR STORING GEOREFERENCED MOBILITY DATA / [pt] UMA PLATAFORMA NA NUVEM PARA ARMAZENAMENTO DE DADOS GEORREFERENCIADOS DE MOBILIDADE URBANARAFAEL BARBOSA NASSER 15 December 2016 (has links)
[pt] A qualidade de vida nos grandes centros urbanos tem sido motivo de preocupação para governantes, empresários e para a população residente em geral. Os serviços de transporte público coletivo exercem papel central nessa discussão, uma vez que determinam, sobretudo para aquela camada da sociedade de menor poder aquisitivo, o tempo desperdiçado diariamente em seus deslocamentos. Nas metrópoles brasileiras, os ônibus municipais são predominantes no transporte coletivo. Os usuários deste serviço – passageiros – não dispõem de informações atualizadas sobre os ônibus e linhas de ônibus em operação. Oferecer essa natureza de informação contribui para uma melhor experiência de uso diário deste modal e, consequentemente, proporciona maior qualidade de vida aos seus usuários. Em uma visão mais abrangente, os ônibus podem ser considerados sensores que viabilizam a compreensão dos padrões e identificação de anomalias no tráfego de veículos nas áreas urbanas, possibilitando galgar benefícios para toda população. O presente trabalho apresenta uma plataforma na nuvem que captura, enriquece, armazena e disponibiliza os dados dos dispositivos de GPS instalados nos ônibus, permitindo a extração de conhecimento a partir deste valioso e volumoso conjunto de informações. Experimentos são realizados com os ônibus do Município do Rio de Janeiro, com aplicações focadas no passageiro e na sociedade. As metodologias, discussões e técnicas empregadas ao longo do trabalho poderão ser reutilizados para diferentes cidades, modais e perspectivas. / [en] The quality of life in urban centers has been a concern for governments, business and the resident population in general. Public transportation services perform a central role in this discussion, since they determine, especially for that layer of lower-income society, the time wasted daily in their movements. In Brazilian cities, city buses are predominant in public transportion. Users of this service - passengers - do not have updated information of buses and lines. Offer this kind of information contributes to a better everyday experience of this modal and therefore provides greater quality of life for its users. In a broader view, the bus can be considered sensors that enable the understanding of the patterns and identify anomalies in vehicle traffic in urban areas, allowing benefits for the whole population. This work presents a platform in the cloud computing environment that captures, enriches, stores and makes available the data from GPS devices installed on buses, allowing the extraction of knowledge from this valuable and voluminous set of information. Experiments are performed with the buses of the Municipality of Rio de Janeiro, with applications focused on passenger and society. The methodologies, discussions and techniques used throughout the work can be reused for different cities, modal and perspectives.
|
47 |
[en] AUTOMATIC GENERATION OF EXAMPLES OF USE FROM THE TEXTUAL DESCRIPTION OF USE CASES / [pt] GERAÇÃO AUTOMÁTICA DE EXEMPLOS DE USO A PARTIR DA DESCRIÇÃO TEXTUAL DE CASOS DE USOFERNANDO ALBERTO CORREIA DOS SANTOS JUNIOR 28 July 2017 (has links)
[pt] Esta dissertação apresenta uma solução que permite a geração automática de
exemplos de uso a partir da descrição textual de casos de uso. Os casos de uso
descrevem especificações em um nível de formalização suficiente para a geração
dos exemplos. Um exemplo gerado é um texto em linguagem natural que é o
resultado da paráfrase de um possível comportamento do software, extraído de um
caso de uso e aplicado a um contexto real, em que atores são convertidos em
personagens fictícios e os atributos são valorados de acordo com as regras de
negócios especificadas no caso de uso. O formato proposto para a construção de
exemplos tem como objetivo permitir que clientes possam ler, entender e julgar se
o comportamento que está sendo proposto é o desejado. Com isso é esperado que o
próprio cliente possa validar as especificações e que, quando defeitos forem
encontrados, a especificação possa logo ser corrigida e refletida de volta nos
exemplos. Ao mesmo tempo a especificação formalizada na forma de um caso de
uso auxiliará desenvolvedores a criar soluções mais próximas do correto por
construção, quando comparado com especificações textuais convencionais. / [en] This master s dissertation presents a solution for the automatic generation of
examples of use from the textual description of use cases. Use cases describe
specifications in a sufficiently formal way that is enough to automatically generate
usage examples. A generated example is a text in a natural language which is the
paraphrase of one possible manner to use the software, extracted from the use case
and applied to a real context where actors are converted into fictitious personas and
attributes are valued according to the business rules specified in the use case. The
proposed format to present the example aims to allow clients to read, to understand
and to judge whether the expressed behavior is in fact what he wants. With this
approach, it is expected that the customer himself can approve the specifications
and when defects are found, so the specification can quickly be corrected and
reflected in the examples. At the same time, the formalized specification in the form
of a use case will help developers create solutions that are by construction closer to
the correct one when compared to conventional textual specifications.
|
Page generated in 0.0478 seconds