Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

Documentos relacionados
Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Arquitetura de Software Thaís Batista

Arquitetura de Software visão emergente

As Visões. Visões arquiteturais (revisão)

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

RUP RATIONAL UNIFIED PROCESS

Padrões. Arquitetura de Software Thaís Batista

INF1013 MODELAGEM DE SOFTWARE

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Especificação de Sistemas de Software e a UML

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Análise e projeto de sistemas

Introdução a UML (Unified Modeling Language)

Arquitetura de software

5 Processo de Reificação e de Desenvolvimento com ACCA

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Requisitos de sistemas

Arquitetura de Software

Documento de Arquitetura de Software- SGE

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Exemplos de Estilos Arquiteturais. Estilos Arquiteturais. Estilos Arquiteturais. Estilo: Pipe e Filtros

4.6. UML Diagramas de componentes

PCS3413 Engenharia de Software e Banco de Dados

UML (Unified Modelling Language)

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Processo de Desenvolvimento

SOCIEDADE PARANAENSE DE ENSINO E TECNOLOGIA SPET PROGRAMA DE EVOLUÇÃO CONTÍNUA DE QUALIDADE. ES 60 DISCIPLINA: Engenharia de Software II

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Introdução à Engenharia de Software

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

3.1 Reflexão Computacional

FUNDAÇÃO UNIVERSIDADE ESTADUAL DE MARINGÁ

Engenharia de Software. Projeto de Arquitetura

Estilos Arquiteturais

Por que é importante?

DIAGRAMAS DE CLASSE UML

Análise e Projeto de Software Parte II. Marcos Dósea

ADLs. Em geral cada ADL oferece capacidades específicas

Analista de Sistemas S. J. Rio Preto

Introdução à UML. Prof. Jesus José de Oliveira Neto

From Business Architecture to Software Architecture

2

Introdução à Análise e Projeto de Sistemas

Sistemas Distribuídos

3 Trabalhos relacionados

From Business Architecture to Software Architecture

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Modelagem de Sistemas Web. Modelagem de BD

Diagramas. Abordaremos agora cada um destes tipos de diagrama: 1. Diagrama Use-Case. 2. Diagrama de Colaboração. 3. Diagrama de Sequência

Arquitetura de Software Parte 1/3 Introdução* Jorge H. C. Fernandes Junho de 1999

Professor Emiliano S. Monteiro

Reuso de Software Aula Maio 2012

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Análise de Sistemas. Aula 5

Modelagem Conceitos e arquitetura do SBD; Modelo de dados entidade-relacionamento modelo ER; Modelo de dados relacional; Mapeamento ER para o

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Introdução ao Processo Unificado. Prof. Edjandir Corrêa Costa

ARQUITETURA E DESENHO

5 Arquitetura de implementação

3 Uma Arquitetura Distribuída via WEB

UML Diagramas Estruturais Diagrama de Componentes

3ª Aula. Processo de Projeto em SE Exemplo de projeto: Sistema de Mapa GPS. Introdução. PSI3441 Arquitetura de Sistemas Embarcados

CBSE. Independência e Padronização. Características da CBSE. Fundamentos da CBSE. Middleware e Processo 22/05/2013

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

PROJETO DE ARQUITETURA

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

5 Implementação 5.1 Plataforma 5.2 Arquitetura

UML. Modelando um sistema

Universidade Federal de Goiás Estilos Arquiteturais

Análise de Sistemas 4º Bimestre (material 3)

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Modelagem de Sistemas

Diagramas de Classes. ESII Profª. Andressa Falcade URI Santiago

Aula 01 Conceito de Banco de Dados e SGBD

Arquitetura de Software

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Especificação de Sistemas e SysML

Projeto de Arquitetura

INF1404 MODELAGEM DE SISTEMAS

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Estrutura do Sistema Operacional

IFSC/Florianópolis - CTI - Projeto de Sistemas - prof. Herval Daminelli

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Modelagem de dados usando MER. Andre Noel

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Panorama da notação UML

UML 2.0 Método, Linguagem e Ferramenta. Prof. Cesar Augusto Tacla

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Análise de Sistemas 3º Bimestre (material 2)

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Transcrição:

Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade de informação que o arquiteto trata em um dado momento Muitos arquitetos de software tem usado as diferentes visões sem reconhecê- las como visões arquiteturais separadas. Visões Arquiteturais Quatro visões: Conceitual: descreve o sistema em termos dos elementos de design e relacionamentos entre eles Módulo: consiste na decomposição do sistema em módulos Execução: consiste no mapeamento dos componentes a entidades de execução e de hardware. Este mapeamento deve ser definido na fase de projeto arquitetural e não apenas na fase de desenvolvimento. Código: consiste na organização do código fonte em bibliotecas, binários, arquivos, versões e diretórios Visões Arquiteturais ARQUITETURA DE SOFTWARE Componentes, Conectores, Configuração restrições de Componentes, restrições execução Conectores, dos módulos Configuração Visão módulos de Novos ParticionamentosExecução Módulos, Novos dos Módulos Subsistemas, Particionamentos Camadas dos Módulos entidades de execução Mudanças em entidades de execução Código Fonte Hardware Mais próxima ao domínio da aplicação A funcionalidade do sistema é mapeada em elementos arquiteturais: Componentes, conectores, configuração Desafio: Isolar comunicação entre componentes em conectores

