Unidade 3
Unidade 3
Unidade 3
ARQUITETURA DE SOFTWARE
CAPÍTULO 3 - QUAIS SÃO OS PADRÕES
UTILIZADOS NA IMPLANTAÇÃO DE
ARQUITETURA DE SOFTWARE ?
Fernando Skackauskas Dias
INICIAR
Introdução
Elaborar a arquitetura de um software tem sido uma tarefa complexa para muitos
desenvolvedores de sistemas. Dependendo do tamanho e do objetivo do sistema,
são desenvolvidas milhares de linhas de código, centenas de componentes e
conectores, várias bibliotecas, integração com sistemas legados, servidores de
aplicações, tabelas de banco de dados, segurança de acesso, alta disponibilidade e
vários requisitos funcionais e não funcionais que elevam a complexidade da
arquitetura. Além disto, nos últimos anos, houve uma evolução tecnológica de
software e hardware exponencial, com dispositivos móveis possuindo novas
funcionalidades e alta integração de múltiplas plataformas. O que temos são
diversos modelos, padrões e estilos de arquitetura de software e de projetos que
foram criados e evoluídos para atenderem às novas tecnologias. Estes modelos e
padrões devem ser aplicados conforme o cenário e o objetivo do sistema.
Nesse sentido, saber escolher de forma correta os padrões de arquitetura de
software se torna uma função fundamental. Diante desse cenário, temos as
seguintes questões: quais são os padrões disponíveis para a implantação de uma
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 1/29
26/03/2023, 14:21 Arquitetura de Software
O projeto de conteúdo engloba duas tarefas de projetos distintos, sendo cada uma
delas manipuladas por pessoas com um determinado conjunto de habilidades
distintas:
VOCÊ SABIA?
Com o crescimento rápido de computação em nuvem, tem aumentado a preocupação com a
necessidade de serviços oferecidos. Um grande desafio é implementar um ambiente tolerante a
falhas. Para combatê-las, muitas técnicas são projetadas para reduzir os erros. O que acontece é que
gestores pagos oferecem esse tipo de suporte, mas aqueles chamados open source não fornecem
elementos que permitam tolerar falhas e deixam os usuários vulneráveis às falhas de um ambiente
de tecnologia. Veja a dissertação de Martins (2014) e saiba
mais: <https://repositorio.unesp.br/bitstream/handle/11449/127619/000843909.pdf?
sequence=1&isAllowed=y
(https://repositorio.unesp.br/bitstream/handle/11449/127619/000843909.pdf?
sequence=1&isAllowed=y)>.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 3/29
26/03/2023, 14:21 Arquitetura de Software
Podemos criar uma árvore de dados com a elaboração para qualquer conteúdo
composto de vários objetos de conteúdo e cujo objetivo é tentar demonstrar as
relações hierárquicas entre os objetos de conteúdo, oferecer uma maneira de
revisar o conteúdo para que as omissões e inconsistências sejam mostradas antes
do início do projeto e servir de base para o projeto de conteúdo.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 4/29
26/03/2023, 14:21 Arquitetura de Software
Figura 1 - Modelo de uma árvore de conteúdo para um componente e seus relacionamentos de um sistema
de vendas. Fonte: Elaborada pelo autor, baseado em PRESSMAN, 2016.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 6/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 7/29
26/03/2023, 14:21 Arquitetura de Software
Por outro lado, segundo Sommerville (2011), muitos aplicativos móveis podem
oferecer várias funções computacionais e manipuladoras, as quais podem ser
associadas diretamente ao conteúdo e são a meta principal de interação com o
usuário. Nesse sentido, o projeto funcional se associa com dois elementos de
processamento de aplicativos, com diferentes níveis de abstração procedural
(SOMMERVILLE, 2011, p. 201):
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=97… 8/29
26/03/2023, 14:21 Arquitetura de Software
Este modelo baseado em componentes leva ao reuso, o que proporciona uma série
de benefícios aos engenheiros de software, como a redução no tempo de ciclo de
vida de desenvolvimento e no custo do projeto. Mas, para ocorrer, isso deve ser um
procedimento da cultura do grupo de desenvolvedores.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 10/29
26/03/2023, 14:21 Arquitetura de Software
CASO
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 11/29
26/03/2023, 14:21 Arquitetura de Software
Utilizar corretamente um padrão de projeto pata desenvolvimento de sistemas acarreta uma série de
benefícios para tornar mais ágil e eficiente toda a estrutura de tecnologia de uma corporação. Uma
grande empresa de tecnologia implantou, há alguns anos, os chamados ‘serviços inteligentes’. Na
época, estes sistemas tinham como objetivo diminuir as chamadas perdidas por meio dos serviços
‘siga-me’, ‘caixa-postal’ e ‘desvio de chamada’. Os serviços – sistemas – não foram implantados todos
de uma vez e foi estipulado um determinado padrão para a implantação do primeiro serviço, o qual
foi utilizado para a implantação dos outros. Houve uma redução de 30% de desenvolvimento e
implantação dos sistemas posteriores, pois a utilização do mesmo padrão agregou a experiência do
primeiro sistema nos demais. Isso é chamado de ‘curva de experiência’.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 12/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 13/29
26/03/2023, 14:21 Arquitetura de Software
VOCÊ O CONHECE?
Fonseca Filho (2007, p. 101) explica a importância do engenheiro Konrad Zuse para a evolução da Ciência
da Computação: “[...] foi o primeiro engenheiro a criar máquinas de cálculo controladas
automaticamente. Esse engenheiro civil percebeu de forma rápida que um dos aspectos mais onerosos
ao se fazerem longos cálculos com dispositivos mecânicos era guardar os resultados intermediários para
depois utilizá-los nos lugares apropriados nos passos seguintes. Este foi um dos princípios da
computação moderna”.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 14/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 15/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 16/29
26/03/2023, 14:21 Arquitetura de Software
Quadro 1 - Descrição do padrão ‘Observer’, demonstrando suas características, suas descrições, seus
problemas, suas soluções e suas consequências. Fonte: Elaborado pelo autor, baseado em SOMMERVILLE,
2011.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 17/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 18/29
26/03/2023, 14:21 Arquitetura de Software
Figura 5 - Demonstração de um modelo UML do padrão 'Observer' mostrando a relação entre as classes.
Fonte: Elaborada pelo autor, baseado em SOMMERVILLE, 2011.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 19/29
26/03/2023, 14:21 Arquitetura de Software
Por fim, os padrões podem suportar reuso de conceito em alto nível. Ao buscar o
reuso de componentes executáveis, pode acontecer de ter limitações nas decisões
do projeto detalhado feito pelos implementadores: desde os algoritmos particulares
(que são usados para implantar os componentes) até os objetos e a interface de
componentes.
Padrões estruturais: têm como objetivo se ocuparem com a maneira como classes
e objetos são compostos para criar estruturas maiores. Então, as heranças são
utilizadas pelos padrões de classe para que sejam compostas as interfaces ou
implementações. Por outro lado, os objetos descrevem como os objetos devem ser
compostos para as novas.
Padrões comportamentais: têm como foco o algoritmo e as
responsabilidades atribuídas entre os objetos do sistema. Não é objetivo,
portanto, descrever os padrões em si, mas as comunicações que são
realizadas entre os objetos.
Padrões para persistência: têm como objetivo descrever soluções para
problemas de armazenamento de informações.
Padrões para apresentação: têm como objetivo definir as soluções para
problemas comuns no projeto da interface de software. É considerado um
caso particular dos padrões de projeto.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 20/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 21/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 22/29
26/03/2023, 14:21 Arquitetura de Software
Quadro 2 - Descrições dos padrões de projeto de arquitetura com os principais objetivos de cada um. Fonte:
Elaborado pelo autor, baseado em LAGMANN, 2013.
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 23/29
26/03/2023, 14:21 Arquitetura de Software
VOCÊ SABIA?
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 24/29
26/03/2023, 14:21 Arquitetura de Software
Nas últimas décadas, o software deixou de ser uma parte pequena e de custo baixo dos sistemas para
se tornar parte fundamental e dispendiosa. Hoje em dia, tudo o que se toca tem software, seja no uso
doméstico ou nas organizações. O artigo de Silva Filho (2015) discute a onipresença do software, as
mudanças no cotidiano das pessoas e organizações, e a preocupação com profissionais da área de
engenharia de software. Leia mais em:
<http://periodicos.uem.br/ojs/index.php/EspacoAcademico/article/view/29122/15124
(http://periodicos.uem.br/ojs/index.php/EspacoAcademico/article/view/29122/15124)>.
Quadro 3 - Elementos do
contexto que devem ser considerados durante a seleção de uma opção arquitetural. Fonte: Elaborado pelo
autor, baseado em AZEVEDO, 2014.
Síntese
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 26/29
26/03/2023, 14:21 Arquitetura de Software
Bibliografia
AZEVEDO, R. P. M. Seleção de padrões para a arquitetura de software: uma
abordagem baseada em procura de termos e sinônimos. 2014. 94 f. Dissertação
(Mestrado em Ciência da Computação) – Universidade Federal de Viçosa, Viçosa,
2014. Disponível em:
<http://www.locus.ufv.br/bitstream/handle/123456789/2686/texto%20completo.pd
f?sequence=1&isAllowed=y
(http://www.locus.ufv.br/bitstream/handle/123456789/2686/texto%20completo.pdf
?sequence=1&isAllowed=y)>. Acesso em: 6/6/2018.
BRANDES, E. S.; BACELO, A. P. T. RADA: uma abordagem para a documentação de
arquiteturas de referência através de linguagens de descrição arquiteturais. 2010.
211 f. Dissertação (Mestrado em Ciência da Computação) – Pontifícia Universidade
Católica do Rio Grande do Sul, Faculdade de Informática, Porto Alegre, 2010.
Disponível
em: <http://repositorio.pucrs.br/dspace/bitstream/10923/6778/1/000460611-
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 27/29
26/03/2023, 14:21 Arquitetura de Software
Texto%2bCompleto-0.pdf
(http://repositorio.pucrs.br/dspace/bitstream/10923/6778/1/000460611-
Texto%2bCompleto-0.pdf)>. Acesso em: 6/6/2018.
FARIAS, T. M. M. Aplicação de padrões ao processo de desenvolvimento de
software RUP. 2006. 62 f. Trabalho de conclusão de curso (Graduação em
Engenharia de Produção) – Escola Politécnica de Pernambuco, Departamento de
Sistemas Computacionais, Recife, 2006. Disponível em:
<http://tcc.ecomp.poli.br/20062/Monografia_TiagoMoraes.pdf
(http://tcc.ecomp.poli.br/20062/Monografia_TiagoMoraes.pdf)>. Acesso em:
6/6/2018.
FONSECA FILHO, C. História da computação: o caminho do pensamento e da
tecnologia. Porto Alegre: PUC-RS, 2007.
GALLOTI, G. M. A. Arquitetura de software. São Paulo: Pearson Education do Brasil,
2016.
LAGMANN, D. F. Um estudo de caso sobre a utilização de padrões de projeto na
definição de uma arquitetura de software voltada ao desenvolvimento de
sistemas de gestão. 2013. 126 f. Trabalho de conclusão de curso (Graduação em
Sistemas de Informação) – Centro Universitário Univates, Centro de Ciências Exatas
e Tecnológicas, Lajeado, 2013. Disponível em:
<https://www.univates.br/bdu/bitstream/10737/357/1/DouglasLagemann.pdf
(https://www.univates.br/bdu/bitstream/10737/357/1/DouglasLagemann.pdf)>.
Acesso em: 6/6/2018.
MARTINS, H. P. Tolerância a falha em um ambiente de computação em nuvem
open source. 2014. 83 f. Dissertação (Mestrado em Ciência da Computação) –
Universidade Estadual Paulista Júlio de Mesquita Filho, Bauru, 2014. Disponível
em: <https://repositorio.unesp.br/bitstream/handle/11449/127619/000843909.pdf?
sequence=1&isAllowed=y
(https://repositorio.unesp.br/bitstream/handle/11449/127619/000843909.pdf?
sequence=1&isAllowed=y)>. Acesso em: 6/6/2018.
PRESSMAN, R. Engenharia de software: uma abordagem profissional. 8. ed. Porto
Alegre: McGraw Hill, 2016.
QUINTERO, J. B.; DUITAMA MUÑOZ, J. F. Reflexiones acerca de la adopción de
enfoques centrados en modelos en el desarrollo de software. Revista Ingeniería y
Universidad, Bogotá, Pontifícia Universidade Javeriana, v. 15, n. 1, p. 219-243, jan.-
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 28/29
26/03/2023, 14:21 Arquitetura de Software
https://student.ulife.com.br/ContentPlayer/Index?lc=k1V6c06BOXSd7UyznB4EtA%3d%3d&l=WFN7eT7UggcFAXDQz%2fEAfA%3d%3d&cd=9… 29/29