Relembrando... Arquitetura de software. Projeto arquitetural

Documentos relacionados
Padrões Arquiteturais

ARQUITETURA DE SOFTWARE 1

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

Arquitetura de Software

Padrões. Arquitetura de Software Thaís Batista

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

Padrões contexto problema solução

Arquitetura de Software visão emergente

Arquitetura de Software

Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura

Arquitetura de Software: Introdução

Estilos Arquiteturais. Prof. Fellipe Aleixo

Estilos Arquiteturais. Prof. Fellipe Aleixo

Arquitetura de Software: Introdução

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

Arquitetura de Software Parte 2/3-Estilos Arquiteturais. Jorge H. C. Fernandes Junho de 1999

Estilos Arquiteturais

Arquitetura de Software Parte 1/3 Introdução* Jorge H. C. Fernandes Junho de 1999

Arquitetura de software

Universidade Federal de Goiás Estilos Arquiteturais

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

Capítulo 6 Design da Arquitectura

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

Análise e Projeto de Software

Padrões de Projeto de Software

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

Arquitectura de Sistemas de Software

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

Atividades de Projeto. Arquitetura de Software. Arquitetura. Projeto da Arquitetura de Software. O que é arquitetura de Software?

UFG - Instituto de Informática

Desenho e documentação de arquitectura de software e de aplicações empresariais

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

Arquitetura de Sistemas

Tópicos Avançados em Linguagem de Programação. Padrões de Software. Prof. Alexandre Vidal DEINF-UFMA. Ciência da Computação

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

Desenvolva passo a passo um Sistema Web seguro com C# e Web Services!

Aula 1: Apresentação. Revisão para Prova 1. Aula 2: Motivação. O que é software? Eng. de Software em Camadas. O que é Engenharia de Software?

Arquitetura de Software: Documentação

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

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

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA

Arquitetura de Software

Desenho de Software. Sumário

PROTÓTIPO DE UM SISTEMA DE IMPORTAÇÃO PARA UMA AGÊNCIA DE TRANSPORTES INTERNACIONAIS

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

ach 2147 desenvolvimento de sistemas de informação distribuídos

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

Prof. Fábio Lúcio Meira

Módulo I Princípios e Padrões de Projeto de SW em Java

UERJ Oscar Luiz Monteiro de Farias 1. Bancos de Dados. Mestrado em Engenharia de Computação área de concentração Geomática

CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER

Arquitectura de Sistemas de Software

Modelos de design arquitetural

Módulo II Arquitetura em Camadas

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

Arquitetura de Software: Documentação

Visão Geral Parte 2. Jair C Leite DIMAp/UFRN

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

UML (Unified Modelling Language)

Introdução a UML (Unified Modeling Language)

Engenharia de Software

Visões Arquiteturais. Visões Arquiteturais

Modulo I Princípios e Padrões de Projeto de SW em Java

Padrões de Interação com o Usuário

Arquitetura de Software. Fatec ES III - Prof. Dinis 1

Objetivo do Curso. Modelagem/Arquitetura de Software. Enfoque do Curso. Conteúdo do Curso

Arquitetura em Camadas

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

2 Metodologias para Projetos de Aplicações Hipermidia

Layer N. Object. Object. Layer N-1 Response flow. Object Request flow. Method call. Object. Layer 2. Object. Layer 1

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

Prof. Me. Sérgio Carlos Portari Júnior

Projeto de Arquitetura

Felipe de Andrade Batista. Microservice Architecture: A Lightweight Solution for Large Systems in the Future

Análise e modelação de sistemas. Classe T13: Passando da análise ao Desenho

Formação ASP.NET MVC com C#

Academia Programador Web

Modelagem/Arquitetura de Software

Vinci Pegoretti Amorim. Uma Arquitetura Flexível para Replicação de Bases Distribuídas Heterogêneas. Dissertação de Mestrado

ADLs. Em geral cada ADL oferece capacidades específicas

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

ARQUITETURA E DESENHO

Avaliação Experimental em Sistemas Autonômicos

Ambiente Educacional Interativo Móvel para atividade em sala de aula 1

Uma Visão Geral de Redes de Computadores

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Programming in C# Conteúdo Programático. Área de formação Plataforma e Tecnologias de Informação

Arquitetura de Software

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

Gustavo Robichez de Carvalho

Academia Programador Web

Ciclo de vida: fases x atividades

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

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

GT-FENDE. Carlos Raniery P. dos Santos Universidade Federal de Santa Maria

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

5 Processo de Reificação e de Desenvolvimento com ACCA

ARQUITETURA DE SOFTWARE III

Transcrição:

Relembrando... Arquitetura de software descrição de subsistemas e componentes de um sistema de software e dos relacionamentos entre eles. Projeto arquitetural processo de construção de uma arquitetura de software explícita ligação entre os processos de especificação e de projeto detalhado de software 2012 2

Projeto arquitetural Principais atividades Decomposição do sistema de software em subsistemas e componentes Identificação das interações entre eles Modelagem arquitetural 2012 3

