Você está na página 1de 48

+

O Papel do
Arquiteto de Software
Prof. Me. Peter Jandl Junior
ADS | CC | SI | UniAnchieta
+ Objetivos & Justificativa

Arquitetura de Software

Estilos de Arquiteturas de
Software

Descrição de Arquiteturas

Papel do Arquiteto de
Roteiro
Software

Arquitetura de Software e os
currículos de Bacharelado e
Tecnologia

Considerações Finais

(C) 2016, PJandl, V WTI 25/10/2016


+
Objetivos e Justificativa
Sempre é bom deixar claro o que se pretende e o porquê

25/10/2016 (C) 2016, PJandl, V WTI 3


+ 4

Objetivo: Desenvolvimento
Profissional de Software
Software complexo,
profissional, de qualidade,
não pode ser desenvolvido
informalmente, como
artesanato.

Engenharia de software é
disciplina essencial para
estudar e dirigir o processo
completo de desenvolvimento
de software.

(C) 2016, PJandl, V WTI 25/10/2016


+ 5

Justificativa
Necessidade de Processos Formais de
Desenvolvimento de Software
Sistemas de Software desejados são cada vez
maiores e mais complexos.

Exigência de maior produtividade e lucratividade:


competição e demandas corporativas exigem redução dos
tempos e dos custos de desenvolvimento e manutenção.

Arquitetura de Software desempenha papel


fundamental na gerência da complexidade do
software a ser desenvolvido.

(C) 2016, PJandl, V WTI 25/10/2016


+
Processos de Software
A visão completa do software visto como produto, ao longo de todo
seu ciclo de vida, de sua concepção até sua obsolescência.

25/10/2016 (C) 2016, PJandl, V WTI 6


+ 7

Processos de Software
Processo unificado de desenvolvimento de software
em relação do ciclo de vida de produto

(C) 2016, PJandl, V WTI 25/10/2016


+ 8

Processos de Software
Desenvolvimento incremental
Concepção do
Sistema

Atribuição dos Definição da


Definição dos
Requisitos aos Arquitetura do
Requisitos Iniciais
Incrementos Sistema
n iterações

Desenvolvimento Validação do
de Incremento Incremento

Integração do Validação do Sistema


Incremento Sistema Final

(C) 2016, PJandl, V WTI 25/10/2016


+ 9

Processos de Software
Processo genérico

Especificação
de Requisitos

Projeto de
Projeto de Especificação Projeto de Projeto de Projeto de
Estrutura de
Arquitetura Abstrata Interface Componente Algoritmo
Dados

Especif. de
Arquitetura Especif. de Especif. de Especif. de Especif. de
Estrutura de
de Sistema Software Interface Componente Algoritmo
Dados

(C) 2016, PJandl, V WTI 25/10/2016


+
Arquitetura de Software
Algumas definições.

25/10/2016 (C) 2016, PJandl, V WTI 10


+ 11

Elementos Arquiteturais
As arquiteturas de software envolvem elementos
computacionais em sua definição.
São elementos arquiteturais de um sistema de
software:
bancos de dados
bibliotecas de software
clientes
componentes de software
filtros
módulos
servidores

(C) 2016, PJandl, V WTI 25/10/2016


+ 12

Arquitetura de Software::AS
Existem conceituações diferentes da AS e do seu
papel.
A arquitetura de um software define em termos
computacionais quais são seus elementos
arquiteturais e como ocorre a interação entre eles
[FIELDING, 2000].

Uma arquitetura de software envolve a descrição de


elementos arquiteturais dos quais os sistemas serão
construídos, interações entre esses elementos,
padrões que guiam suas composições e restrições
sobre estes padrões [PLEEGER, 1998].

(C) 2016, PJandl, V WTI 25/10/2016


+ 13

Arquitetura de Software::AS
Existem conceituações diferentes da AS e do seu
papel.
Existem diversos elementos arquiteturais, cujas
interações podem ocorrer através de chamadas de
procedimentos, acesso a variáveis, uso de
protocolos para acesso a clientes e servidores,
bancos de dados e outros eventos quaisquer
[GARLAN, 2000].

(C) 2016, PJandl, V WTI 25/10/2016


+ 14

Arquitetura de Software::AS

Norma IEEE 1471 define


arquitetura de software
como a organização
fundamental de um
sistema embutida em
seus componentes, nos
relacionamentos entre
estes e o ambiente, além
dos princípios que
orientam seu projeto e
evolução.

