• Nenhum resultado encontrado

UFG - Instituto de Informática

N/A
N/A
Protected

Academic year: 2021

Share "UFG - Instituto de Informática"

Copied!
36
0
0

Texto

(1)

UFG - Instituto de Informática

Curso: Engenharia de Software

Arquitetura de Software

Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 2 – Introdução à Arquitetura de Software

(2)
(3)

Definição de Arquitetura de

Software

“Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.”

[ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description of Software-Intensive Systems]

Arquitetura é definida pela prática recomendada como a organização fundamental de um sistema, consubstanciado em seus componentes, suas relações uns aos outros e ao meio ambiente e os princípios que regem sua concepção e evolução.

(4)

Definição de Arquitetura de

Software

 Isto estabelece as bases para a compreensão

da disciplina.

 Arquitetura capta a estrutura do sistema em

termos de componentes e como eles interagem.

 Também define as regras de concepção de

todo o sistema e considera como um sistema pode mudar.

(5)

Definição de Arquitetura de

Software

“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.”

[L.Bass, P.Clements, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003]

A arquitetura de software de um programa ou sistema computacional é a estrutura ou estruturas do sistema, que incluem elementos de software, propriedades externamente visíveis a estes elementos e os relacionamentos entre eles.

(6)

Definição de Arquitetura de

Software

 Isso cria um pouco sobre a definição

ANSI/IEEE, especialmente no que que faz o papel de abstração (ou seja, as propriedades externamente visíveis) em uma arquitetura arquitectura e vistas múltiplas (estruturas do sistema) explícita.

(7)

Definição de Arquitetura de

Software

“[Software architecture goes] beyond the algorithms and

data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives.”

 [D. Garlan, M. Shaw, An Introduction to Software Architecture, Advances in

Software Engineering and Knowledge Engineering, Volume I, World Scientific, 1993]

(8)

Definição de Arquitetura de

Software

 A arquitetura de software vai além de algoritmos e

estruturas de dados da computação, a concepção e especificação da estrutura geral do sistema emerge como um novo tipo de problema.

 Questões estruturais incluem:

 a organização e estrutura de controle global;

 protocolos de comunicação, sincronização e acesso a

dados;

 atribuição de funcionalidade a elementos de design,

distribuição física, composição de elementos de design, escala e desempenho e seleção entre alternativas de

(9)

Definição de Arquitetura de

Software

 Nesta terceira definição está mais explícito sobre

determinadas questões, tais como escalabilidade e distribuição, que estão implícitos nas duas primeiras.

 Independentemente disso, a analisando um pouco

torna possível extrair algumas das características fundamentais de arquiteturas de software.

(10)

Arquitetura define estrutura

 Muito do tempo de um arquiteto está preocupado em

como particionar sensatamente uma aplicação em um conjunto de componentes inter-relacionados, módulos, objetos ou qualquer unidade de particionamento software funciona para você.

 Diferentes requisitos de aplicativo e restrições irão

definir o significado preciso de "sensatez" na frase anterior.

 Uma arquitetura deve ser projetada para atender as

exigências e restrições específicas da aplicação a que se destina.

(11)

Exemplos

 Um requisito para um sistema de gerenciamento de

informações pode ser um aplicativo deve ser distribuído em vários sites, e uma restrição é que algumas funcionalidades e os dados devem residir em cada local.

 Outro requisito é a funcionalidade de um aplicativo

(12)

Exemplo

 Ambos impõem algumas restrições estruturais (site

específico, servidor web) e, simultaneamente, abrir caminhos para a criatividade design considerável em termos de funcionalidade de particionamento através de uma coleção de componentes relacionados.

(13)

Arquitetura define estrutura

 No particionamento de uma aplicação, o

arquiteto atribui responsabilidades para cada componente constituinte.

 Estas responsabilidades definem as funções de

um componente pode ser invocada para executar dentro do aplicativo.

 Desta forma, cada elemento desempenha um

papel específico na aplicação, e o conjunto de componentes em geral, que compreende a arquitetura colabora para fornecer a funcionalidade necessária.

(14)

Arquitetura define estrutura

 Design baseado em responsabilidade é uma técnica

de orientação a objetos que podem ser utilizados de forma eficaz para ajudar a definir os principais componentes de uma arquitetura.

 Ele fornece um método baseado em ferramentas

