Escolar Documentos
Profissional Documentos
Cultura Documentos
ARQUITETURA DE SOFTWARE
CAPÍTULO 1 - QUAIS SÃO OS
FUNDAMENTOS E CONCEITOS BÁSICOS
DA ARQUITETURA DE
SOFTWARE
?
Fernando Skackauskas Dias
INICIAR
Introdução
A complexidade dos sistemas de software tem aumentado consideravelmente nas
últimas décadas devido à inclusão de novas interfaces, integração de várias mídias e
novas tecnologias de armazenamento e distribuição de dados. Nesse sentido, os
engenheiros de software têm utilizado novas abordagens, a fim de desenvolver
sistemas com alto desempenho. Portanto, desenvolver softwares com qualidade é
uma questão que tem merecido a devida atenção dos cientistas da computação.
Assim, podemos nos questionar: qual o papel da arquitetura de software? Quais são
os modelos de arquitetura? Como a implantação de um modelo de arquitetura de
software pode melhorar a qualidade dos sistemas de informação?
Antes de responder a essas questões, é importante relembrarmos que a arquitetura
de software é considerada a área de conhecimento da Ciência da Computação na
qual são aplicadas práticas da engenharia de software e da gerência de projetos,
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 1/31
12/09/2022 21:51 Arquitetura de Software
procurando obter melhor organização dos sistemas e com alta produtividade. São
nas bases dessas disciplinas é que encontramos os modelos para especificar,
projetar, implantar e manter sistemas com qualidade.
Iniciaremos esta disciplina analisando os princípios de arquitetura de software com a
demonstração das fases de desenvolvimento de um projeto arquitetural e a
descrição dos elementos pertinentes à arquitetura e os padrões arquiteturais
básicos. A seguir, explicaremos os tipos de modelagem e a utilização dos diferentes
estilos, padrões e gêneros na especificação da arquitetura de software. Por fim,
analisaremos os impactos das decisões do tipo de arquitetura no desempenho de
um sistema.
Desejamos um excelente estudo.
lógica para atender aos requisitos funcionais e não funcionais. Para tal, a arquitetura
de software deve ser clara, a fim de atingir o máximo da simplicidade, tendo o
software as seguintes características:
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 3/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 4/31
12/09/2022 21:51 Arquitetura de Software
para qual foi projetado. Isso significa que deve ser compreensível, usável e
compatível com outros sistemas usados por ele.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 5/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 7/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 8/31
12/09/2022 21:51 Arquitetura de Software
Quais são as visões e descrições que são necessárias ao se projetar uma arquitetura
de sistema? Quais notações devem ser usadas com o objetivo de se descrever os
modelos de arquitetura? É necessário considerar que é impossível representar todas
as informações relevantes da arquitetura de software em um único modelo, porque
cada modelo representa uma perspectiva do sistema. Portanto, são necessários
vários deles para conceber a arquitetura na sua totalidade. Os autores da área de
arquitetura e engenharia de software propõem que devemos ter quatro visões
fundamentais, as quais, segundo Sommerville (2011, p. 107, grifos nossos), são:
Hofmeister; Nord; Soni (2000) argumentam que é necessário, também, incluir uma
visão conceitual, pois ela pode servir como uma decomposição dos requisitos de
um nível mais alto para um mais detalhado. Essa ferramenta é fundamental para a
administração da complexidade do sistema, porque pode esconder detalhes,
permitindo que os desenvolvedores se concentrem no nível de abstrações do
sistema.
VOCÊ SABIA?
A internet das coisas é uma revolução tecnológica recente que tem como objetivo conectar os itens –
ou seja, as coisas – utilizados no dia a dia com a internet. Cagnin (2015) desenvolveu sua dissertação
propondo uma arquitetura de software denominada de “Uma arquitetura multiagente para o
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4DG… 9/31
12/09/2022 21:51 Arquitetura de Software
Uma das possíveis visões que podem servir de referência para a construção da
arquitetura de um sistema é a Unified Modeling Language (UML), uma linguagem de
modelagem que serve para definir artefatos que auxiliam na tarefa de desenhar e
documentar os sistemas, sendo composta por diversos diagramas que compõem a
estrutura do projeto de arquitetura do sistema. Segundo Galloti (2016, p. 81, grifos
nossos), os diagramas UML são de:
Alguns autores têm opiniões divergentes pelo uso da UML para a construção da
arquitetura de software, pois às vezes ela é usada de forma inadequada para
demonstrar o comportamento dos componentes do sistema e suas relações. Sua
utilização – ou não – dependerá do nível de experiência do desenvolvedor e da
complexidade do sistema que se está implementando. Por outro lado, vários
pesquisadores indicam o uso de linguagens de descrição de arquitetura
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 10/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 11/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 13/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 14/31
12/09/2022 21:51 Arquitetura de Software
Figura 3 - Arquitetura de fluxo de dados demonstrando os filtros de dados e os tubos associados. Fonte:
Elaborada pelo autor, baseado em PRESSMAN, 2016.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 15/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 16/31
12/09/2022 21:51 Arquitetura de Software
Figura 5 - Arquitetura em camadas
demonstrando as diversas camadas e os componentes associados a elas. Fonte: Elaborada pelo autor,
baseado em PRESSMAN, 2016.
Figura 6 - Modelo da organização MVC com a demonstração do fluxo de ações e das mudanças de estado.
Fonte: Elaborada pelo autor, baseado em SOMMERVILLE, 2011.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 19/31
12/09/2022 21:51 Arquitetura de Software
Figura 7 - Modelo cliente-servidor, demonstrando a relação entre clientes, internet e serviços disponíveis.
Fonte: Elaborada pelo autor, baseado em SOMMERVILLE, 2011.
VOCÊ SABIA?
O desenvolvimento de software baseado em agentes tem como objetivo a sua aplicação em sistemas
distribuídos e visa buscar técnicas capazes de minimizar as dificuldades encontradas nessa nova
abordagem, como demonstrado no trabalho desenvolvido por Huzita; Oliveira; Laine (2000). Veja
mais a respeito em: <http://periodicos.uem.br/ojs/index.php/ActaSciTechnol/article/view/3131/2252
(http://periodicos.uem.br/ojs/index.php/ActaSciTechnol/article/view/3131/2252)>.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 21/31
12/09/2022 21:51 Arquitetura de Software
CASO
Uma indústria de autopeças decidiu desenvolver internamente um sistema integrado de
manutenção da fábrica com os departamentos de compras, controle de estoque e de contabilidade.
Esse sistema é denominado de Enterprise Resource Planning (ERP), cujo objetivo principal é ter o
máximo de integração dos processos disparando eventos entre os departamentos. Por exemplo,
quando houver uma manutenção preventiva na fábrica, o sistema já executa o controle de estoque
para garantir os insumos necessários para manutenção e dispara um evento para o departamento de
compras e contabilidade, caso haja a necessidade de se adquirir algum insumo.
Os desenvolvedores estavam analisando qual seria o estilo de arquitetura que mais se adequaria ao
modelo desse tipo sistema. Segundo os princípios analisados, as arquiteturas centralizada em
dados, de fluxo de dados, orientada a objetos e em camadas não foram consideradas adequadas ao
perfil do sistema. Concluiu-se que o estilo de chamadas e retornos seria o que mais se acopla à
proposta de um ERP, devido ao fato de que esse estilo teria um programa principal: faria o controle
de informações e procedimentos entre os outros subprogramas e procedimentos remotos.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 22/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 23/31
12/09/2022 21:51 Arquitetura de Software
VOCÊ O CONHECE?
John von Neumann foi um cientista que contribuiu fortemente para a evolução da Ciência da
Computação, sendo um dos construtores do primeiro computador: o Eniac. Foi responsável pelo
aprimoramento do poder computacional, levando-o a um aperfeiçoamento da estrutura lógica do
processamento de dados, contribuindo de maneira inigualável para a evolução da Ciência da
Computação. Veja mais a respeito no livro de Fonseca Filho (2007), disponível em:
<http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf
(http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf)>.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 24/31
12/09/2022 21:51 Arquitetura de Software
para que se obtenham retornos rápidos sobre a evolução dos requisitos. Portanto, é
possível perceber como a escolha da arquitetura pode ser fundamental para o
desenvolvimento de um sistema de forma consistente e de alto desempenho.
Conforme demonstramos, cada decisão da arquitetura deve ser documentada para
que possa haver uma revisão posterior, a fim de outros interessados entendam a
descrição arquitetônica. Essa documentação deverá ser sempre atualizada,
conforme os requisitos forem sendo alterados ou novos forem implantados.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 25/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 26/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 27/31
12/09/2022 21:51 Arquitetura de Software
Figura 9 - Exemplo do Diagrama de Contexto em um sistema de segurança domiciliar. Fonte: Elaborada pelo
autor, baseado em PRESSMAN, 2016.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 28/31
12/09/2022 21:51 Arquitetura de Software
Síntese
Compreendemos, com o fim este capítulo, o quanto é importante elaborarmos as
arquiteturas de software para o desenvolvimento de projetos de sistemas e tornar
possível o desenvolvimento das soluções de sistemas de forma mais simples,
rápida, com melhor eficiência e fácil manutenibilidade. Ao implantarmos um
determinado modelo de arquitetura de software, devemos atingir ao máximo a
simplicidade, para que o sistema tenha as características de ser flexível, extensível,
portável e reutilizável.
Neste capítulo, você teve a oportunidade de:
compreender os princípios de arquitetura de software;
entender as fases de desenvolvimento de um projeto arquitetural;
descrever os elementos pertinentes à arquitetura e aos padrões
arquiteturais básicos;
compreender os tipos de modelagem e a utilização dos diferentes estilos,
padrões e gêneros na especificação da arquitetura de software;
analisar os impactos das decisões do tipo de arquitetura no desempenho
de um sistema.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 29/31
12/09/2022 21:51 Arquitetura de Software
Bibliografia
CAGNIN, R. L. Uma arquitetura multiagente para gerenciamento de dispositivos
em ambientes da internet das coisas. 2015. 123 f. Dissertação (Mestrado em
Ciência da Computação) – Universidade Estadual Paulista, São José do Rio Preto,
2015. Disponível em:
<http://www.athena.biblioteca.unesp.br/exlibris/bd/cathedra/02-08-
2017/000868971.pdf
(http://www.athena.biblioteca.unesp.br/exlibris/bd/cathedra/02-08-
2017/000868971.pdf)>. Acesso em: 15/5/2018.
CUNHA, D.; FILGUEIRA, A; VIANA, G. Arquitetura de software voltada para a avaliação
contínua do processo de ensino-aprendizagem. Revista HOLOS, Natal, IF-RN, ano
33, v. 1, p. 43-56, 2017. Disponível em:
<http://www2.ifrn.edu.br/ojs/index.php/HOLOS/article/view/5335/pdf
(http://www2.ifrn.edu.br/ojs/index.php/HOLOS/article/view/5335/pdf)>. Acesso em:
15/5/2018.
FONSECA FILHO, C. História da computação: o caminho do pensamento e da
tecnologia. Porto Alegre: PUC-RS, 2007. Disponível em:
<http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf
(http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf)>. Acesso em:
15/5/2018.
GALLOTI, G. M. A. Arquitetura de software. São Paulo: Pearson Education do Brasil,
2016.
HOFMEISTER, C.; NORD, R.; SONI, D. Applied Software Architecture. Boston:
Addison-Wesley, 2000.
HUZITA, E. H. M.; OLIVEIRA, H. M.; LAINE, J. M. Uma proposta de arquitetura de
software baseada em agentes. Acta Scientiarum - Technology, Maringá, UEM, v. 22,
n. 5, p. 1339-1346, 2000. Disponível em:
<http://periodicos.uem.br/ojs/index.php/ActaSciTechnol/article/view/3131/2252
(http://periodicos.uem.br/ojs/index.php/ActaSciTechnol/article/view/3131/2252)>.
Acesso em: 15/5/2018.
PRESSMAN, R. Engenharia de software: uma abordagem profissional. 8. ed. Porto
Alegre: McGraw Hill, 2016.
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 30/31
12/09/2022 21:51 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=yCPvmJDPUMtFbtkgeztprw%3d%3d&l=iRHI36BOeKC0ZtLFY%2bUebA%3d%3d&cd=4D… 31/31