Arquitetura de Software



Documentos relacionados
Arquitetura e Engenharia de Software são diferentes disciplinas? Uma visão ampliada do papel do arquiteto de software.

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

Engenharia de Software I: Análise e Projeto de Software Usando UML

Engenharia de Software

Projeto Orientado a Objetos

Arquitetura de Software visão emergente

Projeto de Arquitetura

Eduardo Bezerra. Editora Campus/Elsevier

Arquitetura de Software

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Análise e Projeto Orientados por Objetos

UFG - Instituto de Informática

Modelagem de Arquitetura com UML

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

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

Documento de Arquitetura

Padrões Arquiteturais e de Integração - Parte 1

Engenharia de Software na Prática Hélio Engholm Jr.

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação

Projeto de Arquitetura

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Wilson Moraes Góes. Novatec

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

UML - Unified Modeling Language

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

ESTUDO DE CASO WINDOWS VISTA

Uma Abordagem usando PU

Categorias de Padrões

Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

ARQUITETURA DE SISTEMAS. Cleviton Monteiro

Padrões de projeto 1

UML: Unified Modeling Language. Graduação em Informática 2008 Profa. Itana Gimenes

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS. Bancos de Dados Conceitos Fundamentais

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Introdução à Engenharia de Software

Introdução ao Design

Processos de Desenvolvimento de Software

ENGENHARIA DE SOFTWARE

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Orientação à Objetos. Aécio Costa

Testar os programas para estabelecer a presença de defeitos no sistema. Teste de Software. Teste de defeitos. Objetivos. Tópicos

ENGENHARIA DE SOFTWARE I

Engenharia de Requisitos Estudo de Caso

Fase 1: Engenharia de Produto

1 UML (UNIFIED MODELING LANGUAGE)

Arquitetura de Software. Silvia Regina Vergilio

Engenharia de Requisitos

PROJETO (OU DESIGN) DO SOFTWARE Diagrama de Estrutura

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

ENG1000 Introdução à Engenharia

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Tópicos em Engenharia de Computação

Aspectos técnicos do desenvolvimento baseado em componentes

Visões Arquiteturais. Visões Arquiteturais

Figura 01 Kernel de um Sistema Operacional

SISTEMAS OPERACIONAIS

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Java. Marcio de Carvalho Victorino

Bancos de Dados. Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações

Padrões. Projeto (Design) de Software

Máquinas Multiníveis

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

6 - Gerência de Dispositivos

Processo de Desenvolvimento Unificado

ARQUITETURA DE SOFTWARE

MATRIZ CURRICULAR CURRÍCULO PLENO 1.ª SÉRIE 2.ª SÉRIE CURSO SUPERIOR DE TECNOLOGIA EM DESENVOLVIMENTO DE SOFTWARE (ÁREA: INFORMÁTICA)

Engenharia de Software

20/05/2013. Sistemas de Arquivos Sistemas de arquivos. Sistemas de Gerenciamento de Banco de Dados (SGBD) Banco de Dados. Estrutura de um BD SGBD

UFG - Instituto de Informática

Pós Graduação Engenharia de Software

Análise e Projeto de Software

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Modelos de Sistemas Leitura: Sommerville; Pressman

Engenharia de Domínio baseada na Reengenharia de Sistemas Legados

SISTEMAS OPERACIONAIS 2007

Modelagem de Processos. Prof.: Fernando Ascani

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

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Introdução aos Sistemas Operacionais. Computador = hardware + software. Como é formado o meu computador? E como estes componentes se comunicam?

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

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

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

Transcrição:

Arquitetura de Software Jair C Leite Arquitetura e Engenharia Qual o papel da arquitetura e da engenharia... Na construção civil edifícios, pontes, estradas, etc.? Na indústria automobilística? Na indústria de eletrônicos televisores, tocadores de DVD, de CD, de MP3? Os papéis podem variar, mas algumas características comuns podem ser identificadas... É preciso que alguém idealize, defina e conceba o produto ou artefato de acordo com os requisitos É preciso que alguém execute e realize o que foi idealizado, definido e concebido. 1

Limitações das analogias A natureza do software não é física, é conceitual O software é uma máquina abstrata que processa informações e toma decisões Indústria de software é imatura e não está completamente estabelecida. A forma como um software é entregue (configuração e instalação) é diferente dos outros produtos. Design e Arquitetura na ES Tradicionalmente na engenharia de software, usa-se os termos Design arquitetural Design detalhado No modelo cascata eles são fases do processo No modelo RUP eles são disciplinas que ocorrem em várias fases A arquitetura é o produto 2

O papel da arquitetura de software Sub-sistemas ou módulos Class a { int x; char v; Func(a,b } Class b... Codificação Compilação e Ligação Produto final Componentes Binários executáveis Modelo abstrato do do programa em em termos de de componentes (sub-sistemas, módulos, etc..) etc..) interconectados entre entre si. si. Modelo Modelo abstrato abstrato --Modelo estático: estrutura dos dos componentes componentes --Modelo dinâmico: físicos físicos que que comportamento formam formam o produto produto --Diferentes Visões final Visões final Arquiteto de software Conceitos fundamentais Arquitetura é o conjunto das principais decisões de design sobre um sistema de software Três aspectos fundamentais Todo software tem uma arquitetura Todo software tem pelo menos uma arquitetura Arquitetura não é uma fase do desenvolvimento. A arquitetura está fundamentalmente ligada aos requisitos Funcionais Não-funcionais 3