(C) 2016, PJandl, V WTI 25/10/2016


+ 15

Arquitetura de Software::AS
Esquema "4 + 1" do processo unificado.

(C) 2016, PJandl, V WTI 25/10/2016


+ 16

Arquitetura de Software::AS
Esquema "4 + 1" do processo unificado.

Arquitetura do software envolve conjunto de


decisões que definem a organização do sistema que
tem como objetivos:
Definir os elementos estruturais e suas interfaces
[determina composição do sistema].
Estabelecer o comportamento obtido pela colaboração dos
componentes sistêmicos
[determina interações].
Identificar subsistemas compostos do elementos estruturais
e comportamentais
[determina agregações].

(C) 2016, PJandl, V WTI 25/10/2016


+ 17

Arquitetura de Software::AS
É influenciada por fatores determinados pela
implementação.
Arquitetura dos computadores

Características dos Bancos de Dados

Linguagem de Programação

Bibliotecas/Frameworks

Características do ambiente gráfico e da interface desejada

Sistemas Operacionais

Protocolos de Rede

Integração com Sistemas Legados

Requisitos Não Funcionais (performance, portabilidade etc.)

(C) 2016, PJandl, V WTI 25/10/2016


+ Arquitetura de Software:
é um meio de
comunicação.
representa as decisões
Funções da iniciais de um projeto.
Arquitetura de
Software é a base das estratégias
O papel e valor da arquitetura de
software para uma organização.
de divisão de trabalho.
é um meio de avaliar os
atributos de qualidade.
é uma medida de reuso.

(C) 2016, PJandl, V WTI 25/10/2016


+
Estilos de Arquiteturas de
Software
Princípios e regras gerais aplicadas a definição de arquiteturas de
software.

25/10/2016 (C) 2016, PJandl, V WTI 19


+ 20

Estilos de Arquiteturas de Software

Um estilo arquitetônico ou um padrão de arquitetura


é um conjunto de regras de projeto para identificar
tipos de componentes, seu relacionamento e
também restrições existentes na construção de um
sistema e seus subsistemas.

(C) 2016, PJandl, V WTI 25/10/2016


+ 21

Estilos de Arquiteturas de Software

ESTILO PADRÃO
Coleção de decisões Conjunto de decisões
de arquitetura restritas de arquitetura que são
que são aplicadas em aplicáveis em
um contexto problemas recorrentes
determinado e,
portanto, específicas de projeto
para um software
igualmente
determinado.
Termo mais comum.

(C) 2016, PJandl, V WTI 25/10/2016


+ 22

Estilos de Arquiteturas de Software


Orientada a:
Objetos
Eventos
Serviços (SOA)
Organizada em Camadas
Cliente-Servidor
Peer-to-Peer
Mestre-Escravo
Pipe-Filter
Broker
Model-View-Control::MVC
Microkernel
(C) 2016, PJandl, V WTI 25/10/2016
+ 23

AS Orientada a Objetos

Baseada no uso de conjuntos


particulares de objetos que
interagem entre si para alcançar
os objetivos do sistema.

Os objetos são oriundos de


classes, as quais tem
características e funcionalidades
específicas.

A construção das classes e a


interação entre seus objetos deve
procurar a maior coesão e o menor
acoplamento possíveis.

(C) 2016, PJandl, V WTI 25/10/2016


+ 24

AS Organizada em Camadas

Cada camada (layer) provê


conjunto de funcionalidades
específicas.

A comunicação só pode
envolver camadas vizinhas
imediatas.

Camadas podem ser:


substituídas, desde que
mantidas suas interfaces;
distribuídas local ou
remotamente.

(C) 2016, PJandl, V WTI 25/10/2016


+ 25

AS Pipe-Filter
Composta de pipes (conectores) e filters (filtros).

Útil para sistemas que envolvem o


processamento/transformação sequencial de dados.

Por meio dos conectores, os filtros podem ser combinados de


inúmeras maneiras, adequando-se a diferentes propósitos.

Não é apropriado para aplicações interativas.

(C) 2016, PJandl, V WTI 25/10/2016


+ 26

AS Broker

Arquitetura onde clientes e


servidores interagem
indiretamente por meio de
um intermediário comum
(broker) que pode prover
serviços adicionais.

Oferece como vantagens a


