1 |
[en] EVALUATION OF SOFTWARE QUALITY BASED ON UML MODELS / [pt] AVALIAÇÃO DA QUALIDADE DE SOFTWARE COM BASE EM MODELOS UMLISELA MACIA BERTRAN 08 June 2009 (has links)
[pt] Um dos objetivos da engenharia de software é a construção de software com
um nível de qualidade elevado com o menor custo e no menor tempo possível.
Nesse contexto, muitas técnicas para o controle da qualidade de design de
software têm sido definidas. Além disso, mecanismos baseados em métricas para
a detecção de problemas também têm sido definidos. A maioria dessas técnicas e
mecanismos foca a análise do código fonte. Porém, para reduzir retrabalho inútil,
é importante utilizar técnicas de análise da qualidade capazes de detectar
problemas de design já desde os modelos dos sistemas. Esta dissertação propõe:
(i) um conjunto de estratégias de detecção para identificar, em modelos UML,
problemas de design específicos e recorrentes na literatura: Long Parameter List,
God Class, Data Class, Shotgun Surgery, Misplaced Class e God Package, e (ii) a
utilização do modelo da qualidade QMOOD para avaliar design de software a
partir de seus diagramas de classes. Para automatizar a aplicação destes
mecanismos foi implementada uma ferramenta: a QCDTool. Os mecanismos
desenvolvidos foram avaliados no contexto de dois estudos experimentais. O
primeiro estudo avaliou a acurácia, precisão e recall das estratégias de detecção
propostas. Esse estudo mostrou os benefícios e desvantagens da aplicação, em
modelos, das estratégias de detecção propostas. O segundo estudo avaliou a
utilidade da aplicação do modelo da qualidade QMOOD em diagramas UML.
Esse estudo mostrou que foi possível identificar, em diagramas de classes,
variações das propriedades de design, e, conseqüentemente, dos atributos da
qualidade nos sistemas analisados. / [en] One of the goals of software engineering is the development of high quality
software at a small cost an in a short period of time. In this context, several
techniques have been defined for controlling the quality of software designs.
Furthermore, many metrics-based mechanisms have been defined for detecting
software design flaws. Most of these mechanisms and techniques focus on
analyzing the source code. However, in order to reduce unnecessary rework it is
important to use quality analysis techniques that allow the detection of design
flaws earlier in the development cycle. We believe that these techniques should
analyze design flaws starting from software models. This dissertation proposes: (i)
a set of strategies to detect, in UML models, specific and recurrent design
problems: Long Parameter List, God Class, Data Class, Shotgun Surgery,
Misplaced Class and God Package; (ii) and the use of QMOOD quality model to
analyze class diagrams. To automate the application of these mechanisms we
implemented a tool: the QCDTool. The detection strategies and QMOOD model
were evaluated in the context of two experimental studies. The first study
analyzed the accuracy, precision and recall of the proposed detection strategies.
The second study analyzed the utility of use QMOOD quality model in the class
diagrams. The results of the first study have shown the benefits and drawbacks of
the application in class diagrams of some of the proposed detection strategies. The
second study shows that it was possible to identify, based on class diagrams,
variations of the design properties and consequently, of the quality attributes in
the analyzed systems.
|
2 |
[en] A QUANTITATIVE APPROACH TO ASPECT ORIENTED SOFTWARE DEVELOPMENT / [pt] UMA ABORDAGEM QUANTITATIVA PARA DESENVOLVIMENTO DE SOFTWARE ORIENTADO A ASPECTOSEDUARDO MAGNO LAGES FIGUEIREDO 05 July 2006 (has links)
[pt] O desenvolvimento de software orientado a aspectos é um
paradigma
recente que introduz novas abstrações e mecanismos com o
objetivo de melhorar a
modularidade de interesses que se espalham pelo sistema.
Entretanto, a satisfação
de atributos de qualidade em sistemas orientados a
aspectos não é tarefa simples e
a utilização equivocada destas novas abstrações pode
resultar em efeitos colaterais
relacionados a princípios importantes da Engenharia de
Software, tais como
elevado acoplamento, baixa coesão dos módulos e incompleta
modularidade dos
interesses em aspectos. Problemas como estes não são
facilmente verificáveis em
sistemas de médio e grande porte sem um método adequado e,
geralmente,
consomem muito tempo e recursos. Portanto, torna-se
necessário um método de
avaliação que auxilie engenheiros de software na análise
de sistemas orientados a
aspectos. Este trabalho de mestrado propõe uma abordagem
que provê suporte à
avaliação quantitativa de implementações orientadas a
aspectos. A abordagem
incluiu: (i) um método de avaliação organizado em etapas,
e (ii) uma ferramenta
de medição e avaliação, chamada AJATO, que dá suporte ao
método proposto. O
método é composto por um conjunto de métricas e regras
heurísticas. As métricas
fornecem informações quantitativas e as heurísticas
contribuem com algum
raciocínio semântico dos números. A ferramenta AJATO é
composta por quatro
módulos que efetuam o parser do código, mapeamento de
estruturas sintáticas em
interesses, medição e avaliação heurística. Um conjunto de
cinco estudos de caso
envolvendo domínios de aplicação distintos foi realizado
para avaliar a utilidade e
usabilidade da abordagem proposta. / [en] Aspect-oriented software development is an emerging
paradigm that
provides new abstractions and mechanisms to support the
modularization of
crosscutting concerns through the software development
lifecycle. However, the
achievement of high-quality aspect-oriented software is
not trivial. The
inappropriate use of aspect-oriented abstractions and
mechanisms potentially
leads to the violation of important design principles,
such as low coupling, high
cohesion, incomplete modularization of crosscutting
concerns into aspects, and so
forth. These problems are not easily detectable and an ad
hoc analysis of large
designs and implementations is often expensive and time-
consuming. Hence there
is a need for an assessment method that assists software
engineers in the analysis
of their aspect-oriented implementations. This work
proposes the development of
a systematic approach to support the quantitative
assessment of aspect-oriented
software. The approach is organized in a stepwise fashion
and is founded on a
metrics suite and a comprehensive set of complementary
rules. Our proposal is
supported by a measurement and assessment tool. A set of
five case studies from
different application domains have been carried out in
order to evaluate the
usability and usefulness of our proposed approach.
|
3 |
[en] FROM OBJECTS TO AGENTS: AN ASPECT ORIENTED APPROACH / [pt] OBJETOS E AGENTES: UMA ABORDAGEM ORIENTADA A ASPECTOSALESSANDRO FABRICIO GARCIA 13 July 2004 (has links)
[pt] Agentes de software incorporam várias propriedades
específicas, como
autonomia, adaptação, interação, aprendizagem e mobilidade.
A inclusão dessas
propriedades de agência é uma das maiores fontes de
complexidade na construção de
sistemas multiagentes. Dificilmente elas são modularizadas
com abstrações e
mecanismos da engenharia de software orientada a objetos. À
medida que a
complexidade da arquitetura interna dos agentes aumenta,
essas propriedades tendem a
se espalhar através dos vários módulos ou objetos do
sistema. O espalhamento é
observado desde fases preliminares de desenvolvimento, como
a fase de definição
arquitetural. O uso de abstrações e mecanismos existentes
conduz ao projeto e à
implementação de sistemas multiagentes que são difíceis de
manter e reutilizar.
Este trabalho apresenta uma abordagem orientada a aspectos
para o
desenvolvimento de sistemas baseados em agentes. A
abordagem provê suporte para
modularização e composição das propriedades de agência por
meio de abstrações e
mecanismos do paradigma orientado a aspectos. Além disso,
tais propriedades são
incorporadas de forma transparente à funcionalidade básica
do sistema de software,
desde a fase de definição arquitetural. A abordagem
compreende três componentes: (i)
um método arquitetural, (ii) uma linguagem de padrões e
(iii) um framework para
avaliação quantitativa. O método e a linguagem apresentam
um conjunto de soluções
orientadas a aspectos para a definição arquitetural,
projeto e implementação de agentes
de software. O framework define um conjunto de métricas e
um modelo de qualidade
que permite a avaliação empírica da nossa abordagem em
termos de reusabilidade e
manutenibilidade. Estudos experimentais qualitativos e
quantitativos foram realizados
para avaliar nossa proposta em diferentes domínios de
aplicação. Os resultados
empíricos concluíram que nossa abordagem permite a
construção de sistemas baseados
em agentes com modularização superior, menor acomplamento,
menos linhas de código
e menor complexidade interna dos componentes. / [en] Software engineers of Multi-Agent Systems (MASs) are faced
with different
concerns (properties), such as autonomy, adaptation,
interaction, collaboration, learning,
and mobility. Many of these agent concerns cannot be
modularized based only on
object-oriented abstractions. MAS developers however have
relied mostly on objectoriented
design techniques and on object-oriented programming
languages, such as
Java. As the agent complexity increases, the agent concerns
tend to spread across
several system components at the architectural, design and
implementation levels. It
often leads to a poor separation of agent concerns in the
software system, and in turn to
the production of MASs that are difficult to maintain and
reuse.
This thesis presents an innovative aspect-oriented approach
for the seamless
integration of agents into object-oriented software
engineering from the architectural
stage to the implementation stage. Aspect is the
abstraction used to modularize agent
concerns that crosscut several system components. The
proposed approach encourages
the separate handling of agent properties, and provides a
disciplined scheme for their
composition. The approach is composed of an architectural
method, a pattern language,
and an assessment framework. The architectural method and
the pattern language
provide aspect-oriented solutions for modularizing the
agent concerns at different stages
of design and implementation. The purpose of the assessment
framework is to support
the evaluation of the reusability and maintainability of
aspect-oriented solutions based
on a metrics suite and a quality model. Experimental
studies in different application
domains have been conducted to assess the proposed approach
based on qualitative and
quantitative criteria. The use of the aspect-oriented
solutions resulted in fewer lines of
code, fewer design and implementation components, lower
internal complexity of
system components, and lower coupling.
|
4 |
[en] ENGINEERING SELF-ORGANIZING EMERGENT MULTI-AGENT SYSTEMS: A DESIGN METHOD AND ARCHITECTURE / [pt] ENGENHARIA DE SISTEMAS MULTI-AGENTES AUTO- ORGANIZÁVEIS: UM MÉTODO DE PROJETO E ARQUITETURAMAIRA ATHANAZIO CERQUEIRA GATTI 24 September 2010 (has links)
[pt] Arquitetos de software utilizam cada vez mais mecanismos de auto-
organização para projetar sistemas distribuídos em um ambiente dinâmico,
com ruído e imprevisível. Neste cenário, além de não existir uma entidade
centralizadora que possua o conhecimento completo do estado do ambi-
ente como um todo, mecanismos de auto-organização são principalmente
inspirados pela natureza e permitem o comportamento com controle de-
scentralizado. Existem duas linhas de pesquisa que direcionam esta tese:
a primeira, como é o caso de qualquer paradigma de engenharia de soft-
ware, o sucesso e abrangência de uso de sistemas auto-organizáveis requerem
notações que exploram o uso de abstrações relacionadas a auto-organização
e promovam a rastreabilidade a partir de modelos de projeto à código, e re-
querem métodos de engenharia para prover know-how e guiar um engenheiro
durante o projeto da aplicação. A segunda linha de pesquisa foca no incen-
tivo do reuso de software em sistemas auto-organizáveis. Os objetivos desta
tese são: prover um método de engenharia baseado em simulação para apoiar
o projeto, desenvolvimento, simulação, validação e refinamento de sistemas
multi-agentes auto-organizáveis; e prover uma arquitetura baseada em sim-
ulação. Um projeto arquitetural ajuda no desenvolvimento de uma estrutura
de programa modular e na representação dos relacionamentos de controle
entre módulos e encoraja o engenheiro de software a se concentrar no pro-
jeto arquitetural antes de se preocupar com otimizações e código. Esta tese
apresenta: um ciclo de vida de desenvolvimento iterativo baseado no Pro-
cesso Unificado, SSOA - uma arquitetura de auto-organização baseada em
simulação, e o framework que implementa a arquitetura. O método de pro-
jeto e a arquitetura foram avaliados através de três domínios de aplicação
diferentes: veículos guiados automatizados, contratos que governam sistemas
multi-agentes emergentes, e modelagem computacional do comportamento
de células-tronco. / [en] Software architects are increasingly relying on self-organizing mechanisms to
design distributed systems within a dynamic, noisy and unpredictable envi-
ronment. At any point in time, no centralized entity has complete knowledge
of the state of the environment as a whole and self-organizing mechanisms
are mainly naturally-inspired which enables the decentralized control. There
are two tracks that drive the research in this thesis: first, as it is the case
with any new software engineering paradigm, the successful and widespread
deployment of self-organizing systems require notations that explore the use
of self-organizing related abstractions and promote the traceability from the
design models to code, and engineering methods that provides know-how
and guides an engineer during an application design. The second research
track is to promote software reuse of self-organizing systems. This thesis’s
goals are: to provide a simulation-based engineering method to support the
design, development, simulation, validation and refinement of self-organizing
multi-agent systems; and to provide a simulation-based architecture. An ar-
chitectural design helps on the development of a modular program structure
and on the representation of the control relationships between modules and
encourages the software engineer to concentrate on architectural design be-
fore worrying about optimizations or code. We present: an iterative develop-
ment life-cycle based on a customization of the Unified Process, the SSOA
– Simulation-based Self-Organizing Architecture –, and the framework that
implements the architecture. We have evaluated the design method and ar-
chitecture using three different application domains: the automated guided
vehicles, the contracts that govern emergent multi-agent systems, and the
stem cell behavior computational modeling.
|
5 |
[en] MAINTAINABILITY AND REUSABILITY OF ASPECT-ORIENTED SOFTWARE: AN ASSESSMENT FRAMEWORK / [pt] MANUTENIBILIDADE E REUSABILIDADE DE SOFTWARE ORIENTADO A ASPECTOS: UM FRAMEWORK DE AVALIAÇÃOCLAUDIO NOGUEIRA SANTANNA 13 September 2004 (has links)
[pt] O desenvolvimento de software orientado a aspectos (DSOA)
vem obtendo
maior atenção tanto da academia quanto da indústria.
Sistemas orientados a
aspectos compreendem novas abstrações de engenharia de
software e tratam de
diferentes dimensões de complexidade. Conseqüentemente, o
DSOA traz novos
problemas para a engenharia de software experimental. Novos
mecanismos de
avaliação são necessários para medir os graus de
manutenibilidade e reusabilidade
de sistemas orientados a aspectos. Esta dissertação
apresenta um framework de
avaliação para o DSOA composto por dois elementos: um
conjunto de métricas e
um modelo de qualidade. No intuito de evitar a reinvenção
de soluções já testadas,
esses elementos são baseados em princípios bem conhecidos
da engenharia de
software e métricas já existentes. O framework proposto foi
avaliado no contexto
de dois estudos empíricos de domínios distintos, com
características, níveis de
controle e níveis de complexidade diferentes. O primeiro
estudo empírico
comparou uma abordagem orientada a objetos com uma
abordagem orientada a
aspectos para o projeto e implementação de um sistema multi-
agentes. O segundo
estudo envolveu a aplicação do framework proposto para
avaliar as
implementações em Java e AspectJ dos padrões de projeto da
GoF. / [en] Aspect-oriented software development (AOSD) is gaining wide
attention
both in research environments and in industry. Aspect-
oriented systems
encompass new software engineering abstractions and
different complexity
dimensions. As a consequence, AOSD poses new problems to
empirical software
engineering. It requires new assessment mechanisms to
measure the
maintainability and reusability degrees of aspect-oriented
systems. This
dissertation presents an assessment framework for AOSD,
which is composed of
two components: a suite of metrics and a quality model.
These components are
based on well-known principles and existing metrics in
order to avoid the reinvention
of well-tested solutions. The proposed framework has been
evaluated in
the context of two different empirical studies with
different characteristics, diverse
domains, varying control levels and different complexity
degrees. The first study
compared an object-oriented approach and an aspect-oriented
approach to the
design and implementation of a multi-agent system. The
second study involved
the application of the proposed framework to evaluate Java
and AspectJ
implementations of the GoF design patterns.
|
6 |
[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.
|
Page generated in 0.055 seconds