• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 35
  • 15
  • 1
  • Tagged with
  • 51
  • 51
  • 51
  • 38
  • 13
  • 10
  • 9
  • 8
  • 8
  • 8
  • 8
  • 8
  • 8
  • 7
  • 7
  • 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.
31

Execução paralela de programas como suporte ao teste de mutação / Parallel execution of programs as support for mutation testing

Stevão Alves de Andrade 08 April 2016 (has links)
Teste de software desempenha um papel fundamental no processo de produção de um produto de software de qualidade. Com o passar dos anos, diversas técnicas e critérios de teste de software foram desenvolvidos a fim de estabelecer meios e métricas para guiar a criação de casos de teste efetivos, capazes de evidenciar defeitos no produto avaliado. Dentre os principais critérios para teste de software está o Teste de Mutação, que foi amplamente difundido e é tido como uma das abordagens mais eficazes para guiar a criação de conjuntos de casos de teste capazes de revelar defeitos em software. Entretanto, à medida que esse critério possui uma grande efetividade para revelar defeitos, ele peca pelo baixo poder de escalabilidade, o que acaba comprometendo diretamente a sua capacidade de aplicação. Neste sentido, diversos estudos foram desenvolvidos nesta área dedicando-se a aprimorar o seu desempenho e torná-lo uma alternativa viável para aplicação durante a fase de teste de software. Este trabalho apresenta indícios de que a utilização de estruturas complexas de processamento pode apoiar a aplicação do Teste de Mutação. Para tal, foi concebida uma arquitetura que possibilite a aplicação do Teste de Mutação em paralelo. Após a implementação da arquitetura foram avaliados cinco algoritmos de balanceamento de carga responsáveis por controlar a distribuição e execução do Teste de Mutação. Durante a avaliação experimental da arquitetura e dos algoritmos, observou-se que nos piores cenários avaliados foi possível atingir um ganho de desempenho acima de 70% em relação à aplicação sequencial convencional do Teste de Mutação enquanto nos melhores cenários o ganho de desempenho foi acima 95%, contudo, necessitando utilizar-se de uma infraestrutura mais robusta para a execução da arquitetura. / Software testing plays a fundamental role in the development process of quality software systems. Over the years, many software testing techniques and criteria were developed to provide means and metrics to guide the development of effective test cases, able to find defects on the product being assessed. Among major criteria for software testing is the mutation testing, which was broadly broadcast and is likely one of the most effective approaches for creating sets of test cases able to uncover software bugs. However, although mutating testing has a great effectiveness to uncover defects in a product, it suffers from low scalability, which directly compromises its applicability. In this sense, many studies were developed in this area aiming at improving the performance of that criterion and make it a viable alternative for its application throughout the software testing process. This work presents evidence that the use of complex structures of processing can support mutation testing application. For this, it was established an architecture that enables mutation testing to be performed in parallel. After implementing the architecture, five load balance algorithms to controlling the distribution and execution of mutation testing were analyzed. During the experimental evaluation of the architecture and algorithms, it was observed that in the worst evaluated scenarios it was possible to reach a gain in performance of up to 70% in comparison to the conventional application (sequential). In the best scenarios the gain was over 95% in exchange of using a more robust infrastructure for the execution of the architecture.
32

A proposal for the evolution of model-driven software / Uma proposta para a evolução da engenharia de software dirigida por modelos

