522 research outputs found

    Gingainstancing: uma ferramenta para geração de produtos derivados do middleware do sistema brasileiro de televisão digital.

    Get PDF
    With the need for a tool for automating the generation of configurations needed by the runtime environment of middleware Ginga, we built a software automation to win this. In this software is managed the application engineering of the middleware software product line. The software built was elaborated through Modeling frameworks and an architecture description language, the Fractal ADL. It permits the architecture descriptions; both reference architecture and application architecture. With a component--‐based development, and the FlexCM runtime environment, with dynamic linkage of these components, it is allowed the use of such architecture description language, with a certain adaptation in the reference one so it can be modeled according to a feature model. The interface proposed to the software was a wizard built in three cohesive stages, So that these stages work in distinct processes of the application engineering.Com a necessidade de uma ferramenta para automatização da geração de configurações necessárias pelo ambiente de execução do middleware Ginga, foi construído um software para conquistar essa automatização. Neste trabalho é gerenciada a engenharia de aplicação da linha de produto de software do middleware. O software construído foi elaborado através de frameworks de modelos e uma linguagem de descrição de arquitetura, a Fractal ADL. Ela permite que arquiteturas sejam descritas, tanto de referência quanto de aplicação. Com um desenvolvimento baseado em componentes, e o ambiente FlexCM de execução, com ligação dinâmica desses componentes, é permitido o uso de tal linguagem de descrição de arquitetura, com uma certa adaptação na arquitetura de referência para que possa ser modelada de acordo com um modelo de características. A proposta de interface dada para o software foi de um wizard construído em três etapas coesas, de maneira que etapas distintas trabalham em processos distintos da engenharia de aplicação

    Evolution of component and aspect-based product line architectures

    Get PDF
    Orientador: Cecília Mary Fischer RubiraTese (doutorado) ¿ Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Arquiteturas de linhas de produtos são essenciais para facilitar a evolução das linhas, pois ajudam a lidar com sua complexidade, abstraindo seus detalhes de implementação. A variabilidade arquitetural difere arquiteturas de linhas de produtos de arquiteturas de sistemas únicos. Ela reflete a existência de alternativas de projeto arquitetural e é expressa por meio de um conjunto de pontos de variação e variantes arquiteturais. A variabilidade arquitetural pode dificultar a evolução de arquiteturas de linhas produtos, pois a implementação da variabilidade software pode aumentar a complexidade da arquitetura com a possível adição de elementos e dependências extras. A variabilidade de linhas de produtos é usualmente capturada modelo de características e implementado pela arquitetura de linha de produtos. Entretanto, a implementação de características, pontos de variação e variantes podem estar espalhados por diversos elementos arquiteturais, o que dificulta a sua evolução. Em geral, cenários de evolução de linhas de produto envolvem adição e/ou remoção de características, mudança de uma característica obrigatória para opcional, entre outros. Quando cenários de evolução afetam características cujas implementações estão espalhadas na arquitetura, eles podem causar impacto de mudança em vários elementos arquiteturais. Estudos recentes exploram o uso de aspectos para modularizar a implementação de características em arquiteturas de linhas de produtos. Aspectos são usados para modularizar interesses transversais que, no contexto de linhas de produtos, são interesses que afetam diversas características. Contudo, esses estudos não consideram (i) arquiteturas componentizadas com interfaces explícitas e (ii) o uso integrado de componentes e aspectos para modularizar a implementação da variabilidade arquitetural. Idealmente aspectos devem ser modelados o mais cedo possível, de preferência, junto com o modelo de características para possibilitar a criação de arquiteturas bem estruturadas com aspectos. Todavia, não existem modelos que integrem o modelo de características e aspectos, nem métodos que consideram aspectos para gerar arquiteturas de linhas produtos a partir do modelo de características. A solução proposta nesta tese envolve inicialmente um estudo comparativo para mostrar a facilidade de evolução de arquiteturas de linhas de produtos propiciada pelo uso integrado de componentes e aspectos. Em seguida, é proposta uma visão estendida do modelo de características que permite representar características transversais. Essa visão, chamada de visão de características orientada a aspectos, é usada para criar arquiteturas de linhas de produtos orientadas a aspectos. Além disso, um modelo arquitetural de componentes é estendido para integrar aspectos para modularizar a variabilidade arquitetural. Por fim, o método FArM, que provê o mapeamento de modelo de características para modelos de arquitetura de linha de produtos, é estendido para considerar características transversais. Foram conduzidos dois estudos empíricos: um para avaliar se o uso integrado de componentes e aspectos facilita ou não a evolução de arquiteturas de linhas de produtos. O outro estudo empírico avalia a modelagem de características transversais e a extensão do método FArM propostos para projetar arquiteturas de linhas de produtos que sejam fáceis de evoluir. Os dois estudos apresentaram resultados promissores indicando que a solução proposta nesta tese facilita a evolução de arquiteturas de linhas de produtosAbstract: Product line architectures are essential to facilitate the evolution of product lines, as they handle their complexity by abstracting implementation details. Architectural variability is what differs product line architectures from single system architectures. It reflects the existence of alternative design options and it is expressed by a set of architectural variation points and variants. Architectural variability can hinder product line architecture evolution because the implementation of software variability can increase architecture complexity by possibly adding extra elements and dependencies. Product line variability is usually captured in the feature model and it is implemented by product line architectures. However, the implementation of features, variation points, and variants may be scattered over architectural elements, which can hinder its evolution. In general, product line evolution scenarios involve feature addition/removal, changing a mandatory feature to an optional feature, and so forth. When evolution scenarios affect features whose implementations are scattered over architecture, they can cause a great change impact on several architectural elements. Recent studies have explored the use of aspects to modularize feature implementation in product line architectures. Aspects can modularize crosscutting concerns, which, in the context of product lines, are concerns that affect several features. Nevertheless, these studies do not consider (i) componentized architectures with explicit interfaces, and (ii) the integration of aspects and components to modularize the implementation of architectural variability. Ideally, aspects should be modeled as soon as possible, preferably, together with the feature model in order to enable the design of well structured product line architectures with aspects. However, there are neither models which integrate features and aspects, nor methods that considers aspects to design product line architectures from the feature model. The solution proposed in this thesis involves a comparative study that presents the support for product line architecture evolution provided by the integration of components and aspects. Then, it is proposed an extended view of the feature model which enables to represent crosscutting features. This view, called aspect-oriented feature view, is used to design product line architectures with aspects. Lastly, the FArM method, which provides guidelines to map from the feature model to the product line architecture model, is extended to consider crosscutting features. Two empirical studies were conducted: one to assess whether the integration of components and aspects facilitates product line architecture evolution. The other empirical study evaluates whether the crosscutting feature modeling and the FArM method extension proposed supports the design of evolvable product line architectures. Both studies presented promising results which indicate that the solution proposed in this thesis facilitates product line architecture evolutionDoutoradoCiência da ComputaçãoDoutor em Ciência da Computaçã

    Internet Banking - Desenvolvimento de aplicação em .NET

    Get PDF
    Este documento descreve o trabalho de desenvolvimento de funcionalidades para o projeto Installments. Installments é um projeto de Internet Banking que tem como objetivo fornecer funcionalidades de pagamentos fracionados aos utilizadores das aplicações móveis do banco. A solução de software na qual se baseia este projeto é composta por quatro camadas. As camadas são a aplicação móvel, o serviço Installments Experience, o serviço Installments Process, e o Sistema Central. O trabalho apresentado neste documento consiste no desenvolvimento de algumas funcionalidades nos microsserviços desenvolvidos em .NET Installments Experiece e Installments Process. As funcionalidades em causa são o desenvolvimento do novo caso de uso Pedir Contacto, e a realização de correções ao caso de uso Consultar Planos Correntes. Também devem ser feitos testes unitários a todos os casos de uso que integram os dois serviços mencionados. Para o design de todas as funcionalidades referidas, foi usada a metodologia iterativa Attribute-Driven Design, e o design foi dividido em duas iterações. A primeira iteração consiste no desenho e implementação dos casos de uso acima referidos. Para o desenvolvimento da primeira iteração foi tido em conta que que deveria ser utilizada cache para reduzir a sobrecarga do sistema central. Redis foi o armazenamento de cache utilizado. Também foi tido em conta que as três camadas do lado backend aplicam a abordagem API-led Connectivity, que estabelece responsabilidades bem definidas para as suas APIs que devem ser respeitadas de modo a aumentar a agilidade no desenvolvimento. A segunda iteração tem como objetivo aplicar os atributos de qualidade manutenibilidade e testabilidade definidos nos requisitos do projeto para todos os casos de uso. Para que o requisito de testabilidade fosse cumprido era necessário que o testes unitários tivessem uma determinada cobertura. E para que o requisito de manutenibilidade fosse cumprido era necessário diminuir os code smells até um determinado índice de dívida técnica. Tanto para monitorizar a cobertura como a testabilidade, foi utilizada a ferramenta SonarQube. E com a ajuda dessa ferramenta, os requisitos de testabilidade e manutenibilidade foram cumpridos em ambos os serviços. Com estes requisitos cumpridos, a aplicação pode passar aos testes de qualidade efetuados por outros stakeholders do projeto Installments.This document describes feature development work for the Installments project. Installments is an Internet Banking project that aims to provide Installments payment features to users of the bank's mobile applications. The software solution on which this project is based is composed of four layers. The layers are the mobile application, the Installments Experience service, the Installments Process service, and the Central System. The work presented in this document is the development of some functionalities in the microservices developed in .NET Installments Experience and Installments Process. The functionalities in question are the development of the new Request Contact use case, and corrections to the Consult Current Plans use case. Unit tests must also be carried out on all use cases that integrate the two services mentioned. For the design of all the functionalities, the iterative Attribute-Driven Design methodology was used, and the design was divided into two iterations. The first iteration consists of designing and implementing the use cases mentioned above. For the development of the first iteration, it was considered that cache should be used to reduce the overhead of the central system. Redis was the cache store used. It was also considered that the three layers of the backend side apply the API-led Connectivity approach, which establishes well-defined responsibilities for their APIs that must be respected in order to increase development agility. The second iteration aims to apply the maintainability and testability quality attributes defined in the project requirements to all use cases. For the testability requirement to be fulfilled, it was necessary that the unit tests had a certain coverage. And for the maintainability requirement to be fulfilled, it was necessary to reduce code smells to a certain technical debt index. To monitor both coverage and testability, the SonarQube tool was used. And with the help of this tool, testability and maintainability requirements were fulfilled in both services. With these requirements fulfilled, the application can pass the quality tests carried out by other stakeholders of the Installments project

    Desenvolvimento de API para aplicação cloud

    Get PDF
    Graças ao aparecimento do estilo de arquitetura REST (Representational State Transfer ) surgiu uma nova alternativa para a implementação de serviços Web. Este permitiu que, de um modo mais simples e exível, fosse possível desenvolver APIs (Application Programming Interface ) para a comunicação entre cliente e servidor. Deste modo, a Sinmetro, empresa onde foi realizado o estágio, sentiu a necessidade de desenvolver uma API REST para aplicação cloud em modelo SaaS (Software as a Service) com vista a integração de uma aplicação Web destinada ao controlo estatístico da quantidade em pré-embalados. Essa aplicação Web designa-se por Accept cloud e é um dos módulos do sistema Accept, software criado pela empresa. Este relatório descreve todo o processo de desenvolvimento da API REST, desenvolvida em Python, que tem como principais objetivos a gestão, recolha de dados e tratamento estatístico de dados necessários ao controlo metrológico de pré-embalados

    Análise Comparativa de Técnicas de Integração entre Microsserviços

    Get PDF
    TCC(graduação) - Universidade Federal de Santa Catarina. Centro Tecnológico. Sistemas de Informação.No mundo das aplicações distribuídas, Microsserviços são um assunto em evidência. O conceito existe há mais de dez anos, porém, apenas agora, após a popularização da computação na nuvem, dos contêineres, do amadurecimento das técnicas de integração e entrega contínuas e do renascimento da programação funcional, é que se torna cada vez maior o número de sistemas utilizando a arquitetura de microsserviços. O poder computacional obtido com essa abordagem traz consigo o aumento das responsabilidades que, se ignoradas, abre brechas para situações catastróficas. A integração dos microsserviços é uma dessas responsabilidades e, quando bem feita, propicia a autonomia, permitindo que os microsserviços sejam alterados e disponibilizados de forma independente do restante do sistema. Este trabalho de conclusão de curso avalia, de forma analítica, REST e AMQP como diferentes técnicas de integração entre microsserviços, mostrando as vantagens e desvantagens encontradas em cada uma delas, apresentando argumentos que permitam ao leitor escolher a abordagem mais adequada conforme o cenário apresentado. A análise foi feita com base numa aplicação hipotética, desconsiderando as regras de negócio e focando apenas na parte da integração dos serviços.In the world of distributed applications, Microservices are a trending topic. The concept has been around for over ten years, however, only now, after concepts like cloud computing and containers became so popular, with the evolution of continuous delivery and integration techniques, as well as the rebirth of functional programming, is that the number of systems using the microservices architecture have been growing ever more. The computing power obtained with this approach brings with itself greater responsibilities that, if ignored, leave the gap open for catastrophic situations. Integrating microservices is one of such responsibilities and, when done right, enable autonomy, allowing microservices to be altered and deployed independently from the rest of the system. This final thesis evaluates, in an analytical way, REST and AMQP as different microservices integration techniques, showing the advantages and disadvantages found in each of them, presenting arguments that would allow the reader to choose the most appropriate approach according to the presented scenario. The analysis has been made based on a hypothetical application, ignoring business rules and focusing only in the services integration logic

    Uma arquitetura de referência para softwares assistentes pessoais baseada na arquitetura orientada a serviços

    Get PDF
    Tese (doutorado) - Universidade Federal de Santa Catarina, Centro Tecnológico. Programa de Pós-Graduação em Engenharia de Automação e SistemasO conceito de softwares assistentes pessoais se firma na ideia de programas de computador que funcionam tal como um secretário humano, auxiliando as pessoas em suas tarefas diárias. Isso se dá por meio de aplicativos, interação do assistente com o seu usuário, comunicação via Internet e outros recursos. Vários esforços têm sido feitos para a criação desses assistentes. Contudo, foi observado que as propostas existentes atacam pontos isolados, além de que não há nenhuma que seja aberta, de forma a permitir a sua integração aos ambientes empresariais, i.e. a processos de negócios da empresa. Em tempo, uma outra perspectiva é a de que nenhum dos trabalhos avaliados apresenta um modelo ou arquitetura de referência para o desenvolvimento de softwares assistentes pessoais com padrões suficientes para manter a interoperabilidade com outros softwares e processos empresariais. Dessa forma, esta Tese apresenta uma arquitetura de referência aberta para softwares assistentes pessoais, que possa gerar implementações interoperáveis e customizáveis para se adequarem aos processos de negócios da empresa e que possam auxiliar os usuários em suas tarefas diárias. Tal arquitetura é baseada em um modelo de referência e na Arquitetura Orientada a Serviços, selecionada como estilo arquitetural. Com base nos resultados de testes sob uma implementação, desenvolvida baseada na arquitetura de referência, verificou-se que esta instância se comportou conforme o que foi proposto e executou corretamente as ações associadas aos comportamentos dos processos de negócios envolvidos em um exemplo estudado. Este trabalho veio no sentido de oferecer uma contribuição para a área de softwares assistentes pessoais mais flexíveis, mais interoperáveis e mais integrados ao mundo das empresas e processos de negócios.The concept of personal assistant software is established on the idea of computer programs that work as a human secretary, helping people in their daily tasks. This comes via applications, interaction of assistant with its user, Internet communication and other resources. Several efforts have been made for the creation of these assistants. However, it was observed that the existing proposals attacks isolated points, besides that there is no proposal which is open to allow its integration into enterprise environments, i.e. the company's business processes. Another perspective is that none of the studied works presents a model or reference architecture for the development of personal assistant software with sufficient standards to maintain interoperability with other software and business processes. Thus, this thesis presents a reference architecture for personal assistants software which can generate customizable and interoperable implementations to suit the company's business processes and can assist users in their daily tasks. This architecture is based on a reference model and serviceoriented architecture, selected as the architectural style. Based on the results of tests on an implementation developed based on the reference architecture, it was found that this instance has behaved according to what was proposed and performed properly the actions associated with the behavior of business processes involved in a case study. This work has come in order to provide a contribution to the area of personal assistant software more flexible, interoperable and integrated into the world of business and business processes

    An approach based on software product lines using components and aspects in Android platform

    Get PDF
    Orientador: Cecília Mary Fischer RubiraDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: O número de dispositivos móveis utilizando a plataforma Android cresceu dramaticamente nos últimos anos, contribuindo para uma explosão no número de aplicações. Hoje, são mais de um milhão de aplicativos disponíveis para download. Essas aplicações estão crescendo em número, tamanho e estão se tornando cada vez mais complexas, requisitando técnicas sofisticadas de engenharia de software, como por exemplo, programação orientada a aspectos e o desenvolvimento baseado em componentes, que foram amplamente explorados em plataformas desktop mas não foram muito investigadas na plataforma Android. Na literatura, poucos estudos foram feitos para mostrar sua viabilidade em cenários reais de implantação. Nesta plataforma, existem limitações de memória e poder de processamento que podem limitar o uso dessas técnicas sofisticadas. Este trabalho explora a plataforma Android em uma abordagem que utiliza essas técnicas sofisticadas de engenharia de software para modularizar interesses transversais para construção de Linhas de Produtos de Software (LPS) e a aplicação desta abordagem em estudo de caso reais. No primeiro estudo de caso, a abordagem é avaliada em relação à quantidade de memória e desempenho, e posteriormente, comparada em relação a abordagens tradicionais como o desenvolvimento baseado em componentes e o desenvolvimento orientado a objetos. No segundo estudo de caso, a abordagem é verificada em relação ao atendimento de requisitos não funcionais de tolerância a falhas no domínio de coleta de dados em campo. Os principais artefatos desse segundo estudo de caso são uma arquitetura e uma aplicação para este domínioAbstract: The number of smartphones running on Android platform increased dramatically in the past few years, contributing to an explosion in the number of applications. Today, there are more than a million available for download. These applications are increasing in the number, size and becoming more complex requiring sophisticated software engineering techniques such as Aspect-Oriented Programming (AOP) and Component-Based Development (CBD) which are highly exploited in desktop environments but have not been much investigated in this platform. In the literature, few studies have been conducted in order to show their feasibility in real industry deployment scenarios. In Android platform, there are limitations in memory and processing power that can limit the use of these software engineering techniques. This work explores Android platform in an approach that uses these sophisticated techniques to modularize crosscutting concerns to build Software Product Lines (SPLs) and its application in real case studies. In the first case study, the approach is evaluated in terms of memory allocation and performance; later, it is compared to traditional approaches such as component-based development and object-oriented programming. In the second case study, the approach is verified in terms of fault-tolerant non-functional requirements suitability in the data collection domain. The main artifacts of this second case study include an architecture and an application for data collection domainMestradoCiência da ComputaçãoMestre em Ciência da Computação131824/2013-9CNP

    Origination – crowdsourcing na resolução de desafios de negócio

    Get PDF
    Trabalho de projecto de mestrado, Engenharia Informática (Engenharia de Software) Universidade de Lisboa, Faculdade de Ciências, 2018Este relatório descreve o trabalhor realizado no âmbito do estágio curricular na empresa Accenture. O objectivo deste Projeto de Engenharia Informática é o desenvolvimento de uma aplicação móvel que permita a geração de ideias espontâneas por parte de colaboradores da empresa e, também, a resolução de desafios de negócio, quer sejam estes existentes ou futuros, recorrendo a ideias e comentários publicados pelos mesmos usando esta aplicação. Sabendo da inquestionável importância na actualidade dos smartphones e, inevitavelmente, das aplicações móveis surgiu a ideia e a necessidade de desenvolver esta aplicação fazendo uso de uma solução cross-platform. Este tipo de solução permite às empresas uma diminuição de custos e de alocação de recursos pois em vez de se desenvolver de forma nativa para as diversas plataformas, poder-se-á usufruir de um desenvolvimento único. O trabalho descrito ao longo do documento foi composto por várias fases:(i)levantamento do estado da arte e análise de aplicações semelhantes,(ii)análise de requisitos através da elaboração de user stories, (iii)desenho da arquitectura do sistema, (iv) desenvolvimento das funcionalidades da aplicação, (v)avaliação das funcionalidades desenvolvidas através de vários tipos de testes. A aplicação desenvolvida atingiu os objectivos previamente definidos.This report describes the work done within the curriculum internship at Accenture. The objective of this Computer Engineering Project is to develop a mobile application that allows spontaneous ideas to be generated by the company’s employees, as well as solving business challenges, whether existing or future, using ideas and comments published by them using this application. Knowing the unquestionable importance in the present moment of smartphones and, inevitably, of the mobile applications came the idea and the need to develop this application making use of a cross-platform solution. This type of solution allows companies to reduce costs and allocate resources because instead of developing natively for several platforms, a single development can be used. The work described throughout the document was composed of several phases: (i) survey of the state of the art and analysis of similar applications, (ii) analysis of requirements through the elaboration of user stories, (iii) design of the system architecture, iv) development of the functionalities of the application, (v) evaluation of the functionalities developed through several types of tests. The application developed reached the objectives previously defined

    Criação e evolução de uma API pública

    Get PDF
    A E-goi é uma empresa que providencia uma plataforma de marketing digital para clientes com diferentes necessidades e preferências. A API pública que a E-goi oferece a esses clientes possui alguns problemas. Este projeto consistiu na criação de uma nova API pública para a E-goi com a finalidade de substituir a anterior. A API necessitou de suportar o estilo arquitetural REST e protocolo SOAP corretamente, para satisfazer as necessidades de diversos clientes. Precisou também de ter respostas compreensíveis, para que a sua utilização seja facilitada e os clientes se sintam satisfeitos. Este projeto contemplou ainda um sistema de versionamento por serviço, compatível com REST e SOAP que pode ser utilizado para aumentar a longevidade da API. Perante as necessidades dos clientes e da E-goi, optou-se por uma solução que suporta REST e SOAP num único projeto. Para esse fim foi realizado um estudo sobre o funcionamento de ambos e sobre as API, incluindo controlo de tráfego de utilização e caching. Foi ainda realizado um estudo sobre a evolução das API e da anterior API pública da E-goi, que foi substituída por a desenvolvida neste projeto. Para se apresentar uma visão mais concreta do negócio e do seu valor, realizou-se uma análise de valor deste projeto. A solução desenvolvida disponibiliza diversos serviços em REST e SOAP, um sistema de erros com os códigos HTTP apropriados, e possui um protótipo da utilização de um sistema de versionamento por serviço num dos recursos, para que, no futuro, se a empresa assim o decidir, essa funcionalidade possa ser disponibilizada. Para validar que a solução final é adequada, foi realizado um questionário de satisfação, testes de aceitação aos serviços e ao sistema de versionamento. Os dados do tempo de resposta foram obtidos da API pública e da utilização direta da privada, e analisados através de um teste estatístico. Os resultados do questionário demostraram uma maior satisfação com a nova API do que com a anterior.E-goi is a company that provides a digital marketing platform for clients with different needs and preferences. The public API that E-goi offers to those clients has some problems. This project consisted in the creation of a new public API with the purpose of replacing the previous one. The API needed to support REST architectural style and SOAP protocol correctly, to meet customer needs. It also required to have correctly structured responses, in order to ease its use. This project also contains a service versioning system, compatible with REST and SOAP which can increase the API longevity. According to clients’ and E-goi’s needs, it was chosen a solution that supports both REST and SOAP in a single project. The approach which led to the final result involved a study of both and about API, including API traffic management and caching. It was also studied API evolution and reviewed the old E-goi public API, that was replaced with the one developed in this project. In order to give a more concrete vision of the business and its value, a value analysis was performed for this project. The developed solution provides several services in REST and SOAP, an error system with the appropriate HTTP codes, and contains a prototype of the versioning system integrated in one of the resources, so that, in the future, if the company decides it, that functionality could be delivered. To validate if the final solution meets the requirements, it was created a questionnaire of satisfaction, developed acceptance tests to the services and the versioning system. The response time data was obtained from the public API and the direct use of the private API, and analyzed in a statistical test. The questionnaire results demonstrated a greater satisfaction with the new API than with the previous
    corecore