grande independência e
interoperabilidade entre
elementos do cliente e do
servidor. Mas tem como
desvantagens a maior
complexidade e questões
de desempenho.

(C) 2016, PJandl, V WTI 25/10/2016


+ 27

AS Model-View-Control

Model define modelo de dados


da aplicação.

View realiza apresentação


visual (interface).

Control determina o
comportamento (semântica)
da aplicação gerenciando
interação com usuário.

Muito apropriado para


sistemas interativos.

(C) 2016, PJandl, V WTI 25/10/2016


+ 28

AS Orientada a Serviços

Decomposição das
funcionalidades da
aplicação em serviços
simples, isolados por meio
de interfaces bem definidas.

Um barramento de serviços
conecta os serviços e
disponibiliza interfaces e
contratos por meio de web
services.

Criação de aplicações por


meio da composição de
serviços.

(C) 2016, PJandl, V WTI 25/10/2016


+
Descrição de Arquiteturas
Como sistematizar e documentar a descrição de arquiteturas
computacionais.

25/10/2016 (C) 2016, PJandl, V WTI 29


+ 30

Descrição de
Arquiteturas de Software
Podem empregar
Architecture Description
Languages (ADL).

Uma ADL ou AL é uma forma


de expressão para a descrição
de uma arquitetura
[ISO/IEC/IEEE42010].

Pode ser uma linguagem


formal ou uma combinação de
outros meios que permita
especificar conceitos de
arquitetura por meio de
diferentes pontos de vista.
(C) 2016, PJandl, V WTI 25/10/2016
+ 31

Descrição de
Arquiteturas de Software
Uma ADL deve permitir a expressão de
características estruturais e comportamentais dos
sistemas.

Também devem possibilitar o registro de fatores de


implementação e também o reuso/reutilização.

Devem oferecer primitivas de composição de


sistemas, além de elementos básicos como
componentes, conectores e configurações.

(C) 2016, PJandl, V WTI 25/10/2016


+ 32

Linguagens de Descrição de
Arquiteturas de Software
ACME (Architectural Description Koala (Consumer electronics domain-
Language - Carnegie Mellon University) specific design)

ADAGE (Avionics Domain Application Meta-H


Generative Environment)

Rapide
ADLARS

ADML (XML based AL) SADL (Structural Architecture


Description Language)
AESOP
UML (Unified Modeling Language)
C2
Weaves (concurrent communicating
Darwin components modeling)

EAADL (Extended Architecture Wright


Analysis Description Language)

(C) 2016, PJandl, V WTI 25/10/2016


+ 33

Exemplo ADL::
Modelo AADL

(C) 2016, PJandl, V WTI 25/10/2016


+ 34

Exemplo ADL::
Modelo Darwin

(C) 2016, PJandl, V WTI 25/10/2016


+ 35

Exemplo ADL::
Modelo xADL/ArchStudio

(C) 2016, PJandl, V WTI 25/10/2016


+
Papel do Arquiteto de
Software
A importância e o valor deste profissional.

25/10/2016 (C) 2016, PJandl, V WTI 36


+ 37

Papel do Arquiteto de Software


Requer conhecimento técnico profundo.

Dos requisitos das aplicações.


Das tecnologias disponíveis para apoio a
construção da arquitetura e do próprio
software.
Dos processos de software adequados ao
desenvolvimento das aplicações.

(C) 2016, PJandl, V WTI 25/10/2016


+ 38

Papel do Arquiteto de Software


Além do conhecimento técnico:

Deve exercer papel de liderança.


Deve possuir visão holística.
Deve ter habilidade para lidar com pessoas,
solucionar conflitos e gerenciar mudanças.
Deve saber ouvir,
ser comunicativo, coerente e flexível.

(C) 2016, PJandl, V WTI 25/10/2016


+ Arquitetura de Software
e os currículos de
Bacharelado e Tecnologia

25/10/2016 (C) 2016, PJandl, V WTI 39


+ 40

Arquitetura de Software na Graduação


Como os cursos de graduação tradicionais lidam com
a questão da Arquitetura de Software
Cursos tradicionais
de bacharelado (em Ciência da Computação ou Sistemas de
Informação)
e de tecnologia (em Análise e Desenvolvimento de Sistemas)

não contêm disciplinas diretamente voltadas para o estudo de


