Projeto de arquitetura

Documentos relacionados
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

Engenharia de Software. Projeto de Arquitetura

Capítulo 6. Projeto de arquitetura Pearson Pren0ce Hall. Todos os direitos reservados. 1. slide 1

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Análise e Projeto de Software

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

Projeto de Arquitetura

Processos de software

O que é um sistema distribuído?

COMPILAÇÃO. Ricardo José Cabeça de Souza

Conceitos de Linguagens de Programação

Princípios de Engenharia de Software. Aula 6 Projeto de Software

Princípios da Engenharia de Software aula 03

Introdução à Programação

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Compiladores I Prof. Ricardo Santos (cap 1)

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Requisitos de Software

Análise e projeto de sistemas

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

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

Ferramentas CASE. CASE fornece ao engenheiro de software a habilidade de automatizar atividades manuais e de aperfeiçoar o conhecimento de engenharia.

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

Engenharia de Software

Conceitos Básicos Sistemas de banco de dados; Sistemas de gerência de banco de dados.

Algoritmos e Programação

Linguagens de Programação

Introdução a Programação

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Prof. Ms. Ronaldo Martins da Costa

ENGENHARIA DE SOFTWARE

Métodos de implementação de linguagens. Kellen Pinagé

PROGRAMAÇÃO I. Introdução

5 Usando as Representações de Design Rationale

Arquitetura e Organização de computadores

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Sistemas Operacionais

Modelos de Processo de Software

Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Componentes do Diagrama

Profa. Reane Franco Goulart

Linguagens de Programação Classificação

Introdução à Programação de Computadores Fabricação Mecânica

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Requisitos de sistemas

Técnicas para Reutilização de Software

Engenharia de Software

INF1013 MODELAGEM DE SOFTWARE

REUSO E REUSABILIDADE

Arquitetura de Computadores. Conjunto de Instruções

Engenharia de Software Aula 2.3 Processos da Engenharia de Requisitos. Prof. Bruno Moreno

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Engenharia de Software.

PCS3413 Engenharia de Software e Banco de Dados

Engenharia de Confiança. Helena Macedo Reis Luis Fernando de Souza Moro

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

Capítulo 1. Aspectos Preliminares

Requisitos de Software

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009

Reuso de Software Aula Maio 2012

Introdução à Computação: Máquinas Multiníveis

FACULDADE LEÃO SAMPAIO

Conceitos relativos a Banco de Dados & Modelos de Informação de Banco de Dados. Introdução

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Requisitos de Software e UML Básico. Janaína Horácio

Reutilização de Software

Compiladores. Conceitos Básicos

Arquitetura de software

Paradigmas de Programação

Leitura: Cap : Sommerville; cap20: Pressman

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

ORGANIZAÇÃO CURRICULAR TÉCNICO NA ÁREA DE INFORMÁTICA: HABILITAÇÃO TÉCNICO EM INFORMÁTICA NA MODALIDADE A DISTÂNCIA /1

Qualidade de software. Prof. Emiliano Monteiro

Como construir um compilador utilizando ferramentas Java

Prof. Dr. Thiago Jabur Bittar

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Algoritmos e Programação

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

Compiladores. Introdução à Compiladores

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Programação I Apresentação

Capítulo 5 Gerenciamento do Escopo do projeto. Introdução. Antes de iniciarmos vamos pensar um pouco.

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

ENGENHARIA DE SOFTWARE. Introdução

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPI JOÃO CÂMARA RATIONAL UNIFIED PROCESS - RUP

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

3. Engenharia dos requisitos de software

Computadores e Programação (DCC/UFRJ)

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

Sistemas Embarcados (embutidos) Paulo C. Masiero

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Aula de hoje. Programação. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores

Transcrição:

