1 |
[en] SOFTWARE ENGINEERING FOR OPEN SOURCE SOFTWARE / [pt] ENGENHARIA DE SOFTWARE PARA SOFTWARE LIVREROBERTO DE HOLANDA CHRISTOPH 03 May 2004 (has links)
[pt] Software livres têm despertado bastante atenção, não apenas
devido a popularidade obtida por alguns destes como o Linux
e o Apache, mas também pela forma singular como estes
sistemas são desenvolvidos e sua quantidade de
adeptos. No entanto, em alguns projetos de software livre,
a documentação existente dificulta a entrada de novos
participantes, já que devido a informalidade do
processo de desenvolvimento deste tipo de software, é comum
que a documentação do sistema não receba muita atenção.
Este trabalho colabora para um melhor entendimento do
desenvolvimento de software livres, relacionando-o com as
questões de evolução de software. Será apresentada uma
proposta utilizada no software livre C e L para documentar em
termos da aplicação o código do sistema, utilizando-se do
conceito de cenários. Será mostrado através de um protótipo
que um software seguindo esse padrão proposto pode produzir
uma documentação que torna mais fácil seu entendimento
para novos participantes do projeto. / [en] This thesis presents an introduction on the use of the
thermal desorption technique that is based on the direct
heating of the soil, for the remediation of contaminated
areas. Heat propagation through soils can be mathematically
simulated using coupled heat-moisture transfer theories. In
order to make this simulation possible it is necessary to
identify the required parameters: hydraulic conductivity as
a function of volumetric water content, thermal
conductivity as a function of volumetric water content,
volumetric heat capacity, and soil-water characteristic
curve. One technical description of such parameters is
presented. Two different kinds of soils were used, one clay-
sand (CH) and one sandclay (SC). A study physico-chemical
was done talking into consideration the temperature effect
on the soils with X-Ray, electron microscopic investigation,
CTC, Atterberg Limits and at the particle size
distribution. The study was done on pre-heated soils with
temperatures ranging from 20 Celsius Degrees to 300 Celsius Degrees. Equipments and
methodologies have been especially developed for the
study of the thermo-hydraulics proprieties. The laboratory
tests program consisted of hydraulic conductivity,
retention curves and deformability, taking into account
the temperature effects. During the tests it was observed
that all parameters were temperature dependent. The thermal
parameters, thermal conductivity and heat capacity were
studied for both soils.
|
2 |
[en] EVOLUTION OF SCENES THROUGH A MECHANISM OF TRACKING BASED ON TRANSFORMATIONS / [pt] EVOLUÇÃO DE CENÁRIOS ATRAVÉS DE UM MECANISMO DE RASTREAMENTO BASEADO EM TRANSFORMAÇÕESULF BERGMANN 02 September 2003 (has links)
[pt] A importância da rastreabilidade na evolução de sistemas é
um fato amplamente reconhecido, mas apesar dos esforços
despendidos até agora, ainda encontramos vários obstáculos
a sua efetiva utilização. Esses obstáculos são
relacionados a geração e validação das informações sobre os
relacionamentos e interdependências entre o mundo real, os
requisitos e o sistema de software. Estas informações
freqüentemente não são confiáveis devido a inconsistência
causada pela evolução distinta dos vários artefatos
resultantes do processo de desenvolvimento de um sistema.
Esta tese tem como objetivo estudar a utilização da
tecnologia transformacional na implementação de um
mecanismo de rastreamento de maneira a se obter a
atualização automática das informações de rastreamento,
através da identificação das mudanças ocorridas entre
versões consecutivas dos artefatos produzidos e o seu
subseqüente armazenamento na forma de transformações. Os
benefícios obtidos pelo uso deste mecanismo permitirão: a
eliminação dos problemas da falta de atualização das
informações de rastreamento e o conseqüente aumento do
valor destas informações para o desenvolvedor; a
sistematização do processo de rastreamento; e a diminuição
do custo para se obter, atualizar e validar as informações
de rastreamento. Além destes benefícios, o armazenamento
das informações de rastreamento na forma de transformações
incorpora um maior conhecimento sobre a modelagem
realizada, ao contrário de outros mecanismos que armazenam
somente os artefatos e seus interrelacionamentos
estáticos. / [en] The importance of traceability in software evolutions was
quite established, but despite the effort spent, they are
many issues that difficult they effective use. These issues
are related to the generating and validating of trace
information about the relationships and interdependencies
between the real world, the requirements and the software
system. This information is often mistrusted since they may
have become obsolete due to separate evolution of models and
systems. This thesis study the use of the transformational
technology in the implementation of a traceability
mechanism that automatically obtain trace information by
identifying the changes made in consecutive artifact
versions and store it as transformations. The main
advantages gained with it uses are the elimination of the
problems of the lack of trace information updating, the
systematization of the trace process and the decrease of
the cost to obtain, update and validate trace information.
Besides these benefits, the storage of trace information in
the form of transformations incorporates a larger knowledge
on the accomplished modeling, unlike other mechanisms that
only store the artifacts and their static inter-
relationships.
|
3 |
[en] A SOFTWARE COMPONENT MODEL WITH SUPPORT FOR MULTIPLE VERSIONS / [pt] UM MODELO DE COMPONENTES DE SOFTWARE COM SUPORTE A MÚLTIPLAS VERSÕESHUGO ROENICK 08 September 2011 (has links)
[pt] Diversos modelos de componentes de software para sistemas distribuídos
já foram propostos pela indústria e pela academia, tais como Fractal,
CCM, COM, OpenCOM, LuaCCM, e SCS. Uma das principais vantagens
comumente atribuídas à abordagem de desenvolvimento baseado em
componentes de software é o melhor suporte à extensibilidade independente
(independent extensibility). Entretanto, a gerencia de múltiplas versões
de componentes ainda é um grande desafio, especialmente quando não é
possível atualizar todos os componentes do sistema ao mesmo tempo e
passa a ser necessária a coexistencia, em um mesmo sistema, de diferentes
versões de um mesmo componente. Neste trabalho, procuramos identificar os
pontos fundamentais para oferecer suporte a múltiplas versões de interfaces
de componentes de software e propor um modelo que ofereça esse suporte.
Como avaliação da proposta, iremos estender o sistema de componentes
SCS para dar suporte ao modelo proposto. Com base no histórico de
evolução de diferentes componentes SCS utilizados em uma aplicação real,
realizaremos experimentos com a nova versão do SCS para verificar a
eficácia do modelo proposto. / [en] Several software component models for distributed systems have been proposed
by the industry and academy, such as Fractal, CCM, COM,
OpenCOM, LuaCCM, and SCS. One of the greatest advantages of
component-based development is the better support for independent extensibility.
However, managing multiple versions of components is still a
challenge, especially when it’s not possible to update all the system’s components
at the same time. Because of that, different versions of the same
component interface shall be required to coexist in the same system. In this
work, we try to identify the key points to support multiple versions of component
interfaces and propose a model that offers this support. To evaluate
the proposed model, we will extend the SCS component system to support
it. Based on the evolution historic of different SCS components used in a
real application, we will conduct experiments with the new version of SCS
to verify the effectiveness of the proposed model.
|
4 |
[en] UNDERSTANDING AND IMPROVING BATCH REFACTORING IN SOFTWARE SYSTEMS / [pt] ENTENDENDO E MELHORANDO A PRÁTICA DE REFATORAÇÕES EM LOTE EM SISTEMAS DE SOFTWAREDIEGO CEDRIM GOMES REGO 15 January 2019 (has links)
[pt] Em um sistema de software, as anomalias de código indicam problemas estruturais que podem ser resolvidos através da refatoração. No entanto, desenvolvedores podem negligenciar ou acabar criando novas anomalias ao refatorar. Pouco foi relatado sobre os efeitos benéficos e prejudiciais da refatoração
de anomalias de código. Evidências sugerem que os desenvolvedores frequentemente precisam aplicar uma sequência de refatorações (refatoração em lote) para remover completamente as estruturas anômalas. Assim, nesta tese, realizamos uma série de estudos para entender o impacto de refatorações simples e em lote em anomalias de código. Em nossos primeiros estudos, analisamos com que frequência os tipos de refatoração comumente usados afetam a densidade de anomalias ao longo das histórias de dezenas
de projetos. Mesmo que 79,4 por cento das refatorações tenham tocado em elementos anômalos, 57 por cento não reduziram suas ocorrências. Surpreendentemente, apenas 9,7 por cento das refatorações removeram anomalias de código, enquanto 33 por cento induziram a introdução de novas. Por um lado, observamos padrões nocivos de introdução de anomalias. Por outro lado, observamos que muitas
anomalias podem ser removidas apenas por refatorações em lote. Assim, nossos últimos estudos investigam o impacto de refatorações em lote nas anomalias. Mesmo quando aplicadas em lotes, as refatorações tendem a não afetar ou mesmo aumentar a densidade de anomalias. Também identificamos
padrões entre tipos de lotes e tipos de anomalias, levando-nos à criação de heurísticas que podem orientar os desenvolvedores durante tarefas de remoção de anomalias de código. O último estudo avaliou essas heurísticas e concluímos que os resultados são promissores. / [en] Code smells in a program represent indications of structural quality problems, which can be addressed by software refactoring. However, developers may neglect or end up creating new code smells through single
refactoring. Little has been reported about recurring beneficial and harmful effects of refactoring on the program structural quality. As a consequence, developers still miss guidance along non-trivial smell-removing tasks. In fact, evidence suggests developers often need to apply a sequence of refactorings,
so-called batch refactoring, to entirely remove a smelly code structure. Thus, in this thesis, we have conducted a series of studies to understand the impact of single and batch refactorings on code smells. In our first studies, we analyze how often commonly-used types of single refactoring affect the density
of code smells along the version histories of dozens of projects. Even though 79.4 percent of the refactorings touched smelly elements, 57 percent had no impact on the smell removal. Surprisingly, only 9.7 percent of refactorings removed smells, while 33 percent induced the introduction of new ones. On one hand, we observed that harmful refactoring-smell patterns could be used to guide developers to avoid smell-inducing refactoring. On the other hand, we observed that many smells can be removed only through batch refactoring. Thus, our last studies investigate the impact of batch refactorings on smells. Even when applied in batches, refactorings tend to maintain or even increase the density of code smells. We also identified common batch-smell patterns, which enable us to create heuristics that can guide developers through smell-removing tasks. The last study evaluated those heuristics, and we conclude the outcomes
are promising.
|
5 |
[pt] IDENTIFICANDO CANDIDATOS A MICROSSERVIÇOS EM CÓDIGO LEGADO / [en] IDENTIFYING MICROSERVICES CANDIDATES IN LEGACY CODE10 December 2020 (has links)
[pt] Microsserviços é uma técnica industrial para promover melhor escalabilidade e manutenibilidade de pequenos e autônomos serviços. Estudos prévios sugerem que a arquitetura de microsserviços vem sendo amplamente usada para reduzir limitações encontradas em sistemas monolíticos legados tais como melhoria de inovação, uso de diferentes tecnologias, entre outras. O processo de migração para a arquitetura de microsserviços não é trivial. Este é particularmente o caso da tarefa de identificar candidatos a microsserviço e o código fonte associado com cada candidato que é dispendiosa e propensa a erro. Consequentemente, abordagens automatizadas têm sido propostas para reduzir o esforço relacionado a essa atividade. Essas abordagens comumente adotam um ou dois critérios para suportar a identificação
de microsserviços com base no sistema monolítico legado. Contudo, existe uma falta de compreensão da utilidade desses critérios adotados na prática. Além disso, há limitado conhecimento em quais são os critérios que profissionais consideram relevantes. Levando em consideração esses limitantes
existentes, nós conduzimos um survey e entrevista para melhor compreender a utilidade de critérios relatados em estudos empíricos (e.g, estudos de caso e relatos) do ponto de vista dos profissionais. Os resultados do survey e da entrevista mostram que as abordagens automatizadas e ferramentas existentes
não são totalmente alinhadas com necessidades práticas. Para atender às necessidades deles, este trabalho define uma abordagem automatizada chamada toMicroservices. A abordagem baseia-se em uma combinação de análise estática e dinâmica do código legado. A abordagem visa indicar os candidatos a microsserviço e a fonte correspondente extraído do sistema legado. toMicroservices faz uso da engenharia de software baseada em busca para otimizar e balancear os cinco critérios comumente adotados por
profisionais, nomeados de modularização de funcionalidade, redução de sobrecarga de rede, reúso, acoplamento e coesão. Além disso, um estudo de caso e grupo focal foram conduzidos a posteriori para avaliar e melhorar toMicroservices. / [en] Microservices is an industrial technique to promote better scalability and maintainability of small and autonomous services. Previous studies suggested that microservice architectures have been widely used to reduce limitations found in legacy monolithic systems such as the inclusion of innovation, use of a different stack of technologies, among others. The process of migrating to a microservices architecture is far from trivial. This is particularly the case for the task of identifying candidate microservices and the source code associated with each candidate, which is recognizably time-consuming and error-prone. Thus, automated approaches have been proposed to reduce the effort related to that task. These approaches commonly
adopt one or two criteria to support the identification of microservices from a legacy monolithic system. However, there is a lack of understanding on the usefulness of these criteria in practical settings. Moreover, there is limited knowledge on what are the criteria that practitioners consider relevant. Taking into account these existing limitations, we conducted a survey and interviews to better understand the usefulness of criteria reported in empirical studies (e.g, case studies and reports) from the point of view of practitioners. The results of the survey and interviews revealed that existing automated approaches and tools are far from being aligned with practical needs. To fulfill these needs, this work defines a automated approach named toMicroservices. The approach relies on a combination of static and dynamic analysis of the legacy code. The approach aims at indicating the microservice candidates and the corresponding source extracted from the legacy system. toMicroservices makes use of search-based software engineering (SBSE) to optimize and balance the five criteria commonly adopted by practitioners, namely feature modularization, network overhead reduction, reuse, coupling and cohesion. Additionally, an industrial case study
and a focus group were conducted a posteriori to support the evaluation and improvements of toMicroservices.
|
6 |
[en] ARCHITECTURE FOR COORDINATION AND COMPOSITION OF SOFTWARE / [pt] UMA ARQUITETURA PARA A COORDENAÇÃO E A COMPOSIÇÃO DE ARTEFATOS DE SOFTWAREGUSTAVO ROBICHEZ DE CARVALHO 16 October 2003 (has links)
[pt] A engenharia de software baseada em componentes é uma
abordagem que prevê a reutilização de artefatos de software
na geração de um conjunto de aplicações. Ao desenvolver
aplicações com esta abordagem, é preciso reunir ou compor
componentes de software já existentes. Após compor estas
unidades, é necessário coordenar as interdependências
estabelecidas entre elas para adequar a aplicação em
desenvolvimento à resolução do problema. Esta dissertação
propõe uma arquitetura de software que separa e estrutura
os conceitos de coordenação, composição e componentes de
software em camadas arquiteturais. A partir desta
estrutura, espera-se que modificações específicas em
construções de uma camada tenham o mínimo de influência
sobre as demais. ACCA (Arquitetura para a Coordenação e a
Composição de Artefatos de Software) deve ser entendida
como uma estrutura conceitual utilizada para
organizar o desenvolvimento de software baseado em
componentes. Além disto, são apresentados um framework para
ilustrar a realização da camada de composição de ACCA, o
processo de reificação de ACCA e um processo de
desenvolvimento de software utilizando a abordagem proposta. / [en] Component Based Software Engineering is an approach for
reusing software artifacts when developing applications. In
order to develop solutions using this approach, it is
necessary to compose software using components that have
already been developed. After putting those pieces
together, we need to coordinate the interdependencies
established among those compositions to fulfill the
requirements, needed to resolve a problem. This
dissertation proposes a software architecture that
separates and structures the concepts of coordination,
composition and software components in different
architectural layers. Using this approach, we expect that
specific modifications in layer constructions have the
minimum impact on the others layers. ACCA (Architecture for
Coordination and Composition of software Artifacts) must be
understood as a conceptual structure that is used to
organize component based software development. It also
presents a composition framework, the reification process
for ACCA and a software development process organized using
this approach.
|
Page generated in 0.0351 seconds