Arquitetura de software

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

Padrões. Arquitetura de Software Thaís Batista

Arquitetura de Software: Introdução

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

Visões Arquiteturais. Visões Arquiteturais

PCS3413 Engenharia de Software e Banco de Dados

Arquitetura de Software: Introdução

RUP RATIONAL UNIFIED PROCESS

Introdução a UML (Unified Modeling Language)

Engenharia de Software

Arquitetura de Software visão emergente

Estilos Arquiteturais

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

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

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

SSC Engenharia de Software. Prof. Paulo C. Masiero

Padrões contexto problema solução

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

Análise e projeto de sistemas

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

Requisitos de sistemas

INF1013 MODELAGEM DE SOFTWARE

CONCEITOS BÁSICOS E MODELO DE PROJETO

RUP Unified Process. Profª Jocelma Rios

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

ARQUITETURA DE SOFTWARE III

Engenharia de Software. Projeto de Arquitetura

Prof. Fábio Lúcio Meira

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

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Desenho de Software. Sumário

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

Arquitetura de Software: Introdução. Prof. Fellipe Aleixo

Princípios e Conceitos de Desenho de Software. Projeto de Sistemas de Software Prof. Rodrigo Ribeiro

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

Documento de Arquitetura de Software- SGE

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

ARQUITETURA E DESENHO

ENGENHARIA DE SOFTWARE. Introdução

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.

Capítulo 5 Modelação do Sistema 1

Especificação de Sistemas de Software e a UML

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

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

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

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

REUSO E REUSABILIDADE

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES]

Engenharia de Software

UML (Unified Modelling Language)

ENGENHARIA DE SOFTWARE

PUC-GO- ADS: Prof. Vicente P. de Camargo. Desenvolvimento de Aplicações para Cliente Servidor

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Aula 1 - Introdução à disciplina e Processos de desenvolvimento de software e suas atividades básicas

UML Diagramas Estruturais Diagrama de Componentes

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

3 Medição de Software

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Engenharia de Requisitos

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

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

Design Dirigido ao Domínio - DDD

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

Universidade Federal de Goiás Estilos Arquiteturais

Prof. Esp. Fabiano Taguchi

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

Capítulo 2. Orientação a Objetos

Processo de Desenvolvimento de Software

Transcrição:

Arquitetura de software

Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Recebe encomendas e pagamento Recomenda itens a usuários Por onde começamos?

Arquitetura = {Elementos, Organização, Decisões} (Perry & Wolf) a estrutura ou estruturas do sistema, a qual é composta de elementos de software, as propriedades externamente visíveis desses elementos, e os relacionamentos entre eles. (Bass et al.) Arquitetura é a organização fundamental de um sistema, representada por seus componentes, seus relacionamentos com o ambiente, e pelos princípios que conduzem seu design e evolução. (IEEE)

Elementos em comum: Descrição dos componentes principais Relacionamentos e interações entre componentes Omite informação sobre o conteúdo dos componentes não relacionada a suas interações O comportamento dos componentes é uma parte da arquitetura enquanto possa ser discernido do ponto de vista de outro componente A arquitetura define uma lógica por trás dos componentes e da estrutura

Arquitetura é processo e artefato (assim como projeto) Arquitetura do Facebook vs. Um livro sobre Arquitetura de Software

Visão focada em módulos funcionais

Visão focada em elementos de processamento e dados

Arquitetura não é só sobre funcionalidade Envolve: Funcionalidade Usabilidade Desempenho Reuso Segurança Facilidade de compreensão Restrições e equilíbrio de fatores econômicos e tecnológicos 9

A arquitetura envolve um conjunto de decisões de design, regras ou padrões que restringem o projeto e a implementação projeto arquitetura Código implementação As decisões de arquitetura são as mais fundamentais e alterálas provoca efeitos colaterais significativos. Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 10

Distinções importantes