Projeto arquitetural Problemas O projeto de arquiteturas de software específicas (ainda) é baseado em intuição e experiência Métodos pouco ajudam! Documentação (arquitetura e decisões) Modelagem arquitetural 2012 4

SWEBOK Projeto de software Tópicos da Área de Conhecimento (KA) 2012 Bacalá - Pós-ESOF - Design 5

Estrutura e arquitetura de SWEBOK software Conceitos e noções relacionados às diferentes formas de organizar e estruturar internamente o software Estruturas e viewpoints arquiteturais Estilos arquiteturais Padrões de projeto Frameworks e famílias de aplicações 2012 6

SWEBOK Conceitos Iniciais Arquitetura de software Descrição de subsistemas e componentes de um sistema de software e os relacionamentos entre eles. Padrão (pattern) a common solution to a common problem in a given context. (a ser refinada) Estilos arquiteturais (macroarchitectural patterns) Descrevem a organização geral de um software Padrões de projeto (microarchitectural patterns) Descrevem a organização de um software de modo mais detalhado 2012 7

2012 8

O que é arquitetura de software? Uma arquitetura de software deve conter: a definição dos elementos de projeto que compõe o software; a descrição das interações entre estes elementos; os padrões de composição dos elementos; e um conjunto de restrições sobre estes padrões. [Shaw 96] 2012 9

O que é arquitetura de software? A descrição da arquitetura de software é um passo intermediário entre a análise de requisitos e o projeto. Esta descrição consiste de elementos arquiteturais, as interações entre estes elementos, e as restrições sobre estes elementos e sobre as suas interações. [Perry 92] 2012 10

Vantagens de uma arquitetura explícita Comunicação entre stakeholders A arquitetura pode ser utilizada como o foco de discussão entre os interessados Reutilização em larga escala A arquitetura pode ser reutilizada em uma variedade de sistemas Análise do sistema A arquitetura pode ser utilizada para análise preliminar sobre a possibilidade do sistema atender seus requisitos não-funcionais 11

Atributos de arquitetura Performance Localizar operações de modo a minimizar a comunicação entre subsistemas Segurança Utilizar uma arquitetura em camadas com recursos críticos localizados em camadas internas Disponibilidade Incluir componentes redundantes na arquitetura Manutenção Utilizar componentes especializados e auto-contidos 12

Projeto arquitetural processo de construção de uma arquitetura de software explícita ligação entre os processos de especificação e de projeto detalhado de software 13

Projeto arquitetural Principais atividades Decomposição do sistema de software em subsistemas e componentes Identificação das interações e comunicação entre eles Modelagem arquitetural 14

Projeto arquitetural Problemas O projeto de arquiteturas de software específicas (ainda) é baseado em intuição e experiência Métodos pouco ajudam! Documentação (arquitetura e decisões) Modelagem arquitetural 15

Conceitos elementos de projeto interações padrões de composição conjunto de restrições [Shaw 96] componentes elementos arquiteturais interações restrições [Perry 92] conectores 2012 16

Arquitetura de Software Elementos [Shaw 96] componentes conectores configurações estilos 2012 17

Componente Um componente é uma unidade de computação ou de armazenamento de dados clientes, servidores databases filtros camadas ADTs Um componente pode ser simples ou composto 2012 18

Conector Um conector é um elemento que modela interações entre componentes regras que governam tais interações 2012 19

Conector interações simples chamadas de procedimentos acesso a variáveis compartilhadas interações complexas protocolos cliente-servidor protocolos de acesso a base de dados broadcast de eventos piped data streams 2012 20

Configuração Uma configuração arquitetural ou topologia é um grafo de componentes e conectores que descrevem a estrutura arquitetural aderência a regras de estilo Componentes compostos são configurações 21

Componentes e conectores 2012 22

Arquitetura de uma ferramenta CASE Editor de projeto Gerador de código Tradutor de projeto Repositório de projeto Editor de programa Analisador de projeto Gerador de relatório 23

Sistema de controle robotizado de embalagem Sistema de Visão Sistema de identificação de objetos Controlador de braço Controlador de garra Sistema de seleção de embalagem Sistema de embalagem Controlador de transportadora 24

Cliente-servidor Cliente 1 Cliente 2 Cliente 3 Cliente 4 Rede de banda larga Servidor de catálogo Servidor de vídeo Servidor de fotografias Servidor de hipertexto catálogo Arquivos de clipes de filmes Fotografias digitalizadas Web de hipertexto 25

Arquitetura baseada em eventos Subsistema 1 Subsistema 2 Subsistema 3 Subsistema 4 Manipulador de eventos e mensagens 26

Questões Como escolher subsistemas e componentes? Quais as suas propriedades? E responsabilidades? Como componentes interagem? Como incorporar e explicitar propriedades nãofuncionais? Como descrever uma arquitetura? 27

