Escolar Documentos
Profissional Documentos
Cultura Documentos
Padrões de Software
Contexto e Visões de Arquitetura
Revisão Textual:
Prof.ª M.ª Sandra Regina Fonseca Moreira
Contexto e Visões de Arquitetura
OBJETIVO DE APRENDIZADO
• Entender a importância da arquitetura no desenvolvimento de sistemas de software.
UNIDADE Contexto e Visões de Arquitetura
Uma vez que você refletiu sobre a arquitetura de um prédio surge uma pergunta ele-
mentar: afinal, o que é a arquitetura de software?
8
de software. Vale ressaltar que em qualquer representação arquitetural os componentes
são os elementos fundamentais a serem exibidos (PRESSMAN; MAXIM, 2016).
De acordo com Bezerra (2015), um componente de software pode ser visto como
uma unidade existente em tempo de execução (runtime), podendo ser usado na constru-
ção de vários sistemas de software e, conforme a necessidade, ser substituído por outro
componente que possua a mesma funcionalidade. Um componente fornece acesso aos
seus serviços por meio de uma interface.
Para ficar mais claro a visualização das interações entre os componentes de software
por meio das interfaces “fornece” e “requer”, a Figura 2 exibe uma representação abstrata
de uma composição de componentes de software que visam implementar o download
de imagens de uma câmera e o armazenamento dessas imagens em uma biblioteca de
fotos. Vale ressaltar que o usuário também poderia interagir com esse exemplo de siste-
ma de software para descrever e catalogar a foto.
9
9
UNIDADE Contexto e Visões de Arquitetura
getImagem
adicionarItem
InterfaceComUsuario
Por fim, mas não menos importante, há três fatores essenciais que enfatizam a im-
portância da arquitetura de software:
• A arquitetura de software fornece uma representação que simplifica a comunicação
entre os stakeholders;
• A arquitetura de software evidencia logo no começo do projeto as decisões que podem
causar um impacto profundo nas atividades seguintes de engenharia de software;
• A arquitetura de software define um modelo arquitetural relativamente reduzido e
passível de compreensão de como é a estrutura do software e como seus componen-
tes vão interagir entre si (BASS; CLEMENTS; KAZMAN, 2003 apud PRESSMAN;
MAXIM, 2016, p. 254-255).
10
1. Existe uma arquitetura de
2. Como o sistema será 3. Quais padrões ou estilos
aplicação genérica que possa agir
distribuido entre os núcleos de arquitetura poderiam
como um template para o sistema
ou processadores do hardware? ser utilizados?
que está sendo projetado?
?
4. Qual será a abordagem 5. Qual estratégia será utilizada
fundamental utilizada para para controlar a operação dos
estruturar o sistema? componentes no sistema?
Importante!
Não confunda as responsabilidades de um arquiteto de software com as um gerente de
projeto. Ambos trabalham em conjunto na execução do plano de projeto de software,
mas enquanto o arquiteto tem uma responsabilidade de cunho mais técnico, o gerente
de projeto tem uma responsabilidade de ordem mais gerencial.
11
11
UNIDADE Contexto e Visões de Arquitetura
Arquitetura no Processo
de Desenvolvimento
Antes de entender a influência da arquitetura no desenvolvimento de software, vamos
recordar brevemente o que é um processo de software.
12
• Comunicação: o objetivo dessa atividade é compreender os objetivos desejados
pelos stakeholders para o projeto e agrupar requisitos que ajudem a definir os re-
cursos e as funções do software;
• Planejamento: a intenção dessa atividade é simplificar o projeto de software, es-
tabelecendo um plano de projeto que guie a equipe no que tange ao trabalho a ser
realizado, descrevendo as tarefas técnicas, os riscos possíveis, os recursos necessá-
rios, os artefatos gerados e o cronograma de trabalho;
• Modelagem: o propósito dessa atividade é elaborar modelos para se ter uma ideia
global do software a ser desenvolvido, entendendo melhor os requisitos exigidos e o
projeto de software, para assim atendê-los. Os modelos elaborados também ajudam
na compreensão arquitetural (componentes e seus relacionamentos), além de outras
características relevantes;
• Construção: o objetivo dessa atividade é construir o que foi projetado, combinando
geração de código e testes que visem revelar erros de implementação;
• Entrega: o propósito dessa atividade é entregar o software ao cliente, seja como
uma entidade completa ou como um incremento (uma parte do software já conclu-
ída) para operação e avaliação (PRESSMAN; MAXIM, 2016).
Importante!
Não existe processo de software certo ou errado; um processo de desenvolvimento pode
ser adequado ou inadequado de acordo com o cenário de cada projeto.
Enquanto os princípios de projeto definem uma filosofia que conduz o trabalho a ser
desempenhado, os conceitos de projeto devem ser compreendidos antes da aplicação das
práticas de projeto, que por sua vez, orientam a elaboração de diversas representações do
software com o intuito de guiar a atividade de construção do sistema de software.
Importante!
Apesar do termo em inglês project ser bastante adotado para se referir a palavra projeto, o
termo design é mais apropriado no contexto apresentado. Apenas para deixar mais claro:
ao se fazer referência à gestão de um projeto de desenvolvimento de produto de software,
ao projeto como um todo, a adoção do termo project é mais apropriada; contudo, ao se
referir ao projeto da estrutura do software (projeto de arquitetura, projeto de interface,
13
13
UNIDADE Contexto e Visões de Arquitetura
A Figura 4 mostra um modelo abstrato do processo de projeto (design) com suas en-
tradas, atividades e saídas. As entradas do projeto (determinados artefatos) alimentam as
atividades de projeto. Cada atividade de projeto resulta em uma saída (novos artefatos).
O projeto de arquitetura gera o artefato de arquitetura de sistema; o projeto de interface
resulta no artefato de especificação de interface; a seleção e projeto de componentes
gera o artefato de descrição dos componentes e o projeto de banco de dados resulta no
artefato de especificação de banco de dados. As saídas são os resultados das atividades
de projeto.
Atividades de projeto
Projeto de Projeto de
arquitetura interface
Projeto de Seleção e
banco de dados projeto de
componentes
Saídas do projeto
Ainda sobre a Figura 4, o que é feito em cada uma das atividades de projeto? Vale
destacar que essas atividades são intercaladas e interdependentes.
• Projeto de arquitetura: a estrutura geral do software e os componentes (módulos
ou subsistemas) principais são identificados, inclusive seus relacionamentos e a for-
ma como eles serão distribuídos;
14
• Projeto de interface: as interfaces entre os componentes do sistema são definidas,
sendo que a especificação dessas interfaces deve ser explícita;
• Seleção e projeto de componentes: buscas por componentes reutilizáveis são
realizadas e, não havendo componentes apropriados, novos componentes de sof-
tware são projetados;
• Projeto de banco de dados: as estruturas de dados do software são definidas, além da
forma de representação dessas estruturas em um banco de dados (SOMMERVILLE, 2019).
15
15
UNIDADE Contexto e Visões de Arquitetura
No que diz respeito à visão “+1” do referido modelo, esta corresponde à visão de
caso de uso, isto é, um resumo dos casos de uso mais significativos sob o ponto de vista
arquitetural; uma síntese das realizações de casos de uso. A visão de caso de uso retrata
uma história comum que agrupa o entendimento das outras quatro visões e a forma
como elas se inter-relacionam (LARMAN, 2007).
Visão Visão
lógica física
Arquitetura
de sistema
Visão de Visão de
desenvolvimento processo
16
Todas essas visões arquiteturais são obrigatórias para projetar e documentar uma
arquitetura de uma aplicação de software?
Vale ressaltar que padrões arquiteturais também podem ser associados às distintas
visões de um sistema de software. Segundo Bezerra (2015), o desenvolvimento de um
produto de software complexo exige de seus desenvolvedores o estudo desse sistema
a partir de diversas visões, mas de acordo com as características e complexidade do
software, nem todas as perspectivas arquiteturais precisam ser consideradas. Por exem-
plo, se o software tiver que ser implantado em uma estrutura física de processador
único, não há necessidade da visão de implantação; outro exemplo é se o sistema for
constituído de um único processo, nesse caso, a visão de processo é irrelevante. De forma
geral, a depender do sistema de software, as visões podem ser classificadas pelo grau de
importância (BEZERRA, 2015).
Processo Unificado
O Processo Unificado (PU), do inglês Unified Process (UP), é um modelo de proces-
so de desenvolvimento de software idealizado por Ivar Jacobson, Grady Booch e James
Rumbaugh e tem como princípio três características fundamentais: a) é dirigido a casos
de uso; b) é centrado na arquitetura; c) é iterativo e incremental.
17
17
UNIDADE Contexto e Visões de Arquitetura
Elaboração
Concepção
ento
planejam modelag
em
ão
construç
ão
comunicaç
entrega Construção
Versão Transição
incremento de software
Produção
Figura 6 – O Processo Unificado
Fonte: Adaptado de PRESSMAN; MAXIM, 2016, p. 57
18
• A fase de construção desenvolve ou adquire componentes de software com base
no modelo arquitetural preliminar, operacionalizando os casos de uso para os usu-
ários. Para isso ser possível, os modelos de análise e de projeto, iniciados na fase
de elaboração são finalizados para representar a versão final do incremento do
software, e, portanto, os componentes exigidos para o incremento (versão) são
implementados, realizando em paralelo os testes de unidade para cada componente
de software. A composição dos componentes e os testes de integração também são
realizados. Os casos de uso são usados para se realizar os testes de aceitação ainda
nessa fase;
• A fase de transição engloba as atividades de construção e entrega. Nessa fase, o
software é entregue ao usuário para realizar testes beta e fornecer feedback quanto
aos defeitos identificados e às modificações necessárias; materiais de apoio aos usu-
ários também são elaborados para efetivar o lançamento da versão. Ao final da fase
de transição, o incremento do software torna-se uma versão funcional do produto
de software, ou seja, pronto para ser utilizado;
• A fase de produção realiza o monitoramento contínuo da operação da aplicação
de software pela comunidade usuária, disponibilizando suporte para a infraes-
trutura disponível e avaliando relatórios de defeitos e solicitações de mudanças
(PRESSMAN; MAXIM, 2016).
19
19
UNIDADE Contexto e Visões de Arquitetura
Informações sobre The Agile Unified Process (AUP), disponível em: https://bit.ly/2Hb5PKL
20
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Ambysoft
https://bit.ly/2Hb5PKL
Leitura
O que é arquitetura de software?
https://bit.ly/3lH4yKr
Qual O Real Papel do Arquiteto de Software?
https://bit.ly/3f6MTsW
As qualidades de um arquiteto de software
https://bit.ly/35EvS6t
Apêndice a 2 de junho de 2020, palestra sobre arquitetura de software
https://bit.ly/2H8rLGa
IBM Rational Unified Process
https://bit.ly/3lHjcB8
21
21
UNIDADE Contexto e Visões de Arquitetura
Referências
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. Ed. São
Paulo: Elsevier, 2015.
22