1 |
[en] ON THE ROLE OF COMPOSITION PROPERTIES ON PROGRAM STABILITY / [pt] ANÁLISE DE PROPRIEDADES DE CÓDIGO DE COMPOSIÇÃO EM ESTABILIDADE DE PROGRAMASFRANCISCO DANTAS DE MEDEIROS NETO 17 January 2017 (has links)
[pt] A demanda por desenvolvimento de software incremental tem impulsionado a busca por técnicas de programação avançadas, tais como programação orientada a aspectos e programação orientada a características. Estas técnicas têm por objetivo apoiar a implementação de mudanças de software de forma localizada, a fim de promover a estabilidade do programa. Para atingir este objetivo, elas oferecem uma grande variedade de sofisticados mecanismos de composição, que fornecem meios para definir de forma flexível a composição de dois ou mais módulos de um programa. No entanto, dada a complexidade do código composição resultante, a definição inicial e alterações posteriores na especificação de uma simples composição podem afetar a estrutura e o comportamento de vários módulos, prejudicando assim a estabilidade do programa. Um fator complicador é que essas mudanças geralmente exigem raciocínio sobre certas propriedades da composição, que não estão explícitas nos artefatos de implementação ou de projeto. Infelizmente, não há conhecimento do estado da arte sobre as propriedades da composição que afetam positivamente ou negativamente a estabilidade do programa. Esse entendimento não é possível ainda, uma vez que: (i) não há uma caracterização conceitual e meios de quantificação referentes às propriedades do código de composição, e (ii) não há nenhuma investigação empírica sobre a influência dessas propriedades na estabilidade do programa. Um efeito colateral dessas lacunas é que os desenvolvedores têm recorrido a métricas convencionais, tais como o acoplamento, para determinar ou prever a estabilidade de um programa implementado usando técnicas de programação avançadas. Neste contexto, a presente tese apresenta três contribuições. Primeiro, são apresentados os resultados de um estudo empírico, revelando que as métricas convencionais utilizadas, tais como acoplamento, não são indicadores eficazes de estabilidade quando técnicas avançadas de programação são usadas. Em segundo lugar, é apresentado um arcabouço de medição que engloba um conjunto de métricas de composição destinado a quantificar as propriedades do código de composição. Este arcabouço foi desenvolvido com base em uma metamodelo e uma terminologia usada para caracterizar os elementos e propriedades do código de composição. Trata-se de um arcabouço extensível e que pode ser usado independente da técnica de programação adotada. Terceiro, nós também investigamos meios para aliviar o esforço de manutenção quando mudanças relacionadas ao código de composição precisam ser realizadas.Nesta investigação, nós avaliamos se modelos enriquecidos com a especificação das propriedades de composição ajudam os desenvolvedores a melhorar a estabilidade do programa em suas tarefas de manutenção. / [en] The demand for incremental software development has driven a search for advanced programming techniques, such as aspect-oriented programming and feature-oriented programming. These techniques share the goal of supporting localized implementation of software changes in order to promote program stability. To achieve this goal, they offer a wide range of sophisticated composition mechanisms, which provide means to flexibly define the composition of two or more modules in a program. However, given the complexity of the resulting composition code, the initial definition and further changes to a single composition specification might affect the structure and behaviour of multiple modules, thereby harming the program stability. A complicating factor is that those changes often require some reasoning about certain composition properties, which are not explicit in the implementation or design artefacts. Unfortunately, there is no understanding in the state of the art about the composition properties that affect positively or negatively the program stability. This understanding is not yet possible as: (i) there is no conceptual characterization and quantification means for composition code properties, and (ii) there is no empirical investigation on the influence of these properties on program stability. A side effect of these gaps is that developers have resorted to conventional metrics, such as coupling, to determine or predict the stability of a program implemented with advanced programming techniques. In this context, this thesis presents three contributions to overcome the aforementioned problems. First, we have developed an empirical study revealing that widely-used metrics, such as coupling, are not effective indicators of stability when advanced programming techniques are used. Second, we propose a measurement framework encompassing a suite of composition metrics intended to quantify properties of the composition code. This framework is based on a meta-model and terminology for characterizing the elements and properties of the composition code. This framework is extensible and agnostic to particular programming techniques. Third, we also investigate how to alleviate the maintenance effort in performing changes related to the composition code. We evaluate if the availability of design models enriched with specification of composition properties help developers to improve program stability in their maintenance tasks.
|
2 |
[en] IMPLICATIONS OF SEO AND AUDIENCE METRICS FOR PRODUCTIVE ROUTINES IN JOURNALISM / [pt] IMPLICAÇÕES DO SEO E DAS MÉTRICAS DE AUDIÊNCIA ÀS ROTINAS PRODUTIVAS EM JORNALISMOGREYCE ELLEN VARGAS NUNES 06 June 2023 (has links)
[pt] Este estudo trata de como as métricas de audiência associadas às práticas de
SEO impactam as rotinas de produção em jornalismo. No contexto da
plataformização, o jornalismo está cada vez mais dependente de métricas e regras
que são definidas, estruturadas, vigiadas e checadas por grandes companhias de
processamento de dados e tecnologia. Desta maneira, esta pesquisa tratou de
entender os conceitos de métrica e de audiência no jornalismo digital para explicar
os processos impostos às rotinas produtivas para que as notícias sejam meios de
promoção de resultados de crescimento de audiência. Além disso, sobre SEO,
foram trabalhados o conceito e as práticas para que as regras de ranqueamento de
conteúdos pudessem ser analisadas junto com as consequências que essas regras
impõem às rotinas de produção em jornalismo. Esta tese tem a Economia Política
da Comunicação como subcampo de pesquisa e, portanto, examinamos as relações
sociais que compõem as práticas jornalísticas ligadas às métricas de audiência no
contexto do capitalismo. Os principais referenciais teóricos desta pesquisa são
MARX (1983, 2013). BOLANO (2000, 2002, 2004, 2014, 2017), GILLESPIE
(2018), HEINRICH (2011), MEIJER (2019, 2021) e ZUBOFF (2020). Para análise,
foram realizadas 68 entrevistas exploratórias e, posteriormente, seis entrevistas em
profundidade. Como indicações conclusivas, esta tese defende a regulação da
indústria de dados sobre as operações no mercado de notícias e também colocamos
como proposta a discussão da ética do algoritmo do Google. / [en] This study deals with how audience metrics associated with SEO practices
impact production routines in journalism. In the context of plataformization,
journalism is increasingly dependent on metrics and rules that are defined,
structured, monitored, and checked by large data processing and technology
companies. Thus, this research sought to understand the concepts of metric and
audience in digital journalism to explain the processes imposed on production
routines so that news can be means of promoting audience growth results.
Additionally, on SEO, the concept and practices were worked on so that content
ranking rules could be analyzed along with the consequences these rules impose on
production routines in journalism. This thesis has Political Economy of
Communication as a research subfield and, therefore, we examine the social
relations that make up journalistic practices related to audience metrics in the
context of capitalism. The main theoretical references of this research are MARX
(1983, 2013), BOLANO (2000, 2002, 2004, 2014), DUFFY (2020), GILLESPIE
(2018), HEINRICH (2011), MEIJER (2019, 2021), PETRE (2015, 2021),
TANDOC JR. (2014, 2017, 2019), and ZUBOFF (2020). For analysis, 68
exploratory interviews were conducted, followed by six in-depth interviews. As
conclusive indications, this thesis advocates for the regulation of the data industry
on news market operations and also proposes the discussion of Google s algorithm
ethics.
|
3 |
[pt] RELEVANDO FATORES INTERATIVOS NA DEGRADAÇÃO DO DESIGN DE SOFTWARE / [en] REVEALING INTERACTING FACTORS IN DECAY OF SOFTWARE DESIGNDANIEL JOSE BARBOSA COUTINHO 28 December 2021 (has links)
[pt] Desenvolvedores realizam mudanças de código constantemente durante
a vida de um projeto de software. Essas mudanças podem induzir a degradação
progressiva do design. A degradação do design pode ser reduzida ou
acelerada por fatores que interagem em cada mudança. Esses fatores podem
variar desde uma mudança ou ação de reparo específica – e.g., refatorações
– até a maneira como os desenvolvedores contribuem e discutem mudanças.
Entretanto, estudos anteriores não exploram como esses fatores interagem e
influenciam na degradação do design. Eles apenas focam em alguns fatores e
tendem a os investigar em isolamento. Estudar os fatores em isolamento pode
não explicar adequadamente qual é o conjunto mais relevante de interações
entre fatores e qual sua influência na degradação do design. Isso pode indicar
que abordagens existentes para evitar ou mitigar a degradação do design são
incompletas, já que elas não consideram interações entre fatores que podem
ser relevantes. Portanto, essa dissertação relata uma investigação que almeja
aumentar a compreensão sobre como uma ampla gama de interações entre fatores
pode afetar a degradação do design, para que consequentemente possam
ser investigadas práticas efetivas para evitar ou mitigar esse fenômeno. Para
tal fim, nós realizamos uma análise aprofundada buscando preencher lacunas
no conhecimento existente sobre dois tipos de fatores: fatores relacionados ao
processo (i.e. relacionados às mudanças e seus resultados produzidos) e fatores
relacionados ao desenvolvedor (i.e. relacionados ao desenvolvedor trabalhando
nas mudanças). Nós focamos em analisar os efeitos de possíveis interações entre
os fatores previamente mencionados e uma série de sub-fatores, no que diz
respeito como essas interações afetam módulos que sofreram diferentes níveis
de degradação. Por exemplo, nós observamos que: (1) individualmente, tanto
o sub-fator relacionado ao desenvolvedor que representa um desenvolvedor novato
(que está contribuindo pela primeira vez), quanto o sub-fator relacionado
ao processo que representa tamanho de uma mudança, não se mostraram relacionados
a efeitos negativos na qualidade de código das classes alteradas.
Porém, analisando interações entre fatores, nós observamos que mudanças em
que esses dois fatores interagem tendem a ter um efeito negativo no código,
causando degradação. Interessantemente, esse comportamento não se alterou
mesmo quando mudança foi introduzida através de uma pull request (o que
frequentemente inicia um processo de revisão de código), (2) surpreendentemente,
refatorações de extração frequentemente não tem um efeito positivo
na qualidade do código, enquanto, em contrapartida, as refatorações de movimentação
foram predominantemente positivas. Nós também discutimos como
esses achados apresentados na dissertação podem ajudar desenvolvedores e pesquisadores na melhoria de suas diretrizes sobre como evitar e monitorar a degradação do design. / [en] Developers constantly perform code changes throughout the lifetime of
a project. These changes may induce the introduction of design decay over
time. Design decay may be reduced or accelerated by interacting factors that
underlie each change. These factors may come from specific actions of change
or repair – e.g., refactorings – to how developers contribute and discuss the
changes. However, existing studies do not explain how these factors interact
and influence design decay. They solely tend to focus on a few types of
factors, and often consider them in isolation. Interactions between factors
may cause different outcomes than those previously studied. Studying factors
in isolation may not properly explain what are the most relevant set of
interacting factors that influence design decay. This may indicate that existing
approaches to avoid or mitigate design decay are misleading since they do not
consider potentially relevant interactions between various factors. Thus, this
dissertation reports an investigation that aims to increase the understanding
of how a wide range of interacting factors can influence design decay in
order to facilitate the investigation of which practices can be used to avoid
or mitigate design decay. To this end, we performed an in-depth analysis to
fill knowledge gaps on two types of factors: process-related (i.e., related to
changes and their produced outcomes) and developer-related (i.e., related to
the developer working on the changes) factors. We focused on analyzing the
effects of potential interactions between the aforementioned factors and 12
sub-factors with regards to how they affected modules with different levels
of decay. We observed diverging decay patterns in these modules. Our results
indicate that both types of factors can be used to distinguish between different
decay levels in classes. We have also observed that: (1) individually, the
developer-related subfactor that represented first-time contributors, as well as the process-related one that represented size of the changes, did not exert negative effects on the changed classes. However, when analyzing specific factor interactions, we saw that changes where both of these factors interacted tended to have a negative effect and led to decay. Interestingly, this behaviour did not alter even when the change was introduced via pull request (which usually triggers a code review process); (2) surprisingly, extraction-type refactorings often do not have a positive effect on code quality, while, by contrast, move refactorings were mostly positive. We also discuss how these findings in this dissertation can aid developers and researchers in improving their guidelines for the avoidance and monitoring of design decay.
|
4 |
[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.
|
5 |
[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.
|
6 |
[en] HOW DOES REFACTORING AFFECT INTERNAL QUALITY ATTRIBUTES?: A MULTI-PROJECT STUDY / [pt] COMO A REFATORAÇÃO AFETA OS ATRIBUTOS DE QUALIDADE INTERNA?: UM ESTUDO MULTI-PROJETOALEXANDER CHÁVEZ LÓPEZ 12 December 2017 (has links)
[pt] Desenvolvedores frequentemente aplicam refatoração para melhorar os atributos internos de qualidade em projetos de software, tais como acoplamento e tamanho. Chamamos de rerrefatoração quando desenvolvedores refatoram um elemento de código-fonte previamente refatorado. O conhecimento
empírico é limitado acerca de até que ponto refatoração e rerrefatoração de fato melhoram os atributos internos de qualidade. Nesta dissertação, nós investigamos a limitação supracitada com base em cinco atributos internos de qualidade conhecidos: acoplamento, coesão, complexidade, herança
e tamanho. Também nos baseamos no histórico de versionamento de 23 projetos de software de código-fonte aberto, os quais possuem 29,303 operações de refatoração e 49.55 por cento de rerrefatorações. Nossa análise revelou descobertas interessantes apresentadas como segue. Primeiro, desenvolvedores
aplicam mais de 93.45 por cento de operações de refatoração e rerrefatoração sobre elementos de código-fonte com ao menos um atributo interno de qualidade crítico, contrariando trabalhos anteriores. Segundo, para 65 por cento das operações, os atributos internos de qualidade relacionados melhoram, enquanto
que os demais 35 por cento permanecem não-afetados. Terceiro, sempre que operações de refatoração são aplicadas sem mudanças adicionais no código fonte, o que chamamos de operação de refatoração root-canal, os atributos internos de qualidade frequentemente melhoram, ou ao menos, não pioram.
Ao contrário, 55 por cento das operações de refatoração aplicadas com mudanças adicionais, tais como correção de bugs, surpreendentemente melhoram os atributos internos de qualidade, com somente 10 por cento de piora, o que também é válido para rerrefatoração. Nós sumarizamos nossas descobertas na forma de recomendações para desenvolvedores e pesquisadores. / [en] Developers often apply code refactoring to improve the internal quality attributes of a program, such as coupling and size. Given the structural decay of certain program elements, developers may need to apply multiple refactorings to these elements to achieve quality attribute improvements. We call re-refactoring when developers refactor again a previously refactored element in a program, such as a method or a class. There is limited empirical knowledge on to what extent developers successfully improve internal
quality attributes through (re-)refactoring in their actual software projects. This dissertation addresses this limitation by investigating the impact of (re-)refactoring on five well-known internal quality attributes:
cohesion, complexity, coupling, inheritance, and size. We also rely on the version history of 23 open source projects, which have 29,303 refactoring operations and 49.55 percent of re-refactoring operations. Our analysis revealed relevant findings. First, developers apply more than 93.45 percent of refactoring and re-refactoring operations to code elements with at least one critical internal quality attribute, as oppositely found in previous work. Second, 65 percent of the operations actually improve the relevant attributes, i.e. those attributes that are actually related to the refactoring type being applied; the remaining 35 percent operations keep the relevant quality attributes unaffected. Third, whenever refactoring operations are applied without additional changes, which we call root-canal refactoring, the internal quality attributes are either frequently improved or at least not worsened. Contrarily, 55 percent of the refactoring operations with additional changes, such as bug fixes, surprisingly improve internal quality attributes, with only 10 percent of the quality decline. This finding is also valid for re-refactoring. Finally, we also summarize
our findings as concrete recommendations for both practitioners and researchers.
|
7 |
[en] ON THE MODULARITY OF ASPECT-ORIENTED DESIGN: A CONCERN-DRIVEN MEASUREMENT APPROACH / [pt] MODULARIDADE DE DESIGN ORIENTADO A ASPECTOS: UMA ABORDAGEM DE MEDIÇÃO DIRIGIDA POR INTERESSESCLAUDIO NOGUEIRA SANTANNA 08 February 2017 (has links)
[pt] Muitos problemas de modularidade de design de software estão relacionados à modularização inadequada de interesses importantes e que têm impacto sistêmico no design, tais como tratamento de exceção, distribuição e persistência. No entanto, a maioria das abordagens atuais de avaliação quantitativas não levam em conta os interesses que guiam o design, o que acaba fazendo com que o processo de avaliação de modularidade se torne deficiente. Portanto, existe a necessidade de abordagens de medição que promovam uma identificação mais efetiva dos problemas de modularidade relacionados a interesses transversais. Além disso, essa necessidade se torna ainda mais evidente à medida que surgem novas formas de decomposição de design, tais como desenvolvimento de software orientado a aspectos. Nesse contexto, essa tese tem o objetivo de definir e investigar uma nova abordagem de avaliação quantitativa de modularidade de design de software que promove o conceito de interesse a uma abstração de medição. Esse trabalho define uma abordagem de medição dirigida por interesse que inclui um conjunto de mecanismos para avaliação de modularidade de software desde o design arquitetural até o design detalhado. A abordagem sensível a interesse proposta é composta por: (i) um conjunto de métricas arquiteturais, (ii) um conjunto de métricas de design detalhado, (iii) um conjunto de regras heurísticas de design que dão apoio a interpretação das métricas, e (iv) uma ferramenta, chamada de COMET, que dá apoio tanto à notação quanto à medição dirigida por interesses de design arquitetural. A utilidade da técnica de medição dirigida por interesses proposta foi avaliada em uma série de estudos empíricos, onde a modularidade de designs convencionais e orientados a aspectos foram comparados. / [en] Several modularity problems in software designs are related to the inadequate modularization of key broadly-scoped concerns, such as exception handling, distribution, and persistence. However, most of the current quantitative assessment aproaches are not sensitive to concerns that drive the design, thereby leading to a number of shortcomings in the modularity evaluation process. Therefore, there is a need for measurement approaches that support a more effective identification of modularity anomalies related to crosscutting concerns. Also, this necessity becomes more apparent in an age that a number of different fomrs of design decompositions, such as aspect-oriented software development, are emerging. In this context, this thesis aims at investigating a novel approach for quantittative modularity assessment of software design by promoting the concept of concern as a measurement abstraction. Our concern-driven measurement approach encompasses a set of mechanisms for assessing software modularity from architectural to detailed design. The prposed concern-sensitive approach includes:(i) a suite of architectural metrics, (ii) a suite of detailed design metrics, (iii) a suite of design heuristic rules for supporting the interpretation of metrics in meaningful ways, and (iv) a tool, called COMET, that supports bots concern-drive notation and measurement of architectual designs. We evaluated the usefulness of our concern-oriented measurement techinique in a series of emprical studies, comparing the modularity of conventional and aspect-oriented software design.
|
8 |
[en] SUPPORT TO THE SYNTHESIS OF STRUCTURAL MODELS OF OBJECT-ORIENTED SOFTWARE USING CO-EVOLUTIONARY GENETIC ALGORITHMS / [pt] APOIO À SÍNTESE DE MODELOS ESTRUTURAIS DE SOFTWARE ORIENTADO A OBJETOS UTILIZANDO ALGORITMOS GENÉTICOS CO-EVOLUCIONÁRIOSTHIAGO SOUZA MENDES GUIMARAES 25 October 2005 (has links)
[pt] Esta dissertação investiga o uso de Algoritmos Genéticos
Co-evolucionários
na automatização do processo de desenvolvimento de
Sistemas de Software
Orientados a Objetos. A qualidade final do software
depende principalmente da
qualidade da modelagem desenvolvida para o mesmo.
Durante
a fase de
modelagem, diversos modelos são desenvolvidos
antecipando
diversas visões do
produto final, e possibilitando a avaliação do software
antes mesmo que ele seja
implementado. A síntese de um modelo de software pode,
portanto, ser vista
como um problema de otimização onde se busca uma melhor
configuração entre
os elementos contemplados pelo paradigma de orientação a
objetos, como classes,
métodos e atributos, que atenda a critérios de qualidade
de design. O objetivo do
trabalho foi estudar uma forma de sintetizar modelagens
de
maior qualidade
através da evolução por Algoritmos Genéticos Co-
evolucionários. Para avaliar a
modelagem do software, foram investigadas métricas de
qualidade de software
tais como: Reutilização, Flexibilidade,
Inteligibilidade,
Funcionalidade,
Extensibilidade e Efetividade. Essas métricas foram
aplicadas na função de
avaliação, que por sua vez, foi definida objetivando a
síntese de uma modelagem
de software orientado a objetos com uma maior qualidade.
Neste problema,
deseja-se contemplar mais de um objetivo ao mesmo tempo.
Para isso, foi
utilizada a técnica de Pareto para problemas multi-
objetivos.
Os resultados obtidos foram comparados com modelagens
produzidas por
especialistas e as suas características analisadas. O
desempenho do AG no
processo de otimização foi comparado com o da busca
aleatória e, em todos os
casos, os resultados obtidos pelo modelo foram sempre
superiores. / [en] This work investigates the use of Co-evolutionary Genetic
Algorithms in the
automation of the development process of object-oriented
software systems. The
software final quality depends mainly on the design
quality developed for the
same. During the design phase, different models are
developed anticipating
various visions of the end product, thus making possible
the software evaluation
before it is implemented. The synthesis of a software
model can, therefore, be
seen as an optimization problem where it seeks a better
configuration between the
contemplated elements for the object-oriented paradigm, as
classes, methods and
attributes, which follows the quality design criteria. The
work goal was to study a
way to synthesize designs of better quality through its
evolution by Coevolutionary
Genetic Algorithms. In order to assess the software
quality, it was
also investigated software quality metrics, such as:
Reusability, Flexibility,
Understandability, Functionality, Extensibility and
Effectiveness. These metrics
were applied in an evaluation function that, in turn, was
defined aiming at the
object-oriented design synthesis with a better quality. In
this problem, it is desired
to contemplate more than one objective at a time. For
this, the Pareto technique
for multi-objective problems was used.
The results were compared with designs produced by
specialists and its
characteristics analyzed. The GA performance in the
optimization process was
compared with the exhaustive search and, in all cases, the
model results were
superior.
|
9 |
[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.
|
10 |
[en] A SIMHEURISTIC ALGORITHM FOR THE STOCHASTIC PERMUTATION FLOW-SHOP SCHEDULING PROBLEM WITH DELIVERY DATES AND CUMULATIVE PAYOFFS / [pt] UM ALGORITMO DE SIM-HEURISTICA PARA UM PROBLEMA ESTOCÁSTICO DE PERMUTATION FLOW-SHOP SCHEDULING COM DATAS DE ENTREGA E GANHOS CUMULATIVOS19 October 2020 (has links)
[pt] Esta dissertação de mestrado analisa um problema de programação de máquinas
em série com datas de entrega e ganhos cumulativos sob incerteza.
Em particular, este trabalho considera situações reais na quais os tempos
de processamento e datas de liberação são estocásticos. O objetivo principal
deste trabalho é a resolução deste problema de programação de máquinas
em série em um ambiente estocástico buscando analisar a relação entre diferentes
niveis de incerteza e o benefício esperado. Visando atingir este objetivo,
primeiramente uma heurística é proposta utilizando-se da técnica de
biased-randomization para a versão determinística do problema. Então, esta
heurística é extendida para uma metaheurística a partir do encapsulamento
dentro da estrutura de um variable neighborhood descend. Finalmente, a metaheurística é extendida para uma simheurística a partir da incorporação
da simulação de Monte Carlo. De acordo com os experimentos computacionais,
o nível de incerteza tem um impacto direto nas soluções geradas pela
simheurística. Além disso, análise de risco foram desenvolvidas utilizando
as conhecidas métricas de risco: value at risk e conditional value at risk. / [en] This master s thesis analyzes the Permutation Flow-shop Scheduling
Problem with Delivery Dates and Cumulative Payoffs under uncertainty
conditions. In particular, the work considers the realistic situation in which
processing times and release dates are stochastics. The main goal is to
solve this Permutation Flow-shop problem in the stochastic environment
and analyze the relationship between different levels of uncertainty and
the expected payoff. In order to achieve this goal, first a biased-randomized
heuristic is proposed for the deterministic version of the problem. Then, this
heuristic is extended into a metaheuristic by encapsulating it into a variable
neighborhood descent framework. Finally, the metaheuristic is extended
into a simheuristic by incorporating Monte Carlo simulation. According
to the computational experiments, the level of uncertainty has a direct
impact on the solutions provided by the simheuristic. Moreover, a risk
analysis is performed using two well-known metrics: the value at risk and
the conditional value at risk.
|
Page generated in 3.1369 seconds