é A; J, ~~8EmlEtiQM~.::.J~ [ V. '~A~(r~~Q Projeto de arquitetura é

"r:~ ~ A arquitetura de um ;-stema de controle robotizado de empacotamento,-í~ Na prática existe uma considerável sobreposição entre os processos de engenharia de requisitos e de projet~ d: arquitetura.ld~almente, uma especificação de sistema não deve incluir todas as inf~rmações do projeto. Mas essa naoe a realidade, exceto para sistemas muito pequenos. A decomposição de arquitetura e normalmente ~ecessana para estnjturar e organizar a especificação. Portanto, como parte do processo de enge~haria de requisitos, voce podera propor uma ar uitetura abstrata de sistema em que seja possível associar grupos de funçoes ou recursos do sistema aos componentes e~ larga escala ou subsistemas. Você pode, então, usar essa decomposição para discutir com os os requisitos e recursos do sistema.. Você pode projetar as arquiteturas de software em dois níveis de abstração, o que eu chamo de 1. A arquitetura em pequena escala preocupada com a arquitetura de programas IndiViduaiS. Ness: nlvel, :st~ mos preocupados com a maneira como um programa individual é decomposto em componentes. ste capltuo mais preocupado com as arquiteturas de programas.. A arquitetura em grande escala preocupa-se com a arquitetura de sistemas corporativos.complexos que in~ue: outros sistemas, programas e componentes de programas. Essessistemas empresanals estao dlstnbuldos por r~~~"e sos computadores, que podem pertencer e ser geridos por diferentes empresas. E~ trato da arquitetura em g escala nos capitulos e nos quais discuto os sistemas de arquiteturas dlstnbuldas....' A arquitetura de software é importante, pois afeta o desempenho e a robustez, bem como a capacidade de d:stnb~~~a; e de manutenibilidade de um sistema (BOSCH, 2000). Como discute Bosch, os componentes IndiViduaiS '~P m~ os requisitos funcionais do sistema. Os requisitos não funcionais dependem da arquitetura d~ slsftema ~rma c~1l1 esses componentes estão organizados e se comunicam. Em muitos sistemas, os requisitos nao unclo~als sao ta~ante:-." innuenciados por componentes individuais, mas não há dúvida de que a arquitetura de sistema e a influencia dom Bass et aí (2003) discutem três vantagens de projetar e documentar, explicitamente, a arquitetura de software: _ stakeholders. A arquitetura é uma apresentação de alto nível do sistema e pode ser usada corno um foco de discussão por uma sene de diferentes. '.... I d seu desenvolvimento requer Tornar explicita a arquitetura do slste~a, em um estagio IniCia e 'b'lid d de o 'sistema alguma análise. As decisões de projeto de arquitetura tem um efeito profundo sobre POSSI I a e atender ou não aos requisitos críticos, como desempenho, confiabilidade e manutenlbilldade.., de 3. Um modelo de uma arquitetura d' e sistema e 'a um descrição compacta. e gerenclave I nte como um sistema é organizado e como os componentes interoperam. A arquitetura do sistema gera mdeesca!a. mesma para sistemas com requisitos.. semelhantes e, por ISSO,po. d e apoiar o reúso de software em gran Capitulo Projeto de arquitetura Como explico no Capitulo 16, talvez seja possível desenvolver arquiteturas de linha de produto nas quais a mesma arquitetura é reusada em todo um conjunto de sistemas relacionados. Hofmeister et aí (2000) propõem uma arquitetura de software que pode servir, em primeiro lugar, como um plano de projeto para a negociação de requisitos de sistema, e, em segundo lugar, como um meio de estruturar as discussões com osclientes, desenvolvedores e gerentes. Eles também sugerem que seja uma ferramenta essencial para o gerenciamento dacomplexidade, pois esconde detalhes e permite que os projetistas se centrem nas abstrações'chave do sistema. Emgeral, as arquiteturas de sistema são modeladas por meio de diagramas de blocos simples, como na Figura No diagrama, cada caixa representa um componente. Caixas dentro de caixas indicam que o componente foi decomposto em subcomponentes. As setas significam que os dados e/ou sinais de controle são passados de um componente a outro nadireção das setas. Você pode ver muitos exemplos desse tipo de modelo de arquitetura no catálogo de arquitetura de softwarede Booch (BOOCH, 2009). Os diagramas de blocos apresentam uma imagem de alto nível da estrutura do sistema, de forma que as pessoas de diferentes disciplinas, envolvidas no processo de desenvolvimento do sistema, possam compreender facilmente. No entanto, apesar de seu amplo uso, Bass et aí (2003) não gostam de diagramas de blocos informais para descrever uma arquitetura. Elesalegam que esses diagramas informais são pobres representações de arquitetura, que não mostram o tipo de relacionamentos entre os componentes do sistema nem as propriedades dos componentes visíveis externamente. A aparente contradição entre a prática e a teoria de arquitetura surge porque existem duas maneiras de usar um modelode arquitetura de um programa: o Uma visão de arquitetura de um sistema de alto nível é útil para a comunicação com os do sistema e para o planejamento do projeto, pois não é rica em detalhes. Os podem relacionar e entender uma visão abstrata do sistema e, então, discutir o sistema como um todo, sem se confundirem com detalhes. O modelo de arquitetura identifica os principais componentes que devem ser desenvolvidos para que os gerentes possam começar a designar pessoas para planejarem o desenvolvimento desses sistemas. 2. O objetivo é produzir um modelo completo de sistema que mostre seus diferentes componentes, suas interfaces e conexões. O argumento para isso é que essa descrição detalhada da arquitetura facilita a compreensão e o desenvolvimento do sistema. Diagramas de bloco são uma forma adequada de, durante o processo de projeto, descrever a arquitetura do sistema; também são uma boa maneira de apoiar a comunicação entre as pessoas envolvidas no processo. Em muitos projetos, eles sãoaúnica documentação de arquitetura que existe. No entanto, se a arquitetura de um sistema deve ser bem documentada, melhor usar uma notação com semântica bem definida para a descrição de arquitetura. Contudo, como discuto na Seção6.2,algumas pessoas pensam que a documentação detalhada não é útil e não vale o custo de seu desenvolvimento. O projeto de arquitetura é um processo criativo no qual você projeta uma organização de sistema para satisfazer aos requisitos funcionais e não funcionais de um sistema. Por ser um processo criativo, as atividades no âmbito do processo dependem do tipo de sistema a ser desenvolvido, a formação e experiência do arquiteto de sistema e os requisitos especificos para o sistema. Por isso, é útil pensar em projeto de arquitetura como uma série de decisões, em vez de uma sequência de atividades. Durante o processo de projeto de arquitetura, os arquitetos de sistema precisam tomar uma série de decisões estruturais que afetam profundamente o sistema e seu processo de desenvolvimento. Com base em seus conhecimentos e experiência, eles precisam considerar as seguintes questões fundamentais sobre o sistema: 1. Existe uma arquitetura genérica de aplicação que pode atuar como um modelo para o sistema que está sendo projetado? 2. Como o sistema será distribuido por meio de um número de núcleos ou processadores? 3. Que padrões ou estilos de arquitetura podem ser usados? 4. Qual será a abordagem fundamental para se estruturar o sistema? 5. Como os componentes estruturais do sistema serão decompostos em subcomponentes? 6. Que estratégia será usada para controlar o funcionamento dos componentes do sistema?

5. Manutenção. 4, Disponibilidade. 3. Segurança. 2. Proteção. 1. Desempenho. run-time, i- stakeholders. + run-time 107

1 f de estado Notifica visão de modelo de estado

.J: A;:'- -_.~~. de direitos -

m~p'j~~ll 1',' 3. 2. Capítulo

é Engenharia de software é Internet é Web ~ Clienle4 UillCO ). 6J..,1.,'~..