Gottardi, Thiago 19 March 2018 (has links)
In the Model-Driven Software Engineering (MDSE) context, software production can be performed by defining models. Despite the advantages of this methodology, different domains require specific support tools and modeling languages, which, in turn, must be developed along with the final software. Because of this, developers face problems when applying the method. The objective of this work is twofold: 1) to identify the most critical problems when developing with this method; 2) discuss and provide possible solutions to those problems. The critical problems were identified by performing a systematic mapping, empirical studies, collaborations and interviews with specialists. It has been identified that MDSE, according to basic literature, has an excessively high abstraction level which leads to a lack of adequate processes and developer training, besides the need for modeling tools. A new method is necessary to allow developers to treat models and source-code differently. Therefore, in this thesis, the need for evolving MDSE processes is discussed. In this manner, this work introduces a new development method described as a possible concrete evolution of MDSE that defines a paradigm for software development. This method is defined along with domain specific languages, a tool-chain and sample software systems. After conducting analytic and experimental studies, it has been concluded that these applications also represent a valuable contribution for implementing service-oriented systems which can be employed in real world applications. / No contexto da Engenharia de Software Dirigida por Modelos (MDSE), a produção de software pode ser realizada por meio de definições de modelos. Apesar dos benefícios desse método de desenvolvimento, diferentes domínios exigem a especificação de linguagens de modelagem e ferramentas específicas, que, por sua vez, precisam ser desenvolvidos em conjunto com o software final. Desta forma, desenvolvedores encontram problemas ao utilizar este método. Este trabalho possui duplo objetivo: 1) identificar os problemas mais críticos deste método; 2) discutir e fornecer possíveis soluções aos problemas. A identificação de problemas foi realizada por meio de um mapeamento sistemático, estudos empíricos, colaborações e entrevistas com especialistas. Foi identificado que MDSE, de acordo com a literatura básica, possui um nível de abstração excessivamente alto, acarretando em carência de processos adequados e de treinamento de desenvolvedores que vão além de problemas de necessidade de ferramentas de modelagem. Portanto, nesta tese, discute-se a necessidade de evoluir processos de MDSE que permita aos desenvolvedores uma nova forma de tratar modelos e código-fonte. Para tanto, neste trabalho também é descrito um novo método de desenvolvimento, descrito como uma possível evolução concreta do MDSE, o qual define um paradigma para desenvolver software. Este método é exemplificado em várias aplicações dentro deste trabalho. Após conduzir estudos analíticos e experimentais, concluiu-se que estas aplicações também possibilitam uma contribuição significativa no domínio de software orientado a serviços que podem ser empregadas em software do mundo real.
33

Productivity of agile teams: an empirical evaluation of factors and monitoring processes / Produtividade de times ágeis: uma avaliação experimental de fatores e processos de monitoramento.