Componentes e Conectores que formam a visão conceitual são mapeados em subsistemas e módulos Dependências entre módulos devem ser minimizadas Reuso de módulos deve ser maximizado Descreve como os módulos são mapeados para elementos oferecidos pela plataforma de execução e como estes são mapeados para o hardware Define entidades de execução e seus atributos como uso de memória e de elementos de hardware Determina: como as entidades de execução da visão de execução são mapeadas a componentes a nível de implementação (p.ex. executáveis) como módulos da visão de módulo são mapeados em componentes fonte como componentes a nível de implementação são mapeados a partir dos componentes fonte Relacionamento entre as Visões Há necessidade de feedback e interação entre as visões As visões módulo, execução e código auxiliam a diminuir o gap entre o que uma ADL modela e o que uma plataforma de execução pode executar. Componentes e conectores da visão conceitual não podem ser diretamente mapeados para uma plataforma de execução As visões módulo e execução definem como componentes e conectores são mapeados para uma plataforma de execução 2

obedece Definir componentes, conectores e configuração Mapear comportamento funcional do sistema em componentes Mapear os aspectos de controle e comunicação em conectores Definir as instâncias dos componentes e conectores e como elas são interconectadas Estilos Arquiteturais podem ser utilizados nesta fase! Componentes Conceituais Contém PORTAS que são pontos de interação PORTAS INTERFACE Serviços Oferecidos X Serviços Requisitados Interface define serviços e operações que o componente OFERECE não o que ele USA. Portas definem tanto serviços que o componente oferece quanto os que o componente usa. Implementação Cada porta tem um protocolo associado que diz como as operações são encaminhadas Componente Conceitual CComponent CConnector CPort Protocol Elementos UML Elementos UML Caixas são classes na notação UML Linhas são relações Linhas com o diamante sólido significa composição: as classes ligadas ao diamante é decomposta ou contém as classes da outra extremidade. A multiplicidade da relação é exibida pelo número (ou um asterisco para zero ou mais) próximo ao fim da relação Voltar 3

obedece Conectores Conceituais Contém PAPÉIS (ROLES) que são pontos de interação Os Papéis obedecem a um protocolo associado Podem ser decompostos em Componentes e Conectores Conector Conceitual CComponent Protocol CConnector CRole Configuração Conceitual Define relações entre componentes e conectores Componentes e Conectores são interconectados através de suas portas e papéis Podem ser decompostos em Componentes e Conectores Configuração Conceitual CPort CRole cconection cbinding cbinding {cconection pode conectar cport e crole apenas quando o respectivo componente e conector são emcapsulados pelo mesmo elemento} {cconection pode conectar cport e crole apenas quando o eles tem protocolos compatíveis} Elemento UML 4

obedece obedece Elemento UML O elemento NOTE é usado para descrever restrições adicionais que é difícil expressar com a notação gráfica Voltar Meta-Modelo da Estrutura Configuração Conceitual CComponent CConnector CPort cbinding CRole cconection Protocol cbinding {cconection pode conectar cport e crole apenas quando o respectivo componente e conector são emcapsulados pelo mesmo elemento} {cconection pode conectar cport e crole apenas quando o eles tem protocolos compatíveis} Além de descrever a estrutura de componentes, conectores e da configuração, é necessário descrever os aspectos comportamentais UML Statechart Diagram Resumo da Representação Artefato Configuração Conceitual Protocolo de Porta ou Papel Comportamento do Componente ou do Conector Interações entre Componentes Representação Diagrama de Classes UML Diagrama de Statechart UML ou diagrama de Sequência Diagrama de Statechart UML ou descrição em ling. natural Diagrama de Sequência UML 5

Componentes e Conectores que formam a visão conceitual são mapeados em subsistemas e módulos Diferença da para a Visão de Módulo Cada uma torna explícito diferentes aspectos Na visão conceitual os relacionamentos funcionais devem estar explícitos A visão de módulo torna explícito como a funcionalidade é mapeada para a implementação Relacionamento x A e a são baseados em dois diferentes modelos: : componentes implementam a funcionalidade da aplicação e interagem via conectores. : toda a funcionalidade da aplicação e a comunicação devem ser mapeada em módulos Relacionamento x Dois componentes comunicam-se através de um conector com semântica call/return Representa em módulos os elementos da implementação que poderá ter duas variações: Os dois componentes na mesma máquina: o conector implementa uma chamada de procedimento local Os dois componentes em máquinas diferentes: o conector implementa chamada remota de procedimento (RPC) Definir módulos que possuem interface com os serviços oferecidos (provided) e requisitados (required) Módulos interagem invocando serviços declarados na sua interface required Módulos não possuem implementação associada 6

