Arquitetura de Software



Documentos relacionados
Projeto de Arquitetura

Requisitos de Software

Projeto de Arquitetura

ARQUITETURA DE SISTEMAS. Cleviton Monteiro

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

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

Eduardo Bezerra. Editora Campus/Elsevier

SISTEMAS DISTRIBUIDOS

UFG - Instituto de Informática

Introdução a Computação

Engenharia de Software

REDES DE COMPUTADORES

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

Arquitetura de Software

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

Engenharia de Requisitos

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

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

Documento de Arquitetura

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

Processos de Desenvolvimento de Software

FORMULÁRIO PARA CRIAÇÃO DE DISCIPLINA

Arquitetura de Software

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

Sistemas Distribuídos

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

ARQUITETURA DE SOFTWARE

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Servidor de s e Protocolo SMTP. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes

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

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

O que são DNS, SMTP e SNM

Introdução à Engenharia de Software

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Prof. Marcelo Cunha Parte 5

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Projeto Disciplinar de Infra-Estrutura de Software ECOFROTA TRIBUNAL THEMIS

Engenharia de Requisitos Estudo de Caso

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

AULA 03 MODELO OSI/ISO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

Arquitetura dos Sistemas de Informação Distribuídos

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO (Bacharelado)

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Engenharia de Software

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Design de Software e Projeto Arquitetural de Software. Prof. Edison A M Morais prof@edison.eti.br

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

PARANÁ GOVERNO DO ESTADO

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite

UML - Unified Modeling Language

Capítulo 8 - Aplicações em Redes

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Introdução à Computação

A contribuição da Análise para Arquitetura de Software

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor


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

ENG1000 Introdução à Engenharia

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

PROVA DE CONHECIMENTOS ESPECÍFICOS PROGRAMADOR DE COMPUTADOR. Analise as seguintes afirmativas sobre os modelos de processos de software:

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

Evolução na Comunicação de

Modelo para Documento de. Especificação de Requisitos de Software

Serviços Web: Introdução

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

Tecnologia de Soluções Biométricas Neokoros AFIS Corporate / SDK: Visão Geral

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

Arquitetura de Software. Silvia Regina Vergilio

Relatório do GPES. Arquitetura Geral do Framework

Rede de Computadores

Engenharia de Sistemas Computacionais

APOO Análise e Projeto Orientado a Objetos. Requisitos

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

Considerações no Projeto de Sistemas Cliente/Servidor

(eletronic mail )

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Camadas da Arquitetura TCP/IP

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

UNIVERSIDADE. Sistemas Distribuídos

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Acesso remoto a servidores Gestores de monitorização de tráfego de redes

Características de Firewalls

Engª de Produção Prof.: Jesiel Brito. Sistemas Integrados de Produção ERP. Enterprise Resources Planning

Requisitos. Sistemas de Informações

TECNOLOGIAS WEB AULA 2 PROF. RAFAEL DIAS

Feature-Driven Development

REDES DE COMPUTADORES. Arquiteturas de Redes

Requisitos de Software

Forneça a próxima onda de inovações empresariais com o Open Network Environment

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

SIMARPE Sistema de Arquivo Permanente

Conceitos de Banco de Dados

Transcrição:

Arquitetura de Software Centro de Informática - Universidade Federal de Pernambuco Engenharia da Computação Kiev Gama kiev@cin.ufpe.br Slides elaborados pelos professores Marcio Cornélio e Kiev Gama O autor permite o uso e a modificação dos slides para fins didáticos

Programação Modular

Programação Modular Implementação

Programação Modular Interface Implementação

Programação Modular Interface Provida Implementação Interface Requerida

Programação Modular Interface Provida Implementação Visível apenas dentro do Módulo Interface Requerida

Benefícios Esperados da Programação Modular [Parnas, 1972] (1) Tempo de desenvolvimento encurtado, já que grupos de desenvolvimento separados podem trabalhar em módulos distintos, com pouca necessidade de comunicação (2) Possibilidade de aplicar mudanças drásticas a um módulo sem a necessidade de mudar outros (3) Possibilidade de estudar o sistema olhando para um módulo de cada vez Interações entre módulos