arquiteturas de software porque:
prioriza apresentar e discutir os conhecimentos essenciais que
formam a base técnica deste profissionais;
além do que o estudante ainda tem pouca experiência profissional.

(C) 2016, PJandl, V WTI 25/10/2016


+ 41

Arquitetura de Software na Graduação


Como os cursos de graduação tradicionais lidam com
a questão da Arquitetura de Software
Ao mesmo tempo, tais cursos abordam, invariavelmente,
vários dos conhecimentos requeridos para a formação de um
arquiteto de software:
Engenharia de Software
Linguagens e Programação de Computadores
Banco de Dados
Redes de Computadores
Projeto de Interfaces
Sistemas Operacionais
Arquitetura e Organização de Computadores
Integração de Sistemas

(C) 2016, PJandl, V WTI 25/10/2016


+
Considerações Finais

25/10/2016 (C) 2016, PJandl, V WTI 42


+ 43

Considerações Finais
Sobre as Arquiteturas de Software

Arquiteturas Arquiteturas Arquiteturas


baseadas em baseadas em baseadas em
Componentes Serviços Modelos

(C) 2016, PJandl, V WTI 25/10/2016


+ 44

Considerações Finais
Sobre as Arquiteturas de Software

Existem muitos estilos e padrões, que devem ser


conhecidos e estudados antes que sejam propostos e
adotados como soluções.
A arquitetura do software influencia o resultado de todo o
ciclo de vida do produto, não apenas seu
desenvolvimento.
Podem ser formalizadas por meio de ADL
(Architecture Description Languages).
Ênfase atual nas arquiteturas organizadas em camadas,
ou orientadas a serviços e baseadas em microkernel.
Tendência: disponibilização de serviços por meio de Cloud
Computing.
(C) 2016, PJandl, V WTI 25/10/2016
+ 45

Considerações Finais
Sobre os Arquitetos de Software

Requer muito estudo, conhecimento e


experiência.
O papel do arquiteto de software tem influencia
em todo o ciclo de vida do produto, não
apenas em sua concepção.
Carreira de grande valor agregado e enorme
potencial de remuneração.

(C) 2016, PJandl, V WTI 25/10/2016


+

Prof. Me.
Peter Jandl Jr
Coordenador Graduação
ADS, CC e SI
UniAnchieta, Jundiaí.
Coordenador Pós-Graduação
TACS e TDS
SENAC, Sorocaba.
Docente ADS
FATEC, Jundiaí.

(C) 2016, PJandl, V WTI 25/10/2016


+ 47

Referências Bibliográficas
BRAUDE, E. Projeto de software: da programação à arquitetura: uma
abordagem baseada em Java. Porto Alegre: Bookman, 2005. 619 p.

CLEMENTS, P., BACHMANN, F., BASS, L., et al.. Documenting Software


Architectures: Views and Beyond. New York: Addison-Wesley, 2002.

FOWLER, M. Padrões de arquitetura de aplicações corporativas. Porto Alegre:


Bookman, 2008, 493p.

GARLAN, D..Software Architecture: a Roadmap. In: International Conference


on Software engineering: Future of SE Track, pp. 91-101, Limerick, Ireland,
2000.

GASEVIC, D. Model Driven Architecture and Ontology Development. New York


(NY): Springer, 2006. 311 p.

KRUCHTEN, P., 1995, The 4+1 View Model of Architecture, IEEE Software, v.
12, n. 6 (November), pp. 42-50.

MENDES, A.. Arquitetura de Software: desenvolvimento orientado a


arquitetura. Rio de Janeiro: Campus. 2002.
(C) 2016, PJandl, V WTI 25/10/2016
+ 48

Referências Bibliográficas
RICHARDS, M. Software Architecture Patterns. Sebastopol: O'Reilly, 2015.

SHAW, M., GARLAN, D.. Software Architecture: Perspectives on an Emerging


Discipline, New Jersey: Prentice-Hall,1996.

SILVEIRA, P. et al. Introdução à Arquitetura e Design de Software. Rio de


Janeiro: Campus, 2012.

Internet:

http://www.sei.cmu.edu/architecture/

http://www.theenterprisearchitect.eu/blog/2008/01/16/mda-model-driven-
architecture-basic-concepts/

http://www.omg.org/mda/

http://www.oracle.com/bea/index.html

http://ftacademy.org/

(C) 2016, PJandl, V WTI 25/10/2016

Você também pode gostar