Não define uma configuração Define os módulos e seus relacionamentos mas não como eles são combinados em um produto particular (as visões conceitual e de execução define a configuração) Resultados da : Módulos, Subsistemas e Camadas Subsistema Usualmente corresponde ao componente conceitual de mais alto nível (aquele que é decomposto em outros componentes e conectores) Contém outros subsistemas e módulos Módulo Pode corresponder a um único elemento conceitual (componente, porta, conector ou papéis) ou a um conjunto deles. Podem ser decompostos em outros módulos Encapsula dados e operações para prover um serviço Módulo Serviços: Os serviços oferecidos por um módulo são definidos pelas interfaces que ele oferece (provided) Os serviços que um módulo precisa de outro módulo para realizar suas funções são os serviços requisitados e são definidos pelas interfaces que ele solicita (required) Interagem com outros apenas através das interfaces 7

contém contém contém Meta-modelo para Subsistemas e Módulos Subsistema provide require Módulo use Interface {Módulo A usa Módulo B quando A requisita uma interface que B oferece} Camadas Camadas organizam módulos em uma hierarquia Quando um módulo é associado a uma camada, ele pode usar outros módulos desta camada Quando um módulo necessita usar serviços de um módulo de outra camada, a interface solicita e requisitada pelos módulos devem ser também requisitas e solicitadas pelas camadas. Camadas podem ter subcamadas Meta-modelo para Camadas Módulo provide Interface assigned to require use Camada {Camada A usa camada B quando A requisita uma interface que B oferece} Camadas Utilidade Reduzir complexidade Permitir reuso atribuindo serviços comuns a camadas de serviços da aplicação Oferecer independência entre partes do sistema evitando que a mudança em uma parte afete o sistema inteiro 8

contém contém contém Camadas Como definir Camadas Top-down: determine as camadas baseadas na experiência. Atribua os módulos às camadas. (As camadas servem de guia para definição dos módulos) Bottom-up: determine os módulos, suas responsabilidades e dependências. Em seguida determine as camadas. Estratégia Top-Down + Bottom-Up: divida em camadas genéricas (aplicação, interface com usuário, serviços do sistema). Quando definir os módulos refine o modelo em camadas adicionando camadas que tratem da funcionalidade específica da aplicação Subsistema Módulo Meta-Modelo provide provide Interface require require use assigned to use {Camada A usa camada B quando A requisita uma interface que B oferece} Camada Tarefas Mapear os elementos da visão conceitual em CAMADAS, SUBSISTEMAS e MÓDULOS Atribuir aos módulos uma responsabilidade e determinar sua composição e seus relacionamentos Pode ser necessário adicionar módulos de suporte que não tem correspondente na visão conceitual Descrever as interfaces para cada um dos módulos e camadas Resumo da Representação Artefato Correspondência Conceitual-Módulo Subsistemas e Módulos Dependências dos Módulos Dependências de Camadas, Atribuição de Módulos a Camadas Representação Tabela Resumo das relações entre Módulos Tabela Diagrama de Classes UML Diagrama de Classes UML Diagrama de Classes UML 9

Descreve a estrutura do sistema em termos de elementos da plataforma de execução (p.ex. tarefas do SO, processos, threads). Recebe como entrada o Modelo Conceitual e o Modelo de Módulos É necessário conhecer a plataforma de hardware (todos os componentes de hardware disponíveis) e a plataforma de software (os softwares que estão entre o hardware e o sistema projetado SO, software de rede, middleware) Define: Entidades de execução Caminhos de Comunicação entre as entidades Configuração de execução Atividades Iniciais: Liste os componentes de hardware do ambiente de execução Liste a plataforma de software Liste os elementos da plataforma que serão usados na visão de execução Meta-Modelo dos Elementos da Plataforma Plataforma de Software Elemento da Plataforma Recurso da Plataforma contém consome assigned to Recurso de Hardware Thread Task Queue... Memória Timer... Processo Socket Espaço Ender 0

