CBSI – Curso de Bacharelado em Sistemas de Informação UML – Modelagem da Arquitetuta Prof. Dr. Sandro Ronaldo Bezerra Oliveira [email protected] www.ufpa.br/srbo Análise e Projeto de Sistemas Faculdade de Computação Instituto de Ciências e Exatas e Naturais Universidade Federal de Pará Noção de Arquitetura de Software A arquitetura de software compreende o conjunto de decisões significativas acerca da organização de um sistema de software Definição dos elementos estruturais e interfaces que compõem o sistema (blocos básicos de construção) Especificação de comportamentos envolvendo colaborações entre esses elementos (mecanismos importantes) Definição de um estilo arquitetônico que guia a organização do sistema Definição da arquitetura é uma parte integrante (de alto nível) da concepção (design) do sistema Concluído a concepção de alto nível, deve ser possível entregar a concepção detalhada e implementação de cada módulo a um programador diferente. Níveis da Arquitetura: do lógico ao físico Responsabilidades r1 Classes Componentes classe 1 Processos Nós de hardware r2 r3 r4 classe 2 componente 1 r5 classe 3 r6 classe 4 componente 2 r7 r8 r9 r10 r11 r12 classe 5 classe 6 componente 3 processo 1 classe 7 componente 4 processo 2 nó 1 processo 3 nó 2 caso de utilização 1 ... caso de utilização n Arquitetura Lógica Estrutura lógica do software Refere-se à decomposição hierárquica do sistema em módulos lógicos (pacotes de classes com responsabilidades afins) e à especificação das interfaces e dependências entre módulos Especificada em UML por diagramas de pacotes lógicos, com relações e composição e dependência entre pacotes, e classes exportadas por cada pacote. Arquitetura Lógica 2 camadas Graphical User Interface Relational Database 3 camadas mais camadas Graphical User Interface Graphical User Interface Business Object Model Business Object Model Diagrama UML: Graphical User Interface Relational Database Relational Database Neste caso segue-se uma divisão horizontal, em camadas! Também é possível uma divisão vertical, em subsistemas! Relational Database Arquitetura Física Estrutura Física do software Refere-se à decomposição do sistema em módulos físicos (chamados componentes em UML), e à especificação de interfaces e dependências entre os módulos. Especificada em UML por diagramas de componentes, com interfaces exportados (realizadas) e importadas (usadas) por cada componente. Ambiente de Hardware Refere-se à especificação da topologia de hardware (equipamentos e conexões) em que correm os componentes de software Especificada em UML por diagramas de distribuição (deployment) Arquitetura Física Thinner client, thicker server Client B Client A Client C Application Application DCOM CORBA ADO/R Business Object Services Beans Business Object Engine Business Object Server Relational Database Server(s) COM MTS WWW Browser Beans ETS Web HTML Server CGI ASP Java Business Object Services Business Object Services Business Object Engine Business Object Engine Arquitetura e Casos de Uso Modelos de arquitetura são construídos depois dos modelos de casos de uso Casos de uso especificam função, arquitetura especifica forma/organização Arquitetura do software procura satisfazer/é condicionada pelos requisitos funcionais (definidos implicitamente pelos casos de uso) e não funcionais do software Diagrama de Componentes Diagrama de Componentes Captura a estrutura física da implementação Construído como parte da especificação da arquitetura Objetivo Organizar o código fonte (ambiente de desenvolvimento) Construir uma release executável Especificar uma base de dados física Desenvolvido por arquitetos e programadores Contém componentes, interfaces e relações entre componentes. Componentes Um componente é uma parte física (feita de bits e bytes) e substituível de um sistema, que proporciona a realização de um conjunto de interfaces Podem-nos interessar diferentes ambientes: desenvolvimento, produção, testes, ... Exemplos: executáveis, bibliotecas, tabelas, ficheiros, documentos Um componente representa um empacotamento físico de elementos relacionados logicamente (normalmente classes) Notação: caixa com tabs kernel32.dll Tipos de componentes - ícones e esteriótipos <<executable>> componente que pode ser executado num nó 2 rodas dentadas <<library>> biblioteca estática ou dinâmica <<database>> base de dados <<table>> tabela de uma base de dados <<file>> ficheiro contendo código fonte ou dados <<document>> documento genérico Interfaces Uma interface é um conjunto de operações usado para especificar os serviços de uma classe ou componente) Relação de concretização (realization): um componente pode concretizar (implementar os serviços de) uma ou mais interfaces Normalmente quer dizer que tem classes que implementam essas interfaces Diz-se que as interfaces são exportadas Um componente pode ser substituído por outro componente que implementa as mesmas interfaces Não basta obedecer à mesma sintaxe, mas também a mesma semântica Relação de dependência: um componente pode usar uma ou mais interfaces Diz-se que essas interfaces são importadas Um componente que usa outro componente através de uma interface bem definida, não deve depender da implementação (do componente em si), mas apenas da interface Interfaces - Exemplo 1 image.java componente.java ImageObserver ou com mais detalhe: dependência image.java interface <<interface>> ImageObserver abort: int {final static} error: int {final static} imageUpdate(): Boolean concretização componente.java Interfaces - Exemplo 2 componente Java Application JDBC Visual Basic Application Sun JDBCODBC brigde SQL Server JDBC driver interface (mais precisamente, API) ODBC Oracle ODBC driver SQL Server ODBC driver Transact SQL SQL Server DBMS Casos de Estudo (Biblioteca) Pacotes de componentes Páginas Web Dinâmicas do SIB Compone ntes de Lógica de Negócio do SIB Base de Dados do SIB Caso de Estudo (Biblioteca) Todos os componentes Páginas Web Dinâmicas do SIB Mostra menu que está disponível em qualquer pá gina index.html login. h tml Segue um padrão! Qual é? Como formalizar? O padrão é arquitectura! para inserir novo pesquisaAu t ores.html pesquisaPubli cações.html listaAutor es.asp listaPublica ç ões.as p fichaAut or. asp pesquisaReq uisições.html pesquisaSó cios.html listaSóci os.asp listaRequisiç ões.asp fichaRequi sição.asp fichaPublica ção.asp fichaSóc io.asp Componentes de Lógica de Negócio do SIB <<COM+>> GestãoAuto res <<COM+>> GestãoPubli cações <<dbtable>> Autores <<dbtable>> Publicações <<COM+>> GestãoRequ is ições <<COM+>> GestãoSóci os Base de Dados do SIB <<dbtable>> Requisições <<dbtable>> Sócios Diagrama de Implantação Diagrama de Implantação (Deployment) Captura a topologia (ambiente) de hardware de um sistema sobre o qual são executados os componentes de software Construído como parte da especificação da arquitetura Objetivo: Especificar a distribuição de componentes Identificar estrangulamentos de desempenho Desenvolvido por arquitetos, engenheiros de redes, e engenheiros de sistemas Elementos de um Diagrama de Implantação Nós (de hardware) São computadores ou outros dispositivos (modem’s, impressoras, até mesmo equipamentos de rede) Podem aparecer como classes ou instâncias Classes podem ter multiplicidade É possível indicar os componentes localizados em cada nó, representando-os dentro do nó ou fora com dependência esteriotipada É possível agrupar nós em pacotes Conexões (entre nós) Entre nós como classes, podem ter multiplicidade Entre nós como instâncias, não podem ter multiplicidade Podem ter esteriótipos que indicam o protocolo, como <<TCP/IP>> Exemplo Exemplo: Sistema na Internet Client Dynamic HTML, JavaScript, Java plug-ins, source code enhancements Web Server Java, C, C++, JavaScript, CGI Application Server Fulfillment System Financial System Inventory System Java, C, C++, JavaBeans, CORBA, DCOM RDBMS Server Native languages Caso de Estudo (Biblioteca) Em UML: Informal: Utilizador Máquina Cliente Impressora local Browser Web *«http» 1 Máquina Servidora (Windows NT) Sevidor Web (IIS) Servidor de Componentes (COM+) Servidor da Base de Dados (SQL Server) Páginas Web Dinâmicas do SIB Componentes de Lógica de Negócio do SIB Base de Dados do SIB