Catalysis - Visão Geral Alexandre Alvaro [email protected] Conteúdo • • • • • Reuso DBC {Desenvolvimento Baseado em Componentes} Catalysis Conclusão Outros métodos Reuso • [Krueger, 1992], [Frakes, 1995] • “Software reuse is the process of creating software systems from existing software, instead of building from scratch.” • Tudo que já foi feito, não deve ser feito novamente. Reuso • Vantagens • Aumenta… • Qualidade • Produtividade • Diminui… • Time to market • Manutenibilidade • Redução do custo de desenvolvimento, teste, etc. • Reuso de Software… – Não é simples – Reuso de Software Sistemático Reuso: Artefatos reutilizáveis [D’ Souza, 1999] • • • • • Código compilado {fonte} Casos de testes Modelos e projetos: frameworks e padrões Interface de usuário Planos, estratégias e regras arquiteturais DBC • A idéia de Reuso de Software não é nova… • [McIlroy, 1969] “Mass Produced Software Components” • “Utilizar ao invés de construir” • Catálogos de rotinas padronizadas, classificadas por precisão, robustez e performance DBC • Visão Clássica... – SW = Blocos monolíticos – Partes inter-relacionadas – Relacionamentos implícitos • ... DBC – Software foi “quebrado” em pequenas partes – Partes estão menos acopladas – Maior flexibilidade e manutenibilidade – Redução da complexidade e custo de desenvolvimento – Reuso Componente • O Conceito exato de componentes em DBC ainda não é um consenso… “ A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be independently deployed and is subject to third-party composition”. [Szyperski, 2002] Métodos para Desenvolvimento de Componentes • Reutilização em todas as etapas do desenvolvimento • Deve considerar duas etapas: • Desenvolvimento de Componentes • Desenvolvimento com Componentes • ... extensões de métodos de desenvolvimento Orientado a Objetos • Diversos Métodos: • • • • • • • Catalysis Select Perpective UML Components {RUP} KobrA Abordagem de DBC [Almeida, 2003] ... Catalysis “. . .Software development continues to be, as always, a difficult and fascinating mixture of art, science, black magic, engineering, and hype…Catalysis defines an approach that covers all of them…” www.catalysis.org Catalysis • Desenvolvido na Universidade de Brighton, Inglaterra • D’Souza e Allan Wills • “É um método de DBC completo, cobrindo todas as desde a especificação dos componentes até sua implementação para reutilização” [D’Souza, 1999] fases, • Busca solucionar problemas [D’Souza, 1999]: • • • • • • • Eliminar gaps entre as fases Estabelecer um vocabulário comum Rastreamento de requisitos Semântica para verificar consistência Níveis de granularidade e refinamento Distinção entre modelos do domínio, modelos do sistema e arquitetura Reuso em todas as fases do ciclo de vida Catalysis • Princípios • Abstração • Precisão • Partes Conectáveis Catalysis • Níveis de modelagem Catalysis • Característica • Traceability dos modelos de negócio para o código • Gerenciamento de mudanças, garantia de qualidade,... • Precisão -> modelos e documentos sem ambigüidades • Identificar requisitos cedo, explicitar o vocabulário e entender • Suporte ao Desenvolvimento Baseado em Componentes • Reuso da especificação, projeto, modelos, arquitetura, ... • Escalabilidade de pequenos para grandes times e projetos • Consistência, integridade, desenvolvimento incremental • Processo que é flexível e recursivo, com múltiplas “rotas” Catalysis – {Processo} • Existem diversos caminhos possíveis • Cada um com uma seqüência diferente de atividades e artefatos • Um caminho pode omitir atividades e/ou artefatos que outro inclua • Diferentes caminhos podem ser utilizados para qualquer projeto ou subprojeto • Um rota mais “leve” pode ser um bom caminho [D’ SOUZA, 1999] Catalysis • Três construções básicas Catalysis • Processo de Desenvolvimento UML com Catalysis Catalysis • Principais artefatos Conhecimento do Domínio Mind Maps Data Dictionary Análise do Domínio System Context/Collaboration Catalysis • Principais artefatos (cont.) Catalysis • Principais artefatos (cont.) Product product: ProductOperations() Sales System <<type>> * Product inventory Sale * * SaleItem quantity Cust Product(): AddProduct(String name):boolean DeleteProduct(String id):boolean ... Payment Diagrama de Classe Authorization (“o que”) Catalysis • Principais artefatos (cont.) Domínio de Livraria Framework de modelos Catalysis • Principais artefatos (cont.) Domínio de Livraria Modelo de Aplicação de Framework Catalysis • Uma Abordagem possível [Almeida, 2003] • Dissertação de Mestrado realizada na UFSCar • Trabalhei em conjunto • Estudo de Caso • Domínio de Livraria Catalysis • 1- Definir Problema Ação Objeto Mind-Maps Objeto Catalysis • 1- Definir Problema Modelo de Colaboração Catalysis • 1- Definir Problema Modelo de Use-Case Catalysis • 2- Especificar Componentes (“o que”) Dicionário de Dados OCL Modelo de Tipos Catalysis • 2- Especificar Componentes Catalysis • 2- Especificar Componentes Modelo de Seqüência Catalysis • 3- Projetar Componentes (“como”) Modelo de Classes Catalysis • 3- Projetar Componentes • Requisitos Não-Funcionais • • • • • Persistência Distribuição Segurança Tratamento de Exceção ... Repositório 4 - Implementar Componentes Catalysis • Ferramentas • Cool : Spex - (Sterling Software) • MVCASE {suporte parcial} - (UFSCar) • Visio : Catalysis/Modeler - (Microsoft) • SmartDraw - (SmartDraw Co.) Catalysis • [D’Souza, 1999] • Catalysis está baseado nos fatores chaves de sucesso para um DBC efetivo • Quais são os fatores? Catalysis Rastreabilidade Ponte Negócios e TI Vocabulário compartilhado preciso Questões críticas de negócio antecipadas Dirigidos a Negócios Entender o negócio primeiramente Arquitetura Infra-estrutura interfaces plug padrões … interoperabidade Integração Negócios e Engenharia de Sistemas Processo de Reuso Desenvolver para reuso Desenvolver com reuso Componente Conectáveis Projeto preciso, focado na interface Rastreabilidade de componentes de negócio Catalysis • [Espindola, 2002] Critério Conceito Catalysis Pequena Escala: Artefatos Conectados através de Interfaces Grande Escala: Aplicações Auto-Contidas Reutilização Preocupa-se com a utilização de componentes e soluções existentes Seleção Existe preocupação, mas não existe sistemática Documentação Diversos níveis de detalhamento para os diagramas Cada diagrama possui uma representação (não-ambígua) Adaptação Considera a utilização de componentes existentes Não contempla as técnicas e o suporte para as adaptações Catalysis Critério Integração Catalysis Notação Processo Baseada em UML Arquitetura Permite detalhamento entre os diversos diagramas, facilitando a visualização do domínio Propicia um padrão para especificação de interfaces que permite a interoperação entre componentes de diferentes origens Camadas de desenvolvimento: Modelo de Negócios, Especificação de Requisitos, Projeto de Componentes, Projeto de Objetos e Arquitetura de Componentes. Catalysis • Conclusões • Modelagem... • Modelo de Componentes • Classes -> componentes ? • Interfaces ? • Definição ? • Pré e pós-condições ? • Requisitos não funcionais • Desenvolvimento com Componentes Outros métodos de DBC • RUP – Rational – 1995 • • • • Dirigido a Casos de Uso Centrado na Arquitetura Iterativo e Incremental Baseado em UML • Select Perspective – 1994-1995 • Rumbaugh’s Object Modeling Technique (OMT) • + Jacobson Use Case driven Objectory method • BPM Catalyst -> modelagem do negócio • ERD (Entity-Relationship Diagrams ) ->modelagem dos dados • Baseado em UML Outros métodos de DBC • [Stojanovic, 2001] Outros métodos de DBC • [Boertin, 2001] Outros métodos de DBC • UML Components - 2000 • Atividades: • 1- Definição dos requisitos; • 2- Identificação e descrição das interfaces entre os componentes; • 3- Especificação; • 4- Implementação; • 5- Montagem dos componentes • Independente de Plataforma • KobrA - 2000 • Product-line, component-based software development, frameworks, quality modeling, process modeling,... • Partes de Catalysis, UML Components, Select Perpective, PULSE,... • Quantidade de Modelos... Referências • [Kueger, 1992] Krueger, C. W., 1992. Software Reuse. ACM Computing Surveys, Vol. 24, No. 02, June, pp. 131-183. • [Frakes, 1995] Frakes, W., B., Fox, C., J. Sixteen Questions about Software Reuse. Communications of the ACM, June, 1995. • [Mcllroy, 1968] Mcllroy, M. D., 1968. Mass Produced Software Components. NATO Software Engineering Conference Report, October, pp. 79-85. • [Szyperski, 2002] Szyperski, C., 2002. Component Software: Beyond ObjectOriented Programming. Addison-Wesley, USA. ISBN 0-201-74572-0. • [D’Souza, 1999] D’Souza, D., F., Wills, C., A. Objects, Components, and Frameworks with UML – The Catalysis Approach. Addison-Wesley, 1999. • [Almeida, 2003] Almeida, E.S. Uma Abordagem para o Desenvolvimento de Software Baseado em Componentes Distribuídos, Dissertação de Mestrado, Universidade Federal de São Carlos, 2003. [Espindola, 2002] Espindola, A., Becker, K., Werner. C. Critérios para Análise de Métodos DBC. No 2º Workshop de Desenvolvimento baseado em Componentes (WDBC), Rio de Janeiro, 2002. • Referências • • • [Boertin, 2001] Boertin, N., Steen, M., Jonkers., H, Evaluation of ComponentBased Development Methods. In EMMSAD’2001, Sixth CAiSE/IFIP8.1, 2001. [Stojanovic, 2001] Stojanovic, Z., Dahanayake, A., Sol., H. A Methodology Framework for Component-Based System Development Support. In EMMSAD’2001, Sixth CAiSE/IFIP8.1, 2001. [Wills, 2001] Wills, A., C. Components and Connectors: Catalysis Techniques for Designing Component Infrastructures, In Component-Based Software Engineering: Putting the Pieces Together, Addison-Wesley, 2001. • [Jacobson, 1999] Jacobson I., Booch G., Rumbaugh J. The unified software development process, Reading MA : Addison-Wesley. 1999. • [Allen, 1998] Allen, P., Frost, S. Component-Based Development for Enterprise Systems: Applying the Select Perspective, Cambridge University Press. 1998. • [Cheesman, 2000] Cheesman, J., Daniels, J. UML Components: A Simple Process for Specifying Component-Based Software. Addison-Wesley. USA, 1nd edition, 2000. Referências • [KobrA, 2000] Atkinson, C., et. al. Component-Based Software Engineering:The KobrA Approach, In 3rd International Workshop on Component-based Software Engineering: Reflection on Practice, in conjunction with the 22th International Conference on Software Engineering (ICSE). Limerick, Ireland, 2000. Discussão