3,807 research outputs found

    Micro Frontends para Aplicações Web

    Get PDF
    Over the course of the last ten years, web applications have stood out as the go to when it comes to software development, replacing the traditional desktop apps. As a result of this, customer demand has been on the rise, leaving companies with their hands full as they try to meet expectations. In the year 2011, the world was introduced to the concept of Microservices, which came to revolutionize the software development industry by splitting typical backend monolithic codebases into smaller, more manageable chunks that were able to be developed, deployed and tested independently. This in turn facilitated customer deliveries as it opened the door to iterative and incremental developments, preventing customers from having to wait months, or even sometimes years, to receive a fully functional product since they could now be handed constant updates in time periods as short as 15 days. However, even though this expedited today’s backend developments, a web application is not only composed by a server-side layer, but also a client-side one. Today’s application frontends still rely on the traditional monolithic architecture which presents the same issues that backend developments once did and, due to the ever-increasing popularity of the online world, these types of solutions have been growing massively and escalating those problems. By having these architectural discrepancies between frontend and backend codebases, iterative and incremental software developed can never be fully realized as all microservices still depend on the same monolithic frontend. This is where Micro Frontends come in. The concept behind this model is to take the teachings microservices provided and expand them to the client-side. By organizing applications into several components, each with its respective business sub-domain, vertical teams can then be assembled and take full ownership of said sub-domain, ultimately implementing the component from end-to-end. Since a Micro Frontend based architecture is still a somewhat recent concept, information is lacking and makes the assessment of its viability hard to reach. As such, this dissertation aims to study its feasibility by studying and comparing possible alternatives, ultimately describing its advantages and disadvantages, and finally presenting a proof-of-concept application.Ao longo dos últimos dez anos, as aplicações web têm-se destacado no que diz respeito ao desenvolvimento de software, substituindo as aplicações desktop tradicionais. Consequentemente, a quantidade de clientes neste mercado tem vindo a aumentar, deixando as empresas com dificuldades ao tentar atender às expectativas. Em 2011, o mundo tecnológico foi apresentado ao conceito de Microsserviços, o qual veio revolucionar a indústria de desenvolvimento de software ao dividir soluções monolíticas em peças de menor dimensão e mais facilmente geridas que possibilitaram os processos de desenvolvimento, implantação e teste de forma independente. Deste modo os microserviços permitiram a adoção de desenvolvimentos iterativos e incrementais, que por sua vez vieram evitar morosas esperas por parte dos clientes para receber o seu produto desejado em troca de entregas de, por exemplo, 15 em 15 dias (a duração por defeito de um sprint na maioria das metodologias de desenvolvimento de software ágeis). No entanto, embora isso tenha acelerado o desenvolvimento de código relativo ao backend, uma aplicação web não é composta apenas por uma camada do lado do servidor, mas também do lado do cliente. Atualmente, o desenvolvimento de aplicações de frontend tende a utilizar uma arquitetura monolítica tradicional, a qual apresenta os mesmos problemas que os desenvolvimentos de backend anteriormente apresentavam. Devido ao aumento de popularidade das aplicações web, essas mesmas soluções monolíticas têm crescido exponencialmente, agravando os problemas. Com as discrepâncias arquiteturais entre projetos de frontend e backend, o conceito de desenvolvimento de software iterativo e incremental nunca pode ser cumprido na totalidade, pois todos os microsserviços implementados dependem do mesmo frontend monolítico. Para solucionar os problemas supramencionados, surgiu o conceito de Micro Frontends. O principal propósito da arquitetura de Micro Frontends é aplicar os conceitos providenciados pelos microsserviços e expandi-los para o lado do cliente. Ao organizar as soluções em vários componentes, cada um com seu respectivo subdomínio do negócio da aplicação, torna-se possível a criação de equipas verticais, as quais assumem controlo total do referido subdomínio, implementando o componente de ponta a ponta. Visto que uma arquitetura de Micro Frontends ainda é um conceito relativamente recente, avaliar a sua fiabilidade torna-se uma tarefa difícil. Deste modo, esta dissertação procura estudar este modelo e comparar as diferentes alternativas de implementação, descrevendo as suas vantagens e desvantagens e, por fim, apresentando uma prova de conceito

    A domain-specific dialect for financial-economic calculations using reactive programming

    Get PDF
    This thesis investigates to what extent reactive programming is suited for the implementation of systems that support banks in providing financial-economic advice to their private customers. To this end, we built a small such system in Hotdrink, as a proof-of-concept. This small system is a simplification of a much larger system that has been developed by Delfi Data, and which is overdue to be rewritten from scratch. Our system was evaluated on the commercial criteria readability, maintainability, extensibility, and efficiency. It turned out that readability and maintainability were quite high, even allowing nondevelopers to understand most of the code. However, extensibility is limited for financial calculations in general and especially for parallelization and encapsulation. With regard to commercialization, the solution was too immature to be evaluated on efficiency. Our conclusion is that reactive programming alone is too restrictive for solving financialeconomic problems. Notwithstanding the above, as a by-product we developed a prototype which sourceto-source compiles our new high-level domain-specific JavaScript dialect to reactive calculations.Masteroppgave i informatikkINF39

    Development of an e-portfolio social network using emerging web technologies

    Get PDF
    Dissertação de mestrado em Informatics EngineeringDigital portfolios (also known as e-Portfolios) can be described as digital collections of artifacts, being both a product (a digital collection of artifacts) and a process (reflecting on those artifacts and what they represent). It is an extension of the traditional Curriculum Vitae, which tells the educational and professional milestones of someone, while the portfolio proves and qualifies them (e.g.: annually thousands of students finish a Master degree on Informatics, but only one has built Vue, Twitter or Facebook – the Portfolio goes beyond the CV milestones by specifying the person’s output throughout life and distinguishing them). e-Portfolios augment this by introducing new digital representations and workflows, exposed to a community, being both a product and a process. This approach can be useful for individual self-reflection, education or even job markets, where companies seek talented individuals, because it expands the traditional CV concept and empowers individual merit. There have been many studies, theories, and methodologies related with e-Portfolios, but transpositions to web applications have been unsuccessful, untuitive and too complex (in opposition to the CV format, which had success in various applications, for example LinkedIn). This project aims to study new approaches and develop an exploratory web/mobile application of this method ology, by exploring the potential of social networks to promote them, augmented by emergent web technologies. Its main output is the prototype of a new product (a social network of e-Portfolio) and its design decisions, with new theoretical approaches applied to web development. By the end of this project, we will have idealized a web infrastructure for interacting with networks of users, their skills, and communities seeking them. The approach to the development of this platform will be to integrate emerging technologies like WebAssembly and Rust in its development cycle and document our findings. At the end of this project, in addition to the prototype of a new product, we hope to have contributed to the State of the Art of Web Engineering and to be able to answer questions regarding new emerging web development ecosystems.Os portfólios digitais (também conhecidos como e-Portfolios) podem ser descritos como coleções digitais de artefatos, sendo tanto um produto (uma coleção digital de artefatos) quanto um processo (refletindo sobre esses artefatos e o que eles representam). É uma extensão do tradicional Curriculum Vitae, onde o primeiro conta os marcos educacionais e profissionais de alguém, enquanto que o segundo, o Portfólio, comprova-os e qualifica-os (e.g.: anualmente milhares de alunos concluem graduações em Informática, no entanto apenas um consebeu o Vue, o Twitter ou o Facebook - o Portfólio vai além dos indicadores quantitativos do CV, especificando e qualificando a produção da pessoa ao longo da vida e distinguindo-a). Os e-Portfolios expandem este conceito com a introdução de novas representações digitais e fluxos de trabalho, expostos a uma comunidade, sendo tanto um produto como um processo. Esta abordagem pode ser útil para a autorreflexão individual, educação ou mesmo mercados de trabalho, onde as empresas procuram indivíduos talentosos, porque expande o conceito tradicional de CV e potencializa o mérito individual. Existem muitos estudos, teorias e metodologias relacionadas com os e-Portfolios, mas as transposições para aplicações web têm sido mal sucedidas, pouco intuitivas e muito complexas (em oposição ao formato CV, que tem tido sucesso em várias aplicações, por exemplo no LinkedIn). Este projeto visa estudar novas abordagens neste domínio e desenvolver uma aplicação exploratória web/mobile que melhor exprima os e-Portfolios, explorando o potencial das redes sociais para os promover em conjunto com tecnologias web emergentes. As principais produções esperadadas deste trabalho são um protótipo de um novo produto (uma rede social de e-Portfolio) e documentar novas abordagens teóricas aplicadas ao desenvolvimento web. No final deste projeto, teremos idealizado uma infraestrutura web para interagir com redes de utilizadores, as suas competências e comunidades que os procurem. A abordagem ao desenvolvimento desta plataforma será integrar tecnologias emergentes como WebAssembly e Rust no seu ciclo de desenvolvimento e documentar as nossas descobertas e decisões. No final deste projeto, para além do protótipo de uma plataforma, esperamos ter contribuido para o Estado da Arte da Engenharia Web e responder a questões sobre novos ecossistemas emergentes de desenvolvimento web

    An Interactive Study Environment Reference Model Based on Intelligent Software Agents:Technological Aspects

    Get PDF
    The technological aspects of an Interactive Study Environment are presented. A generic object-oriented model implementing the recent information and telecommunication technologies is discussed. The intelligent software agents paradigm is used to enhance the Web technology for teaching. The analysed approaches are targeted at development of a distributed networking learning environment which supports open standards, courses mobility and crossware as well as socio-technical specifics of learning community

    A Game of Attribute Decomposition for Software Architecture Design

    Full text link
    Attribute-driven software architecture design aims to provide decision support by taking into account the quality attributes of softwares. A central question in this process is: What architecture design best fulfills the desirable software requirements? To answer this question, a system designer needs to make tradeoffs among several potentially conflicting quality attributes. Such decisions are normally ad-hoc and rely heavily on experiences. We propose a mathematical approach to tackle this problem. Game theory naturally provides the basic language: Players represent requirements, and strategies involve setting up coalitions among the players. In this way we propose a novel model, called decomposition game, for attribute-driven design. We present its solution concept based on the notion of cohesion and expansion-freedom and prove that a solution always exists. We then investigate the computational complexity of obtaining a solution. The game model and the algorithms may serve as a general framework for providing useful guidance for software architecture design. We present our results through running examples and a case study on a real-life software project.Comment: 23 pages, 5 figures, a shorter version to appear at 12th International Colloquium on Theoretical Aspects of Computing (ICTAC 2015

    Dataperusteinen palaute eTerveyspalveluiden sisällöntuotantoon

    Get PDF
    Web analytics has proven significant potential for constantly improving the provided web-based services and applications. By analyzing interaction data collected from web applications, it is possible to study how the applications are used in detail. The focus of this study is to analyze if interaction data collected with Piwik PRO web analytics platform using JavaScript tagging can provide sufficient detail about user behaviour and interaction in a modern single-page web application. Furthermore, the analysis seeks to answer if the collected data can be refined in a way that will help the content managers of the web application to continuously improve the content and to spot dysfunctional content. The research is based on Omapolku, a Finnish public e-health service providing digital services for personalized healthcare. In this study, the analysis focuses on evaluating digital treatment pathways in Omapolku, which provides various types of information and utilities designed for the needs of specific patient groups. The evaluation is based on the graphical user interface of a treatment pathway view by analyzing a sample dataset consisting of actions performed by the users. The data is analyzed with general web analytics metrics and by applying statistical analyses of web usage mining. The results show that the interaction data can provide necessary detail for evaluating general usage metrics and basic usage patterns. However, the results show that the data does not provide necessary information for identifying most actions performed by the users, which makes it practically impossible to link the data to the front-end components of the user interface. As an outcome of this study, it is recommended that additional identifiers are added to the front-end components of the treatment path interface and that the JavaScript tagging script is modified to record the corresponding identifiers and the action context. In addition, a novel prototype was designed as a solution to the identified challenges and to support the work of the content managers.Web-analytiikka on osoittanut nykypäivänä potentiaalinsa osana web-pohjaisten sovellusten jatkuvaa kehitystä. Web-sovelluksista kerätyn interaktiodatan analysointi mahdollistaa sen, että sovellusten käyttöä voidaan tutkia yksityiskohtaisesti. Tämä työ keskittyy analysoimaan, mikäli Piwik PRO analytiikkapalvelun JavaScript seurantakoodilla kerätty interaktiodata tarjoaa riittäviä yksityiskohtia käyttäjien käyttäytymisestä ja interaktiosta yksisivuisessa web-sovelluksessa. Tämän lisäksi työ keskittyy tutkimaan, mikäli kerättyä dataa voidaan jalostaa siten, että sitä voi hyödyntää toimintahäiriöisten sisältöjen paikantamiseen sekä sisällön jatkuvaan kehittämiseen. Tutkimus perustuu Omapolku-sovellukseen, joka on julkinen suomalainen eTerveyspalvelu. Omapolku tarjoaa digitaalisia palveluita henkilökohtaiseen terveydenhuoltoon. Tässä työssä analyysi perustuu Omapolun digitaalisien hoitopolkujen toimivuuden arvioimiseen. Digitaaliset hoitopolut tarjoavat monipuolista tietoa sekä työkaluja, jotka on suunniteltu potilasryhmäkohtaisesti tietyn hoitotarpeen mukaisesti. Hoitopolkujen toimivuuden arvointi toteutetaan tutkimalla digihoitopolkujen graafisesta käyttöliittymästä kerättyä interaktiodataa. Kerättyä dataa analysoidaan yleisillä web-analytiikan mittareilla sekä tilastollisilla web-tiedonlouhinnan menetelmillä. Työn tulokset osoittavat, että interaktiodata voi tarjota tarpeellista tietoa yleisten mittareiden laskemiseksi sekä yksinkertaisten käyttäytymismallien selvittämiseksi. Tulokset myös osoittavat, että data ei tarjoa tietoa yksityiskohtaisten tapahtumien alkuperän selvittämiseksi käyttöliittymässä. Työn tuloksena suositellaan, että digihoitopolkujen käyttöliittymän komponentteihin lisätään lisätunnisteita ja että JavaScript seurantakoodia muokataan siten, että tapahtuman konteksti ja siihen liittyvä komponenttitunniste tallennetaan tapahtumaan. Tämän lisäksi työssä esitetään prototyyppi ratkaisuna havaittuihin haasteisiin sekä tukemaan sisällöntuottajien työtä

    Programming language complexity analysis and its impact on Checkmarx activities

    Get PDF
    Dissertação de mestrado integrado em Informatics EngineeringTools for Programming Languages processing, like Static Analysers (for instance, a Static Application Security Testing (SAST) tool, one of Checkmarx’s main products), must be adapted to cope with a given input when the source programming language changes. Complexity of the programming language is one of the key factors that deeply impact the time of giving support to it. This Master’s Project aims at proposing an approach for assessing language complexity, measuring, at a first stage, the complexity of its underlying context-free grammar (CFG). From the analysis of concrete case studies, factors have been identified that make the support process more time-consuming, in particular in the stages of language recognition and in the transformation to an abstract syntax tree (AST). In this sense, at a second stage, a set of language features is analysed in order to take into account the referred factors that also impact on the language processing. The main objective of the Master’s work here reported is to help development teams to improve the estimation of time and effort needed to adapt the SAST Tool in order to cope with a new programming language. In this dissertation a tool is proposed, that allows for the evaluation of the complexity of a language based on a set of metrics to classify the complexity of its grammar, along with a set of language properties. The tool compares the new language complexity so far determined with previously supported languages, to predict the effort to process the new language.Ferramentas para processamento de Linguagens de Programação, como os Analisadores Estáticos (por exemplo, uma ferramenta de Testes Estáticos para Análise da Segurança de Aplicações, um dos principais produtos da Checkmarx), devem ser adaptadas para lidar com uma dada entrada quando a linguagem de programação de origem muda. A complexidade da linguagem de programação é um dos fatores-chave que influencia profundamente o tempo de suporte à mesma. Este projeto de Mestrado visa propor uma abordagem para avaliar a complexidade de uma linguagem de programação, medindo, numa primeira fase, a complexidade da gramática independente de contexto (GIC) subjacente. A partir da análise de casos concretos, foram identificados fatores (relacionados como facilidades específicas oferecidas pela linguagem) que tornam o processo de suporte mais demorado, em particular nas fases de reconhecimento da linguagem e na transformação para uma árvore de sintaxe abstrata (AST). Neste sentido, numa segunda fase, foi identificado um conjunto de características linguísticas de modo a ter em conta os referidos fatores que também têm impacto no processamento da linguagem. O principal objetivo do trabalho de mestrado aqui relatado é auxiliar as equipas de desenvolvimento a melhorar a estimativa do tempo e esforço necessários para adaptar a ferramenta SAST de modo a lidar com uma nova linguagem de programação. Como resultado deste projeto, tal como se descreve na dissertação, é proposta uma ferramenta, que permite a avaliação da complexidade de uma linguagem com base num conjunto de métricas para classificar a complexidade da sua gramática, e em um conjunto de propriedades linguísticas. A ferramenta compara a complexidade da nova linguagem, avaliada por aplicação do processo referido, com as linguagens anteriormente suportadas, para prever o esforço para processar a nova linguagem

    APIbuster Testing Framework

    Get PDF
    In recent years, not only the Service-Oriented Architecture (SOA) became a popular paradigm for the development of distributed systems, but there has been significant progress in terms of their testing. Nonetheless, the multiple testing platforms available fail to fulfil the specific requirements of the Moodbuster platform from Instituto de Engenharia de Sistemas e Computadores, Tecnologia e Ciência (INESC TEC) – provide a systematic process to update the test knowledge, configure and test several Representational State Transfer (REST) Application Programming Interface (API) instances. Moreover, the solution should be implemented as another REST API. The goal is to design, implement and test a platform dedicated to the testing of REST API instances. This new testing platform should allow the addition of new instances to test, the configuration and execution of sets of dedicated tests, as well as, collect and store the results. Furthermore, it should support the updating of the testing knowledge with new test categories and properties on a needs basis. This dissertation describes the design, development and testing of APIbuster, a platform dedicated to the testing of REST API instances, such as Moodbuster. The approach relies on the creation and conversion of the test knowledge ontology into the persistent data model followed by the deployment of the platform (REST API and user dashboard) through a data modelling pipeline. The APIbuster prototype was thoroughly and successfully tested considering the functional, performance, load and usability dimensions. To validate the implementation, functional and performance tests were performed regarding each API call. To ascertain the scalability of the platform, the load tests focused on the most de manding functionality. Finally, a standard usability questionnaire was distributed among users to establish the usability score of the platform. The results show that the data modelling pipeline supports the creation and subsequent updating of the testing platform with new test attributes and classes. The pipeline not only converts the testing knowledge ontology into the corresponding persistent data model, but generates a fully operational testing platform instanceNos últimos anos, o desenvolvimento de sistemas distribuídos do tipo Service-Oriented Architecture (SOA) popularizou-se, tendo ocorrido significativos progressos em ter mos de testagem. Contudo, as múltiplas plataformas de testagem existentes não satisfazem as necessidades específicas de testagem de projetos Application Programming Interfaces (API) do tipo Representational State Transfer (REST) como o Moodbuster do Instituto de Engenharia de Sistemas e Computadores, Tecnologia e Ciência (INESC TEC). O INESC TEC necessita de um processo sistemático de atualização, configuração e testagem de múltiplas instâncias API REST. Adicional mente, esta solução deverá ser implementada como mais uma API REST. O objetivo é conceber, implementar e testar uma plataforma de testagem de instâncias API REST. Esta nova plataforma deverá permitir a adição de instâncias de teste, configuração e execução de grupos de testes, assim como, obter e salvaguardar os resultados. Deverá ainda viabilizar a atualização do conhecimento do domínio mediante a especificação de novas categorias e atributos de teste. Esta dissertação descreve a conceção, desenvolvimento e testagem da plataforma APIbuster dedicada à testagem de instâncias API REST, como as do projecto Moodbuster. A abordagem baseia-se na definição e conversão da ontologia de representação do conhecimento sobre a testagem de API REST no correspondente modelo persistente de dados, seguida da criação da plataforma (REST API e portal do utilizador) através de um processamento sequencial dedicado. O protótipo da APIbuster foi testado detalhadamente com sucesso em relação à funcionalidade, desempenho, carga e usabilidade. Foram efetuados testes funcionais e de desempenho a cada chamada da API para validar a implementação. Para determinar a escalabilidade da plataforma, os testes de carga focaram-se na funcionalidade mais exigente. Finalmente, o questionário de usabilidade foi distribuído entre os utilizadores para definir a usabilidade da plataforma desenvolvida. Os resultados mostram que o processamento sequencial desenvolvido suporta a criação e a subsequente atualização, com novos atributos e categorias, da plataforma de testagem. Este processo não converte apenas a ontologia no modelo de dados persistente, mas gera uma instância atualizada e operacional da plataform

    Post-Series Design: a tool for catalysing the diffusion of personalisable design.

    Get PDF
    Today a range of increasingly mainstream Digital Fabrication tools help designers not only in prototyping, but also in the production of final parts for consumer products. These hardware tools, while still have significant limitations, they already offer new levels of morphological freedom and logistical flexibility, which allows the efficient production of personalisable products – supposing advanced software tools of Parametric Design. However, since DF, PD and personalisation are still marginal, one may suspect that the Design profession has a shortage of adequate capabilities. Therefore, this contribution proposes a conceptual tool focused on valorising the previous hardware and software tools to achieve meaningfully personalisable products. The proposed canvas tool is structured specifically to facilitate opportunity identification and conceptual design, based on a set of key advantages (variabilities) derived from numerous case studies of existing personalisable products realised with DF. The new approach and tool have been experimented with a class of product design students, but it also aims to facilitate product development at enterprises, coherently with the emerging Industry 4.0 paradigm
    corecore