Arquitetura de Software Arquitetura de software está ligada ao módulos do sistema e como eles se interrelacionam Todo software tem uma arquitetura Algumas vezes ela foi pensada Outras vezes, ela simplesmente aconteceu Arquitetura Intencional x Arquitetura Acidental [Booch, 2006] Fowler, Martin. "Who needs an architect?." IEEE Software 20.5 (2003): 11-13.

Uma definição de arquitetura de software Garlan & Perry The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time.

Uma definição mais informal "In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called architecture. This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers. Ralph Johnson apud [Fowler, 2003] Fowler, Martin. "Who needs an architect?." IEEE Software 20.5 (2003): 11-13.

Arquiteto de Software http://www.kirkk.com/modularity/2009/12/chapter-4-architecture-and-modularity/

Uma definição mais informal ainda Architecture is about the important stuff. Whatever that is Ralph Johnson apud [Fowler, 2003] Fowler, Martin. "Who needs an architect?." IEEE Software 20.5 (2003): 11-13.

Arquitetura de Software A estrutura de um sistema de software, que engloba componentes de software; suas propriedades visíveis externamente; e os relacionamentos e interações entre eles As primeiras decisões tomadas no projeto de um sistema As mais importantes! Uma arquitetura de software é composta por componentes e conectores

Ex: Uma arquitetura em camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional

Ex: Uma arquitetura em camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional Componente Componente Componente