Melo, Claudia de Oliveira 09 May 2013 (has links)
Lower cost and shorter time-to-market expectations are the major drivers of software productivity improvements. To manage productivity effectively, it is important to identify the most relevant difficulties and develop strategies to cope with them. Agile methods, including Extreme Programming and Scrum, have evolved as approaches to simplify software development process, potentially leading to better productivity. They aim to shorten development time and handle the inevitable changes resulting from market dynamics. Although the industry has extensively adopted agile methods, little research has empirically examined the software development agility construct regarding its dimensions, determinants, and effects on software development performance. Understanding this construct could help determine where to concentrate management efforts (and related financial resources) from a practical standpoint and where to focus research efforts from an academic perspective. Considerable research has been directed at identifying factors that have a significant impact on software development productivity. In general, the studied productivity factors were related to product, personnel, project, process, or organizational issues. Continuously evaluating productivity factors is important, as factors may change under new software engineering practices. However, little research has investigated the major factors influencing agile team productivity. ]The goal of this thesis was to explore productivity definitions, factors, and monitoring in agile teams and to improve the practice based on the collected evidence and gained knowledge. This thesis presents five novel contributions: C1 - Empirical verification of the importance of productivity for companies adopting agile methods and its perceived benefits; C2 - Rationale for the definition of productivity in the context of agile methods; C3 - Empirical verification of agile team productivity factors; C4 - A conceptual framework for agile team productivity factors and their impact; C5 - A team productivity monitoring process considering adaptability and an evaluation of the usefulness of agile team productivity metrics. / Menor custo e expectativa de menor time-to-market são os principais motivadores para melhorias de produtividade de software. Para gerir eficazmente a produtividade, é importante identificar as dificuldades mais relevantes e desenvolver estratégias para lidar com elas. Os métodos ágeis, incluindo Programação Extrema e Scrum, evoluíram como abordagens para simplificar o processo de desenvolvimento de software, potencialmente levando a uma melhor produtividade. Eles visam reduzir o tempo de desenvolvimento e lidar com as mudanças inevitáveis decorrentes da dinâmica do mercado. Embora a indústria tenha adotado amplamente métodos ágeis, há pouco entendimento científico do construto agilidade em desenvolvimento de software em relação às suas dimensões, determinantes e efeitos sobre o desempenho no desenvolvimento de software. Compreender esse construto poderia ajudar a determinar onde concentrar os esforços de gestão (e recursos financeiros relacionados) de um ponto de vista prático, assim como onde concentrar os esforços de investigação de uma perspectiva científica. Pesquisa considerável tem sido direcionada para identificar os fatores com impacto significativo na produtividade de desenvolvimento de software. Em geral, os fatores de produtividade estudados foram relacionadas ao produto, pessoas, projeto, processo ou questões organizacionais. Avaliar fatores de produtividade continuamente é importante, pois os fatores podem mudar quando novas práticas de engenharia de software são adotadas. No entanto, poucos estudos investigaram fatores influenciando a produtividade de times ágeis. O objetivo desta tese é explorar definições, fatores e monitoramento de produtividade em times ágeis e melhorar a prática baseada em evidência. Esta tese apresenta cinco novas contribuições: C1 - Verificação empírica da importância de produtividade para as empresas que adotam métodos ágeis e seus benefícios percebidos; C2 - Justificativa para a definição da produtividade no contexto de métodos ágeis; C3 - A verificação empírica de fatores de produtividade em times ágeis; C4 - Um arcabouço conceitual de fatores de produtividade em times ágeis e seu impacto; C5 - Um processo de acompanhamento de produtividade de times ágeis, considerando adaptabilidade e uma avaliação da utilidade de métricas de produtividade para esses times.
34

Caracterização da Complexidade Estrutural em Sistemas de Software

Azevedo Terceiro, Antonio Soares de 25 January 2013 (has links)
Submitted by Santos Davilene (davilenes@ufba.br) on 2013-01-25T12:17:33Z No. of bitstreams: 1 Tese - Antonio Terceiro.pdf: 2349378 bytes, checksum: 0242ae36220a231a40a42d851ee9142c (MD5) / Made available in DSpace on 2013-01-25T12:17:33Z (GMT). No. of bitstreams: 1 Tese - Antonio Terceiro.pdf: 2349378 bytes, checksum: 0242ae36220a231a40a42d851ee9142c (MD5) / Esta tese propõe uma teoria para caracterizar a complexidade estrutural em sistemas de software. Esta teoria busca identificar (i) a contribuição de diversos fatores para a variação da complexidade estrutural e (ii) os efeitos da complexidade estrutural sobre projetos de software. Possíveis fatores na variação da complexidade estrutural incluem: fatores humanos, como experiência geral dos desenvolvedores e a sua familiaridade com as diferentes partes do sistema; fatores relacionados às mudanças realizadas no sistema, como variação no tamanho, espalhamento das mudanças; e fatores organizacionais, como maturidade do processo de desenvolvimento e a estrutura de comunicação do projeto. Efeitos da complexidade estrutural incluem maior esforço, e consequentemente maior custo, em atividades de compreensão e manutenção de software. Para testar a validade da teoria proposta, foram realizados quatro estudos experimentais, utilizando mineração de dados em repositórios de projetos de software livre. Foram analisados dados históricos de mudanças realizadas em 13 sistemas de diferentes domínios de aplicação e escritos em diferentes linguagens de programação. Os resultados destes estudos indicaram que todos os fatores estudados influenciaram significativamente a variação da complexidade estrutural em pelo menos um dos projetos, mas projetos diferentes foram influenciados por conjuntos diferentes de fatores. Modelos construídos foram capazes de descrever até 93% da variação na complexidade estrutural nos projetos estudados. / Salvador
35