1. S. J, 9~ ~ 2. 1. Capítulo

, A arquitetura de software de um sistema de ATM Arquitetura de sistema de informação em camadas ~Cofnuni.caç~e~ Au.tentk.~ção~ geda.do.~ gér~nçiament? tr?n~~çõe-s -,-'-~ " :~ A arquitetura do MHC-PMS.dá papel de dados fj~ri~o 3. A terceira camada deane a funcionalidade do sistema e fornece compónentes que impdlemdendtamdapr~~~~~~~. :~' sistema, criação e atualização de informações de pacientes, importação e exportação os a os e p. -.,.' partir de outros bancos de dados, além dos geradores de relatório que criam relatórios de gerenciamento. Capítulo 6 Projeto de arquitetura Finalmente, a camada mais baixa, construída usando um sistema de gerenciamento de banco de dados comerciai, fornece gerenciamento de transações e repósitório persistente de dados. Normalmente, sistemas de informação e de gerenciamento de recursos são baseados na Web, nos quais as interfaces de usuário são implementadas usando-se um Por exemplo, sistemas de comércio eletrõnico são sistemas de gerenciamento de recursos baseados na Internet que aceitam pedidos eletrõnicos de bens ou serviços e, em seguida, providenciam a entrega desses bens ou serviços ao cliente. Em um sistema de comércio eletrõnico, a camada especifica de aplicação inclui funcionalidade adicional que apoia um 'carrinho de compras: no qual os usuários podem colocar uma série de itens em transações separadas, e em seguida, pagar por todos juntos em uma única transação. Nesses sistemas, a organização dos servidores geralmente refiete o modelo genérico de quatro camadas apresentado na Figura 6.11, Esses sistemas são frequentemente implementados como arquiteturas/cliente/servidor multicamadas, conforme discutido no Capítulo O servidorweb é responsável por todas as comunicações de usuário, com a interface de usuário implementada usando um 2. O servidor de aplicações é responsável por implementar a lógica especiaca de aplicação, bem como o repositório de informações e pedidos de recuperação; 3. O servidor do banco de dados move as informações para e a partir do banco de dados, e lida com o gerenciamento de transações. Usar vários servidores permite que se tenha alto desempenho e faz com que seja possivellidar com centenas de transações por minuto. medida que a demanda aumenta, os servidores podem ser adicionados em cada nível para lidar com o processamento extra envolvido. Os sistemas de processamento de linguagens traduzem uma linguagem natural ou artificial em outra representação dessa linguagem. Para linguagens de programação, também podem executar o código resultante. Em engenharia de software, compiladores traduzem uma linguagem artificial de programação em código de máquina. Outros sistemas de processamento de linguagens podem traduzir uma descrição XML de dados em comandos, para consultar um banco de dados ou uma representação XML alternativa. Sistemas de processamento da linguagem natural podem traduzir uma linguagem natural para outra, por exemplo, o francês para o norueguês. Na Figura 6.13, é ilustrada uma possível arquitetura para um sistema de processamento de linguagem para uma linguagem de programação. As instruções da linguagem-fonte definem o programa a ser executado, e um tradutor converte as instruções para uma máquina abstrata. Essasinstruções são, então, interpretadas por outro A arquitetura de um sistema de processamento de linguagem