O que é Arquitetura de Software? Uma descrição abstrata de diferentes visões do sistema em termos de unidade (partes) que interagem entre si. As unidades podem variar dependendo da visão utilizada. Por exemplo, as partes podem ser componentes e conectores; ou sub-sistemas e módulos. A arquitetura deve dar suporte à funcionalidade do sistema (requisitos funcionais). A arquitetura deve está em conformidade com a qualidade (requisitos não-funcionais). O que não é arquitetura de software? Design detalhado (baixo-nível) design de componentes internos, modelos de dados e implementação Arquitetura do sistema físico elementos processadores, topologia de rede, arquitetura de elementos de hardware, etc. Arquitetura de software está relacionada com estes últimos no que se chama de Arquitetura do Sistema. Uma fase do processo de software. 4

Histórico Visão tradicional Conceito de Sub-sistema e Módulos Arquitetura nos Métodos Estruturados Arquitetura nos Métodos Orientados-a-Objetos Visão atual Disciplina emergente [Shaw e Garlan] Estilo arquiteturais Padrões de Design e Frameworks Visões Arquiteturais Linguagens de Descrição Arquitetural (ADL) Desenvolvimento Baseado em Componentes Arquitetura de Software nos Métodos Estruturados Objetivos: Visão abstrata em termos de módulos e funções/procedimentos Diminuir complexidade e facilitar manutenção Princípios: Dividir-e-conquistar Informação escondida Independência Funcional Alta coesão e baixo acoplamento Técnicas Decomposição Funcional Refinamento sucessivo (passo-a-passo) Representação Diagramas de caixas e linhas Linguagens de descrição de módulos 5

Estilo de arquitetura A arquitetura básica é hierárquica: um programa principal decomposto em várias sub-rotinas ou funções Sub-rotinas podem ser agrupadas em módulos Forma de Interação: Chamada-de-função e passagem de parâmetros Conceitos: Fan-in e Fan-out: mede o grau de dependência entre as sub-rotinas. Coesão e Acoplamento: uma boa arquitetura deve ter alta coesão e baixo acoplamento Sub-rotinas módulos Fan-in Fan-out Baixa coesão Alto acoplamento Alta coesão Baixo acoplamento Arquitetura de Software nos Métodos Orientados-a-Objetos Objetivos Agrupamento de dados e funções num único componente Visão abstrata em termos de classes/objetos e troca de mensagens Princípios: Independência Conceitual Encapsulamento Técnicas Identificação de objetos Especialização de objetos (Herança) Padrões de Projetos (Design Patterns) Representação UML: diagramas de classes, de seqüência, de colaboração e de estados 6

Exemplo Sistema estação meteorológica subsistemas e módulos «subsystem» Data collection «subsystem» Data display Observer Weather station Co mms Satellite Balloon User interface Ma p Ma p display Ma p printer «subsystem» Data processing Da ta checking Da ta integration «subsystem» Data archiving Map store Da ta storage Da ta store Fonte: Ian Sommerville, 2000 Exemplo Sistema estação meteorológica classes de um módulo WeatherStation identifier reportweather () calibrate (instruments) test () startup (instruments) shutdown (instruments) WeatherData airtemperatures groundtemperatures windspeeds win ddirections pressures rainfall collect () summarise () Ground thermometer temperature test () calibrate () Fonte: Ian Sommerville, 2000 Anemometer windspeed win ddirection test () Ba rom eter pressure height test () calibrate () 7

Arquitetura de Software visão emergente Objetivos Visão abstrata do software através de componentes e interfaces Independência de plataforma e paradigma de programação Paradigma de desenvolvimento baseado em componentes Técnicas Estilos Arquiteturais Padrões de projetos (Design Patterns) Frameworks Visões arquiteturais Tecnologias CORBA,.NET, J2EE Representação Linguagens de Descrição Arquitetural Estilos arquiteturais Identificados em diversas aplicações de sucesso Modelo em camadas OSI/ISO para redes Notificador em Sistemas de Janelas Pipes em Sistemas Unix Não são modelos, são conjunto de características comuns Mais de um estilo pode ser utilizado em uma mesma aplicação Semelhanças com a idéia de Patterns 8

Tubos e filtros (pipe-and-filter) Um Filtro é um componente que processa o fluxo de dados de sua entrada e gera um fluxo de saída para um outro filtro Fluxo de dados vai de um Filtro para o outro através de Tubos Exemplo Abrindo uma imagem compactada e criptografada Facilmente implementado no Unix ls grep java more req req req Application P Decompression P Decryption P OS File- System 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. 9

Visões arquiteturais (Hofmeister, 2000) Visões arquiteturais (Hofmeister, 2000) 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 10

Visão conceitual 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 Notação utilizada Variação da UML componentes, conectores descritos como classes estereotipadas. componente porta role conector Visão conceitual 11

Visão de módulo Componentes e Conectores que formam a visão conceitual são mapeados em subsistemas, módulos e camadas Sub-sistemas Partes que podem funcionar de forma independentes Podem conter módulos ou outros sub-sistemas Módulos Implementam os elementos conceituais (componentes, conectores, portas e roles) Podem conter outros módulos Camadas Organizam módulos de acordo com o seu uso. Princípios: Dependências entre módulos devem ser minimizadas Reuso de módulos deve ser maximizado Visão de módulos 12

Visão de execução 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 Exemplos de elementos de execução Processo (<<process>>) Memória compartilhada (<<shared data>>) Visão de execução 13

Visão de execução Relação com o hardware Visão de código Determina: como módulos (visão de módulo) são mapeados em componentes fonte como componentes do nível de implementação são mapeados a partir dos componentes fonte como as entidades de execução são mapeadas em componentes do nível de implementação (p.ex. executáveis) 14

Visão de codificação Organização do fonte Visão de codificação 15

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 16