Buscar

Aulas Arquiteturas Sistemas (naocompleto)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ARQUITETURA DE SISTEMAS
Prof. Alessandro Larangeiras
CONTEÚDO
1. ARQUITETURA DE SISTEMAS
1.1 Componentes de sistemas
1.1.1 Fundamentos e objetivos
1.1.2 Uso de componentes
1.2 Definição da arquitetura de sistemas e componentes
1.3 Camadas da arquitetura de sistemas
1.4 Arquitetura de componentes
1.5 Modelagem
1.5.1 Níveis de modelo
1.5.2 Categorias de modelos
2 / 67
CONTEÚDO (cont.)
2. PROCESSO DE DESENVOLVIMENTO
2.1 Gerenciamento de processos
2.2 Objetivos das metodologias de desenvolvimento e gestão
2.3 Especificação de componentes
2.4 Interação entre componentes
2.5 Aplicação da UML
2.5.1 Uso da UML na arquitetura de sistemas
2.5.2 Técnicas de modelagem
2.5.3 Tipos de modelo
2.5.4 Especificação de interface
3. REQUISITOS
3.1 Definição de requisitos
3.2 Tipos de requisitos
3.3 Técnicas de levantamento de requisitos
3.4 Validação de requisitos
3.5 Prototipação
3.6 Modelagem conceitual de negócios e de sistemas
3 / 67
CONTEÚDO (cont.)
4. COMPONENTIZAÇÃO
4.1 Identificação dos componentes
4.2 Modelagem dos artefatos do sistema
4.2.1 Modelo de negócios
4.2.2 Interface de negócios
4.2.3 Interface de sistemas
4.3 Interação de componentes
4.3.1 Definição das operações de negócio
4.3.2 Refinamento dos artefatos do sistema
4.3.3 Divisão em camadas
4.3.4 Rational Unified Process (RUP)
4.3.5 Model-View-Controller (MVC)
4.3.6 Arquitetura Orientada a Serviços (AOS)
4.4 Especificação de componentes
4.4.1 Tipos de componentes
4.4.2 Metodologias e padrões
4.4.3 Implementação, empacotamento e distribuição
4 / 67
CONTEÚDO (cont.)
5. PROVISIONAMENTO E CONSTRUÇÃO
5.1 Framework CCM (Corba Component Model)
5.2 Especificação vs. construção
5.3 Interfaces
5.3.1 Propriedades
5.3.2 Herança e suporte
5.4 Interação com sistemas existentes e legados
5.5 Construção
5 / 67
CONTEÚDO (cont.)
6. TÓPICOS EM ARQUITETURA DE SISTEMAS
6.1 Arquitetura Monolítica
6.2 Arquitetura de Microsserviços
6.2.1 Monolítica vs. Microsserviços
6.2.2 Componentização por serviços
6.2.3 Descentralização
6.2.4 Desafios da implementação
6.3 Virtualização
6.3.1 Infraestrutura como serviço
6.3.2 Tecnologia de virtualização
6.3.3 Software de virtualização
6.4 Containers
6.4.1 O que são textitcontainers
6.4.2 Containers vs. máquinas virtuais
6.4.3 Os containers Docker
6.4.4 Criação e gerenciamento de imagens
6 / 67
BIBLIOGRAFIA PRINCIPAL
GALLOTTI, Giocondo M. A. (Org.). Arquitetura de
Software. São Paulo: Pearson, 2017.
SOMMERVILLE, Ian. Engenharia de Software. 10ed. Rio
de Janeiro: Pearson, 2019.
7 / 67
OUTRAS FONTES
BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. Software
Architecture in Practice. 3rd ed. Boston: Addison-Wesley,
2013.
URL: <https://www.sei.cmu.edu/>.
ISO/IEC/IEEE 42010/2011: Systems and Software
Engineering – Architecture Description, recomendações
para descrição da arquitetura de sistemas intensivos de
software.
URL:
<http://www.iso-architecture.org/ieee-1471/index.html>.
8 / 67
https://www.sei.cmu.edu/
http://www.iso-architecture.org/ieee-1471/index.html
CONTEÚDO
1. ARQUITETURA DE SISTEMAS
1.1 Componentes de sistemas
1.1.1 Fundamentos e objetivos
1.1.2 Uso de componentes
1.2 Definição da arquitetura de sistemas e componentes
1.3 Camadas da arquitetura de sistemas
1.4 Arquitetura de componentes
1.5 Modelagem
1.5.1 Níveis de modelo
1.5.2 Categorias de modelos
9 / 67
1.1 CONCEITOS PRELIMINARES
10 / 67
CONCEITOS
«Algoritmo é a especificação da seqüência ordenada de
passos que deve ser seguida para a solução de um
problema ou para a realização de uma tarefa, garantindo
a sua repetibilidade.» (MALAQUIAS, 2011, slide 3).
11 / 67
CONCEITOS (cont.)
«[...] [Programa de computador é] a expressão de um conjunto
organizado de instruções em linguagem [...] codificada
[(algoritmos)], contida em suporte físico de qualquer natureza, de
emprego necessário em máquinas automáticas de tratamento da
informação, dispositivos, instrumentos ou equipamentos
periféricos [...], para fazê-los funcionar de modo e para fins
determinados.» (BRASIL, 1998, grifo nosso).
12 / 67
CONCEITOS (cont.)
Unidade de programa é
um segmento do
programa, contendo
algoritmos
inter-relacionados (BRASIL,
1998; MALAQUIAS, 2011, slide 3;
SOMMERVILLE, 2007, p. 67).
Unidade de programa:
classe Java (direita).
13 / 67
CONCEITOS (cont.)
Software é a parte lógica de um sistema, na forma de um
programa de computador e, eventualmente, de sua
documentação integrante e dos dados de configuração
necessários para o seu correto funcionamento (FRIEDMAN; TRAN;
GODDARD, 1992, p. 1; SALEH, 2009, p. 2; SOFTWARE, 2020; SOMMERVILLE, 2007, p.
5).
14 / 67
CONCEITOS (cont.)
«Sistema é um conjunto interconectado de máquinas, aplicações
[(softwares)] e recursos de rede [...].» (MCGOVERN et al., 2004, p. 1,
tradução nossa).
Item de sistema é um segmento do sistema, na forma de um
software, um hardware ou um recurso de rede (GONZÁLES-PÉREZ;
HENDERSON-SELLERS, 2006, p. 137-138).
«[Sistemas intensivos de software (software-intensive systems)
são] sistemas cujo software interage com outros softwares,
sistemas, dispositivos, sensores e pessoas [...].» (WIRSING; HOLZL,
2006, p. 2, tradução nossa).
15 / 67
CONCEITOS (cont.)
Sistema.
16 / 67
CONCEITOS (cont.)
Design Patterns (Padrões de Projeto) são estratégias
convencionais para organizar ALGORITMOS do sistema
(composição).
Architecture Patterns (Padrões Arquiteturais) e Architecture
Styles (Estilos Arquiteturais) são estratégias convencionais para
organizar INFRAESTRUTURAS do sistema (distribuição).
17 / 67
CONCEITOS (cont.)
Algoritmos (acima).
Unidades de programa distribuídas
em uma infraestrutura (direita).
18 / 67
MAPA CONCEITUAL
Conceitos de Engenharia de Software.
19 / 67
1.2 ARQUITETURA DE SISTEMAS E COMPONENTES
20 / 67
ARQUITETURA DE SOFTWARE
Arquitetura de software (software architecture) é a constituição
de um sistema, na forma de seus elementos e contextos, e os
princípios que guiam o seu projeto, construção e evolução (IEEE
1471, 2000 apud EELES; CRIPPS, 2010, p. 9).
21 / 67
ARQUITETURA DE SOFTWARE (cont.)
«[...] Todo sistema de computação com software tem uma arquitetura de
software, porque todo sistema pode conter elementos e as relações
entre eles. No caso mais comum, um sistema é em si um único
elemento – desinteressante e provavelmente não muito útil, mas, ainda
assim, uma arquitetura. Apesar de todo sistema ter uma arquitetura, isto
não indica necessariamente que seja conhecida por alguém. É possível
que todos aqueles que projetaram o sistema estejam longe, a
documentação tenha desaparecido (ou nunca sido produzida), o
código-fonte tenha se perdido (ou nunca sido entregue) e só nos reste
um código binário executável. Isto revela a diferença entre a arquitetura
de um sistema e a representação desta arquitetura. Infelizmente, uma
arquitetura pode existir independentemente da sua descrição ou
especificação, o que aumenta a importância da documentação
arquitetural [...] e da reconstituição arquitetural [(architecture
reconstruction)] [...].» (BASS; CLEMENTS; KAZMAN, 2003, p. 21, tradução nossa).
22 / 67
ARQUITETURA VS. DESIGN
«A arquitetura de software de um programa ou sistema de computação é
a estrutura ou estruturas do sistema, que incluem os elementos de
software, as propriedades externamente visíveis destes elementos e os
relacionamentos entre ambos. [...] Em quase todos os sistemas
modernos, os elementos interagem entre si por meio de interfaces, que
particionam os detalhes de um elemento em partes públicas e privadas.
A arquitetura está preocupada com o lado público desta divisão; os
detalhes privados – aqueles unicamente relacionados à implementação
interna – não são arquiteturais.» (BASS; CLEMENTS; KAZMAN, 2003, p. 3/21,
tradução nossa).
«Toda arquitetura é design, mas nem todo design é arquitetura. A
arquitetura se concentra nas decisões de design significantes, aquelas
que são estrutural e comportamentalmente importantes e têm impacto
duradouro no desempenho, confiabilidade, custo e resiliência do
sistema. A arquiteturaenvolve o "como"e o "por que", não só "o que".»
(BOOCH, 2006, slide 31, tradução nossa).
23 / 67
ARQUITETURA VS. DESIGN (cont.)
«Os requisitos se preocupam com a determinação da
informação, do processamento e as características de ambos,
necessários ao usuário do sistema. A arquitetura se preocupa
com a seleção dos elementos arquiteturais, suas interações e as
restrições de ambos, necessárias à produção de uma prescrição
que satisfaça os requisitos e sirva de base para o design. O
design se preocupa com a modularização e o detalhamento das
interfaces dos elementos, seus algoritmos e procedimentos, e os
tipos de dados necessários ao suporte da arquitetura e à
satisfação dos requisitos. [...] A implementação se preocupa com
as representações dos algoritmos e tipos de dados que satisfazem
o design, a arquitetura e os requisitos.» (PERRY; WOLF, 1992, p. 43,
tradução e grifo nossos).
24 / 67
ARQUITETURA DE SISTEMA
«Sistema é um conjunto interconectado de máquinas, aplicações
e recursos de rede. A Arquitetura de sistemas [(systems
architecture)] unifica esse conjunto, impondo estrutura ao
sistema. E o mais importante, esta estrutura alinha as
funcionalidades do sistema às metas do negócio.» (MCGOVERN et al.,
2004, p. 1, tradução e grifo nossos).
25 / 67
ELEMENTOS ARQUITETURAIS
Elementos (elements ou architectural elements) são entidades
ou peças arquiteturalmente significantes, empregadas na
construção de sistemas (ROZANSKI; WOODS, 2012, p. 12/20).
26 / 67
ELEMENTOS ARQUITETURAIS (cont.)
Os elementos arquiteturais se dividem em três categorias:
i. elementos de software: proveem o necessário para o
processamento dos elementos de dados (PERRY; WOLF, 1992, p.
44). Por exemplo, classes, objetos, pacotes, subsistemas etc.
(BARBOSA, 2009, p. 90; BASS; CLEMENTS; KAZMAN, 2013, p. 332/335; OBJECT
MANAGEMENT GROUP, 2011, p. 704; ROZANSKI; WOODS, 2012, p. 12).
27 / 67
ELEMENTOS ARQUITETURAIS (cont.)
ii. elementos de dados: contêm a informação que é usada
(PERRY; WOLF, 1992, p. 44). Por exemplo, classes de dados,
repositórios de dados, arquivos de dados etc. (BARBOSA, 2009, p.
90; BASS; CLEMENTS; KAZMAN, 2013, p. 335).
iii. elementos de hardware: conectam os elementos de
software e de dados entre si e ao ambiente físico (GUBBI et al.,
2013, p. 1645; PERRY; WOLF, 1992, p. 44). Por exemplo, clientes,
servidores, periféricos, dispositivos de rede etc. (BARBOSA, 2009,
p. 90; BASS; CLEMENTS; KAZMAN, 2013, p. 335; ROZANSKI; WOODS, 2012, p.
13).
28 / 67
MÓDULOS E COMPONENTES E CONECTORES
Elementos arquiteturais manifestam-se como estruturas estáticas
(static structures) ou estruturas dinâmicas (dynamic structures)
(ROZANSKI; WOODS, 2012, p. 12/20).
As estruturas estáticas, ou módulos (modules), são os
elementos arquiteturais (de software, de dados e de hardware),
bem como seus atributos e relacionamentos, examinados fixos no
tempo, inertes, em design time (LATTANZE, 2008, p. 51; QIAN; GERO, 1996,
p. 293; ROZANSKI; WOODS, 2012, p. 12).
As estruturas dinâmicas, ou componentes e conectores
(components-and-connectors), são os elementos arquiteturais
(de software, de dados e de hardware), seus atributos e
relacionamentos, examinados móveis no tempo, ativos, em
compile time e/ou runtime (LATTANZE, 2008, p. 52; QIAN; GERO, 1996, p.
293; ROZANSKI; WOODS, 2012, p. 13).
29 / 67
MÓDULOS E COMPONENTES E CONECTORES (cont.)
Módulos arquiteturalmente significantes são retratados em UML
por meio de diagramas de pacotes.
Fonte: Adaptado de MERSON; SAINI, 2019.
30 / 67
MÓDULOS E COMPONENTES E CONECTORES (cont.)
Componentes e conectores são retratados em UML por meio de
diagramas de componentes.
31 / 67
1.3 CAMADAS DA ARQUITETURA DE SISTEMAS
32 / 67
ESTILOS E PADRÕES ARQUITETURAIS
Estilo arquitetural (architectural style) é um modelo
convencional que caracteriza um perfil de arquitetura de software,
DESCREVENDO sua organização estrutural (topologia [topology])
e seu contexto de aplicação (AVGERIOU; ZDUN, 2005, p. 2; CLEMENTS et al.,
2011, p. 33-34/36; EELES; CRIPPS, 2010, p. 95; MEHTA; MEDVIDOVIC, 2003, p. 347;
MONROE et al., 1997, p. 45; ROZANSKI; WOODS, 2012, p. 164/169).
Padrão arquitetural (architectural pattern) é um modelo
convencional que caracteriza um perfil de arquitetura de software,
PRESCREVENDO sua organização estrutural (topologia
[topology]) e seu contexto de aplicação (AVGERIOU; ZDUN, 2005, p. 2;
CLEMENTS et al., 2011, p. 33-34). Cada padrão arquitetural instrui
minuciosa e imperativamente o processo de design, de modo a
garantir a repetibilidade da solução (CLEMENTS et al., 2011, p. 33-34).
33 / 67
ESTILOS ARQUITETURAIS MAIS COMUNS
i. estilo arquitetural em camadas (layered architectural
style);
34 / 67
ESTILOS ARQUITETURAIS MAIS COMUNS (cont.)
ii. estilo arquitetural baseado em componentes
(component-based architectural style).
35 / 67
RESUMINDO...
«Software Architecture = { Elements, Form, Rationale }»
(PERRY; WOLF, 1992, p. 44).
36 / 67
MODELO CONCEITUAL
Modelo conceitual de descrição arquitetural, conforme o padrão
ISO/IEC/IEEE 42010.
Fonte: <http://www.iso-architecture.org/ieee-1471/cm/>, acesso em 27 jul. 2020.
37 / 67
http://www.iso-architecture.org/ieee-1471/cm/
LEITURA RECOMENDADA
MONROE, Robert T.; KOMPANEK, Drew;
MELTON, Ralph; GARLAN, David.
Architectural Styles, Design Patterns,
and Objects. IEEE Software, v. 14, n. 1, p.
43-52, Jan./Feb. 1997.
38 / 67
ATIVIDADE
Faça a leitura recomendada e, a partir dela, um RESUMO de dois
parágrafos, realçando as seguintes questões:
i. Em sua opinião, como o projeto arquitetural pode guiar o
processo de desenvolvimento de um sistema?
ii. Em sua opinião, qual é o benefício mais significante que a
adoção de um estilo ou padrão arquitetural pode conferir ao
processo de desenvolvimento de um sistema?
39 / 67
1.4 ARQUITETURA DE COMPONENTES
40 / 67
COMPONENTES: FUNDAMENTOS E USO
Componentes (components) são peças compartimentais,
componíveis e substituíveis, que se manifestam em compile time
e/ou runtime e representam o aspecto estrutural dinâmico do
sistema: funcionalidade, processamento, manutenção de estado
(manipulação de dados) e concorrência (BARBOSA, 2009, p. 90; BASS;
CLEMENTS; KAZMAN, 2013, p. 13; OBJECT MANAGEMENT GROUP, 2011, p. 149;
ROZANSKI; WOODS, 2012, p. 13).
Um componente deve ser:
X padronizado: se conformar a um modelo que estabeleça suas
interfaces, metadados, documentação, e regras de
composição e implantação;
X independente: garantir composição e implantação livre da
dependência de outros componentes, o máximo possível;
41 / 67
COMPONENTES: FUNDAMENTOS E USO (cont.)
X componível: possibilitar que todas as interações externas
ocorram por meio de interfaces publicamente definidas e
prover um modo de acesso às suas informações internas
(atributos e métodos);
X implantável: apresentar autossuficiência e disponibilidade
(não necessitar de compilação para ser implantado);
X documentado: possuir documentação sintática e,
preferencialmente, semântica de todas as suas interfaces,
possibilitando aos usuários em potencial determinar se
atende às suas necessidades.
(SOMMERVILLE, 2007, p. 443).
42 / 67
COMPONENTES: FUNDAMENTOS E USO (cont.)
A técnica de dividir para conquistar (divide and conquer)
propõe a solução de um problema por meio da sua decomposição
recursiva: o problema é dividido em subproblemas do mesmo tipo,
cada subproblema é resolvido independentemente e as subsolu-
ções encontradas são combinadas para compor a solução do pro-
blema original (CUNNINGHAM; LIU; ZHANG, 2004, p. 2; SHAN; HUA, 2009, p. 5).
«Um princípio da engenharia de software há muito estabelecido é
a separação da descrição de "o quê" uma unidade de software faz
(por exemplo, "especificação", "interface" e "assinatura") da
descrição de "como" ela o faz (por exemplo, "realização", "design",
"arquitetura", "corpo" e "implementação"). Esta separação facilita
a adoção da abordagem dividir para conquistar na modelagem,
na qual a unidade de software pode ser desenvolvida independen-
temente.Isto permite também que versões antigas de uma
unidade sejam trocadas por novas versões, desde que façam a
mesma coisa.» (ATKINSON et al., 2015, tradução e grifo nossos).
43 / 67
COMPONENTES: FUNDAMENTOS E USO (cont.)
«Reuso de software é o uso de componentes de software
preexistentes para se construir novos sistemas. O reuso se aplica
não somente a fragmentos de código-fonte, mas a todos os
produtos de trabalho intermediários gerados durante o
desenvolvimento do software, incluindo documentos de requisitos,
especificações do sistema, estruturas de design e qualquer
informação que o desenvolvedor necessite para criar o software.»
(PRIETO-DÍAZ, 1993, p. 61, tradução e grifo nossos).
44 / 67
ENGENHARIA DE SOFTWARE BASEADA EM
COMPONENTES
«A Engenharia de Software Baseada em Componentes é uma
abordagem que considera a preexistência de uma quantidade
significativa de componentes reutilizáveis e propõe um processo
de desenvolvimento concentrado na interação destes componen-
tes em vez de desenvolvê-los do zero.» (SOMMERVILLE, 2007, p. 65,
tradução e grifo nossos).
DBC – Desenvolvimento
Baseado em Componentes
(GEROSA; STEINMACHER,
2012, p. 364).
45 / 67
ENGENHARIA DE SOFTWARE BASEADA EM
COMPONENTES (cont.)
«Na maioria dos projetos de software, há algum nível de reuso.
Em geral, isto ocorre informalmente, quando as pessoas que
trabalham no projeto sabem quais designs ou códigos existentes
são similares ao requisitado [...]. Este reuso informal independe do
processo de desenvolvimento adotado. [...] [Contudo, por ser
orientada ao reuso,] a engenharia de software baseada em
componentes tem a óbvia vantagem de reduzir a quantidade de
software a ser desenvolvido e, consequentemente, o custo e os
riscos, além de favorecer entregas mais rápidas [...].»
(SOMMERVILLE, 2007, p. 69-70, tradução nossa).
46 / 67
ARQUITETURA DE COMPONENTES
«Arquitetura de componentes é uma arquitetura baseada em
[...] componentes independentes, substituíveis e modulares, [...]
[que] auxilia a gerenciar a complexidade e encoraja o reuso.» (IBM,
2020, tradução e grifo nossos).
«Benefícios:
• Reusabilidade dos componentes.
• Manutenção e evolução do sistema; facilidade de modificar e
atualizar a implementação sem afetar o restante do sistema.
• Independência e flexiblidade na conectividade dos
componentes.
• Desenvolvimento independente dos componentes, por
diferentes grupos e em paralelo.
• Produtividade no desenvolvimento do software atual e futuro.
47 / 67
ARQUITETURA DE COMPONENTES (cont.)
• Muitas das ferramentas de design orientado a objetos
também podem ser utilizadas no desenvolvimento de
software baseado em componentes.
Limitações:
• Pode ser difícil encontrar componentes adequados
disponíveis para reuso.
• A adaptação dos componentes é uma preocupação.
• Há poucas ferramentas dedicadas ao design orientado a
componentes disponíveis.»
(QIAN et al., 2010, p. 260-261, tradução nossa).
48 / 67
1.5 MODELAGEM
49 / 67
MODELOS DE COMPONENTES
«Modelo de componente é uma definição dos padrões de
implementação, documentação e implantação de componentes,
para que desenvolvedores garantam a sua interoperação e
provedores de infraestrutura forneçam suporte à sua execução.»
(SOMMERVILLE, 2007, p. 445, tradução e grifo nossos).
Elementos básicos de um modelo de componentes
(SOMMERVILLE, 2007, p. 446).
50 / 67
MODELOS DE COMPONENTES (cont.)
«Atualmente, os modelos de componentes podem ser divididos
em duas categorias amplas: (i) modelos em que os componentes
são objetos, tal como na programação orientada a objetos; (ii)
modelos em que os componentes são unidades arquiteturais, tal
como em arquiteturas de software.» (LAU; TAWEEL, 2007, p. 1, tradução
nossa).
Exemplos da primeira categoria são o EJB – Enterprise
JavaBeans, concebido pela Sun Microsystems e mantido pela
Oracle, e o COM+ – Component Object Model Plus, concebido
pela Microsoft (SOMMERVILLE, 2007, p. 445).
Exemplos da segunda categoria são o CORBA – Common Object
Request Broker Architecture, concebido pelo OMG – Object
Management Group e as ADL – Architecture Description
Languages (LAU; TAWEEL, 2007, p. 1; SOMMERVILLE, 2007, p. 445).
51 / 67
MODELAGEM DE COMPONENTES
«Superficialmente, a engenharia de software baseada em
componentes se parece muito com a engenharia de software
tradicional, ou orientada a objetos. O processo se inicia quando
uma equipe de desenvolvimento estabelece os requisitos do
sistema, utilizando técnicas convencionais de elicitação de
requisitos. Um design arquitetural é estabelecido, mas, em vez de
seguir imediatamente para tarefas de design mais detalhadas, a
equipe examina os requisitos, para determinar qual subconjunto é
diretamente elegível para composição e não construção [...].
52 / 67
MODELAGEM DE COMPONENTES (cont.)
A equipe então tenta modificar ou remover aqueles requisitos de
sistema que não podem ser atendidos com componentes à venda
ou já desenvolvidos internamente. Se os requisitos não puderem
ser modificados ou excluídos, métodos de engenharia de software
tradicional, ou orientada a objetos, são aplicados para desenvolver
os novos componentes necessários. Mas, para os requisitos
atendidos com os componentes disponíveis, um conjunto diferente
de atividades de engenharia de software se inicia: Qualificação de
Componente, Adaptação de Componente, Composição de
Componente e Atualização de Componente [...].» (BOSE, 2010, p. 5,
tradução nossa).
53 / 67
LEITURA RECOMENDADA
PRIETO-DÍAZ, Rubén. Status Report:
Software Reusability. IEEE Software, v.
10, n. 3, p. 61–66, 1993.
54 / 67
ATIVIDADE
Faça a leitura recomendada e, a partir dela, um RESUMO de dois
parágrafos, realçando as seguintes questões:
i. Em sua opinião, como o reuso de ideias pode contribuir para
o projeto arquitetural de um sistema?
ii. Em sua opinião, qual dos termos da taxonomia de reuso tem
maior relevância para o desenvolvimento de um sistema
baseado em componentes?
55 / 67
56 / 67
57 / 67
"Treine enquanto eles dormem,
estude enquanto eles se divertem,
persista enquanto eles descansam
e então viva o que eles sonham."
– Muhammad Ali.
REFERÊNCIAS
ATKINSON, Colin; BUNSE, Christian; KAMSTIES,
Erik; ZETTEL, Jörg. Principles of UML-based Component
Modeling. In: . The Development of Component-
based Information Systems: Advances in Management
Information Systems. New York: Routledge, 2015. v. 2, cap. 4.
AVGERIOU, Paris; ZDUN, Uwe. Architectural Patterns
Revisited: A Pattern Language. In: Tenth European Conference
on Pattern Languages of Programs (EuroPLoP’05). Irsee, 2005.
p. 1–39.
BARBOSA, Guilherme M. G. Um Livro-texto para o Ensino
de Projeto de Arquitetura de Software. 209 f. Dissertação
(Mestrado em Ciência da Computação) — Universidade Federal
de Campina Grande, Curso de Pós-Graduação em Ciência da
Computação, Campina Grande, 2009.
58 / 67
REFERÊNCIAS (cont.)
BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. Software
Architecture in Practice. 2nd. ed. Boston: Addison-Wesley,
2003.
BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. Software
Architecture in Practice. 3rd. ed. Boston: Addison-Wesley,
2013.
BOOCH, Grady. Handbook of Software Architecture.
2006. 98 slides: color. Disponível em: <http://paginas.fe.up.
pt/~aaguiar/as/AS-200506-Software_Architecture_by_Booch.
pdf>. Acesso em: 07 out. 2014.
BOSE, Debayan. Component Based Development:
Application in Software Engineering. CoRR, p. 1–25, 2010.
Disponível em: <https://arxiv.org/pdf/1011.2163.pdf>. Acesso
em: 17 ago. 2020.
59 / 67
http://paginas.fe.up.pt/~aaguiar/as/AS-200506-Software_Architecture_by_Booch.pdf
http://paginas.fe.up.pt/~aaguiar/as/AS-200506-Software_Architecture_by_Booch.pdf
http://paginas.fe.up.pt/~aaguiar/as/AS-200506-Software_Architecture_by_Booch.pdf
https://arxiv.org/pdf/1011.2163.pdf
REFERÊNCIAS (cont.)
BRASIL. Lei no 9.609, de 19 de fevereiro de 1998, dispõe
sobre a proteção da propriedade intelectual de programa
de computador, sua comercialização no país, e dá outras
providências. Diário Oficial da União, Brasília, 1998.
Disponívelem: <http://www.planalto.gov.br/ccivil_03/leis/l9609.
htm>. Acesso em: 22 jul. 2020.
CLEMENTS, Paul; BACHMANN, Felix; BASS, Len;
GARLAN, David; IVERS, James; LITTLE, Reed; MERSON,
Paulo; NORD, Robert; STAFFORD, Judith. Documenting
Software Architectures: Views and Beyond. 2nd. ed. Boston:
Addison-Wesley, 2011.
CUNNINGHAM, H. Conrad; LIU, Yi; ZHANG, Cuihua. Using
the Divide and Conquer Strategy to Teach Java Framework
Design. In: Proceedings of the 3rd international Symposium
on Principles and Practice of Programming in Java. 2004.
p. 40–45. Disponível em: <https://john.cs.olemiss.edu/~hcc/
papers/divConq.pdf>. Acesso em: 15 ago. 2020.
60 / 67
http://www.planalto.gov.br/ccivil_03/leis/l9609.htm
http://www.planalto.gov.br/ccivil_03/leis/l9609.htm
https://john.cs.olemiss.edu/~hcc/papers/divConq.pdf
https://john.cs.olemiss.edu/~hcc/papers/divConq.pdf
REFERÊNCIAS (cont.)
EELES, Peter; CRIPPS, Peter. The Process of Software
Architecting. Massachusetts: Addison-Wesley, 2010.
FRIEDMAN, Michael A.; TRAN, P. Y.; GODDARD,
Peter L. Reliability Techniques for Combined Hardware
and Software Systems. Technical Report RL-TR-92-15.
Rome Laboratory, New York, p. 1-275, 1992. Disponível em:
<http://www.dtic.mil/dtic/tr/fulltext/u2/a256347.pdf>. Acesso em:
05 jul. 2015.
GEROSA, Marco Aurélio; STEINMACHER, Igor.
Componentes de Software para Sistemas Colaborativos. In:
. Sistemas Colaborativos. Rio de Janeiro: Elsevier, 2012.
cap. 22, p. 363–375.
GONZÁLES-PÉREZ, César; HENDERSON-SELLERS,
Brian. An Ontology for Software Development Methodologies
and Endeavours. In: . Ontologies for Software
Engineering and Software Technology. Heidelberg: Springer,
2006. cap. 4, p. 123–151.
61 / 67
http://www.dtic.mil/dtic/tr/fulltext/u2/a256347.pdf
REFERÊNCIAS (cont.)
GUBBI, Jayavardhana; BUYYA, Rajkumar; MARUSIC,
Slaven; PALANISWAMI, Marimuthu. Internet of Things (IoT): A
Vision, Architectural Elements, and Future Directions. Future
Generation Computer Systems, v. 29, n. 7, p. 1645–1660,
2013.
IBM – INTERNATIONAL BUSINESS MACHINES. RUP –
Rational Unified Process: Component Architectures. [S.l.],
2020. Disponível em: <https://cgrw01.cgr.go.cr/rup/RUP/
SmallProjects/core.base_rup/guidances/supportingmaterials/
use_component_architectures_CBC2F6B5.html>. Acesso em:
15 ago. 2020.
LATTANZE, Anthony J. Architecting Software Intensive
Systems: A Practitioner’s Guide. Boca Raton: CRC Press,
2008.
62 / 67
https://cgrw01.cgr.go.cr/rup/RUP/SmallProjects/core.base_rup/guidances/supportingmaterials/use_component_architectures_CBC2F6B5.html
https://cgrw01.cgr.go.cr/rup/RUP/SmallProjects/core.base_rup/guidances/supportingmaterials/use_component_architectures_CBC2F6B5.html
https://cgrw01.cgr.go.cr/rup/RUP/SmallProjects/core.base_rup/guidances/supportingmaterials/use_component_architectures_CBC2F6B5.html
REFERÊNCIAS (cont.)
LAU, Kung-Kiu; TAWEEL, Faris M. Data Encapsulation in
Software Components. In: Proceedings of the 10th International
ACM SIGSOFT Symposium on Component-Based Software
Engineering (CBSE’07). Medford: ACM, 2007. p. 1–16.
MALAQUIAS, José R. Algoritmos: Conceito e
Representação. 2011. 30 slides: color. Disponível em:
<http://www.decom.ufop.br/romildo/cea030.2011-1/slides/
02-algoritmos>. Acesso em: 22 jul. 2020.
MCGOVERN, James; AMBLER, Scott W.; STEVENS,
Michael E.; LINN, James; SHARAN, Vikas; JO, Elias K. A
Practical Guide to Enterprise Architecture. Upper Saddle
River: Prentice Hall, 2004.
63 / 67
http://www.decom.ufop.br/romildo/cea030.2011-1/slides/02-algoritmos
http://www.decom.ufop.br/romildo/cea030.2011-1/slides/02-algoritmos
REFERÊNCIAS (cont.)
MEHTA, Nikunj R.; MEDVIDOVIC, Nenad. Composing
Architectural Styles from Architectural Primitives. In:
Proceedings of the 9th European Software Engineering
Conference and the 11th ACM SIGSOFT International
Symposium on Foundations of Software Engineering
(ESEC/FSE’03). Helsinki: ACM, 2003. p. 347–350.
MERSON, Paulo; SAINI, Darpan. OPC Module Uses
View. In: . Adventure Builder Software Architecture
Document (SAD). [s.n.], 2019. Disponível em: <https://wiki.sei.
cmu.edu/confluence/display/SAD/OPC+Module+Uses+View>.
Acesso em: 28 jul. 2020.
MONROE, Robert T.; KOMPANEK, Drew; MELTON, Ralph;
GARLAN, David. Architectural Styles, Design Patterns, and
Objects. IEEE Software, v. 14, n. 1, p. 43–52, 1997.
64 / 67
https://wiki.sei.cmu.edu/confluence/display/SAD/OPC+Module+Uses+View
https://wiki.sei.cmu.edu/confluence/display/SAD/OPC+Module+Uses+View
REFERÊNCIAS (cont.)
OBJECT MANAGEMENT GROUP. Unified Modeling
Language: Superstructure. v. 2.4.1. [S.l.], 2011. p. 1-732.
Disponível em: <http://www.omg.org/spec/UML/2.4.1/
Superstructure/PDF>. Acesso em: 04 dez. 2014.
PERRY, Dewayne E.; WOLF, Alexander L. Foundations for
the study of software architecture. ACM SIGSOFT Software
Engineering Notes, New York, v. 17, n. 4, p. 40–52, 1992.
PRIETO-DÍAZ, Rubén. Status Report: Software Reusability.
IEEE Software, v. 10, n. 3, p. 61–66, 1993.
QIAN, Kai; FU, Xiang; TAO, Lixin; XU, Chong-Wei;
DÍAZ-HERRERA, Jorge L. Software Architecture and Design
Illuminated. Sudbury: Jones and Bartlett Publishers, 2010.
65 / 67
http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF
http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF
REFERÊNCIAS (cont.)
QIAN, Lena; GERO, John S. Function-Behavior-Structure
Paths and Their Role in Analogy-Based Design. Artificial
Intelligence for Engineering Design, Analysis and
Manufacturing, Cambridge, v. 10, n. 4, p. 289–312, Sept.
1996. Disponível em: <http://journals.cambridge.org/action/
displayAbstract?fromPage=online&aid=4197416&fileId=
S0890060400001633>. Acesso em: 02 maio 2016.
ROZANSKI, Nick; WOODS, Eoin. Software Systems
Architecture: Working with Stakeholders Using Viewpoints and
Perspectives. 2nd. ed. Westford: Addison-Wesley, 2012.
SALEH, Kassem A. Software Engineering. [S.l.]: J. Ross
Publishing, 2009.
SHAN, Tony C.; HUA, Winnie W. Towards a Systematic
Method for Solutions Architecting. In: . Handbook
of Research on Modern Systems Analysis and Design
Technologies and Applications. Hershey: Information
Science Reference, 2009. cap. 1, p. 1–22.
66 / 67
http://journals.cambridge.org/action/displayAbstract?fromPage=online&aid=4197416&fileId=S0890060400001633
http://journals.cambridge.org/action/displayAbstract?fromPage=online&aid=4197416&fileId=S0890060400001633
http://journals.cambridge.org/action/displayAbstract?fromPage=online&aid=4197416&fileId=S0890060400001633
REFERÊNCIAS (cont.)
SOFTWARE. In: DICIONÁRIO Priberam da Língua
Portuguesa online. S.l.: s.n., 2020. Disponível em:
<https://dicionario.priberam.org/software>. Acesso em: 24 jul.
2020.
SOMMERVILLE, Ian. Software Engineering. 8th. ed.
Harlow: Addison-Wesley, 2007.
WIRSING, Martin; HOLZL, Matthias. Software Intensive
Systems. Final Report. Beyond the Horizon, Thematic Group
n. 6, p. 1-42, 2006. Disponível em: <http://www.pst.ifi.lmu.de/
~rauschma/interlink/cannes/groups/TG6.pdf>. Acesso em: 15
jan. 2015.
67 / 67
https://dicionario.priberam.org/software
http://www.pst.ifi.lmu.de/~rauschma/interlink/cannes/groups/TG6.pdf
http://www.pst.ifi.lmu.de/~rauschma/interlink/cannes/groups/TG6.pdf
	ARQUITETURA DE SISTEMAS
	Componentes de sistemas
	Definição da arquitetura de sistemas e componentes
	Camadas da arquitetura de sistemas
	Arquitetura de componentes
	Modelagem
	PROCESSO DE DESENVOLVIMENTO
	Gerenciamento de processos
	Objetivos das metodologias de desenvolvimento e gestão
	Especificação de componentes
	Interação entre componentes
	Aplicação da UML
	REQUISITOS
	Definição de requisitos
	Tipos de requisitos
	Técnicas de levantamento de requisitos
	Validação de requisitos
	Prototipação
	Modelagem conceitual de negócios e de sistemas
	COMPONENTIZAÇÃO
	Identificação dos componentes
	Modelagem dos artefatos do sistema
	Interação de componentes
	Especificação de componentes
	PROVISIONAMENTO E CONSTRUÇÃO
	Framework CCM (Corba Component Model)
	Especificação vs. construção
	Interfaces
	Interação com sistemas existentes e legados
	Construção
	TÓPICOS EM ARQUITETURA DE SISTEMASArquitetura Monolítica
	Arquitetura de Microsserviços
	Virtualização
	Containers

Continue navegando