Capitulo 6 PrOjetode arquitetura d ( ') d d d b com,ponente, que usca as Instruçoes para a exe~uçao e asexe.cuta usan o se necessario os a os o am lente 6.f5 liu-;:;m:;;a;-a~r:;:q~u:;;lt::e~tu-;;r~a-"d;;:e:-:r:;::e=o~sl:to;" r~lo:-::=-ar:::a--:u=--:-:-:-:----;--------------------- A salda do processo e o resultado da Interpretaçao das Instruçoes sobre os dados de entrada.. p p m sistema de processamento de linguagem Claro que, para muitos compiladores, o interpretador é uma unidade de hardware que processa as instruções'~'k ' ~ de máquina, e a máquina abstrata é um processador real. No entanto, para linguagens tipadas dinamicamente,' ". como Python, o interpretador pode ser um componente de software. ". ~ Os compiladores de linguagem de programação que são parte de um ambiente de programação mais geral ~ têm uma arquitetura genérica (Figura que inclui os seguintes componentes:. : Um analisador léxico, que toma os da linguagem de entrada e os converte em um formato interno. :; ~';c Uma tabela de simbolos, que contém informações sobre os nomes das entidades (variáveis, nomes de classes, nomes de objetos etc) usadas no texto que está sendo traduzido.' Um analisador sintático, que verifica a sintaxe dá linguagem a ser traduzida. Ele usa uma gramática definida da' ~.~,~.: ( Editor '.. linguagem e constrói uma árvore de sintaxe. ' ~'. Uma árvore de sintaxe, que é uma estrutura interna que representa o programa a ser compilado.., ":'~.' ~'. Um analisador semãntico, que usa informações da árvore de sintaxe e a tabela de sim bolos para verificar'a. ~i' ;.../. correção semãntica do texto na linguagem de entrada. ~: Um gerador de código que 'anda' na árvore de sintaxe e gera códigos de máquina abstrata.,:. -~,~ i Também podem ser incluidos outros componentes que analisam e transformam a árvore de sintaxe para me.. Ihorar a eficiéncia e eliminar a redundãncia do código de máquina gerado. Em outros tipos de sistema de pro.. cessamento de linguagem, como um tradutor de linguagem natural, haverá componentes adicionais, como um.. dicionário, e o código gerado é a entrada de texto traduzido para outra iinguagem.,.,:r;.,. Existem padrões de arquitetura alternativos que podem ser usados em um sistema de processamento da lií'k~;'~"..' guagem (GARLAN e SHAW, Os compiladores podem ser implementados usando um composto de um re:.;- positório e um modelo de duto e filtro. Em uma arquitetura de compilador, a tabela de sim bolos é um repositó~i.a.. :~:;" de dados compartilhados. As fases da análise léxica, sintática e,semãntica estãoorganizadas em sequência, como mostra a Figura e comunlcam.se por meio da tabela de sim bolos compartilhados... Esse modelo de duto e filtro de compilação de linguagem é eficaz em ambientes em lotes nos quais os pr(}-}". gramas são compilados e executados sem interação do us~ário - por exemplo, na tradução de um documerit,q"i: XML para outro. lomenos efetivo quando um compilador e Integrado com outras ferramentas de processamento.';.,;" de linguagem, como um sistema de edição estruturado, um depurador interativo ou um (formatad,91:. de impressão) de programa. Nessa situação, as mudanças de um componente precisam refletir imediatamenteertt:]- ~ outros componentes. Portanto, é melhor organizar o sistema em torno de um repositório, como se vê na Figura 6.\5.'.],. Essafigura ilustra como um sistema de processamento de linguagem pode ser parte de um conjunto integra.:.. do de ferramentas de apoio à programação. Nesse exemplo, a tabela de símbolos e a árvore de sintaxe funcionam :.' como um repositório central de informações. Ferramentas ou fragmentos de ferramentas comunicam-se por meio '..:' dele. Outras informações que às vezes são embutidas em ferramentas, como a definição da gramática e a definição' '.:. do formato de saida para o programa, foram retiradas das ferramentas e colocadas no repositório. PortantÓ' um editor dirigido à sintaxe pode verificar se a sintaxe de um programa está correta, uma vez que está sendo digitaclo.. e um pode criar listagens de programa em um formato que seja fácil de ler.[, ~ma arquitetura de software é uma descrição de como um sistema de software é organizado. As propriedades e um SI=tema, como desempenho, proteção e disponibilidade, são influenciadas pela arquitetura adotada. As declsoes de projeto de arquitetura incluem decisões sobre o tipo de aplicação a distribuição do sistema os estilos da arquitetura a serem utilizados e as formas como a arquitetura deve ser 'documentada e avaliada. ' As larqulteturas ~odem ser document~das a partir de diferentes perspectivas ou visões. As possiveis visões Inc,uef~numa vlsao conceituai, uma vlsao loglca, uma visão de processo, uma visão de desenvolvimento e uma vlsao ISlca. Os padrões da arquitetura são um meio de reusar o conhecimento sobre as arquiteturas genéricas de sistemas Elesdescreve~ a arquitetura, explicam quando elas podem ser usadas e discutem suas vantagens e desvantagens: d EntreRospad,roes de arquitetura comumente usados estão: Modelo-Visão-Controlador, Arquitetura em camaas, eposltorlo, Cliente-servidor e Duto e filtro. Model~s genéricos de arquit~turas de sistemas de aplicação ajudam-nos a compreender o funcionamento das apllcaçoes, co~parar apílcaçoes do mesmo tipo, validar projetos de sistemas de aplicação e avaliar os componentes para reuso em larga escala. Sistemas de processamento de transações são sistemas interativos que permitem que as informações em um ~anco de dados sejam acessada: remotamente e modificadas por vários usuários. Os sistemas de informação e se gerenciamento de recursos sao exemplos de sistemas de processamento de transações. Istemas de processan:rento de linguagens são usados para traduzir textos de uma linguaguem para outra e para realizar as Instruçoes especificadas em uma linguagem de entrada. Eles incluem um tradutor e uma máquina abstrata que executa a linguagem gerada. Arquitetura do compilador em duto e filtro a Essefoi o primeiro livro sobre arquitetura de software, p senta uma boa dlscussao sobre diferentes estilos de arquitetura. (SHAW M' GARLAN D an ex Essaé uma discussão prática sobre arquiteturas de software ue não agera nos beneficiosdo projeto de arquitetura. O livro fornece uma lógica clara de ne ócio ex lie d q ~~:~~;~~~u~;~ são importantes. (BASS,L.,CLEMENTS,P.;KAZMAN, R. 2~:do~~~s~~~!

f f fi:' fi. Capítulo 2:3]