• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 7
  • 1
  • Tagged with
  • 8
  • 8
  • 8
  • 8
  • 5
  • 4
  • 3
  • 3
  • 3
  • 2
  • 2
  • 2
  • 2
  • 2
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

[pt] RELEVANDO FATORES INTERATIVOS NA DEGRADAÇÃO DO DESIGN DE SOFTWARE / [en] REVEALING INTERACTING FACTORS IN DECAY OF SOFTWARE DESIGN

DANIEL 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.
2

[en] A MECHANISM BASED ON LOGS WITH META-INFORMATION FOR THE VERIFICATION OF CONTRACTS IN DISTRIBUTED SYSTEMS / [pt] UM MECANISMO BASEADO EM LOGS COM META-INFORMAÇÕES PARA A VERIFICAÇÃO DE CONTRATOS EM SISTEMAS DISTRIBUÍDOS

PEDRO DE GOES CARNAVAL ROCHA 19 March 2015 (has links)
[pt] Contratos de software podem ser escritos como expressões lógicas capazes de identificar falhas que ocorrem durante a utilização de um software. É possível implementar a verificação de um contrato em um software através de assertivas executáveis. No entanto, a forma como assertivas convencionais são implementadas não é diretamente aplicável a sistemas distribuídos, uma vez que apresentam dificuldades para avaliar expressões temporais, tampouco as expressões podem envolver propriedades de diferentes processos. Este trabalho propõe um mecanismo baseado em logs com meta-informações para a verificação de contratos em sistemas distribuídos. Uma gramática para redigir contratos possibilita operações temporais, ou seja, permite a especificação de condições entre eventos, em diferentes instantes de tempo, ou mesmo garante uma sequência de eventos, durante um período de tempo. O fluxo de eventos gerado é avaliado assincronamente em relação à utilização do sistema, pela comparação com contratos, previamente escritos de acordo com a gramática, que representam as expectativas sobre o comportamento normal do sistema. / [en] Software contracts can be written as assertions that identify failures observed while using the software. Software contracts can be implemented through executable assertions. However, conventional assertions are not directly applicable in distributed systems, as they present difficulties to evaluate temporal expressions, as well as expressions involving properties of different processes. This work proposes a mechanism based on logs with meta-information to evaluate contracts in distributed systems. A grammar to write contracts enable temporal operations, e.g., allows specifying conditions between events at different timestamps, or even guaranteeing a sequence of events over a period of time. The flow of events is evaluated asynchronously in relation to the system execution, by comparison with contracts, previously written according to the grammar, representing the expectations on the behavior of the system.
3

[en] REPORTING THE EXPERIENCE OF DEPLOYMENT OF SOFTWARE ENGINEERING BEST PRACTICES IN A HETEROGENEOUS ENVIRONMENT / [pt] RELATO DE EXPERIÊNCIA DA IMPLANTAÇÃO DE BOAS PRÁTICAS DE ENGENHARIA DE SOFTWARE EM UM AMBIENTE HETEROGÊNEO

KELLY AZEVEDO BORGES LEAL 31 January 2011 (has links)
[pt] Métodos Ágeis são estratégias recentes na Engenharia de Software (começaram a se popularizar em 2001), que surgiram com a promessa de serem flexíveis e adaptáveis - características muito importantes para lidar com constantes mudanças de requisitos em projetos. O Scrum, método ágil estudado neste trabalho, necessita de uma infraestrutura adequada para gerar benefícios ao time que o utiliza. Neste estudo, implementou-se o Scrum, com o auxílio de uma infraestrutura adequada de ferramentas e processos, em uma organização que não utilizava qualquer tipo de gerenciamento de projetos. A partir do estabelecimento de algumas metas com o apoio do modelo GQM, buscou-se a melhoria nas métricas relacionadas e os resultados estão detalhados neste presente trabalho. / [en] Agile methodology is a recent Software Engineering strategy (it became popular in 2001) that was created to be flexible and adaptable enough - characteristic very import to deal with constant requirements changes during a project lifecycle. Scrum, the agile methodology used during this study, requires an adequate infrastructure in order to offer its benefits. This study implemented Scrum and an adequate infrastructure of processes and tools to support it, inside a organization that didn’t use any kind of project management before. With the establishment of some goals using the GQM model, some improvements were expected and the results are detailed in this study.
4