informais e técnicas que enfatizem a modelagem comportamental por meio de objetos, responsabilidades e colaborações.

(15)
(16)

Arquitetura define estrutura

 Uma questão-chave estrutural para quase todos os

aplicativos é minimizar as dependências entre os componentes, criando uma arquitetura de baixo acoplamento de um conjunto de componentes altamente coesivo.

 A dependência existe entre os componentes, quando

a mudança em um força potencialmente a mudança em outro.

 Ao eliminar dependências desnecessárias, as

mudanças são localizadas e não se propagam ao longo de uma arquitetura

(17)

Arquitetura define estrutura

 Dependências excessivas são simplesmente

uma coisa ruim.

 Eles fazem com que seja difícil de fazer

alterações em sistemas, mais caro para testar as alterações, eles aumentam o tempo de construção, e eles fazem o desenvolvimento, concomitante com base em equipas mais difícil.

(18)

Arquitetura define comunicação

de componente

 Quando um aplicativo é dividido em um

conjunto de componentes, torna-se necessário pensar sobre como esses componentes se comunicam dados e informações de controle.

(19)

Arquitetura define comunicação

de componente

 Os componentes em uma aplicação podem:

 Existir no mesmo espaço de endereço, e se

comunicar através de chamadas de método direto.

 Eles podem executar em diferentes segmentos ou

processos, e comunicam através de mecanismos de sincronização.

 Ou vários componentes podem precisar de ser

simultaneamente informados quando um evento ocorre no ambiente da aplicação.

(20)

Arquitetura define comunicação

de componente

 Existem diversas formas de codificar que ficaram

conhecidas coletivamente como padrões ou estilos arquitetônicos. Estes padrões catalogaram um número de estruturas usadas com sucesso para facilitar certos tipos de comunicação entre componentes.

 Cada padrão tem características bem conhecidas que

o tornam adequado a ser usado para satisfazer a determinados tipos de exigências.

(21)

Exemplo

O padrão Cliente-Servidor tem várias características úteis:

 Comunicação síncrona de Solicitação-Resposta do cliente para

o servidor

 Servidores de apoio a um ou mais clientes através de uma

interface publicada.

Opcionalmente, os clientes podem estabelecer sessões com os servidores, que podem manter o estado sobre seus clientes conectados.

Arquiteturas Cliente-Servidor também deve fornecer um mecanismo para os clientes para localizar servidores, lidar com erros e, opcionalmente, oferecer segurança no acesso ao servidor. Todas estas questões são abordadas no padrão de arquitetura Cliente-Servidor.

(22)

Arquitetura define comunicação

de componente

 O poder dos padrões de arquitetura decorre da

sua utilidade e capacidade de transmitir informações do projeto.

 Os padrões são provados para trabalhar.

 Se for usado adequadamente em uma

arquitetura, você aproveita os conhecimentos existentes de design usando padrões.

(23)

Arquitetura define comunicação

de componente

 Grandes sistemas tendem a utilizar padrões múltiplos,

combinados de forma que satisfaçam os requisitos de arquitetura.

 Quando uma arquitetura é baseada em padrões, ele

também se torna fácil para os membros da equipe para entender um projeto, como infere o padrão da estrutura dos componentes, comunicações e mecanismos abstratos que devem ser fornecidas.

(24)

Arquitetura define comunicação

de componente

 Quando alguém me diz que seu sistema é

baseado em uma arquitetura cliente-servidor de três camadas, sabe-se imediatamente uma quantidade considerável sobre seu projeto.

 Este é um mecanismo de comunicação muito

(25)

Arquitetura atende recursos

não-funcionais

 Os requisitos não funcionais são aqueles que

não aparecem nos casos de uso.

 Ao invés de definir o que o aplicativo faz, eles

estão preocupados com a forma como o aplicativo fornece a funcionalidade necessária.

(26)

Arquitetura atende recursos

não-funcionais

 Há três áreas distintas de requisitos

não-funcionais:

 Restrições Técnicas  Restrições de Negócio  Atributos de Qualidade

(27)

Restrições Técnicas

 Estes serão familiares a todos. Eles limitam as opções

de projeto, especificando certas tecnologias que o aplicativo deve usar.

“Nós temos apenas os desenvolvedores Java, por isso temos de desenvolver em Java.”

