Apostila Tema 1 Primeiro Bimestre
Apostila Tema 1 Primeiro Bimestre
Apostila Tema 1 Primeiro Bimestre
SOFTWARE
Unidade 1
Modelagem de requisitos
CEO
Diretora Editorial
ALESSANDRA FERREIRA
Gerente Editorial
Projeto Gráfico
TIAGO DA ROCHA
Autoria
EVERTON GOMEDE
Everton Gomede
AUTORIA
ENGENHARIA DE SOFTWARE
4
ÍCONES
Unidade 1
ENGENHARIA DE SOFTWARE
5
Princípios que orientam a prática em engenharia de
software............................................................................................. 9
SUMÁRIO
A natureza do software.............................................................................. 9
Software legado.................................................................................................. 16
Engenharia de software........................................................................... 17
Análise de requisitos.......................................................................................... 25
Tipos de requisitos............................................................................................. 28
Unidade 1
Caso de uso......................................................................................................... 37
Diagramas de sequência................................................................................... 39
Visões arquitetônicas......................................................................................... 47
Padrões de arquitetura..................................................................................... 50
ENGENHARIA DE SOFTWARE
6
Você sabia que a área de construção de software é uma
das mais demandadas na indústria, e será responsável pela
APRESENTAÇÃO
geração de mais de milhões de empregos nos próximos 10 anos?
Isso mesmo. A área de engenharia de software faz parte da cadeia
de processamento de dados de uma empresa. Sua principal
responsabilidade é permitir o gerenciamento de transações
de negócios bem como a utilização dos dados para tomada de
decisão. O progresso na engenharia de software nos últimos
50 anos foi surpreendente. Nossas sociedades não poderiam
funcionar sem grandes sistemas de software profissional. Serviços
públicos e infraestrutura nacionais – energia, comunicações e
transporte – dependem de sistemas de computador complexos
e confiáveis. O software nos permitiu explorar o espaço e criar
a World Wide Web – o sistema de informação mais importante
Unidade 1
da história. Smartphones e tablets são onipresentes e toda sorte
de aplicativos de software para esses dispositivos surgiu nos
últimos anos. Entendeu? Ao longo desta unidade letiva, você vai
mergulhar neste universo!
ENGENHARIA DE SOFTWARE
7
Olá. Seja muito bem-vindo à Unidade 1. Nosso objetivo
é auxiliar você no desenvolvimento das seguintes competências
OBJETIVOS
eXperience – UX).
ENGENHARIA DE SOFTWARE
8
Princípios que orientam a
prática em engenharia de
software
Ao término deste capítulo, você será capaz
de entender como funcionam os princípios
fundamentais de software. Isso será essencial
OBJETIVO para o exercício de sua profissão. As pessoas
que tentaram fazer isso sem a devida instrução
tiveram problemas ao construir um software
de forma profissional. E então? Motivado para
desenvolver essa competência? Vamos lá!
A natureza do software
Unidade 1
O software serve a dois propósitos (PRESSMAN, 2021). Ele
serve como meio de entrega de um produto e como o próprio
produto. Oferece como produto o poder de processamento
representado no hardware do computador ou, de forma
mais ampla, em uma rede de computadores que podem ser
acessados pelo hardware local. O software é um transformador
de informações que pode produzir, gerenciar, adquirir, modificar,
exibir ou transmitir informações.
ENGENHARIA DE SOFTWARE
9
O produto mais significativo de nosso tempo – a informação
– é fornecido por software (SOMMERVILLE, 2016). Ele gerencia
informações de negócios para aumentar a competitividade,
fornece um portal para redes globais de informações (como
a internet), transforma dados pessoais (como transações
financeiras de um indivíduo) para torná-los mais úteis em um
contexto local e fornece os meios para adquirir informações em
todas as suas formas.
ENGENHARIA DE SOFTWARE
10
Figura 1 – Ciclo de vida tradicional de um hardware
Unidade 1
Fonte: Elaborada pela autoria (2023).
ENGENHARIA DE SOFTWARE
11
As questões ambientais que levam ao desgaste do
hardware não afetam o software. Portanto, teoricamente, a “curva
idealizada” representada na Fig. 2 deve representar a curva de
taxa de falha do software. No início da vida de um programa,
falhas não descobertas resultarão em altas taxas de falha. No
entanto, estes são fixos e, como pode ser visto, a curva achata.
Os modelos reais de falha de software são muito simplificados
pela curva imaginada (DOGLIO, 2022).
ENGENHARIA DE SOFTWARE
12
a cada nova mudança, uma quantidade de erros acaba sendo
inserida como efeito colateral. O trabalho de um engenheiro de
software é manter a curva de erros dentro de um valor aceitável.
Unidade 1
Atualmente, sete grandes categorias de software de
computador apresentam desafios contínuos para engenheiros
de software.
ENGENHARIA DE SOFTWARE
13
sofisticados, estruturas de dados complicadas e
inúmeras interfaces externas.
ENGENHARIA DE SOFTWARE
14
•• O software de linha de produtos é criado para
oferecer um determinado recurso para uso por uma
variedade de clientes. Os produtos de controle de
estoque, por exemplo, se enquadram na categoria de
software de linha de produtos (LONG, 2021). Outras
categorias incluem processamento de texto, planilhas,
computação gráfica, multimídia, entretenimento,
gerenciamento de banco de dados e aplicativos de
finanças pessoais e comerciais.
Unidade 1
usam principalmente texto e pouco visual para comunicar
informações. As WebApps estão se desenvolvendo em
ambientes de computação complexos, no entanto, à
medida que a Web 2.0 se consolida (DOGLIO, 2022), esses
ambientes não apenas fornecem ao usuário final recursos
autônomos, recursos de computação e conteúdo, mas
também integração com bancos de dados corporativos e
aplicativos de negócios.
ENGENHARIA DE SOFTWARE
15
nadas situações, enquanto, em muitas outras, programas já exis-
tentes estão sendo corrigidos, modificados e aprimorados.
Software legado
Um dos sete grandes campos de aplicação cobertos
na parte anterior tem centenas de milhares de programas
de computador. Um software moderno que acaba de ser
disponibilizado ao público, à comunidade empresarial e ao
governo está entre eles. Mas alguns outros aplicativos são
consideravelmente mais antigos do que eles.
ENGENHARIA DE SOFTWARE
16
Engenharia de software
Você deve estar ciente de algumas realidades básicas
para criar um software preparado para lidar com as dificuldades
do século XXI:
Unidade 1
recursos e serviços que o programa deve oferecer.
Portanto, antes de criar uma solução de software, um
esforço deliberado deve ser feito para compreender o
problema.
ENGENHARIA DE SOFTWARE
17
•• O software está se tornando cada vez mais importante
para as operações e controles diários, bem como para a
tomada de decisões estratégicas e táticas por pessoas,
corporações e governos. Pessoas e grandes corporações
podem sofrer desde um leve incômodo até falhas
catastróficas se o programa falhar (DOGLIO, 2022). O
software deve, portanto, ser de excelente qualidade.
QUALIDADE
MÉTODOS
PROCESSOS
FERRAMENTAS
ENGENHARIA DE SOFTWARE
18
Engenharia de software tem como finalidade a produção e
distribuição de software com qualidade. Todo processo de software
deve ser baseado na qualidade como objetivo final. Processos,
ferramentas e métodos suportam o alcance da qualidade.
Unidade 1
Por exemplo, software não se desgasta, mas
se deteriora. Além disso, software não possui
peças sobressalentes e qualquer modificação
precisa passar por um novo ciclo de engenharia.
Portanto, você deve considerar esses fatores no
desenvolvimento de qualquer software.
ENGENHARIA DE SOFTWARE
19
Entendendo os requisitos de
um software
Ao término deste capítulo, você será capaz de
compreender os conceitos de requisitos de
software. Isso será fundamental para o exercício
OBJETIVO de sua profissão. As pessoas que tentaram fazer
isso sem a devida instrução tiveram problemas ao
construir software de forma profissional. E então?
Motivado para desenvolver essa competência?
Vamos lá!
Engenharia de requisitos
Unidade 1
ENGENHARIA DE SOFTWARE
20
de modelagem do ponto de vista do processo de software. Ele
precisa ser modificado para atender aos requisitos do trabalho
que está sendo feito, do projeto, do produto e do processo.
Unidade 1
partida, cruzar a ponte eleva você bem acima
do projeto, dando-lhe a chance de examinar
seu contexto, as necessidades específicas que
o projeto e a construção devem atender, as
prioridades que determinam a sequência em
que as tarefas devem ser concluídas e as dados,
funções e comportamentos que influenciarão
significativamente o projeto final.
ENGENHARIA DE SOFTWARE
21
•• Iniciação – quais são as etapas iniciais de um projeto
de software? A demanda por um novo sistema ou
produto baseado em computador surge de uma só
vez ou se desenvolve com o tempo? Essas perguntas
não têm respostas conclusivas. Às vezes, tudo o que é
necessário para desencadear um esforço significativo de
engenharia de software é uma simples discussão (LONG,
2021). A maioria dos projetos, no entanto, começa
quando uma necessidade da empresa é descoberta ou
um possível novo mercado ou serviço é identificado.
As partes interessadas (como gerentes de negócios,
profissionais de marketing e gerentes de produto)
desenvolvem um caso de negócios para a ideia, tentam
avaliar o tamanho e o escopo do mercado, conduzem
Unidade 1
ENGENHARIA DE SOFTWARE
22
•• Problemas de compreensão – clientes e usuários
frequentemente omitem informações porque
acreditam que sejam “óbvias”, especificam
requisitos conflitantes com os de outros clientes
e usuários ou especificam requisitos que são
ambíguos ou não testáveis. Frequentemente, eles
também carecem de um entendimento completo
das capacidades e restrições de seu ambiente de
computação e do domínio do problema.
Unidade 1
são aprimoradas. O objetivo principal dessa atividade
é criar um modelo mais detalhado de requisitos que
especifique diferentes facetas do comportamento,
função e informação do software (BIRCHALL, 2016). O
desenvolvimento e a melhoria de cenários de usuário
que retratam como o usuário final (e outros jogadores)
irá interagir com o sistema é o que motiva a elaboração.
As classes de análise — itens de domínio de negócios
visíveis para o usuário final — são extraídas de cada
cenário de usuário por meio de análise. As características
de cada classe de análise são especificadas, juntamente
com os serviços que cada classe necessita (DOGLIO,
2022). Vários diagramas suplementares são criados
depois que as ligações e a cooperação entre as classes
são determinadas.
ENGENHARIA DE SOFTWARE
23
solicitações concorrentes, cada um alegando que
sua versão é “importante para nossas necessidades
específicas”. Esses conflitos precisam ser resolvidos
por meio de um processo de negociação (PRESSMAN,
2021). Clientes, usuários e outras partes interessadas
são convidados a classificar os critérios antes de falar
sobre qualquer conflito de ordem. Os requisitos são
excluídos, consolidados e/ou ajustados usando um
processo iterativo que prioriza os requisitos, avalia seu
custo e risco e resolve disputas internas para satisfazer
cada parte até certo ponto.
ENGENHARIA DE SOFTWARE
24
gerenciar e acompanhar as necessidades e mudanças
nos requisitos por meio do uso do gerenciamento de
requisitos.
Análise de requisitos
A definição dos recursos operacionais do software, a
identificação de sua interface com outros componentes do
sistema e o estabelecimento de requisitos aos quais o software
deve aderir são resultados da análise de requisitos. Quer você
se considere um engenheiro de software, analista ou modelador,
Unidade 1
a análise de requisitos permite que você elabore os requisitos
fundamentais desenvolvidos durante as tarefas de engenharia de
requisitos de concepção, elicitação e negociação (SOMMERVILLE,
2016). A ação de modelagem de requisitos resulta em um ou
mais dos seguintes tipos de modelos:
ENGENHARIA DE SOFTWARE
25
•• Modelos comportamentais que descrevem como o
software se comporta como consequência de “eventos”
externos.
Abordagens de modelagem de
requisitos
Em um método de modelagem de requisitos conhecido
como análise estruturada, os dados e as operações que os
transformam são tratados como entidades distintas. Os objetos
de dados são modelados para especificar suas propriedades e
conexões (DOGLIO, 2022). Os processos de manipulação de objetos
de dados são modelados para explicar como eles transformam os
dados à medida que os objetos se movem pelo sistema.
ENGENHARIA DE SOFTWARE
26
As equipes de software frequentemente selecionam uma
técnica e eliminam todas as representações da outra, apesar do
fato de que o modelo de requisitos sugerido neste livro incorpora
elementos de ambas as abordagens (PRESSMAN, 2021). Qual
combinação de representações dará aos interessados o melhor
modelo de necessidades de software e o link mais eficiente
para o design de software é a verdadeira questão, não qual
representação é ideal. Pode-se observar, na Fig. 4, os quatro
tipos de abordagens para requisitos de software, baseado em
cenários, classes, comportamento e fluxos.
Figura 4 – Os quatro tipos de abordagens para requisitos de software, baseado em cenários,
classes, comportamento e fluxos
Unidade 1
Requisitos de
software
Baseado em
Baseado em fluxos
comportamentos
ENGENHARIA DE SOFTWARE
27
classes que compõem o sistema é alterado por eventos externos,
conforme demonstrado por características comportamentais
(PRESSMAN, 2021). Por fim, os componentes orientados a fluxo
mostram como o sistema transforma as informações à medida
que passam por vários processos do sistema, mostrando como
os objetos de dados passam por essa transformação.
Tipos de requisitos
Os serviços que um sistema deve oferecer e as limitações
de como ele pode operar são descritos nos requisitos de um
sistema. Essas especificações refletem as demandas dos usuários
para que um sistema realize tarefas como fazer um pedido,
gerenciar um gadget ou descobrir informações (DOGLIO, 2022).
Unidade 1
ENGENHARIA DE SOFTWARE
28
os requisitos funcionais também podem declarar
explicitamente o que o sistema não deve fazer.
2. Requisitos não funcionais são restrições aos serviços
ou funções oferecidas pelo sistema. Eles incluem
restrições de tempo, restrições no processo de
desenvolvimento e restrições impostas por padrões.
Os requisitos não funcionais geralmente se aplicam ao
sistema como um todo, em vez de recursos ou serviços
individuais do sistema.
3. Requisitos de domínio são regras que suportam as
decisões oferecidas pelo sistema. Eles incluem as mais
variadas decisões que podem ser expressas no formato
condição/ação. Esses requisitos classificam os sistemas
como sistemas especialistas.
Unidade 1
Grandes sistemas de software têm requisitos em
constante evolução. Esses sistemas são frequentemente criados
para lidar com problemas «perversos» – problemas que não
podem ser totalmente definidos –, o que é uma das razões para
os ajustes contínuos. Os requisitos de software inevitavelmente
estarão incompletos, porque o problema não pode ser
totalmente especificado. A percepção das partes interessadas
sobre o problema evolui constantemente durante o processo de
desenvolvimento de software.
Figura 5 – O ciclo do entendimento de um problema
Mudança no
Entendimento inicial entendimento do
Requisito inicial
do problema problema
Mudança no
Requisito modificado
requisito inicial
ENGENHARIA DE SOFTWARE
29
Partimos de uma visão inicial e, com isso, desenvolvemos
uma primeira versão do requisito. Depois melhoramos o
entendimento do problema, o que afeta o requisito desenvolvido.
Nesse caso, uma mudança é necessária. Quanto menor o
entendimento, maior a quantidade de mudanças.
ENGENHARIA DE SOFTWARE
30
uma variedade de necessidades. Eles podem ter
prioridades opostas ou incompatíveis. Os requisitos
finais do sistema devem sempre ser um compromisso,
e é necessário dar precedência a algumas partes
interessadas. Com o tempo, verifica-se frequentemente
que as prioridades dos requisitos precisam mudar, e o
atendimento prestado aos vários stakeholders precisa
de ser ajustado.
Unidade 1
necessidades do sistema. Assim que um rascunho do documento
de requisitos estiver disponível, o processo de “gerenciamento
de requisitos” deve começar.
ENGENHARIA DE SOFTWARE
31
de gerenciamento de mudanças (DOGLIO, 2022). Em vez disso,
o usuário deve dar alta prioridade a essa modificação e deve
escolher quais recursos do sistema devem ser descartados na
próxima interação para que a alteração seja implementada.
ENGENHARIA DE SOFTWARE
32
Modelagem de requisitos de
software
Ao término deste capítulo, você será capaz de
entender como funciona a modelagem dos
requisitos de software. Isso será fundamental
OBJETIVO para o exercício de sua profissão. A modelagem
é crucial para a construção de um software bem-
feito. Além disso, a modelagem auxilia a resolver
o problema de identificar o que o software precisa
fazer. As pessoas que tentaram fazer isso sem a
devida instrução tiveram problemas ao construir
software de forma profissional. E então? Motivado
para desenvolver essa competência? Vamos lá!
Unidade 1
Estratégias de modelagem de
requisitos
A definição de classes e como elas interagem para
atender às necessidades do cliente são os principais tópicos da
análise orientada a objetos, um método diferente de análise de
modelagem (DOGLIO, 2022).
ENGENHARIA DE SOFTWARE
33
mais populares em uso atualmente (PRESSMAN, 2021). Apesar
de não ser um componente formal da UML, o diagrama de fluxo
de dados (DFD) e os diagramas e metadados associados podem
ser usados para complementar os diagramas UML e oferecer
mais informações sobre as necessidades e o fluxo do sistema.
o modelo:
ENGENHARIA DE SOFTWARE
34
funcionalidade do sistema (PRESSMAN, 2021). Você pode criar
modelos do sistema atual e do que será criado.
Unidade 1
implementação de sistema completa ou parcial pode
ser criada a partir de modelos de sistema se você
empregar um processo de engenharia orientado a
modelo.
ENGENHARIA DE SOFTWARE
35
•• Uma perspectiva de interação, em que você modela as
interações entre um sistema e seu ambiente ou entre
os componentes de um sistema.
ENGENHARIA DE SOFTWARE
36
Caso de uso
Um caso de uso pode ser pensado como uma explicação
direta do que um usuário espera de um sistema durante
esse encontro. Cada caso de uso ilustra uma tarefa distinta
envolvendo interação externa com um sistema. Um caso de uso
é representado em sua forma mais básica como uma elipse, com
os atores envolvidos como bonequinhos, representada na figura
seguinte por um caso de uso do sistema. Em vez das informações
detalhadas sobre cada consulta que são mantidas no sistema,
esse sistema mais abrangente preserva dados resumidos sobre
um paciente.
Unidade 1
de sistema é necessário para um determinado
sistema e quando terminar o teste. É impossível
IMPORTANTE realizar testes exaustivos, nos quais todos os
cenários concebíveis de execução do programa
são examinados. O teste deve, portanto, ser
baseado em uma gama limitada de cenários de
teste potenciais. As empresas de software devem,
idealmente, ter diretrizes para selecionar esse
subconjunto. Esses regulamentos podem ser
baseados em regulamentos de teste genéricos,
como a exigência de que cada instrução de
programa seja executada pelo menos uma vez.
Como alternativa, eles podem se basear na
experiência de uso do sistema e se concentrar
em testar os aspectos do sistema operacional.
ENGENHARIA DE SOFTWARE
37
Figura 6 – Caso de uso básico
Registrar
Remover
Visualizar
Recepcionista
Transferir
Contactar
Unidade 1
ENGENHARIA DE SOFTWARE
38
Diagramas de sequência
Na UML, os diagramas de sequência são geralmente
usados para modelar interações entre objetos individuais, bem
como interações entre atores e objetos em um sistema (DOGLIO,
2022).
Unidade 1
padrão internacional utilizado por engenheiros
de software ao redor do mundo. Ela foi criada
VOCÊ SABIA? como uma resposta à forma improvisada de
modelagem de requisitos de software. Para
entender mais, acesse o link disponível aqui.
ENGENHARIA DE SOFTWARE
39
Figura 7 – Exemplo de diagrama de sequência
Unidade 1
ENGENHARIA DE SOFTWARE
40
E então? Gostou do que lhe mostramos?
Aprendeu mesmo tudinho? Agora, só para
termos certeza de que você realmente entendeu
RESUMINDO o tema de estudo deste capítulo, vamos resumir
tudo o que vimos. Você deve ter aprendido
sobre como modelar requisitos de software. Isso
tende a ser um desafio, pois no início do projeto
temos pouca informação e a tendência é tentar
escrever código sem entender o problema a ser
resolvido primeiramente. Além disso, você deve
ter aprendido os tipos de abordagem e como eles
são usados e gerenciados durante o ciclo de vida
do software.
Unidade 1
ENGENHARIA DE SOFTWARE
41
Conceitos de design de software
Ao término deste capítulo, você será capaz
de entender como funcionam os princípios
fundamentais de software. Isso será fundamental
OBJETIVO para o exercício de sua profissão. As pessoas
que tentaram fazer isso sem a devida instrução
tiveram problemas ao construir software de forma
profissional. E então? Motivado para desenvolver
essa competência? Vamos lá!
Projeto arquitetônico
Observe a figura a seguir para ver o que quero dizer quando
falo sobre arquitetura de sistema. Uma representação abstrata
da arquitetura de um sistema de robô de embalagem é mostrada
nesse diagrama. Esse sistema robótico é capaz de embalar
uma variedade de coisas. Ele seleciona itens em uma esteira,
determina o tipo de item e escolhe a embalagem apropriada,
tudo usando um componente de visão (SOMMERVILLE, 2016).
Depois disso, o sistema transporta os itens da esteira de entrega
para embalagem. Ele carrega mercadorias embaladas em um
ENGENHARIA DE SOFTWARE
42
transportador diferente. Esses elementos e as conexões entre
eles são exibidos no modelo arquitetônico.
Figura 8 – Exemplo de arquitetura de software
Sistema de visão
Sistema de Sistema de
Sistema de
identificação de controle de roda
controle braço
objetos
Sistema de controle
de pacotes
Unidade 1
Sistema de
Controle de
pacotes
esteira
ENGENHARIA DE SOFTWARE
43
não é realista. Os elementos arquitetônicos primários devem
ser reconhecidos, pois representam os recursos de alto nível
do sistema. Como resultado, você pode sugerir uma arquitetura
de sistema abstrata como parte do processo de engenharia de
requisitos, em que você vincula coleções de recursos ou funções
do sistema a componentes ou subsistemas substanciais. As
necessidades e os recursos mais complexos do sistema são
então discutidos com as partes interessadas usando esse
detalhamento.
ENGENHARIA DE SOFTWARE
44
de manutenção de um sistema. Os componentes individuais do
sistema, de acordo com a Bosch, implementam os requisitos
funcionais do sistema, mas o design do sistema tem um impacto
significativo nos recursos não funcionais do sistema.
Unidade 1
arquitetônico como uma série de escolhas a serem feitas, e não
como uma série de tarefas a serem concluídas.
ENGENHARIA DE SOFTWARE
45
Um fator crucial que afeta o desempenho e a confiabilidade do
sistema é a arquitetura de distribuição.
ENGENHARIA DE SOFTWARE
46
•• Disponibilidade: se a disponibilidade for uma
necessidade crucial, a arquitetura deve ser criada com
componentes redundantes, permitindo a substituição
e atualização de componentes sem a necessidade de
desligar o sistema.
Unidade 1
podem entrar em conflito. O uso de componentes enormes,
por exemplo, melhora o desempenho, enquanto o uso de
componentes pequenos e refinados melhora a capacidade de
manutenção. No entanto, uma compensação precisa ser feita
se os requisitos do sistema, como desempenho e capacidade
de manutenção, forem importantes (PRESSMAN, 2021). O
uso de vários padrões ou estilos de arquitetura para os vários
componentes do sistema pode ocasionalmente ajudá-lo a
conseguir isso. Hoje em dia, a segurança é quase sempre um
requisito crucial, por isso é importante criar uma arquitetura
que mantenha a segurança e, ao mesmo tempo, atenda a outros
requisitos não funcionais.
Visões arquitetônicas
Um único diagrama pode exibir apenas uma visão ou
perspectiva da arquitetura de um sistema, portanto é difícil
transmitir todas as informações pertinentes sobre seu design.
Poderia demonstrar a modularização de um sistema, as
ENGENHARIA DE SOFTWARE
47
interações entre os processos de tempo de execução ou as várias
estratégias de distribuição de componentes do sistema por
meio de uma rede (DOGLIO, 2022). Normalmente, você precisa
fornecer várias visualizações da arquitetura de software, porque
cada uma delas é valiosa em períodos diferentes para design e
documentação.
ENGENHARIA DE SOFTWARE
48
engenheiros de sistema. A abordagem tem quatro perspectivas:
lógica, de desenvolvimento, processo e física. A arquitetura que
atua como a visão “mais um” também é ilustrada usando alguns
casos de uso ou situações escolhidas. Consequentemente, o
modelo tem 4+1 perspectivas.
Unidade 1
durante o tempo de execução. Fazer avaliações de
características não funcionais do sistema, como
desempenho e disponibilidade, fica mais fácil com a
ajuda dessa abordagem.
ENGENHARIA DE SOFTWARE
49
Na realidade, as concepções conceituais da arquitetura
de um sistema são quase sempre criadas ao longo da fase de
projeto. Eles são usados para informar decisões arquitetônicas
e para descrever a arquitetura do sistema para as partes
interessadas (BIRCHALL, 2016). Algumas das outras perspectivas
também podem ser estabelecidas durante a fase de projeto,
quando vários componentes do sistema são considerados,
embora raramente seja essencial desenvolver uma descrição
abrangente de todos os ângulos. Além disso, pode ser concebível
conectar os vários pontos de vista de um sistema com os padrões
de arquitetura que serão abordados na seção a seguir.
Padrões de arquitetura
Unidade 1
ENGENHARIA DE SOFTWARE
50
Consequentemente, uma organização de sistema
que funcionou bem em sistemas anteriores deve ser descrita
em um padrão de arquitetura. Deve delinear as vantagens e
desvantagens do padrão, bem como quando usá-lo e quando
não é apropriado, conforme exibido no quadro a seguir.
Quadro 1 – Exemplo de documentação do padrão de projeto MCV. Pode-se seguir a mesma
ideia para todos
Unidade 1
com os dados é controlada e definida pelo componente
View. Teclas, cliques do mouse e outras interações do
usuário são gerenciados pelo componente Controller,
que então transmite esses eventos para a View e o
Model.
A figura 10 mostra a arquitetura de um sistema de
Exemplo aplicativo baseado na web, organizado usando o padrão
MVC.
Usado durante a visualização e interação com os
dados pode ser feito de várias maneiras. Utilizado
Quando usar adicionalmente quando não está claro que tipo de
interação ou apresentação de dados pode ser necessária
no futuro.
Permite a alteração independentemente dos dados e da
representação dos dados. Permite a apresentação dos
Vantagens
mesmos dados em várias formas, com as atualizações de
uma representação sendo refletidas em todas elas.
Pode envolver código adicional e complexidade de código
Desvantagens
quando os dados do modelo e as interações são simples.
ENGENHARIA DE SOFTWARE
51
seu gerenciamento de interação nesse padrão, que é suportado
pela maioria dos frameworks de linguagem (DOGLIO, 2022). A
descrição estilizada do padrão contém o nome do padrão, uma
explicação sucinta, uma representação gráfica e uma ilustração
do tipo de sistema no qual o padrão é aplicado. Inclua detalhes
sobre as vantagens e desvantagens do padrão, bem como
quando ele deve ser empregado.
Figura 10 – Model-View-Controller (MVC)
Browser
VIEW
Unidade 1
CONTROLLER Form to
Páginas dinâmicas
Requisição via HTTP display
Páginas estáticas
User events
Change
notification
Update Refresh request
request
MODEL
Regra de negócio
Bancos de dados
relacionais e não
relacionais
ENGENHARIA DE SOFTWARE
52
É impossível cobrir todos os padrões gerais que podem ser
aplicados ao desenvolvimento de software neste curto espaço de
tempo. Em vez disso, dou alguns exemplos de padrões populares
que também aderem a princípios sólidos de design arquitetônico.
Unidade 1
que ocorre quando pedaços de software são
utilizados de forma integrada. Dessa forma, o
projeto de arquitetura auxilia a gerenciar esse
comportamento emergente.
ENGENHARIA DE SOFTWARE
53
REFERÊNCIAS
BIRCHALL, C. Reengenharia de software legado. [S.l.]: Editora
Manning, 2016.
ENGENHARIA DE SOFTWARE
54