[en] MANAGING SOFTWARE PROJECTS USING AGILE METHODOLOGIES: A CASE STUDY / [pt] GERENCIAMENTO E PLANEJAMENTO DE PROJETOS DE SOFTWARE USANDO METODOLOGIAS ÁGEIS: UM ESTUDO DE CASO

DANIELA MILAGROS QUENAYA MENDOZA 20 June 2011 (has links)
[pt] Hoje em dia, entregar software com qualidade, nos prazos previstos e respeitando os custos é um grande diferencial para empresas dedicadas a esta atividade. A constante procura de produtividade e qualidade em projetos de software originou diversos modelos de gerenciamento que procuram auxiliar esta área com metodologias e formas de organização de trabalho. O modelo mais conhecido na área de gerenciamento de software é o Modelo em Cascata, caracterizado pela rigidez e fases bem definidas nos processos. Uma vez encontrados problemas com os modelos rígidos surgiram como alternativa de gerenciamento os métodos ágeis, caracterizados pela agilidade, iteratividade e adaptabilidade para diversos projetos. Diante isto o presente trabalho analisa o problema do gerenciamento de projetos de desenvolvimento de software, e propõe um modelo de referencia de gerenciamento de projetos de software considerando a abordagem tradicional de gerenciamento de projetos assim como a abordagem ágil. A pesquisa analisa a compatibilidade das metodologias ágeis com o Capability Maturity Model Integration (CMMI) que é um modelo de maturidade nos processos de desenvolvimento de software. Finalmente a pesquisa apresenta um estudo de caso, que permitiu observar as forças e fraquezas dos métodos estudados, concluindo que as praticas ágeis contribuem na melhoria e gerenciamento de projetos de software. / [en] Today, delivering quality software, on time and respecting costs is a key differentiator for companies dedicated to this activity. The constant search for productivity and quality in software project management led to several models that seek to help this area with methods and forms of work organization. The best known model in the area of software management is the Waterfall Model, characterized by stiffness and well-defined phases in the process. Once found problems with rigid models have emerged as alternative management of agile methods, characterized by agility, and adaptability to various iterative projects. Given that this paper analyzes the problem of managing software development projects, and proposes a reference model for managing software projects considering the traditional approach of project management as well as the agile approach. The research examines the compatibility of agile methodologies with the Capability Maturity Model Integration (CMMI) is a maturity model in software development processes. Finally the research presents a case study, which allowed us to observe the strengths and weaknesses of the methods studied, concluding that such practices contribute to improved and agile project management software.
5

[en] A COMPLIANCE AND RISK-BASED SOFTWARE DEVELOPMENT PROCESS ASSESSMENT APPROACH / [pt] UMA ABORDAGEM PARA A AVALIAÇÃO DE PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE BASEADA EM RISCO E CONFORMIDADE