[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 ARQUITETURA

MAIRA 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.
36

Formaliza??o de experimentos controlados em engenharia de software

Freire, Marilia Aranha 05 March 2015 (has links)
Submitted by Automa??o e Estat?stica (sst@bczm.ufrn.br) on 2016-05-30T21:50:59Z No. of bitstreams: 1 MariliaAranhaFreire_TESE.pdf: 5649879 bytes, checksum: 2335924edd2ff84ad849308b4297dd7d (MD5) / Approved for entry into archive by Arlan Eloi Leite Silva (eloihistoriador@yahoo.com.br) on 2016-06-01T18:52:23Z (GMT) No. of bitstreams: 1 MariliaAranhaFreire_TESE.pdf: 5649879 bytes, checksum: 2335924edd2ff84ad849308b4297dd7d (MD5) / Made available in DSpace on 2016-06-01T18:52:23Z (GMT). No. of bitstreams: 1 MariliaAranhaFreire_TESE.pdf: 5649879 bytes, checksum: 2335924edd2ff84ad849308b4297dd7d (MD5) Previous issue date: 2015-03-05 / A condu??o de estudos emp?ricos ? de vital import?ncia para coletar evid?ncias cient?ficas sobre novas tecnologias de software. Neste sentido, nos ?ltimos anos centenas de experimentos controlados v?m sendo realizados na ?rea da engenharia de software. Um experimento controlado ? uma t?cnica que permite aos cientistas testarem uma hip?tese de pesquisa e a rela??o causa e efeito entre as vari?veis envolvidas no ambiente de estudo. Entretanto, o planejamento, execu??o, an?lise e empacotamento de um experimento controlado s?o considerados atividades complexas, custosas e propensas a erros. As poucas ferramentas existentes de apoio ao processo de experimenta??o auxiliam v?rias atividades envolvidas em um experimento mas possuem limita??es e grande necessidade de melhorias. Neste contexto, este trabalho prop?e : (i) investigar abordagens e ambientes existentes de apoio a formaliza??o e condu??o de experimentos controlados em ES identificando suas limita??es e benef?cios; (ii) propor uma linguagem espec?fica de dom?nio para a formaliza??o de experimentos controlados; e (iii) desenvolver uma abordagem dirigida por modelos que usa a formaliza??o de um experimento para gera??o de workflows customiz?veis de apoio ? condu??o de experimentos controlados. O trabalho ? avaliado atrav?s da condu??o de: (i) um estudo de viabilidade da abordagem dirigida por modelos atrav?s da modelagem de um experimento existente e gera??o de workflows customiz?veis a partir do seu projeto estat?stico; (ii) um estudo emp?rico de an?lise da expressividade e completude da linguagem espec?fica de dom?nio proposta atrav?s da modelagem de 16 experimentos; (iii) um experimento controlado que investiga ? compreens?o da linguagem pelos experimentadores; e (iv) um experimento controlado que investiga a usabilidade da linguagem atrav?s do seu uso direto na especifica??o de experimentos. Os resultados obtidos em tais estudos trazem evid?ncias que a abordagem proposta ? vi?vel, e que a linguagem tem um bom n?vel de expressividade e completude. Al?m disso, as an?lises mostram que a compreens?o do plano experimental escrito na linguagem proposta ? mais f?cil e mais r?pida que quando analisando a especifica??o de um plano experimental descrito em artigos cient?ficos. Por fim, a percep??o dos experimentadores foi positiva em rela??o ? utiliza??o da linguagem. / The conduction of empirical studies is very important to gather scientific evidences of new software technologies. Over the last years, a hundred of controlled experiments have been conducted in the software engineering area. A controlled experiment is a technique that allows researchers to test a research hypothesis and the causal effect analysis among the variables involved in the study environment. However, the planning, execution, analysis and packaging of a controlled experiment are considered work intensive, time consuming and error-prone activities. A few existing supporting tools can help the accomplishment of many of these activities but they still have many limitations and improvement needs. In this context, this thesis proposes: (i) to investigate existing approaches and environments to support the formalization and conduction of SE controlled experiments by identifying their limitations and benefits; (ii) to propose a domain-specific language (DSL) to formalize the specification of controlled experiments; and (iii) to develop a model-driven approach that can use the experiment specification in the DSL to generate customized workflows to support the execution of controlled experiments. This work is evaluated through the conduction of: (i) a feasibility study of the modeldriven approach through the modeling of a real experiment and the generation of workflows according to its experimental design; (ii) an empirical study that assesses the expressivity and completeness of the domain-specific language through the modeling of 16 existing experiments; (iii) a controlled experiment that investigates the DSL comprehensibility by the experimenters; and (iv) a controlled experiment that investigates the language usability through the specification of experiments. The studies results bring evidences of the approach feasibility, and the expressiveness and completeness of the DSL. In addition, our controlled experiments results show that: (i) the experimental plan comprehension when written in the proposed DSL is easier to understand and faster to specify when compared to the experiment specification described in scientific papers; and (ii) the experimenters? perception was positive when using the DSL.
37

Evidências sobre o uso de técnicas de geração automática de dados de teste em programas concorrentes / Evidences about the use of automatic test data generation techniques in context of concurrent programs

Ricardo Ferreira Vilela 01 August 2016 (has links)
Diversas pesquisas apoiam e investigam o teste de programas concorrentes, as quais objetivam, principalmente, a proposição de critérios de teste e mecanismos para execução das diferentes sincronizações entre processos ou threads. As características específicas dessas aplicações podem ocasionar diferentes tipos de defeitos, os quais, em sua maioria, não são facilmente identificados. Nesse contexto, a geração automática de dados de teste pode apoiar a atividade de teste atuando na seleção de entradas mais representativas, ou seja, aquelas com maior probabilidade de revelar defeitos. Apesar disso, poucas pesquisas abordam este tema no contexto de programas concorrentes, e as existentes não consideram aspectos importantes desse tipo de aplicação. A geração de dados de teste para programas sequenciais dispõe de uma variedade de técnicas que apoiam a seleção dos dados de teste. Essas técnicas têm sido estendidas para o contexto de programas concorrentes partindo da premissa que esses programas necessitam de abordagens mais complexas para seleção de entradas, em decorrência disso um maior custo é imposto ao teste. Considerando esse contexto, uma lacuna ainda em aberto é a avaliação das técnicas para o cenário de programas concorrentes. Neste trabalho a avaliação das técnicas foi explorada por meio da realização de estudos experimentais, os quais avaliaram diferentes técnicas de geração de dados de teste para o contexto de programas concorrentes, considerando a eficácia em revelar defeitos, cobertura de critérios e custo para atividade de teste. Os resultados obtidos demonstraram que as técnicas empregadas para programas sequenciais não atingem o mínimo esperado para este tipo aplicação. Apesar disso, as técnicas investigadas apresentaram características importantes que podem auxiliar a atividade de teste para programas concorrentes e a proposição de abordagens efetivas de geração de dados para esse contexto. / The concurrent program testing has been largely investigated with propositions of testing criteria and mechanisms, which aim mainly to testing criteria proposition and mechanisms for execution of different synchronizations. The specific characteristics of these applications can lead to the different types of faults, which, in most of cases, are not easily identified. In this context, the automatic test data generation can support the testing activity acting in selecting the most representative data tests, i.e. those most likely to reveal faults. Nevertheless, few studies address this issue in the context of concurrent programs, and the these studies do not consider important aspects of this type of application. In contrast, we can find several techniques proposed to support the test data generation for sequential programs. These techniques have been extended to the context of concurrent programs on the premise that these programs require more complex approaches for selection of test data. As a result, a greater cost for testing activity is enforced. Considering this context, a gap still open is the evaluation of techniques for the scenario of concurrent programs. In this work the evaluation of techniques was explored through experimental studies, which different techniques of test data generatoon were evaluated, considering effectiveness, testing coverage and application cost. The results showed that the generation techniques used for sequential programs used in the experimental study do not reach the minimum expected in terms of effectiveness and cost for concurrent programs. Nevertheless, the techniques investigated showed significant features that can help the proposition of effective approaches for test data generation applied to concurrent programs.
38

[en] MAINTAINABILITY AND REUSABILITY OF ASPECT-ORIENTED SOFTWARE: AN ASSESSMENT FRAMEWORK / [pt] MANUTENIBILIDADE E REUSABILIDADE DE SOFTWARE ORIENTADO A ASPECTOS: UM FRAMEWORK DE AVALIAÇÃO

CLAUDIO 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.
39

A proposal for the evolution of model-driven software / Uma proposta para a evolução da engenharia de software dirigida por modelos

Thiago Gottardi 19 March 2018 (has links)
In the Model-Driven Software Engineering (MDSE) context, software production can be performed by defining models. Despite the advantages of this methodology, different domains require specific support tools and modeling languages, which, in turn, must be developed along with the final software. Because of this, developers face problems when applying the method. The objective of this work is twofold: 1) to identify the most critical problems when developing with this method; 2) discuss and provide possible solutions to those problems. The critical problems were identified by performing a systematic mapping, empirical studies, collaborations and interviews with specialists. It has been identified that MDSE, according to basic literature, has an excessively high abstraction level which leads to a lack of adequate processes and developer training, besides the need for modeling tools. A new method is necessary to allow developers to treat models and source-code differently. Therefore, in this thesis, the need for evolving MDSE processes is discussed. In this manner, this work introduces a new development method described as a possible concrete evolution of MDSE that defines a paradigm for software development. This method is defined along with domain specific languages, a tool-chain and sample software systems. After conducting analytic and experimental studies, it has been concluded that these applications also represent a valuable contribution for implementing service-oriented systems which can be employed in real world applications. / No contexto da Engenharia de Software Dirigida por Modelos (MDSE), a produção de software pode ser realizada por meio de definições de modelos. Apesar dos benefícios desse método de desenvolvimento, diferentes domínios exigem a especificação de linguagens de modelagem e ferramentas específicas, que, por sua vez, precisam ser desenvolvidos em conjunto com o software final. Desta forma, desenvolvedores encontram problemas ao utilizar este método. Este trabalho possui duplo objetivo: 1) identificar os problemas mais críticos deste método; 2) discutir e fornecer possíveis soluções aos problemas. A identificação de problemas foi realizada por meio de um mapeamento sistemático, estudos empíricos, colaborações e entrevistas com especialistas. Foi identificado que MDSE, de acordo com a literatura básica, possui um nível de abstração excessivamente alto, acarretando em carência de processos adequados e de treinamento de desenvolvedores que vão além de problemas de necessidade de ferramentas de modelagem. Portanto, nesta tese, discute-se a necessidade de evoluir processos de MDSE que permita aos desenvolvedores uma nova forma de tratar modelos e código-fonte. Para tanto, neste trabalho também é descrito um novo método de desenvolvimento, descrito como uma possível evolução concreta do MDSE, o qual define um paradigma para desenvolver software. Este método é exemplificado em várias aplicações dentro deste trabalho. Após conduzir estudos analíticos e experimentais, concluiu-se que estas aplicações também possibilitam uma contribuição significativa no domínio de software orientado a serviços que podem ser empregadas em software do mundo real.
40