“O banco de dados existente é executado no Windows XP.”

(28)

Restrições de Negócio

 Esta também é uma restrição de opções de design,

mas para o negócio, não por razões técnicas.

Por exemplo: “A fim de alargar a nossa base de clientes em potencial, temos de interface com ferramentas XYZ.” “O fornecedor de nosso middleware elevou os preços proibitivos, por isso estamos nos movendo para uma versão de código aberto.”

(29)

Atributos de Qualidade

 Estes definem os requisitos de uma aplicação em termos de:  Disponibilidade;

 Escalabilidade;

 Facilidade de mudança;  Portabilidade;

 Usabilidade;

 Desempenho e assim por diante.

 Atributos de qualidade atendem questões de interesse para

usuários do aplicativo, bem como outras partes interessadas como a própria equipe do projeto ou o patrocinador do projeto.

(30)

Arquitetura atende recursos

não-funcionais

 Uma arquitetura de aplicação deve abordar

explicitamente os aspectos do projeto.

 Arquitetos precisam entender os requisitos

funcionais, e criar uma plataforma que suporta esses e simultaneamente satisfaz os requisitos não-funcionais.

(31)

Arquitetura é uma abstração

 Uma das mais úteis, mas muitas vezes

inexistentes, as descrições de uma perspectiva arquitetônica é algo que é conhecido coloquialmente como Marketecture.

Marketecture é um excelente veículo para

facilitar a discussão pelas partes interessadas durante o projeto, construção, revisão e, claro:

(32)

Arquitetura é uma abstração

Uma Marketecture cuidadosamente trabalhada

é particularmente útil porque é uma descrição abstrata do pedido.

 Na realidade, qualquer descrição arquitetônica

deve empregar abstração para serem compreendidos pelos membros da equipe e os interesses do projeto.

(33)

Arquitetura é uma abstração

 Geralmente descreve-se os componentes da

arquitetura como caixas pretas, precisando apenas de suas propriedades visíveis exteriormente.

 É claro que, descrevendo a estrutura do

sistema e do comportamento como coleções de abstrações de comunicação de caixa preta é normal para os profissionais que utilizam técnicas de design orientado a objeto.

(34)

Arquitetura é uma abstração

 Um dos mecanismos mais poderosos para

descrever uma arquitetura é a decomposição hierárquica.

 Os componentes que aparecem em um nível

de descrição são decompostos em mais detalhes na documentação do projeto de acompanhamento.

(35)
(36)

Arquitetura é uma abstração

 Diferentes níveis de descrição na hierarquia

tendem a ser de interesse de desenvolvedores diferentes em um projeto.

 A arquitetura claramente particiona as

responsabilidades de cada equipe, definindo as dependências entre eles.

Referências

Documentos relacionados

Almanya'da olduğu gibi, burada da bu terimin hiçbir ayrım gütmeden, modern eğilimleri simgeleyen tüm sanatçılar için geçerli olduğu anlaşılıyor.. SSCB'de ilk halk

Visando mitigar riscos e oferecer a pronta- resposta adequada em caso de incidentes ou acidentes na Reserva do Paiva, foram implantadas pela AGRP, com a coordenação da Consultoria

Ligado (marca de verificação) ou desligado (sem marca de verificação); X-PAND, temperaturas, pressão, tanques, tensões, combustível, ECO, cruzeiro, navegação, registro de

•A defasagem vai ser sempre menor que 90 graus (tipicamente em torno de 25 o ), fornecendo torque de partida moderado , para baixa corrente de partida; • Uma chave centrífuga

As pontas de contato retas e retificadas em paralelo ajustam o micrômetro mais rápida e precisamente do que as pontas de contato esféricas encontradas em micrômetros disponíveis

DEPARTAMENTO DE GENÉTICA Unidade de Citogenética Unidade de Genética Médica Unidade de Genética Molecular Unidade de Rastreio Neonatal Unidade de Investigação e

Cabo Verde é um pequeno Estado insular de vocação atlântica, situado a cerca de 500 km da costa ocidental africana, com uma diáspora espalhada por quase todos os continentes, que

Ainda na última parte da narrativa, outro “milagre” acontece: Grenouille apa- rece, de súbito, em meio ao povo, destampa uma pequena garrafa que trazia consi- go, borrifa-se com