Entidades de Execução Após identificar os elementos da plataforma de software deve- se decidir como mapear os componentes conceituais e módulos para os elementos da plataforma Um ou mais módulos são representados por uma entidade de execução e um módulo pode ser atribuído a mais de uma entidade de execução Podem existir entidades de execução como processos servidores que não tenham correspondência direta com módulos mas são necessários para dar suporte a outras entidades de execução. Meta-modelo para Entidades de Execução Elemento da Plataforma Is a assigned to Entidade de Execução Módulo Caminho de Comunicação Meta-modelo para Comunicação Identificar os caminhos de comunicação entre as entidades de execução (mecanismos e recursos usados para comunicação) Mecanismo de Comunicação consome Elemento da Plataforma... COM RPC IPC Use mecanismo Caminho de Comunicação Is a Entidade de Execução 2.. Comunica-se através

Configuração de Execução Descreve a topologia de execução do sistema caracterizando as instâncias das entidades de execução e como elas são interconectadas. Há distinção entre uma entidade de execução e suas correspondentes instâncias (exceto quando só há uma instância) Configuração de Execução Deve-se determinar e descrever como a configuração muda ao longo do tempo e como estas mudanças são controladas. Resumo da Representação Artefato Configuração de Execução Configuração de Execução mapeadas a dispositivos de hardware Comportamento dinâmico da configuração, ou transição entre configurações Descrição das entidades de execução (tipos de host, replicação, etc) Protocolo de Comunicação Representação Diagrama de Classes UML Diagrama de Desenvolvimento UML Diagrama de Sequência UML Diagrama de Classes UML ou Tabela Diagrama de Sequência ou Statechart Meta-modelo da Mecanismo de Comunicação consome Mecanismo use Caminho de Comunicação Comunica-se através 2.. Plataforma de Software Elemento da Plataforma Recurso da Plataforma assigned to contém Is a Entidade de Execução consome assigned to Módulo Recurso de Hardware 2

Descreve como o software que implementa o sistema é organizado O objetivo principal desta visão é facilitar a construção, integração, instalação e teste do sistema respeitando a integridade das outras três visões arquiteturais Descreve como um módulo, suas interfaces e suas dependências são mapeadas a componentes e dependências específicas da linguagem. Estes mapeamentos e convenções podem variar de acordo com a linguagem de programação As visões de módulo e de execução são independentes de linguagem de programação Com um executável Visão de código reflete a estrutura da visão de módulo Com múltiplos executáveis Visão de código torna- se mais complexa e em geral diverge da visão de módulo e da visão de execução Tarefas: Mapear os elementos da visão de módulo e da visão de execução para componentes de código: Componentes Fonte Componentes Intermediários (componentes binários, Componentes de Desenvolvimento (executáveis, bibliotecas dinâmicas e descrição da configuração) 3

Meta-modelo dos elementos básicos Componente Componente Fonte Binário gera importa compile compile link Biblioteca Executável Descrição da Configuração link Usa na execução Componentes Fonte Tipicamente componentes fontes representam as interfaces e módulos específicos da linguagem Exemplo: em C/C++ interfaces específicas da linguagem são arquivos com nomes como.h e módulos tem nome com.c e.cpp link Componentes Fonte São relacionados com outros por dois tipos de dependências específicas da linguagem: Importação: um componente precisa importar outro. Esta relação é uma dependência de compilação. Por exemplo: a dependência de inclusão entre um componente fonte e um arquivo de cabeçalho Geração: quando um componente fonte é gerado a partir de outro componente fonte. Componentes Fonte Para identificar componentes fonte: Identificar componentes fonte e mapear os elementos e dependências da visão de módulo para componentes fonte e dependências Organizar os componentes fonte usando estruturas de armazenamentos como diretórios e arquivos É necessário definir um critério de organização dos arquivos: similaridade de funcionalidade, pessoa responsável pelo desenvolvimento, etc... 4

Componentes Fonte Elementos da visão de módulo são mapeados em componentes fonte específicos de linguagem que implementa- os. Por exemplo: Mapeando para C++, a interface de um módulo é mapeada em um arquivo.h e o código é mapeado em um arquivo.cpp Para módulos complexos pode ser necessário distribuir a implementação em vários arquivos Componentes Intermediários São específicos da linguagem de programação e do ambiente de desenvolvimento. Exemplo: Em C++, para cada arquivo.cpp tem um componente binário correspondente ou arquivo.obj Binários e Bibliotecas Estáticas são componentes intermediários Componentes de Desenvolvimento São componentes necessários para formar um sistema executável Executáveis, bibliotecas dinâmicas e descrições de configuração A descrição da configuração pode descrever processos e/ou recursos Resumo da Representação Artefato Correspondência Módulo-Comp.Fonte Correspondência Executável entidade de execução Descrição dos componentes da Visão de código e suas dependências Representação Tabela Tabelas Diagrama de Componentes UML 5

Subsistema segue Camada segue Meta-modelo Grupo de Código Módulo Componente Componente Fonte Binário Interface gera importa Biblioteca Executável Descrição da Configuração compile link link Usa na execução compile Entidade de Execução Instancia link 6