Ex: Uma arquitetura em camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional Conector (HTTP, ( RMI Conector (Ponte ( SQL

Projeto Arquitetural O processo de projeto que estabelece Os subsistemas que constituem um sistema A maneira como esses componentes interagem Incluindo algumas decisões tecnológicas Ex. Plataforma de componentes, SGBD A saída desse processo de projeto é uma descrição da arquitetura de software. A arquitetura de software lida com os requisitos não-funcionais do sistema

Projeto Arquitetural É o primeiro estágio do projeto do sistema Representa a ligação entre os processos de especificação e de projeto É freqüentemente conduzido em paralelo com algumas atividades de especificação Às vezes junto com a elicitação de requisitos Envolve a identificação dos componentes principais do sistema e sua interação Componentes => unidades de modularidade

Vantagens de uma Arquitetura Explícita Comunicação com os stakeholders A arquitetura pode ser usada como um foco de discussão pelos stakeholders do sistema. Análise de sistema Se há possibilidade de o sistema atender a seus requisitos de qualidade (não-funcionais) Reuso em larga escala A arquitetura pode ser reusável em uma variedade de sistemas Suas partes também!

Conflitos de arquitetura O uso de componentes de alta granularidade (coarse grained versus fine-grained) aprimora o desempenho mas diminui a facilidade de manutenção A introdução de dados redundantes aprimora a disponibilidade, mas torna a proteção mais difícil E cria dificuldades para tornar o sistema confiável em outras partes Localizar as funcionalidades críticas de segurança em poucos locais pode criar gargalos de desempenho Decisões de projeto

Decisões de projeto Projeto de arquitetura é um processo criativo Cada sistema envolve diferentes decisões/requisitos/conflitos/restrições Envolve solucionar os problemas representados pelos requisitos Decisões de projeto: Escolhas feitas durante o projeto de um sistema Afetam sua capacidade de fornecer seu serviço Normalmente resultam em compromissos É importante avaliar as opções existentes Não estão restritas ao projeto arquitetural!

Exemplos de Decisões de Projeto Como representar o mapa em um sistema que traça rotas percorridas por ônibus de modo a minimizar o trabalho da equipe? Como garantir a confiabilidade de um servidor a um baixo custo? Qual a maneira mais eficiente de se construir uma grade de horários levando-se em conta as várias restrições impostas por professores, diretores e regras departamentais? Qual a melhor tecnologia para se construir uma ferramenta de análise de programas? Como a arquitetura do sistema deve ser documentada? E nos projetos de vocês?

Decisões Arquiteturais Documentem as decisões arquiteturais! Como saber se uma decisão deve ser documentada: A decisão afeta um ou mais atributos de qualidade do sistema? (performance, disponibilidade, segurança, capacidade de ser modificável, segurança, confiabilidade)

Características de um Sistema que decorrem de sua Arquitetura Desempenho Localizar operações críticas e minimizar comunicações. Usar componentes de alta ao invés de baixa granularidade (coarse grained versus fine-grained). ( security ) Proteção Usar uma arquitetura em camadas com itens críticos nas camadas mais internas. Segurança (safety) Localizar características críticas de segurança em um pequeno número de subsistemas. Disponibilidade Incluir componentes redundantes e mecanismos para tolerância à falhas. Facilidade de manutenção Usar componentes facilmente trocáveis

Representação de Arquiteturas Arquiteturas são um ativo importante no desenvolvimento Podem ser a diferença entre o sucesso e o fracasso Representá-las é importante Torna possível falar sobre ela O projeto de arquitetura é normalmente expresso como um diagrama de blocos Modelos mais específicos também podem ser desenvolvidos.

Sistema de controle robotizado de empacotamento

Diagramas caixa e linha Muito abstrato não mostram a natureza dos relacionamento de componentes, nem suas propriedades externamente visíveis Contudo, são úteis para comunicação com os stakeholders e para planejamento de projeto. Alternativas: Notações formais Notações informais mais organizadas

Visões Arquiteturais A arquitetura de um sistema software normalmente é representada através de várias visões Visões são maneiras diversas de se enxergar uma mesma arquitetura Enfocando diferentes aspectos de interesse Ex.: as várias plantas de uma casa Arquiteturas de software são especificadas através de uma ou mais de suas visões

Correio eletrônico Visão 1 Três principais elementos: agentes de usuário (UA). servidores de correio. simple mail transfer protocol: SMTP. servidor de correio SMTP SMTP SMTP servidor de correio agente de usuário agente de usuário fila de mensagens de saída caixa de correio do usuário servidor de correio agente de usuário POP3/IMAP agente de usuário agente de usuário

Correio eletrônico Visão 2 1) Alice usa o UA para compor uma mensagem para bob@someschool.edu 2) O UA de Alice envia a mensagem para o seu servidor de correio; a mensagem é colocada na fila de mensagens. 3) O lado cliente do SMTP abre uma conexão TCP com o servidor de correio de Bob. 4) O cliente SMTP envia a mensagem de Alice através da conexão TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de entrada de Bob. 6) Bob chama o seu UA para ler a mensagem. 1 user agent mail server 2 3 4 mail server 5 6 user agent

Correio eletrônico Visão 3 Fonte: Axigen Mail Server Documentation - Mail Server Architecture. Consultado em 24 de março de 2008 http://www.axigen.com/docs/en/mail-server-architecture_85.html

Um Exemplo de Sistema de Controle de Tráfego Aéreo G.A.M M&C Console Exceções Exceções Exceções Local/Group A.M. O/S E. A. S. Exceções ATC Console A.S.O.U Exceções Exceções Network Operating System Processor I/O Devices Fonte: Bass, Clements, and Kazman, Software Architecture in Practice, 2 nd Edition, 2003. Attachments

Sobre Visões Algumas são genéricas Lógica De interação Física ou de Alocação Outras servem a fins específicos Fluxo de exceções

Reuso de arquitetura Sistemas do mesmo domínio freqüentemente têm arquiteturas similares que refletem os conceitos de domínio Resultam em decisões de projeto similares Linhas do produto de software são construídas em torno de um núcleo de arquitetura Variantes satisfazem requisitos de cada cliente. Reuso de arquiteturas é capturado através da noção de padrões ou estilos arquiteturais

Referências [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE SOMMERVILLE, I. Engenharia de Software. 9ª. Ed. São Paulo: Pearson Education, 2011 Capítulo 6 BASS, L., CLEMENTS, P., KAZMAN, R. Software Architecture in Practice, 2nd Edition. Capítulos 1, 2 e 3 35