Upload
peter-jandl-junior
View
498
Download
1
Embed Size (px)
Citation preview
+
Roteiro
Objetivos & Justificativa
Arquitetura de Software
Estilos de Arquiteturas de Software
Descrição de Arquiteturas
Papel do Arquiteto de Software
Arquitetura de Software e os currículos de Bacharelado e Tecnologia
Considerações Finais
30/10/2016(C) 2016, PJandl, V WTI
+
Objetivos e JustificativaSempre é bom deixar claro o que se pretende e o porquê
30/10/2016 (C) 2016, PJandl, V WTI 3
+Objetivo: Desenvolvimento Profissional de Software
Software complexo, profissional, de qualidade, não pode ser desenvolvido informalmente, como artesanato.
30/10/2016(C) 2016, PJandl, V WTI
4
Engenharia de software é disciplina essencial para estudar e dirigir o processo completo de desenvolvimento de software.
+Justificativa
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.
30/10/2016(C) 2016, PJandl, V WTI
5
Necessidade de Processos Formais de Desenvolvimento de Software
+
Processos de SoftwareA visão completa do software visto como produto, ao longo de todo seu ciclo de vida, de sua concepção até sua obsolescência.
30/10/2016 (C) 2016, PJandl, V WTI 6
+Processos de SoftwareProcesso unificado de desenvolvimento de software em relação do ciclo de vida de produto
30/10/2016(C) 2016, PJandl, V WTI
7
+Processos de Software
30/10/2016(C) 2016, PJandl, V WTI
8
Desenvolvimento incremental
Definição dos Definição dos Requisitos IniciaisRequisitos Iniciais
Atribuição dos Atribuição dos Requisitos aos Requisitos aos IncrementosIncrementos
Definição da Definição da Arquitetura do Arquitetura do
SistemaSistema
Desenvolvimento Desenvolvimento de Incrementode Incremento
Validação do Validação do IncrementoIncremento
Integração do Integração do IncrementoIncremento
Validação do Validação do SistemaSistema
SistemaSistemaFinalFinal
Concepção do Concepção do SistemaSistema
n iterações
+Processos de Software
30/10/2016(C) 2016, PJandl, V WTI
9
Processo genérico
Arquitetura de Sistema
Especif. de Software
Especif. de Interface
Especif. de Componente
Especif. de Estrutura de
Dados
Especif. de Algoritmo
Projeto de Arquitetura
Especificação Abstrata
Projeto de Interface
Projeto de Componente
Projeto de Estrutura de
Dados
Projeto de Algoritmo
Especificação de Requisitos
+Elementos Arquiteturais
São elementos arquiteturais de um sistema de software:
bancos de dados
bibliotecas de software
clientes
componentes de software
filtros
módulos
servidores
30/10/2016(C) 2016, PJandl, V WTI
11
As arquiteturas de software envolvem elementos computacionais em sua definição.
+Arquitetura de Software::AS
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].
30/10/2016(C) 2016, PJandl, V WTI
12
Existem conceituações diferentes da AS e do seu papel.
+Arquitetura de Software::AS
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].
30/10/2016(C) 2016, PJandl, V WTI
13
Existem conceituações diferentes da AS e do seu papel.
+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.
30/10/2016(C) 2016, PJandl, V WTI
14
+Arquitetura de Software::AS
30/10/2016(C) 2016, PJandl, V WTI
15
Esquema "4 + 1" do processo unificado.
+Arquitetura de Software::AS
30/10/2016(C) 2016, PJandl, V WTI
16
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].
+Arquitetura de Software::AS
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.)
30/10/2016(C) 2016, PJandl, V WTI
17
É influenciada por fatores determinados pela implementação.
+
Funções daArquitetura de Software
Arquitetura de Software:
é um meio de
comunicação.
representa as decisões
iniciais de um projeto.
é a base das estratégias
de divisão de trabalho.
é um meio de avaliar os
atributos de qualidade.
é uma medida de reuso.
O papel e valor da arquitetura de software para uma organização.
30/10/2016(C) 2016, PJandl, V WTI
+Estilos de Arquiteturas de SoftwarePrincípios e regras gerais aplicadas a definição de arquiteturas de software.
30/10/2016 (C) 2016, PJandl, V WTI 19
+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.
30/10/2016(C) 2016, PJandl, V WTI
20
+Estilos de Arquiteturas de Software
Coleção de decisões de arquitetura restritas que são aplicadas em um contexto determinado e, portanto, específicas para um software igualmente determinado.
Termo mais comum.
Conjunto de decisões de arquitetura que são aplicáveis em problemas recorrentes de projeto
30/10/2016(C) 2016, PJandl, V WTI
21
ESTILO PADRÃO
+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
Microkernel30/10/2016(C) 2016, PJandl, V WTI
22
+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.
30/10/2016(C) 2016, PJandl, V WTI
23
+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.
30/10/2016(C) 2016, PJandl, V WTI
24
+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.
30/10/2016(C) 2016, PJandl, V WTI
25
+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.
30/10/2016(C) 2016, PJandl, V WTI
26
+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.
30/10/2016(C) 2016, PJandl, V WTI
27
+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çosconecta 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.
30/10/2016(C) 2016, PJandl, V WTI
28
+
Descrição de ArquiteturasComo sistematizar e documentar a descrição de arquiteturas computacionais.
30/10/2016 (C) 2016, PJandl, V WTI 29
+Descrição deArquiteturas de Software
30/10/2016(C) 2016, PJandl, V WTI
30
Podem empregar Architecture DescriptionLanguages (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.
+Descrição deArquiteturas 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.
30/10/2016(C) 2016, PJandl, V WTI
31
+Linguagens de Descrição de Arquiteturas de Software ACME (Architectural Description
Language - Carnegie Mellon University)
ADAGE (Avionics Domain Application
Generative Environment)
ADLARS
ADML (XML based AL)
AESOP
C2
Darwin
EAADL (Extended ArchitectureAnalysis Description Language)
Koala (Consumer electronics domain-
specific design)
Meta-H
Rapide
SADL (Structural Architecture
Description Language)
UML (Unified Modeling Language)
Weaves (concurrent communicating
components modeling)
Wright
30/10/2016(C) 2016, PJandl, V WTI
32
+Papel do Arquiteto de SoftwareA importância e o valor deste profissional.
30/10/2016 (C) 2016, PJandl, V WTI 36
+Papel do Arquiteto de Software
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.
30/10/2016(C) 2016, PJandl, V WTI
37
Requer conhecimento técnico profundo.
+Papel do Arquiteto de Software
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.
30/10/2016(C) 2016, PJandl, V WTI
38
Além do conhecimento técnico:
+ Arquitetura de Softwaree os currículos deBacharelado e Tecnologia
30/10/2016 (C) 2016, PJandl, V WTI 39
+Arquitetura de Software na Graduação
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.
30/10/2016(C) 2016, PJandl, V WTI
40
Como os cursos de graduação tradicionais lidam com a questão da Arquitetura de Software
+Arquitetura de Software na Graduação
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
30/10/2016(C) 2016, PJandl, V WTI
41
Como os cursos de graduação tradicionais lidam com a questão da Arquitetura de Software
+Considerações Finais
Arquiteturas baseadas em Componentes
Arquiteturas baseadas em Componentes
Arquiteturas baseadas em
Serviços
Arquiteturas baseadas em
Serviços
Arquiteturas baseadas em
Modelos
Arquiteturas baseadas em
Modelos
30/10/2016(C) 2016, PJandl, V WTI
43
Sobre as Arquiteturas de Software
+Considerações Finais
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 CloudComputing.
30/10/2016(C) 2016, PJandl, V WTI
44
Sobre as Arquiteturas de Software
+Considerações Finais
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.
30/10/2016(C) 2016, PJandl, V WTI
45
Sobre os Arquitetos de Software
+
Prof. Me.Peter Jandl Jr Coordenador Graduação
ADS, CC e SIUniAnchieta, Jundiaí.
Coordenador Pós-GraduaçãoTACS e TDSSENAC, Sorocaba.
Docente ADSFATEC, Jundiaí.
30/10/2016(C) 2016, PJandl, V WTI
+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.
30/10/2016(C) 2016, PJandl, V WTI
47
+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/
30/10/2016(C) 2016, PJandl, V WTI
48