• Nenhum resultado encontrado

ARQUITETURA DE SOFTWARE 1

N/A
N/A
Protected

Academic year: 2021

Share "ARQUITETURA DE SOFTWARE 1"

Copied!
76
0
0

Texto

(1)
(2)

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.”

(3)

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]

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

Conceitos

• elementos de projeto • interações • padrões de composição • conjunto de restrições [Shaw 96] • elementos arquiteturais • interações • restrições [Perry 92] 9

componentes

conectores

(10)

Arquitetura de Software

• Elementos [Shaw 96] • componentes • conectores • configurações • estilos

(11)

Componente

• Unidade de computação ou de armazenamento de dados

• clientes, servidores • databases • filtros • camadas • ADTs • Simples ou composto 11

(12)

Conector

• Elemento que modela

• interações entre componentes

(13)

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

(14)

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

(15)

Componentes e conectores

(16)

Arquitetura de uma ferramenta

CASE

Tradutor de projeto Editor de projeto Gerador de código Analisador de projeto Gerador de relatório Editor de programa Repositório de projeto

(17)

Sistema de controle robotizado de

embalagem

17 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

(18)

Cliente-servidor

Rede de banda larga

Cliente 2 Cliente 4 Servidor de catálogo Servidor de vídeo Arquivos de Servidor de fotografias Fotografias Servidor de hipertexto Web de Cliente 3

Cliente 2 Cliente 3 Cliente 4 Cliente 1

(19)

Arquitetura baseada em eventos

19 Subsistema 1 Subsistema 2 Subsistema 3 Subsistema 4

(20)

Questões

• Como escolher subsistemas e componentes?

• Quais as suas propriedades? E responsabilidades? • Como componentes interagem?

• Como incorporar e explicitar propriedades não-funcionais? • Como descrever uma arquitetura?

(21)
(22)

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)

(23)

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

(24)

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

(25)

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

(26)
(27)

Layered systems [Shaw&Garlan94]

(28)

Padrões

Arquiteturais

POSA

(29)

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

(30)

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

(31)

Contexto

Exemplos

• "your environment is a distributed and possibly heterogeneous system with independent

cooperating components".

• "interactive applications with a flexible human-computer interface".

• "building systems that support their own modification a priori".

(32)

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

(33)

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”...

(34)

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.

(35)

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”

(36)

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.

(37)

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

(38)

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

(39)

Padrões arquiteturais

Buschman, 1996

• Distributed Systems • Broker • Interactive Systems • MVC • PAC • Adaptable Systems • Microkernel • Reflection • From Mud to Structure

• Layers

• Pipes & Filters • Blackborad

39 Categorias

(40)

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

(41)

Client-server

(42)
(43)

Broker

(44)
(45)

Peer-to-peer

(46)
(47)
(48)
(49)
(50)
(51)
(52)
(53)
(54)
(55)
(56)
(57)
(58)
(59)
(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
(68)
(69)
(70)
(71)
(72)
(73)
(74)
(75)
(76)

Referências

• Resources for Software Architects

Referências

Documentos relacionados

● Arquiteturas de software são especificadas através de uma ou mais de suas visões.. Três

• Roles são especificações (abstratas ou não) para as portas e

Paulo Borba e Fernando Castor Centro de Informática.. Universidade Federal

O objetivo principal desta pesquisa foi discutir e propor um processo para criação de uma DSSA. O trabalho teve ainda outros objetivos específicos: apresentar uma arquitetura de

O plágio é o ato de assinar ou apresentar uma obra intelectual de qualquer natureza, contendo partes de uma obra que pertença a outra pessoa sem colocar os créditos para o

controles e garantia das informações financeiras, podem utilizar suas principais práticas financeiras e experiência para apoiar a divulgação de dados de sustentabilidade e

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

No método criado por Jeff Sutherland e formalizado por Ken Schwaber (SCHWABER e SUTHERLAND, 2013), a equipe de desenvolvimento trabalha de forma unida e com o objetivo