Productivity of agile teams: an empirical evaluation of factors and monitoring processes / Produtividade de times ágeis: uma avaliação experimental de fatores e processos de monitoramento.

Claudia de Oliveira Melo 09 May 2013 (has links)
Lower cost and shorter time-to-market expectations are the major drivers of software productivity improvements. To manage productivity effectively, it is important to identify the most relevant difficulties and develop strategies to cope with them. Agile methods, including Extreme Programming and Scrum, have evolved as approaches to simplify software development process, potentially leading to better productivity. They aim to shorten development time and handle the inevitable changes resulting from market dynamics. Although the industry has extensively adopted agile methods, little research has empirically examined the software development agility construct regarding its dimensions, determinants, and effects on software development performance. Understanding this construct could help determine where to concentrate management efforts (and related financial resources) from a practical standpoint and where to focus research efforts from an academic perspective. Considerable research has been directed at identifying factors that have a significant impact on software development productivity. In general, the studied productivity factors were related to product, personnel, project, process, or organizational issues. Continuously evaluating productivity factors is important, as factors may change under new software engineering practices. However, little research has investigated the major factors influencing agile team productivity. ]The goal of this thesis was to explore productivity definitions, factors, and monitoring in agile teams and to improve the practice based on the collected evidence and gained knowledge. This thesis presents five novel contributions: C1 - Empirical verification of the importance of productivity for companies adopting agile methods and its perceived benefits; C2 - Rationale for the definition of productivity in the context of agile methods; C3 - Empirical verification of agile team productivity factors; C4 - A conceptual framework for agile team productivity factors and their impact; C5 - A team productivity monitoring process considering adaptability and an evaluation of the usefulness of agile team productivity metrics. / Menor custo e expectativa de menor time-to-market são os principais motivadores para melhorias de produtividade de software. Para gerir eficazmente a produtividade, é importante identificar as dificuldades mais relevantes e desenvolver estratégias para lidar com elas. Os métodos ágeis, incluindo Programação Extrema e Scrum, evoluíram como abordagens para simplificar o processo de desenvolvimento de software, potencialmente levando a uma melhor produtividade. Eles visam reduzir o tempo de desenvolvimento e lidar com as mudanças inevitáveis decorrentes da dinâmica do mercado. Embora a indústria tenha adotado amplamente métodos ágeis, há pouco entendimento científico do construto agilidade em desenvolvimento de software em relação às suas dimensões, determinantes e efeitos sobre o desempenho no desenvolvimento de software. Compreender esse construto poderia ajudar a determinar onde concentrar os esforços de gestão (e recursos financeiros relacionados) de um ponto de vista prático, assim como onde concentrar os esforços de investigação de uma perspectiva científica. Pesquisa considerável tem sido direcionada para identificar os fatores com impacto significativo na produtividade de desenvolvimento de software. Em geral, os fatores de produtividade estudados foram relacionadas ao produto, pessoas, projeto, processo ou questões organizacionais. Avaliar fatores de produtividade continuamente é importante, pois os fatores podem mudar quando novas práticas de engenharia de software são adotadas. No entanto, poucos estudos investigaram fatores influenciando a produtividade de times ágeis. O objetivo desta tese é explorar definições, fatores e monitoramento de produtividade em times ágeis e melhorar a prática baseada em evidência. Esta tese apresenta cinco novas contribuições: C1 - Verificação empírica da importância de produtividade para as empresas que adotam métodos ágeis e seus benefícios percebidos; C2 - Justificativa para a definição da produtividade no contexto de métodos ágeis; C3 - A verificação empírica de fatores de produtividade em times ágeis; C4 - Um arcabouço conceitual de fatores de produtividade em times ágeis e seu impacto; C5 - Um processo de acompanhamento de produtividade de times ágeis, considerando adaptabilidade e uma avaliação da utilidade de métricas de produtividade para esses times.

Page generated in 0.7237 seconds