RAFAEL DE SOUZA LIMA ESPINHA 30 July 2007 (has links)
[pt] Atualmente, um dos principais requisitos de um projeto de desenvolvimento de software é a entrega de um produto de qualidade que obedeça ao prazo e orçamento estipulados e atenda às necessidades do cliente. Utilizando a premissa de que a qualidade do produto desenvolvido está intimamente relacionada à qualidade dos processos utilizados no seu desenvolvimento, muitas organizações investem em programas de melhoria contínua de processos, onde estes processos são constantemente avaliados e melhorados. Este trabalho propõe uma abordagem para a avaliação de processos baseada em análise do risco e da conformidade em processos de desenvolvimento. Esta abordagem é constituída por um método de avaliação em duas etapas e por uma ferramenta de apoio. Na primeira fase do método, uma avaliação em abrangência é realizada para identificar em que áreas se encontram os maiores problemas nos processos. Na segunda fase, uma avaliação mais elaborada e criteriosa é realizada apenas nas áreas críticas, diminuindo o custo e aumentando a eficiência do investimento em melhoria. A ferramenta utiliza um mecanismo de questionários e checklists para verificar o risco e a conformidade dos processos da organização. Estes questionários e checklists estão associados a uma base de conhecimento organizada segundo um modelo de maturidade ou norma de qualidade de referência. Ao final de uma avaliação são gerados relatórios, tabelas e gráficos que apóiam a tomada de decisão e orientam a elaboração de um plano de ação para a melhoria dos processos. A abordagem foi utilizada em três experimentos controlados. / [en] Nowadays, one of the main requirements of a software development project is the delivery of a quality product that conforms to the expected schedule and budget and satisfies customer needs. Using the hypothesis that the quality of the developed product is closely related to the quality of the processes used in its development, many organizations invest in process improvement programs, where the processes are continuously assessed and improved. In this work we propose an approach for process assessment based on risk and process compliance analysis. This approach is composed of a two-step appraisal method and a supporting tool. In the first step of the method, a quick analysis is executed to identify the most problematic areas. In the second one, a more elaborated analysis is performed only in the critical areas, reducing the costs and increasing the effectiveness of the appraisal. The tool uses a mechanism of surveys and checklists to verify the risk and the compliance of the process of the organization. A knowledge base is organized in accordance to a reference quality norm or maturity model. At the end of an assessment, reports, tables and charts support the decision-taking, and they can be used to guide an improvement program. The approach has been used in three case studies.
6

[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ÁRIOS

THIAGO 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.
7

[pt] APLICAÇÃO DA ANÁLISE DE SISTEMAS À DEFINIÇÃO DE PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE / [en] USING SOFTWARE ENGINEERING CONCEPTS TO DEFINE SOFTWARE DEVELOPMENT PROCESSES

GLORIA MARIA DE PAULA OLIVEIRA 25 August 2008 (has links)
[pt] A qualidade de um produto de software depende fortemente da qualidade do processo de software utilizado em seu desenvolvimento. Para auxiliar na definição de um processo de qualidade, existem diversos modelos de processo, modelos de maturidade e normas de qualidade. Entretanto, a tarefa de elaborar ou melhorar o processo de desenvolvimento de sistemas pode se tornar árdua devido à grande quantidade de informações disponíveis e decisões a serem tomadas. Outro grande problema é o risco de definição de um processo que não seja eficaz, ou seja, não melhore a qualidade dos sistemas ou somente aumente a burocracia no desenvolvimento. Esta dissertação apresenta uma abordagem para definição de processos de desenvolvimento de sistemas baseada nos conceitos da análise de sistemas, ressaltando a analogia existente entre a elaboração de um processo e de um software. Uma das principais características da abordagem é o enfoque na área de Gerência de Riscos, visando o controle dos riscos identificados na definição do processo bem como os possíveis riscos na execução do processo de desenvolvimento. / [en] Software quality depends heavily on the quality of the process used to develop it. In order to assist the definition of an adequate process, there are several process models, maturity models and quality standards. However, creating or improving a software development process may be tough due to the large amount of available information and decisions that have to be made. Another central problem is the risk of defining an ineffective process, that is, one that increases the bureaucracy but doesn`t improve the quality of the systems developed with its support. This dissertation presents an approach for defining software development processes based on the concepts of system analysis, based on the analogy between software and process elaboration. One of the most important attributes of this approach is the focus on Risk Management, considering the identified risks in the process definition as well the possible risks during software process execution.
8

[en] A FRAMEWORK FOR SOFTWARE ENGINEERING PROCESS REPRESENTATION AND ANALYSIS / [pt] UM FRAMEWORK PARA A REPRESENTAÇÃO E ANÁLISE DE PROCESSOS DE SOFTWARE

LEANDRO 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.

Page generated in 0.0787 seconds