Uma comparação de dois métodos de desenvolvimento de software baseado em componentes: Catalysis e UML Components Projeto Final por: Bernardo Faria de Miranda e Diego Delgado Lages {bmiranda,lages}@cos.ufrj.br Orientação Profª Cláudia Maria Lima Werner, D.Sc. Prof° Marco Aurélio Souza Mangan, M.Sc. Roteiro • • • • • • • • Motivação Objetivo Método de trabalho Visão geral de um método de DBC Catalysis UML Components Comparação Considerações finais Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 2 Motivação (1) • Produtividade e qualidade no desenvolvimento de software – Os métodos tradicionais de desenvolvimento de software ainda não atendem às expectativas da indústria [Aoyama98] – O desenvolvimento baseado em componentes (DBC) tem sido apontado como solução para esta crise [Szperski99] [Szperski98] Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 3 Motivação (2) • O DBC permite o ganho de qualidade e produtividade por meio da reutilização de componentes de software [Crnkovic01] – Conceito antigo – Tecnologias recentes aumentam a possibilidade de reutilização • EJB, COM+, CCM • Os métodos de DBC ainda permanecem imaturos [Teixeira03] • Falta de exemplos de aplicações de métodos de DBC na literatura Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 4 Objetivo • Nosso objetivo é comparar como os métodos atuais de DBC tratam a identificação e representação dos componentes que estão sendo criados • Foram selecionados dois métodos: – Catalysis [Wills99] – UML Components [Cheesman01] Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 5 Método de trabalho • Coleta de bibiografia • Seleção de exemplos para os estudos de caso – Vídeo locadora do livro do Catalysis – Sistema de hotelaria do livro do UML Components • Modelagem do exemplo – Estudo de caso da vídeo locadora usando o Catalysis – Estudo de caso da hotelaria usando o UML Components • Comparação de modelos Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 6 Visão geral de um método DBC (1) • Componentes – Caixa preta – Princípios OO [Cheesman01] • Unificação de dados e métodos • Encapsulamento • Identidade – Interfaces contratualmente especificadas [Szperski99] • Contratos – Pré-condição, pós-condição e invariantes – Escritos em OCL ou linguagem natural • Define tudo que um cliente precisa saber e mais nada além disso [Cheesman01] – Os componentes desconhecem a parte interna de outros componentes Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 7 Visão geral de um método DBC (2) • No contexto de uma aplicação baseada em componentes, o seu desenvolvimento é composto por dois processos [Crnkovic01]: – composição de componentes • Análise de quais componentes podem ser utilizados para satisfazer os requisitos levantados • Proporcionar um ganho de tempo de projeto – desenvolvimento de componentes • Menos atraente, pois requer mais esforço e tempo de projeto • Por outro lado, oferece a oportunidade de desenvolver funcionalidades do sistema que vão ser, provavelmente, as de maior valor para a empresa • • O UML Components não orienta a composição de componentes Portanto, o desenvolvimento de componentes é o objeto de estudo Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 8 Catalysis • Especificação de requisitos – Casos de uso – Glossário – UI Sketches • Modelagem de componentes e seus serviços – Ações e cenários • Especificação das ações – Modelos de tipos – Diagrama de estados – Colaborações • Abstrações e Refinamentos • Frameworks e Padrões Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 9 UML Components • Especificação de requisitos – Modelo conceitual – Casos de uso • Identificação de componentes – Componentes de sistema – Componentes de negócio • Identificação de serviços – Colaboração entre componentes • Especificação de serviços – OCL, linguagem natural Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 10 Exemplo de modelo (1) Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 11 Exemplo de modelo (2) Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 12 Comparação (1) • Catalysis Menos didático Induz a eliminação de inconsistências ao longo da modelagem Existem padrões que guiam o desenvolvedor na implementação Oferece técnicas que podem ser utilizadas fora de DBC Aborda todas as camadas do sistema (cliente e servidor) • UML Components Bastante didático Supõe análise completa Não orienta a implementação, apenas a modelagem Apenas os componentes do lado do servidor Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 13 Comparação (2) Catalysis UML Components Análise de Requisitos Casos de uso, rascunho de interface, glossário e ações. Modelo conceitual e casos de uso. Identificação de componentes Não existe método sistemático. Sugere o uso de colaborações Tem método sistemático. Identificação de serviços Emergem da colaboração entre os tipos de um componente. Examinando as interfaces, usando a arquitetura de componentes. Representação de componentes Sugere muitas extensões da UML. Poucas extensões. Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 14 Considerações Finais (1) • Contribuições – Identificar pontos forte e fracos dos métodos dentro do contexto de modelagem – Verificar a aplicabilidade – Servir de referência para trabalhos de DBC – Detectar a inadequação das ferramentas CASE Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 15 Considerações Finais (2) • Limitações do Trabalho – Apenas modelagem – Estudos de caso • Retirado da bibliografia – Deficiência dos livros na descrição do problema • Simplicidade – Não permite aplicar todas as técnicas – Falta de mudança de requisitos Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 16 Uma comparação de dois métodos de desenvolvimento de software baseado em componentes: Catalysis e UML Components Dúvidas? Referências (1) • [Aoyama98] Aoyama, M. New age of software development: How component-based software engineering changes the way of software development. In Proceedings of International Workshop on ComponentBased Software Engineering, Kyoto, Japão (http://www.sei.cmu.edu/cbs/icse98/papers/p14.html) (1998). • [Szperski98] Szperski, C. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1998. • [Szperski99] Szperski, C. Component and objects together. In Software Development Magazine (1999), vol. 7. • [Crnkovic01] Crnkovic, I. Component-based software engineering - new challenges in software development. In Software Focus (2001), vol. 2, pp. 127–133. • [Teixeira03] Teixeira, H. V. Geração de componentes de negócio a partir de modelos de análise. Tese de Mestrado, COPPE/UFRJ, 2003. Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 18 Referências (2) • • [Cheesman01] Cheesman, J., e Daniels, J. UML Components. The Component Software Series. Addison-Wesley, 2001. [Wills99] Wills, A. C., e D’Souza, D. Objects, Components and Frameworks with UML: The Catalysis Approach. Addison-Wesley, 1999. Bacharelado em Informática - DCC IM/UFRJ - Outubro de 2003 19