Arquitetura vs. Projeto A arquitetura é um aspecto do projeto, focada em elementos que são importantes estruturalmente elementos que têm impacto significativo em desempenho, confiabilidade, custo, adaptabilidade, etc. A arquitetura não diz respeito ao projeto detalhado de componentes individuais

Arquitetura vs. Infraestrutura Infraestrutura é parte integral e importante da arquitetura A arquitetura define interoperabilidade entre a infraestrutura e os componentes da aplicação Arquitetura aborda estrutura, decomposição, interfaces, etc. Arquitetura aborda... Aspectos dinâmicos Argumentação lógica Adequação ao contexto

A arquitetura é um diagrama A arquitetura é plana apenas em casos muito triviais A arquitetura tem muitas dimensões, que representam múltiplas questões de múltiplos stakeholders Usar um único diagrama para representar todas as dimensões da arquitetura leva à sobrecarga semântica (leia-se confusão ) Arquitetura requer múltiplas visões

como e porque

Como e por que Queremos organizar módulos, dependências, processos e acesso a dados* Queremos promover: Integridade e qualidade do sistema Controle da complexidade Previsibilidade Testabilidade Reuso Comunicação Organização e gerência de projetos

Arquitetar ou não? Sistemas muito simples têm arquitetura trivial Sistemas grandes dependem de arquitetura

Alguns conceitos relevantes Acoplamento Coesão Interface Componentes Conectores Estilo arquitetural Padrões de projeto Visão arquitetural

Acoplamento Grau de interconexão entre diferentes pedaços de um sistema Pedaços menos acoplados são mais fáceis de entender, testar, reusar e manter Baixo acoplamento também promove o paralelismo de implementação Alto Acoplamento (efeito cascata) Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 19

Conceitos Coesão Quão proximamente são relacionadas as atividades dentro de um único pedaço (componente) ou entre um grupo de padaços? Componentes altamente coesos = relacionados a apenas UMA funcionalidade Relatório Impressão Alta coesão Interface Impressão Relatório Interface Baixa coesão Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 20

Interface As maneiras em que subsistemas dentro de um projeto maior interagem são claramente definidas. Idealmente, interações são especificadas de um modo que possam se manter relativamente estáveis ao longo do ciclo de vida do sistema. Um modo de alcançar isso é através de abstrações sobre a implementação concreta. Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 21

Conceitos Interface Exemplo clássico: tomada! Interface bem definida Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 22

Conceitos Interface Exemplo clássico: tomada! Abstração sobre...... a implementação concreta Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 23

Componentes Unidades de distribuição, montagem, implantação e substituição Executam funcionalidade não trivial Um componente é definido pelos serviços que provê e pelos serviços que requer Não necessariamente uma única unidade de código ou um único executável (não estamos falando de ES orientada a componentes) Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 24

Conectores q Veículos de comunicação entre componentes ð Descrição das interações entre componentes q Exemplos de conectores: ð Chamadas de procedimento ð Anúncios de eventos ð Protocolos de comunicação ð Invocações de serviços Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 25

Estilo ou padrão arquitetural Vocabulário de tipos de componentes e conectores + Conjunto de restrições sobre como eles podem ser combinados Exemplos: Cliente-Servidor, Pipes and Filters, Model-View-Controller, Broker Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 26

Padrões de projeto Soluções de projeto de baixo nível Classes, objetos... Mais detalhada Visão interna dos componentes da arquitetura Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 27

Visão arquitetural Diferentes visões pedem diferentes representações Diagramas de pacotes de componentes de classes de sequência

Visão estática

Visão dinâmica

Padrões Arquiteturais Um estilo/padrão arquitetural expressa: Uma organização estrutural Um conjunto pré-definido de subsistemas e suas responsabilidades Inclui regras e diretrizes para organizar o relacionamento entre os subsistemas São templates para arquiteturas concretas Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 31

O que vimos hoje? Arquitetura de software O que é? Para que serve? Como documentar? O que é padrão arquitetural Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 32

O que veremos na próxima aula? Padrão Layers (Camadas) Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 33