Ubá: uma arquitetura de linha de produto de software para desenvolvimento de middleware para computação em grade - Junio de Oliveira, Davi (2009)
Os sistemas de middleware (infraestrutura de software) para computação em grade tipicamente implementam características, como: coordenar e compatilhar recursos em grande escala e geograficamente distribuídos, registrar e recuperar informações sobre recursos disponíveis, administrar o o grande número de dispositivos da grade e a heterogeneidade existente, em termos de: hadware, tecnologia de rede, políticas de segurança e administrativa, dentre outras. Além de facilitar o desenvolvimento de aplicações distribuídas, ocultando a complexidade dos mecanismos de rede de baixo nível. No entanto, apesar da importância dos sistemas de middleware, existe uma falta de ferramentas que auxiliem no projeto e implementação deste tipo de software, o que ocasiona um maior esforço, custo e tempo de desenvolvimento. Sendo que, essa falta de ferramentas pode ser entendida devido a complexidade de algumas funcionalidades, anteriormente citadas, que a infraestrutura deve prover. Particularmente, a heterogeneidade e o grande número de dispositivos são questões importantes a serem consideradas no projeto e implementação do middleware, pois irão requerer um esforço extra na customização do sistema de middleware. Nesse contexto, são levantadas algumas soluções existentes na engenharia de software que possam auxiliar no desenvolvimento de sistemas de middleware para coputação em grade. Em especial, a Engenharia de Linha de Produto de Software (ELPS), que permite tratar a heterogeneidade e o grande número de dispositivos através da customização em massa. Por meio da adoção da ELPS para construção de sistemas de middleware para computação em grade, é proposto o Ubá. O Ubá é uma arquitetura de linha de produto de software desenvolvida utilizando a metodologia QADA (Quality-driven Architecture Design and Quality Analysis Method). Essa arquitetura é composta de artefatos reusáveis de diversas atividades do desenvolvimento (requisitos, projeto, implementação) com o objetivo de realizar a instanciação e customização dos sistemas de middleware para computação em grade. O Ubá foi construído através da especificação de dois projetos arquiteturais, primeiramente de uma arquitetura conceitual (abstrata), composta por diversos serviços responsáveis pela execução de tarefas típicas, como, por exemplo, gerência de recursos, serviço de segurança e descoberta de recursos. Posteriormente, uma arquitetura concreta foi definida. Sendo que esta refina os elementos estruturais, comportamentais e de implantação da arquitetura conceitual. Após a construção de cada projeto arquitetural, foi realizada uma análise da qualidade de cada arquitetura, visando verificar se os requisitos não-funcionais estão sendo corretamente implementados, além de analisar a aplicação dos estilos arquiteturais e considerar novos elementos para a arquitetura (abstrata ou concreta). A arquitetura especificada foi implementada em linguagem Java. Juntamente com a implementação foram construídos testes unitários e de integração. Já a avaliação foi realizada através de estudos de caso e da aplicação do método FAE (Family Architecture Evaluation)