Estilo Arquitetural Padrões ou idiomas de projeto que guiam a organização de módulos e sub-sistemas em sistemas completos. (Shaw & Garlan) Abstração de características de composição e interação recorrentes de um conjunto de arquiteturas. (Taylor) Idiomas de projeto chave que permitem a exploração de padrões estruturais e evolutivos adequados e que facilitam a reutilização de componentes, conectores e processo. (Medvidovic) 2012 29

Estilo arquitetural Um estilo arquitetural define uma família de sistemas em termos de um padrão de organização estrutural. Um estilo arquitetural define Um vocabulário de tipos de componentes e conectores Um conjunto de restrições sobre como podem ser combinados Um ou mais modelos semânticos que especificam como as propriedades sistêmicas podem ser determinadas a partir das propriedades de suas partes 2012 30

Estilos arquiteturais O modelo de arquitetura de um sistema pode estar em conformidade com um modelo ou estilo genérico Um conhecimento destes modelos pode simplificar o problema de definição de arquiteturas de sistemas Sistemas de grande porte, no entanto, são heterogêneos e não seguem um único estilo 2012 31

Estilos Arquiteturais Shaw and Garlan, Software Architecture, 1996 Independent Components Communicating Processes Event-Driven Data Flow Batch Pipes & Filters Data Centric Repository Blackboard Call & Return Layered Object Oriented Main Program & Subroutine Virtual Machine Interpretter Rule-Based 2012 32

Estilos 33

Layered systems [Shaw&Garlan94] 34

Padrões Projetistas e arquitetos experientes procuram aderir a princípios e promover boas práticas de design. usam padrões para documentar e reutilizar experiência comprovadamente boa em novos projetos (de software) Abordagem orientada a problemas 36

O que é um padrão? Um padrão é uma regra envolvendo 3 partes, que expressa uma relação entre um certo contexto, um problema e uma solução. Contexto uma situação que dá margem a um problema Problema o problema recorrente que surge em tal contexto Solução uma solução comprovada para o problema. 37

Contexto Exemplos "your environment is a distributed and possibly heterogeneous system with independent cooperating components". "interactive applications with a flexible humancomputer interface". "building systems that support their own modification a priori". 38

Problema Exemplos... From a developer"s viewpoint, there should essentially be no difference between developing software for centralized systems and developing for distributed ones... User interfaces are especially prone to change requests. When you extend the functionality of an application, you must modify menus to access these new functions... Software systems evolve over time. They must be open to modifications in response to changing technology and requirements... 39

Solução Exemplos Introduce a broker component to achieve better decoupling of clients and servers... Use the Model-View-Controller (MVC). MVC was first introduced in the Smalltalk-80 programming environment. MVC divides an interactive application into the three areas: processing, output, and input... Make the software self-aware, and make selected aspects of its structure and behavior accessible for adaptation and change. This leads to an architecture that is split into two major parts: a meta level and a base level... 40

Forças As an element in the world, each pattern is a relationship between a certain context, a certain system of forces which occurs repeatedly in that context, and a certain spatial configuration which allows these forces to resolve themselves. Forças? O termo força denota qualquer aspecto do problema que deve ser considerado ao propor a solução. 41

Forças Exemplos Requisitos que a solução deve atender peer-to-peer inter-process communication must be efficient Restrições a serem consideradas inter-process communication must follow protocol XPTO Propriedades desejáveis changing software should be easy 42

Forças MVC O padrão Model-View-Controller especifica duas forças: Deve ser fácil modificar a interface do usuário, mas... O núcleo funcional do software não deve ser afetada por essa modificação. 43

Forças Forças discutem o problema a partir de diversos pontos-de-vista e ajudam a compreensão de detalhes Forças podem complementar ou contradizer umas às outras. Extensibilidade de um sistema versus minimização de seu código 44

Padrões arquiteturais Buschman, 1996 Padrões arquiteturais expressam esquemas fundamentais para a organização estrutural de sistemas de software Padrões arquiteturais oferecem um conjunto prédefinido de subsistemas, especificam suas responsabilidades e incluem regras e orientações (guidelines) para organizar os relacionamentos entre eles. 45

Padrões arquiteturais Buschman, 1996 From Mud to Structure Layers Pipes & Filters Blackborad Categorias Distributed Systems Broker Interactive Systems MVC PAC Adaptable Systems Microkernel Reflection 46

Categorias de Padrões do livro POSA Justificativa Organizar padrões em função da principal propriedade sistêmica global que incorporam Categorias From Mud to Structure padrões que ajudam a evitar um mar' de componentes. Distributed systems suporte à estruturação de sistemas com componentes distribuídos Interactive systems facilidade de adaptação de interface do usuário Adaptable systems suporte à extensão de aplicações e sua adaptação à tecnologia em evolução e à mudança em requisitos não funcionais 47

Client-server 2012 48

Client-server Multi-tier 2012 49

Broker 2012 50

Publish-Subscribe 2012 51

Peer-to-peer 2012 52

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

Referências Resources for Software Architects http://www.bredemeyer.com/index.html 2012 83