Escolar Documentos
Profissional Documentos
Cultura Documentos
DE SISTEMAS E
INFORMAÇÕES II
ANÁLISE E PROJETO
DE SISTEMAS E
INFORMAÇÕES II
Copyright © UVA 2020
Nenhuma parte desta publicação pode ser reproduzida por qualquer
meio sem a prévia autorização desta instituição.
Formato: PDF
ISBN 978-65-5700-095-3
1. Análise de sistemas. 2. Projeto de sistemas. 3. Arquitetura de software. I.
Universidade Veiga de Almeida. II. Título.
CDD – 004.21
Apresentação 6
Autores 7
UNIDADE 1
• A modularização de um sistema
UNIDADE 2
UNIDADE 3
• Diagrama de Componentes
• Diagrama de Objetos
UNIDADE 4
• Diagrama de Perfil
• Diagrama de Implantação
APRESENTAÇÃO
Assim, nesta disciplina olharemos um pouco mais para fatores tecnológicos que irão im-
pactar a elaboração do modelo físico de um sistema, com base nos diagramas estrutu-
rais e comportamentais da UML, para o desenvolvimento de soluções a serem utilizadas
na implementação de um software.
6
AUTORES
7
AUTORES
8
UNIDADE 1
OBJETIVO
10
Aspectos de um modelo físico
Para refletir
Quais as consequências que podem surgir, caso não seja feito um planeja-
mento prévio?
Imagine que você começa algo e percebe que um dos itens de que necessita
não está disponível?
Façamos uma analogia: a cozinheira vai preparar o arroz, refoga o alho a ce-
bola e, na hora que seria a de colocar o arroz na panela, descobre que esse
ingrediente acabou. O que pode acontecer?
11
Pode também surgir a situação em que seja necessário algo novo, como o uso da nova
versão de algum componente da arquitetura. Nesse caso, esse componente deve ser
buscado, instalado, testado para depois ser disponibilizado para uso no desenvolvimen-
to. Assim, para que haja tal disponibilidade, poderá haver uma demora não prevista no
cronograma, que poderá impactar o prazo final da entrega. Todas essas avaliações de-
vem estar disponíveis quando o primeiro método é entregue ao desenvolvedor para
sua construção. Caso contrário pode ocorrer de ele interromper a construção pela indis-
ponibilidade de algum desses recursos ou utilizar um padrão ou versão e depois ter que
refazer tudo utilizando novos. Lembra do exemplo da cozinheira?
• Fontes pequenas.
• Excesso de “cliques”.
• Dificuldade de navegação.
Não podemos esquecer das di- Diferentes recursos que impactam o desenvolvimento.
ferentes plataformas e browsers
que uma aplicação web pode uti-
lizar, devendo ser previstos o uso
e testes em cada uma delas.
12
A elaboração do projeto para a construção do software consiste em identificar e tor-
nar disponíveis os recursos tecnológicos que serão utilizados para sua construção.
Como, porém, decidir quais recursos tecnológicos serão utilizados? Ao verificar a figura
a seguir observamos que existem muitas opções que podem ser avaliadas para diversos
aspectos relacionados à construção do software.
13
[...] a arquitetura de um sistema tem diversos elementos como:
• Elementos utilitários.
• Elementos de interação.
• Elementos que fazem parte do domínio do problema.
• Elementos de conexão.
• Elementos de persistência etc.
Algumas dessas ferramentas podem ser padrão, como o ambiente de dados quando a
empresa utiliza um único SGBD.
Importante
14
O uso de arquiteturas aplicadas à Engenharia de Software também pode ser definido
nesse momento como Arquitetura Orientado a Serviço (SOA) ou Arquitetura de MicroSer-
viços, ambas fazendo parte da arquitetura do sistema.
A definição das estratégias para o desenvolvimento, testes e implantação devem ser de-
finidas nesse momento. Essas estratégias permitem que o gerente do projeto de desen-
volvimento do software consiga previamente definir as ações que devem ser realizadas
em cada uma das etapas a seguir.
Todas as ações descritas devem ser elaboradas na etapa de construção do projeto físico
do software. Os componentes devem ser disponibilizados para que seja iniciada a etapa
de implementação do software na qual os componentes do produto são produzidos, tes-
tados e posteriormente implantados.
15
Mapeamento do projeto lógico para o físico
16
Cabe esclarecer que não existe um padrão sobre essas etapas, sendo possível en-
contrar outras formas de representação na literatura, no entanto utilizando-as como
referência. Vamos dividir as “duas metades” do processo, antes de iniciada a etapa de
implementação.
2 – Ao concluir a “primeira metade”, esse grupo de especialistas “sai de cena” dando lugar
àqueles que passam a olhar o Sistema de Informação com uma visão tecnológica. Nes-
sa nova etapa o sistema começa a ter características de um projeto físico pela inserção
de aspectos tecnológicos. Algumas transformações e ações preparatórias começam a
ser realizadas para que possa ser iniciada a etapa de implementação do software, ou
seja, inicia-se o desenvolvimento dos métodos ou outros componentes utilizando-se
um ambiente de desenvolvimento e uma linguagem de programação.
Importante
17
Exemplo
18
Importante
Apesar de a UML propor padrão para seus diagramas, o uso de cada um deles,
assim como os procedimentos realizados para produzir a documentação de
um sistema, varia de acordo com a empresa e tamanho de sua equipe de pro-
fissionais de TI. Algumas empresas valorizam a documentação, por entender
que facilita o entendimento do projeto quando houver necessidade de mudan-
ças futuras. Outras entendem que é “perda de tempo” e que o mais importante
é produzir. Não busque uma verdade absoluta sobre isso, pois não existe. Avalie
os prós e contras e chegue à sua conclusão.
Vamos relacionar alguns dos itens que devem ser previamente definidos antes de iniciar
a etapa de desenvolvimento do software. A definição prévia evita interrupções ou retra-
balho durante essa etapa.
A definição de padrões para os tipos dos componentes que farão parte das inter-
faces, como tamanho, tipo de fonte, posicionamento das ações mais comuns, são
alguns dos exemplos do que deve ser previamente definido para evitar mudanças,
principalmente quando o desenvolvimento for realizado por uma equipe. Imagine
uma aplicação em que cada interface tem um padrão diferente!
19
• Propor o modelo de navegação do sistema – Deve ser proposta a estrutura de
navegação e acesso aos diferentes módulos que compõem o sistema. Esse mode-
lo é comum quando estruturas de menu e submenu de acesso são utilizadas para
definir o acesso às diferentes funcionalidades. A forma como a estrutura das funcio-
nalidades será organizada faz parte desta definição.
Após a validação do software, ou de uma parte dele, será feita sua implantação. Nessa eta-
pa outras ações podem ser previamente realizadas, como o registro das ações de migra-
ção de uma versão para outra, os procedimentos para mudança da estrutura de uma base
de dados etc. A definição dessas ações varia de acordo com a característica do desenvol-
vimento que está sendo feito e deve ser elaborada nas etapas de projeto e implementação.
20
A modularização de um sistema
O conceito de modularidade pode ser aplicado em várias situações, seja na área empre-
sarial ou industrial. Se você analisar um móvel feito em madeira, por exemplo, observará
que ele é desmontável na maioria das vezes e sua montagem é feita por meio de para-
fusos de tamanho previamente definido. Esses mesmos parafusos podem ser utilizados
em diferentes móveis que possuem o mesmo tamanho para encaixe. Ao utilizar o mes-
mo componente em diferentes produtos você otimiza sua produção, reduzindo o custo.
Seguindo essa mesma linha de raciocínio, imagine uma companhia aérea que possui
200 aeronaves de 50 tipos diferentes. Ela terá que ter componentes para a manutenção
para todos esses tipos. No entanto, se as 200 aeronaves forem de cinco tipos diferentes,
a compra de material de manutenção será em maior quantidade, o que reduzirá o custo
de aquisição, podendo um componente ser utilizado em diferentes aeronaves. Este con-
ceito é aplicável em diversas áreas industriais, podendo ser observado na maioria dos
produtos que utilizamos no nosso dia a dia.
Importante
21
Componentes do motor de um veículo.
Vamos analisar a figura composta de diversos componentes que fazem parte, por exem-
plo, do motor de um veículo. Esses componentes, de forma isolada, não possuem nenhu-
ma utilidade, ou seja, não agregam valor ao motor ou ao veículo, pois somente produzem
esse valor se combinados a outros componente. Um componente de um software, quando
analisado de forma isolada, representa exatamente essa situação. Ele tem um objetivo es-
pecífico, mas de forma isolada não produz valor para o usuário.
Por exemplo, um módulo que realiza o cálculo da área de uma região só tem valor se
estiver associado a outro módulo que, por sua vez, possua as medidas e a característica
da região cuja área será calculada, fazendo uso do resultado obtido. Essa situação pode
ser observada na figura do motor completo, em que mesmos componentes representa-
dos na figura anterior aparecem integrados para alcançar um objetivo maior, que seria o
funcionamento do motor.
Motor completo.
22
O que nós fazemos apenas com o motor de um veículo? Se você deseja um veículo, são
necessários outros componentes, tais como: carroceria, pneus, sistema elétrico etc. Na
maioria dos casos, o que produz valor ao usuário não é um componente, mas sim o produ-
to acabado, ou seja, o veículo completo.
Ampliando o foco
Ainda neste exemplo, verificamos que existem vários outros componentes, como o que
faz a metragem do espaço para o cálculo, outro que identifica a figura do cômodo e
assim por diante. Em resumo, o software de engenharia possui todos os componentes
necessários sem a percepção do usuário.
Caso queira desenvolver outro software com objetivo diferente, mas que necessite reali-
zar desenhos, calcular área etc., basta utilizar esses componentes sem precisar reescre-
vê-los. Observou como agilizou o tempo de desenvolvimento? Não foi necessário desen-
volver todos os componentes, bastou usá-los.
Importante
23
Ao construir um componente de software, ele deve possuir as seguintes características:
Exemplo
Lembre-se de que pode haver método que seja específico a uma classe. Como
exemplo, temos aquele que consulta uma informação na base de dados a partir
de uma identificação, como a consulta dos dados de um aluno a partir da sua
matrícula em que, nesse caso, esse componente/método deve fazer parte do
componente maior associado à classe de negócio.
24
A partir da definição dos componentes, deve ser elaborada a sequência para o seu de-
senvolvimento, conforme as etapas descritas a seguir :
25
MIDIATECA
NA PRÁTICA
Estas e muitas outras perguntas precisam ser respondidas para que seja co-
nhecido o ambiente operacional, recursos tecnológicos, versões etc. que serão
utilizados para o desenvolvimento do software. As ações apresentadas nesta
unidade são realizadas pelos profissionais que respondem a estas perguntas e
produzem a documentação necessária para registrar os recursos e componen-
tes tecnológicos utilizados para a construção do software.
26
Resumo da Unidade 1
Nesta unidade você estudou as ações que devem ser realizadas para iniciar-se a etapa
de implementação de um software. Para que o início ocorra de forma segura devem ser
definidos os componentes tecnológicos que serão utilizados na construção do software,
deixando-os disponíveis e previamente testados sem que haja o risco de interromper
ou cancelar o desenvolvimento por inadequações técnicas. Eliminando os riscos, será
possível transformar os requisitos identificados em funcionalidades do software. Em re-
sumo, a construção do Sistema de Informação.
27
Referências
MODULARIDADE. In: WIKIPEDIA: the free encyclopedia. [San Francisco, CA: Wikimedia
Foundation, 2010]. Disponível em: http://en.wikipedia.org/wiki/Modularidade. Acesso em:
10 jul. 2020.
28
UNIDADE 2
Padrões de arquitetura
de software
INTRODUÇÃO
OBJETIVO
30
Arquitetura baseada em componentes
Ampliando o foco
31
Existem diversos termos similares que levam a soluções ou propostas próximas. Como
exemplo, os termos: Engenharia de Software baseada em componentes, Desenvolvimen-
to baseado em componentes ou Arquitetura baseada em componentes, da mesma forma
que Arquitetura de software ou Arquitetura de sistemas ou Arquitetura de componentes,
são alguns dos que tratam de forma muito próxima cada um dos objetivos. Em alguns
casos, existem diferenças entre eles que variam na forma como são implementados ou
em seu alcance como projeto. Entretanto, existem situações que possuem o mesmo
objetivo, sendo apenas tratadas com nomenclatura diferente.
32
Diferenças entre componentes e objetos
Considerando que existem diferenças entre métodos e componentes, para que um des-
ses componentes sejam criados alguns critérios devem ser considerados, conforme des-
critos abaixo:
33
• Independência: um componente não pode ser dependente de outro que não es-
teja encapsulado.
• Documentação: deve ser bem documentado, deixando de forma clara seus obje-
tivos e interfaces.
• Redução do custo e tempo: o reúso de componentes evita que haja novas imple-
mentações, reduzindo o tempo total do desenvolvimento.
• Facilidade de desenvolvimento: quanto menor o componente, menor o tempo
para desenvolvimento e teste, agilizando a entrega do produto.
in args
CLIENT OBJ
operation() OBJECT
(SERVANT)
REF
out args + return value
IDL DSI
SKELETON
IDL ORB DSI
DII
STUBS INTERFACE
Fonte: www.gta.ufrj.br.
34
• COM/COM+ (Component Object Model): desenvolvido pela Microsoft, o COM
consiste em um padrão de interface binária, que permite o acoplamento entre apli-
cações independentemente da linguagem desenvolvida. O COM+ é uma evolução
desse padrão utilizado em sistemas distribuídos, ou seja, as aplicações podem estar
em diferentes equipamentos. Segundo a Microsoft, “é um sistema independente de
plataforma, distribuído e orientado a objetos para a criação de componentes biná-
rios de software que podem interagir”.
Arquitetura DCOM.
Local Local
data data
IIS/SAP
DCOM
ASP COM
IUnknown
MTS
Query
Application
logic
Fonte: datahousecorp.com.
35
• JavaBeans e Entreprise JavaBeans – EJB: desenvolvido pela Sun, tem como ob-
jetivo permitir que unidades independentes e reutilizáveis possam ser manipuladas
pelos desenvolvedores a partir do ambiente de desenvolvimento da linguagem Java.
Dessa forma, ao utilizar um dos ambientes de desenvolvimento da linguagem (Ne-
tbeans ou Eclipse, por exemplo) é possível compartilhar suas próprias bibliotecas
(classes de negócios compartilhadas) ou bibliotecas do sistema (sql, swing, io etc).
Controller Model
Request
Sessions Beans
(EJB)
Client (servlet)
Entity Classes
(browser) (JPA)
View Database
Response
(JSP pages)
Fonte: netbeans.org.
36
Padrão Model-View-Control (MVC)
Embora não exista um padrão para esta construção, no que se refere às características
dos métodos que devem ser colocados em cada uma delas, há o consenso de que de-
vem ser construídas de forma independente, para que o reúso ou manutenção possa ser
feito sem que haja impactos nas demais.
37
Ampliando o foco
O padrão MVC foi desenvolvido em 1979 por Trygve Reenskaug para que fosse
uma arquitetura de software utilizada em aplicações desktop. Atualmente, esse
padrão tem sido mais utilizado em aplicações web, embora seja possível utili-
zá-lo em todos os tipos de implementação.
Vamos entender o que significam as três camadas que representam o padrão MVC, de-
talhando cada uma delas, seguindo a sequência que representa a execução de um pro-
grama. Ou seja, o usuário fornece um dado, este sofre algum tipo de processamento pela
aplicação e o resultado é devolvido.
Camada de visão
As interações entre o usuário e a aplicação são feitas por meio do que chamamos de
interface, normalmente representada por telas, por onde os dados são fornecidos pelo
usuário e por onde as informações são apresentadas a ele. Quando um dado é forneci-
do e uma operação é acionada (calcular, salvar etc.) a partir de um link, botão ou outro
componente, é iniciada uma sequência de procedimentos para atender a essa operação.
Observe que, até o momento, houve apenas o fornecimento dos dados. Por esse motivo,
todas as operações que estejam relacionadas a esse dado devem ser definidas na pró-
pria interface. Por exemplo, para verificar se um campo foi preenchido ou não deve ser
criada uma rotina para realizar esse teste. Outro exemplo: se um valor preenchido para
uma variável numérica deve ter seu conteúdo maior do que o valor zero, também deve
ser criado um procedimento para fazer essa validação na própria interface.
As principais motivações para que essas ações sejam realizadas desse modo são:
38
Importante
Para comprovar a teoria de que o que for referente a dados deve ser tratado na
interface, as linguagens disponibilizam componentes que já realizam validação
de formato. Por exemplo, se precisamos informar uma data deve ser utilizado
o componente próprio para variáveis do tipo “data”, pois automaticamente será
feita a validação de formato e conteúdo, não sendo necessário criar métodos
que verifiquem se foi informada no formato dia, mês e ano e se ela é válida.
Camada de controle
Em uma situação em que o usuário digita os dados e escolhe a opção “salvar” na tela de
entrada de dados da classe “Cliente”, a camada de controle identifica essa ação e aciona
o método correspondente dessa classe. Apenas isso que ela deve fazer? Sim!
Nessa camada não devem ser definidos métodos que estejam relacionados a validação
de dados ou a ações de negócios que facilitem o seu reúso quando necessário, manten-
do a independência em relação às camadas de visão e de negócio em relação a ela.
Camada de negócio
39
Por exemplo, no Diagrama de Classe de um sistema, foi definida a classe “Cliente” com
seus atributos e métodos. Essa classe foi implementada e disponibilizada em uma bi-
blioteca de classes para que as outras aplicações que também a utilizem apenas a “im-
portem”. Esse tipo de operação é semelhante às importações realizadas nas linguagens
de programação, como importar a biblioteca com os métodos de manipulação de string,
sempre que necessitamos utilizar um deles.
A implementação na prática
Vamos fazer um passo a passo do que acontece quando fornecemos um conjunto de da-
dos em uma aplicação e mandamos gravá-los na tabela correspondente da base de dados.
1 - Camada de visão
2 - Camada de controle
O método vinculado a esta interface identifica que esta opção foi acionada e aciona o
método correspondente a esta operação da camada de negócio.
3 - Camada de negócio
Recebe o controle da aplicação, realiza a operação e retorna este controle para que a
camada de visão informe ao usuário que a ação foi concluída.
Para uma aplicação web a empresa deseja alterar o padrão de interface utilizado. As
funcionalidades são as mesmas, apenas aspectos relacionados à navegabilidade ou
layout serão alterados. Nesta situação surge a primeira questão: será que os métodos
da classe de negócios utilizados sofrerão algum tipo de alteração em razão do novo
padrão de interface?
40
Se a resposta for não, significa que nenhuma alteração deve ser feita nesses métodos,
ou seja, a camada de negócio não deve sofrer alteração, representando apenas uma
mudança de interface. Neste caso, basta ser definido o novo padrão, refeitas as interfa-
ces envolvidas adotando-se o novo padrão, e por último, substituir uma pela outra. Ou
seja, serão feitas mudanças apenas na camada de interface, sem preocupar-se com as
demais. Simples, não? A camada de visão configura-se independentemente das demais.
Importante
Caso a resposta à pergunta acima seja sim, significa que não se trata apenas
de uma mudança de interface. Se outros métodos estão sendo adicionados,
alterados ou removidos, significa que houve mudanças nas funcionalidades
previstas nos casos de uso, ou seja, o software está sofrendo manutenção por
alguma razão, não sendo apenas por mudança na interface.
A exceção pode ocorrer se uma nova operação for necessária em uma interface. Por exem-
plo, se uma nova operação de “consulta” for inserida na interface por meio de um novo
componente representado por um botão, devem ser realizadas as seguintes operações:
41
As camadas do Modelo MVC.
request
Controller
HTTP
demand dados
envia dados
Model response
Html, XML,
View
Importante
Observe que NÃO existem interações entre a visão e o modelo, ou seja, por
questão de segurança a visão não pode acionar métodos da camada de negó-
cio, conforme representado na figura anterior.
Para que possa continuar havendo independência entre as camadas e tendo como base
as características tecnológicas utilizadas, é comum identificar aplicações que dividem a
camada de negócio em outras duas:
42
dessa quarta camada é percebida nas situações de mudança de SGBD, pois, nesse
caso, é necessário apenas avaliar e alterar esses métodos, adaptando-os às regras
do novo SGBD, não havendo nenhuma alteração nos demais métodos.
1. Visão.
2. Controle.
3. Negócio.
4. Acesso a dados.
Massari (2020), no portal GSTI, relacionou ações que devem ser implementadas em cada
uma das camadas, das quais algumas delas são:
• Camada de Visão
→ Exibe a representação dos dados.
→ Camada de interface com usuário, realizando entrada e exibição dos dados.
→ Responsável por usar as informações modeladas para produzir interfaces de
apresentação conforme a necessidade.
• Camada de Modelo
→ Camada que contém a estrutura de dado atrás de uma parte específica da
aplicação.
→ Responsável pela leitura, manipulação e implementação das regras de negócios.
→ Notifica a visão e o controle associados quando há mudança em seu estado.
• Camada de Controle
→ Exerce o controle sobre o modelo e a visão que serão utilizados.
→ Manipula e roteia as requisições dos usuários.
→ Realiza o gerenciamento das demais camadas.
→ Avalia as ações realizadas pelo usuário e as transfere em comandos para as
classes de modelo e/ou visão.
→ Realiza a validação das ações dos usuários conforme as regras de autentica-
ção e autorização definidas pela aplicação.
• Camada de Dados
→ Implementa os métodos associados aos procedimentos de conexão e acesso
aos dados, tais como as consultas e operações de atualização.
43
Padrão de projeto de software
A técnica de design pattern (padrão de projeto) surgiu em 1970, por meio da apresenta-
ção de algumas soluções de desenvolvimento para problema comuns, ou seja, soluções
padronizadas para problemas previamente conhecidos, sendo atualmente considerada
como boa prática para a programação orientada a objeto.
Ampliando o foco
44
O uso de padrões de projeto vem apresentando diversos benefícios, tais como:
Importante
45
O padrão orientado a objeto GRASP
O padrão GRASP relaciona a responsabilidade que os objetos possuem entre si, ou seja,
para definir a responsabilidade de um objeto deve-se considerar o que ele irá fazer ou
saber, assim descritas, conforme DEVMEDIA (2020):
• A execução de ações que condizem com o papel desempenhado por tal objeto.
• A criação de outros objetos dos quais a instância (objeto) inicial depende.
• A coordenação de atividades envolvendo vários outros objetos.
Importante
Para fazer uso de um padrão, você deve conhecer o seu objetivo, avaliar a sua
aplicação na situação que se apresenta e verificar se ele realmente atende ao
que deseja. Para alguns deles, não existe uma relação direta e objetiva que pos-
sa associar o problema ao padrão. Com a prática, essa identificação vai se
tornando mais clara pois, em alguns casos, é possível mapear algo concreto
próximo dessa relação. Em outros casos, no entanto, essa associação é con-
ceitual e abstrata, não havendo um exemplo objetivo fora do contexto da imple-
mentação de uma aplicação.
46
O GRASP apresenta nove padrões, a saber:
Padrões GRASP
Protected Variations
Protege os elementos do sistema das variações de outros.
(Variações Protegidas)
Ampliando o foco
47
O padrão de projeto GoF
O padrão Gof é dividido em três categorias, que, por sua vez, incluem 23 padrões de
projetos propostos como as melhores práticas de soluções para as situações a que se
propõem resolver. Segundo Gamma et al. (2007) as três categorias são:
Propósito
1. Criação 2. Estrutura 3. Comportamento
Escopo Classe Interpreter
Factory Method Class Adapter
Template Method
Objeto Chain of
Responsability
Object Adapter
Command
Bridge
Abstract Factory Iterator
Composite
Builder Mediator
Decorator
Prototype Memento
Facade
Singleton Observer
Flyweight
State
Proxy
Strategy
Visitor
Fonte: sites.google.com.
48
Os padrões de criação
Os autores do padrão Gof classificam e definem os padrões a seguir como sendo de criação.
Segundo Gamma et al. (2007):
• Factory Method: “definir uma interface para criar um objeto, mas deixar as sub-
classes decidirem qual classe instanciar. O Factory Method permite adiar a instan-
ciação para subclasses.” Dessa forma, os objetos são instanciados e suas subclas-
ses decidem que outros objetos devem ser criados no momento que necessitarem.
• Abstract Factory: “fornecer uma interface para criação de famílias de objetos re-
lacionados ou dependentes sem especificar suas classes concretas.” Logo, permite
a criação de objetos sem especificar as classes concretas.
• Builder: “separar a construção de um objeto complexo da sua representação de
modo que o mesmo processo de construção possa criar diferentes representações.”
Dessa forma, o padrão realiza o encapsulamento da construção do produto, além de
permitir sua construção em etapas.
• Prototype: “especificar os tipos de objetos a serem criados usando uma instân-
cia-protótipo e criar objetos a partir dele.” Com o uso desse padrão é possível criar
novas instancias copiando de outras já existentes.
• Singleton: “garantir que uma classe tenha somente uma instância fornecendo
um ponto global de acesso a ela.” Ou seja, garante que apenas um objeto de uma
determinada classe seja criada na aplicação.
Os padrões estruturais
Os autores do padrão Gof classificam e definem os padrões a seguir como sendo es-
truturais. Segundo Gamma et al. (2007):
49
• Decorator: “dinamicamente, agregar responsabilidades adicionais a um objeto.
Eles fornecem alternativa flexível ao uso de subclasses para extensão de funciona-
lidades.” Desse modo, ele permite que o objeto “decorador” crie ou incorpore suas
funcionalidades em tempo de execução.
• Facade: “fornecer uma interface unificada para um conjunto de interfaces em um
subsistema. Define uma interface de nível mais alto que torna o subsistema mais
fácil de ser usado.” Com o uso desse padrão é possível simplificar um sistema com-
plexo a partir do uso de uma classe com uma interface mais simples.
• Flyweight: “usar compartilhamento para suportar eficientemente grandes quan-
tidades de objetos de granularidade fina.” Esse padrão visa reduzir a quantidade de
recursos utilizados pela aplicação minimizando o consumo de memória.
• Proxy: “fornece um substituto (surrogate) ou marcador da localização de outro
objeto para controlar o acesso a esse objeto.” Assim, forma a classe “proxy” e per-
mite a conexão a qualquer objeto, passando o controle a esse objeto.
Os padrões comportamentais
Os autores do padrão Gof classificam e definem os padrões adiante como sendo com-
portamentais. Segundo Gamma et al. (2007):
• Interpreter: “dada uma linguagem, definir uma representação para a sua gra-
mática juntamente com um interpretador que usa a representação para interpretar
sentenças dessa linguagem”, sendo o seu uso comum quando necessita fazer a
conversão de um modelo para outro, como transformar uma data de um formato
para outro.
• Template Method: “definir o esqueleto de um algoritmo em uma operação, pos-
tergando alguns passos para as subclasses. Template Method permite que subclas-
ses redefinam certos passos de um algoritmo sem mudar a sua estrutura.” Desse
modo, o padrão é utilizado quando uma subclasse decide em tempo de execução
como realizar a lógica da aplicação.
• Chain of Responsability: “evitar o acoplamento do remetente de uma solicitação
ao seu receptor ao dar a mais de um objeto a oportunidade de tratar a solicitação.
Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que
um objeto a trate.” Esse padrão permite que o método avalie a solicitação, executan-
do-a ou repassando-a para outro.
• Command: “encapsular uma solicitação como um objeto, desta forma permitindo
parametrizar clientes com diferentes solicitações, enfileirar ou fazer o registro (log)
de solicitações e suportar operações que podem ser desfeitas.” Esse padrão define
como criar objetos de comandos que realizam solicitações para alguns objetos.
50
• Iterator: “fornecer um meio de acessar, sequencialmente, os elementos de um
objeto agregado sem expor a sua representação subjacente.” Assim, o padrão tem
como objetivo encapsular uma interação a partir da interface definida na aplicação.
• Mediator: “definir um objeto que encapsula a forma como um conjunto de obje-
tos interage. O Mediator promove o acoplamento fraco ao evitar que os objetos se
refiram uns aos outros explicitamente e permite variar suas interações independen-
temente.” Esse padrão permite a intermediação entre dois objetos que não se comu-
nicam de forma direta, ou seja, caso o objeto A não possa comunicar-se diretamente
com o objeto B ele se comunica com o Mediator e este faz a comunicação com o B.
• Memento: “sem violar o encapsulamento, capturar e externalizar um estado in-
terno de um objeto, de maneira que o objeto possa ser restaurado para esse estado
mais tarde.” Logo, sempre que for necessário restaurar o objeto à situação original,
como se fosse a opção “Desfazer” ou “Cancelar”, é indicado o uso desse padrão.
• Observer: “definir uma dependência um-para-muitos entre objetos de maneira
que quando um objeto muda de estado todos os seus dependentes são notificados
e atualizados automaticamente”, devendo ser utilizado sempre que houver neces-
sidade de fazer algum tipo de notificação para alguém ou algum objeto, quando
ocorrer mudança do estado de uma instância da classe.
• State: “permite a um objeto alterar seu comportamento quando o seu estado in-
terno muda.” Dessa forma, quando um objeto possui diferentes comportamentos
de acordo com o seu estado, esse padrão promove a execução do comportamento
vinculado ao estado atual. Por exemplo, as ações que devem ser implementadas
para uma instância da classe “AssentoAviao” variam se esse assento está disponí-
vel, reservado ou ocupado.
• Strategy: “definir uma família de algoritmos, encapsular cada uma delas e tor-
ná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente
dos clientes que o utilizam.” Deve ser utilizado quando a aplicação possui um con-
junto de classes com lógicas semelhantes, porém objetivos distintos. Nesse caso, o
padrão permite a criação de uma superclasse que contemple as diferentes lógicas
aplicadas às subclasses criadas.
• Visitor: “representar uma operação a ser executada nos elementos de uma estru-
tura de objetos. Visitor permite definir uma nova operação sem mudar as classes
dos elementos sobre os quais opera.” Desse modo forma um novo método agrega-
do a um objeto em tempo de execução.
A figura a seguir, sobre “Classificação dos padrões de acordo com o foco” apresenta
outro modelo de classificação dos padrões, tendo como ênfase o seu foco de atuação
associado ao problema a ser solucionado. Segundo Metsker (2004), “o objetivo de um
padrão de projeto em geral é facilmente expresso com a necessidade de ir além das
51
características comuns embutidas em Java”. A classificação apresentada por Metsker é
definida da seguinte forma:
Intenção Padrões
Fonte: sites.google.com.
52
Ampliando o foco
MIDIATECA
NA PRÁTICA
53
reúso dos códigos desenvolvidos na camada de negócio. Outro fator importante
no uso desse padrão está relacionado à segurança, uma vez que os componentes
utilizados na visão são transferidos para o equipamento do usuário. Assim, ele não
pode ter acesso a nenhuma informação relacionada ao negócio, razão pela qual o
uso do controlador como elemento intermediário entre elas torna-se importante.
Todos os conceitos aplicados no padrão devem ser implementados e documenta-
dos nos diagramas da UML que atendem a representação desses objetivos.
54
Resumo da Unidade 2
CORBA, COM, DCOM são alguns dos frameworks que podem ser selecionados tendo
como base o ambiente operacional ou a linguagem de programação que será utilizada
no projeto de desenvolvimento do software.
Além do padrão arquitetural, torna-se necessário definir se o MVC será o padrão a ser
utilizado na implementação, pois dessa escolha depende a avaliação e a definição dos
componentes ou métodos das classes de negócios utilizadas, que poderão ter reúso no
software a ser desenvolvido. Da mesma forma, o conhecimento dos padrões de projeto
GRASP e Gof também irá agilizar o seu desenvolvimento, sempre que a implementação
necessitar de alguns desses recursos. Ao definir o uso destes, o desenvolvedor estará
apto a iniciar a elaboração de alguns dos diagramas propostos pela UML, que serão apre-
sentados nas próximas unidades.
55
Referências
CELESTINO, André Luís. O conceito e as dúvidas sobre o MVC. Disponível em: https://
www.profissionaisti.com.br/o-conceito-e-as-duvidas-sobre-o-mvc/. Acesso em ju-
lho/2020.
56
DEVMEDIA. Introdução ao Padrão MVC. Disponível em:https://www.devmedia.com.br/
introducao-ao-padrao-mvc/29308. Acesso em: 19 jul. 2020.
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Padrões de Projeto: Soluções reutili-
záveis de software orientado a objetos. Porto Alegre: Bookman, 2007. ISBN 978-85-7780-
046-9. Minha Biblioteca.
57
PRACTICE: desenvolvimento baseado em componentes. Disponível em: https://www.
agtic.ufpr.br/pds-ufpr/ProcessoDemoisellePlugin/guidances/practices/componen-
tes_6A150B73.html. Acesso em: 7 jul. 2020.
58
UNIDADE 3
A UML (Unified Modeling Language) é uma linguagem de modelagem utilizada para es-
pecificar, visualizar, construir e documentar artefatos de software. É uma notação gráfica
padrão para uso em projetos de sistemas desenvolvidos no paradigma da Orientação a
Objetos. É composta por 13 diagramas, que se dividem em dois grandes grupos: diagra-
mas comportamentais e diagramas estruturais.
OBJETIVO
60
Diagrama de Pacotes
O Diagrama de Pacotes faz parte do grupo de diagramas estruturais da UML e tem por
objetivo representar os pacotes ou pedaços do sistema divididos em agrupamentos lógi-
cos, mostrando as dependências entre eles e as partes que os compõem.
Importante
Package
É um mecanismo de agrupamento
PACOTE
Attributes genérico (lógico ou físico).
61
A linha de dependência UML pode ser
utilizada para mostrar as dependên-
DEPENDÊNCIA cias entre pacotes ou entre elemen-
tos dos pacotes, ou seja, como um
pacote depende ou influencia outro.
O critério para definir os pacotes é subjetivo, ou seja, depende da visão e das necessidades
do analista ou projetista e, ainda, da particularidade do cenário que se propõe representar.
Por exemplo, um dos critérios seria utilizar o Diagrama de Pacotes para representar a
arquitetura do sistema (conforme exemplo a seguir). Outro critério seria representar os
pacotes que iriam compor uma aplicação (sistema, sistema web ou aplicativo). Como
terceiro critério, representar os pacotes de classes que serão utilizados na aplicação (sis-
tema, sistema web ou aplicativo).
Conforme já mencionado, um Diagrama de Pacote pode ser utilizado para realizar diver-
sas representações necessárias e úteis na fase de análise e projeto de sistemas.
Sistema Administrativo
<<system>>
Apresentacao
<<layer>>
Negocio
<<layer>>
Dados
<<layer>>
62
O Diagrama de Pacotes do exemplo anterior organiza o sistema em um conjunto de
camadas lógicas (layers). Cada camada (pacote) tem uma função bem definida no siste-
ma. O diagrama também mostra a dependência (relacionamento entre os pacotes) das
camadas: uma camada somente solicita serviços da camada inferior e fornece serviços
para a camada superior.
comunicacao seguranca
63
Ampliando o foco
Dependência de Uso
Dependência de Abstração
Dependência de Disponibilização
64
Exemplos
Control Model
<<interface>>
Bola Bola
InterfaceDoViewer
ControleDeObjetos
ControleDeColisao
65
Os Controllers recebem a entrada do usuário
(geralmente eventos).
SistemaAdministrativo
<<system>>
66
Diagrama de Componentes
Importante
Na UML 1.x, um componente representa uma estrutura física (arquivo). Como exemplos,
podemos citar:
• Arquivo executável.
• Biblioteca de classes ou funções.
• Arquivo de dados.
• Banco de dados.
• Tabela do banco de dados.
• Arquivo de configuração.
• Imagem; documento.
• Arquivo-fonte etc.
Atualmente, na UML 2.x, o Diagrama de Componentes tem por objetivo apresentar os com-
ponentes, especificando quais são suas interfaces, permitindo que outros componentes
possam acessar seus serviços sem que para isso precisem conhecer seu conteúdo.
67
Importante
Para que sejam componentes reusáveis e substituíveis eles devem estar fracamente aco-
plados, ou seja, a dependência entre eles deve ser fraca. Quando a dependência é fraca,
conseguimos substituir um componente (artefato) sem afetar os demais. Nesse sentido,
os componentes devem interagir uns com os outros sempre por meio de interfaces.
68
Importante
Para refletir
Exemplos
69
O componente Compressor
usa o serviço provido pelo
componente Loader
<<interface>>
FileCompressor
Para explicitar exatamente quais serviços estão disponíveis em uma interface podemos
adotar a notação utilizada no exemplo 1:
<<interface>>
FileLoader
O componente Loader
disponibiliza o método
load a partir da
interface FileLoader
Nesse caso, é possível visualizar os métodos disponíveis, seus parâmetros e tipo de re-
torno. Ainda, nessa notação podemos utilizar os estereótipos << provided interface>> e <<
required interface>> para identificar as interfaces providas e requeridas.
70
Importante
Para quem for utilizar essa notação, em que as interfaces são descritas no
diagrama, é importante conhecer a sintaxe das interfaces.
IValidaUsauario IValidaSenha
<<component>>
AcessoSistema
IConexao
<<component>>
AcessoSistema
71
Diagrama de Objetos
De acordo com o exposto, podemos entender o Diagrama de Objetos como uma instân-
cia do Diagrama de Classe no qual temos para cada classe um objeto (instância) em um
determinado ponto do tempo. Logo, é necessário chamar a atenção para o seguinte fato:
Dessa forma, na hora de criarmos o Diagrama de Objetos, só vamos criar objetos para o con-
junto de classes complexas, ou seja, para modelagem de estruturas complexas de dados.
Importante
72
Exemplo 1
Diagrama de Classe.
1..” 1
Funcionario Projeto
trabalha
descricao: string
nome: string
1 0..1 inicio: date
cargo: string gerencia
fim: date
salario: real
custo: real
FuncionarioContratado FuncionarioTerceirizado
73
Diagrama de Objeto.
P1: Projeto
F3: FuncionarioTerceirizado
Importante
74
Exemplo 2:
Diagrama de Classe.
Cliente
nome
endereço
Nesse caso, criamos as instâncias pedido e item pedido e seus produtos, conforme o
Diagrama de Objeto a seguir:
75
Diagrama de Objeto.
produto20: Produto
nome = “Caderno M”
descrição = “Caderno em espiral tamanho médio”
preçoUnitário = 4,50
desconto = 15
item1: ItemPedido
quantidade = 6
produto12: Produto
pedido1: Pedido
item2: ItemPedido nome = “Caneta ESF”
data = 13/09/2002 descrição = “Caneta esferográfica 5mm”
quantidade = 20
hora = 10:00am preçoUnitário = 1,20
desconto = 2
item3: ItemPedido
quantidade = 1
produto07: Produto
nome = “Esquadro”
descrição = “Esquadro de acrílico 20cm”
preçoUnitário = 2,35
desconto = 10
76
Componentes do Diagrama de Objeto.
A representação gráfica de um
objeto é similar à de uma classe.
77
Ampliando o foco
Diagramas Estruturais
Diagramas Comportamentais
Diagramas de Interação
78
MIDIATECA
NA PRÁTICA
Nessa empresa o valor das comissões varia de acordo com os produtos e ain-
da existe a necessidade de saber algumas informações, como:
79
Diagrama de Objeto.
80
Resumo da Unidade 3
81
Referências
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. ed. Rio de Ja-
neiro: Campus-Elsevier, 2015. ISBN – 978-85-352-2626-3. ISBN (versão digital) 978-85-
352-2627-0. Minha Biblioteca.
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Padrões de Projeto: soluções reutilizá-
veis de software Orientado a Objetos. 2. ed. Porto Alegre: Bookman, 2000. Minha Biblioteca.
MEDEIROS, E.S. Desenvolvendo software com UML 2.0 definitivo. São Paulo: Pearson,
2004. ISBN 978-85-346-1529-7. Biblioteca Virtual.
82
UNIDADE 4
Diagramas de implantação
de um software
INTRODUÇÃO
Nesta unidade vamos abordar os três diagramas da UML utilizados para apresentar os
detalhes da implantação de um software. Esses diagramas são: Diagrama de Implemen-
tação, Diagrama de Perfil e Diagrama de Implantação.
Todos compõem o grupo dos diagramas estruturais da UML, e têm por objetivo apresen-
tar a visão física da aplicação que está sendo projetada do ponto de vista do engenheiro,
em que o foco é a topologia dos componentes de software, hardware e a comunicação
entre esses componentes.
OBJETIVO
84
Diagrama de Implementação
85
Nome Símbolo Definição
Dispositivos de hardware:
representam recursos com-
putacionais físicos (servi-
dores, dispositivos móveis,
notebooks, sensores, impres-
soras, roteadores, câmeras,
leitores biométricos etc.).
Servidor da
Nós
Aplicação
Ambientes de execução
de softwares: representam
recursos computacionais
lógicos que oferecem um
ambiente de execução para
componentes específicos
(sistemas operacionais, ser-
vidores web, servidores de
aplicação, SGBDs etc.).
Caminhos de comunicação:
associações entre nós que
permitem a comunicação,
Associação
ou seja, a troca de dados,
sinais e mensagens entre
esses nós.
86
<<device>> Nó que contém outro nó em
:UserClient
seu interior, que por sua vez
Nó (contêiner) <<device>>
:Browser
possui componentes e/ou
<<artifact>>
artefatos.
HTML5
É o serviço ou informação
provida ou oferecida por um
INTERFACE
componente. Pode ser re-
presentado por uma “bola”.
É basicamente um arqui-
vo de configuração, como
um documento XML ou um
ESPECIFICAÇÃO DE <<deployment spec>>
DeploymentSpecification1
arquivo de texto, que espe-
IMPLEMENTAÇÃO
cifica as propriedades que
definem como um artefato
é implementado em um nó.
87
(dispositivos) e componentes de comunicação para o funcionamento da aplicação. Por
exemplo, o primeiro nó, “Caixa Eletrônico”, precisa ter o monitor, dispensador de dinheiro,
impressora de recibos, leitor de cartões, teclado numérico e dispositivo de log para fun-
cionar. É necessária, ainda, uma interface de rede com uma conexão para conectar-se a
um servidor da rede de “Caixas Eletrônicos”.
Após a identificação dos nós é preciso analisar e verificar o que é necessário em termos
de artefatos dentro de cada nó. Por exemplo, o Nó Caixa Eletrônico, precisa ter um con-
trolador de dispositivos e ainda uma interface para o usuário interagir com o caixa, além
da interface de rede responsável pela comunicação.
De acordo com o exposto, o diagrama a seguir apresenta uma visão geral da implementa-
ção de nós (dispositivo e seus subcomponentes), sem fazer referência a instâncias espe-
cíficas de artefatos ou nós, que deverá ser analisada e detalhada em momento posterior.
Impressora
de recibos Teclado
numérico
Nó no caixa
eletrônico
Leitor de
cartões
preventivo Interface
de rede
Caixa eletrônico principal
Interface do cliente conexão da
Interface da rede de caixas eletrônicos rede T-1
Processador:
Pentium 200 Mhz Controlador de dispositivos
Memória
64 MB
Servidor da
Interface
rede de caixas de rede
eletrônicos
preventivo
Fonte: http://denan.com.br/documentos/DiagramaImplantacao.pdf.
88
Diagrama de Perfil
Ampliando o foco
• Metaclasse: é uma classe em que suas instâncias também são classes e não
objetos. Assim como as classes definem o comportamento de certos objetos,
as metaclasses definem o comportamento de certas classes e suas instâncias.
• Estereótipo: permite adequar os modelos com construções específicas para
um domínio, plataformas tecnológicas ou método de desenvolvimento parti-
cular. Os estereótipos devem ser criados com um nome entre dois sinais de
menor em sequência e dois sinais de maior, também em sequência (<< >>).
Existem dois tipos de estereótipos: predefinidos pela linguagem ou definidos
pela equipe de desenvolvimento.
89
• Componentes do Diagrama de Pacotes:
Caminhos de comunicação:
associações entre nós que
permitem a comunicação,
Associação
ou seja, a troca de dados,
sinais e mensagens entre
esses nós.
Exemplos:
Exemplo 1
Apresenta um estereótipo criado para especificar o contêiner de um servidor de aplicação.
Neste caso é o Enterprise JavaBeans (EJB), um componente da plataforma Java EE, ou
seja, houve a necessidade de especificar o tipo do componente (pacote) a ser utilizado.
<<Perfil>>
EJB
90
Exemplo 2
<<Metaclass>> <<stereotype>>
Connector ServiceChannel
91
Diagrama de Implantação
O Diagrama de Implantação da UML tem por objetivo revelar quais partes do software
são executadas em quais partes do hardware. Esse diagrama foca na estrutura sobre a
qual o software será implantado e executado em termos de hardware ou combinando
hardware e software. O Diagrama de Implantação define, ainda, como os dispositivos
de hardware estarão conectados e por meio de quais protocolos elas se comunicarão.
Também é chamado de Diagrama de Instalação.
Caminhos de comunicação:
associações entre nós que
permitem a comunicação,
Associação
ou seja, a troca de dados,
sinais e mensagens entre
esses nós.
92
Nós podem ser de dois tipos:
Dispositivos de hardware:
representam recursos com-
putacionais físicos (servi-
dores, dispositivos móveis,
notebooks, sensores, impres-
soras, roteadores, câmeras,
leitores biométricos etc.).
Servidor da
Nós
Aplicação
Ambientes de execução
de softwares: representam
recursos computacionais
lógicos que oferecem um
ambiente de execução para
componentes específicos
(sistemas operacionais, ser-
vidores web, servidores de
aplicação, SGBDs etc.).
Caminhos de comunicação:
associações entre nós que
permitem a comunicação,
Associação
ou seja, a troca de dados,
sinais e mensagens entre
esses nós.
93
<<server>>
Servidor de Aplicações
Nó que contém outro nó em
<<executionEnvironment>> seu interior, que por sua vez
Nó (contêiner) Servidor JSP
possui componentes e/ou
AppVenda artefatos.
É o serviço ou informação
provida ou oferecida por um
INTERFACE
componente. Pode ser re-
presentado por uma “bola”.
É basicamente um arqui-
vo de configuração, como
um documento XML ou um
ESPECIFICAÇÃO DE <<deployment spec>>
DeploymentSpecification1
arquivo de texto, que espe-
IMPLEMENTAÇÃO
cifica as propriedades que
definem como um artefato
é implementado em um nó.
É um elemento de modelo
que representa uma instan-
ciação de um nó existente,
INSTÂNCIA DE NÓ Node4Instance : Node4
ou seja, representa um nó
definido e específico no am-
biente do sistema.
94
Assim como os demais diagramas da UML, o Diagrama de Implantação pode representar
a arquitetura do sistema sob diversas perspectivas. As três perspectivas mais comuns são:
Exemplo 1
<<artefato>>
SO
MinhaIGURucaDoCliente.exe
AP
<<servidor>>
/H
Um caminho de
comunicação pode <<servidor>>
: Dell Power Edge 3400
indicar o protocolo
SQL Notação alternati-
va para um artefato
<<SO>>
Nó do dispositivo : Red Hat Enterprise Linux 4}
95
MIDIATECA
NA PRÁTICA
Vamos supor que você é o responsável por desenvolver esse sistema para co-
letar e processar pedidos. Mais ainda, suponhamos que você precise explicar
como a solução vai funcionar na prática para todos os envolvidos no projeto
de desenvolvimento desse novo sistema. Para tal, você deve criar a solução
arquitetural, ou seja, um Diagrama de Implantação para explicar todo o funcio-
namento estrutural sobre o qual o software será implantado e executado em
termos de hardware e software utilizados.
96
SOLUÇÃO:
Diagrama de Implantação:
97
Resumo da Unidade 4
98
Referências
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. ed. Rio de Janei-
ro: Campus-Elsevier, 2015. ISBN: 978-85-352-2626-3/ISBN (versão digital): 978-85-352-
2627-0. Minha Biblioteca.
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Padrões de Projeto: soluções reutilizá-
veis de Software Orientado a Objetos. 2. ed. Porto Alegre: Bookman, 2000. Minha Biblioteca.
MEDEIROS, E. S. Desenvolvendo software com UML 2.0 definitivo. São Paulo: Pearson
Makron Books, 2004. ISBN: 978-85-346-1529-7. Biblioteca Virtual.
99