Projeto de Desenvolvimento Software 2 PDF
Projeto de Desenvolvimento Software 2 PDF
Projeto de Desenvolvimento Software 2 PDF
DE SISTEMAS
GOVERNO DO ESTADO DO MARNHÃO
Flávio Dino
Governador do Estado do Maranhão
Jhonatan Almada
Reitor
Tempo
Aplicação Aplicação Aplicação Camada
Desktop Desktop Desktop Cliente
Completo
Projeto Camada
Análise Servidor
Servidor
Teste
Implementação
Análise de Sistemas
Luiz Egidio Costa Cunha
José Inácio Serafini
Colatina - ES
2011
Presidência da República Federativa do Brasil
Ministério da Educação
ISBN: 978-85-62934-03-2
1. Análise de sistemas. 2. Software - Desenvolvimento. 3. Material
didático. I. Instituto Federal do Espírito Santo. II. Título.
CDD: 004.21
Apresentação e-Tec Brasil
Prezado estudante,
Você faz parte de uma rede nacional pública de ensino, a Escola Técnica
Aberta do Brasil, instituída pelo Decreto nº 6.301, de 12 de dezembro 2007,
com o objetivo de democratizar o acesso ao ensino técnico público, na mo-
dalidade a distância. O programa é resultado de uma parceria entre o Minis-
tério da Educação, por meio das Secretarias de Educação a Distancia (SEED)
e de Educação Profissional e Tecnológica (SETEC), as universidades e escolas
técnicas estaduais e federais.
O e-Tec Brasil leva os cursos técnicos a locais distantes das instituições de en-
sino e para a periferia das grandes cidades, incentivando os jovens a concluir
o ensino médio. Os cursos são ofertados pelas instituições públicas de ensino
e o atendimento ao estudante é realizado em escolas-polo integrantes das
redes públicas municipais e estaduais.
Nosso contato
etecbrasil@mec.gov.br
3 e-Tec Brasil
Indicação de ícones
5 e-Tec Brasil
Sumário
Palavra do professor-autor 9
Apresentação da disciplina 11
Projeto instrucional 13
7 e-Tec Brasil
5.8 A UML e a representação do modelo de domínio 61
5.9 Representação de conceitos e atributos 61
5.10 Representação de associações 62
5.11 O modelo conceitual 63
Referências 102
Prezado estudante!
Bom estudo!
9 e-Tec Brasil
Apresentação da disciplina
Siga em frente!
11 e-Tec Brasil
Projeto instrucional
CARGA
OBJETIVOS DE
AULA MATERIAIS HORÁRIA
APRENDIZAGEM
(horas)
Caderno e Ambiente Virtual de
Conhecer os principais conceitos da TGS.
Ensino-Aprendizagem.
1. Elementos da
Teoria Geral dos Relacionar os conceitos da TGS com a 5
http://pt.wikipedia.org/wiki/
Sistemas Computação.
Teoria_geral_de_sistemas
http://www.devmedia.com.br/
post-1903-Metodologia-de-
-desenvolvimento-de-Software.
html
http://www.andreygomes.com/
index.php?option=com_conten
Conhecer o histórico do processo de
t&view=article&id=1:metodolo
desenvolvimento de software.
gias-de-desenvolvimento-de-so
ftware&catid=1:metodologias
Conhecer os paradigmas de desenvolvi-
&Itemid=2
mento de software mais utilizados.
2. O processo de
desenvolvimento http://www.dsc.ufcg.edu. 5
Diferenciar as metodologias mais
de software br/~jacques/cursos/map/html/
comuns.
intro/processo.htm
http://pt.wikipedia.org/wiki/
Scrum
http://pt.wikipedia.org/wiki/
Extreme_programming
http://pt.wikipedia.org/wiki/
RUP
continua
13 e-Tec Brasil
CARGA
OBJETIVOS DE
AULA MATERIAIS HORÁRIA
APRENDIZAGEM
(horas)
Conhecer o que são os requisitos de um
sistema.
Caderno e Ambiente Virtual de
Conhecer técnicas de elicitação de Ensino-Aprendizagem.
requisitos.
3. Os requisitos do http://pt.wikipedia.org/wiki/
10
sistema Conhecer os elementos do Diagrama de Engenharia_de_requisitos
Caso de Uso.
http://www.youtube.com/
Usar o Diagrama de Caso de Uso para watch?v=t0so6Nagjns
especificação das principais funções do
sistema.
Caderno e Ambiente Virtual de
Ensino-Aprendizagem.
Conhecer os elementos dos diagramas
de interação. http://www.macoratti.net/
4. Descrição do vb_uml2.htm
comportamento do Usar os diagramas de interação da UML 10
sistema para especificação do comportamento http://www.dsc.ufcg.edu.
do sistema. br/~jacques/cursos/map/html/
uml/diagramas/interacao/se-
quencia.htm
http://www.dsc.ufcg.edu.
5. Criação de um Usar o Modelo de Domínio para delinear br/~jacques/cursos/apoo/html/
5
modelo do sistema o escopo do sistema a ser desenvolvido. anal1/anal1.htm
http://www.macoratti.net/
net_uml2.htm
continua
e-Tec Brasil 14
CARGA
OBJETIVOS DE
AULA MATERIAIS HORÁRIA
APRENDIZAGEM
(horas)
Caderno e Ambiente Virtual de
Ensino-Aprendizagem.
http://pt.wikipedia.org/wiki/
Padr%C3%A3o_de_proje-
Conhecer os padrões de projeto GRASP. to_de_software
conclusão
15 e-Tec Brasil
Aula 1 – Elementos da Teoria
Geral dos Sistemas
Objetivos
Outro autor importante nos estudos da TGS foi Kenneth Boulding. Econo-
mista e estudioso dos sistemas, Kenneth escreveu um artigo que descrevia
a natureza geral da teoria dos sistemas, seu objetivo e importância para o
estudo dos fenômenos (MARTINELLI; VENTURA, 2006, p. 9).
Até os dias atuais a TGS é estudada por diversos profissionais como administra-
dores, economistas, biólogos, engenheiros e analistas de sistemas. Apesar dessa
teoria ter sido proposta, para alcançar todos os sistemas existentes (sistemas
humanos, físicos, cósmicos, computacionais, organizacionais, etc.), a área de
conhecimento que mais tem explorado os conceitos da TGS é a Computação.
Perturbações
Assista ao vídeo intitulado
“Teoria Geral dos Sistemas”, Ambiente
em http://www.youtube.com/
watch?v=d_c8xvHtdHo para
Sistema
melhorar seus conhecimentos (Transformação)
sobre a TGS. Em seguida, cite
dois exemplos de sistemas Entrada Saída
abertos, de acordo com o que foi
apresentado no vídeo. Mande
para seu tutor esses exemplos e,
para cada um deles, escreva uma Perturbações
breve justificativa de sua escolha.
Figura 1.1: Diagrama de sistemas
Fonte: Elaborada pelo autor
b) o ambiente do sistema;
c) os recursos do sistema;
d) a administração do sistema.
Os objetivos significam aquilo que deve ser alcançado pelo sistema, ou seja,
o motivo pelo qual um sistema existe e as medidas de rendimento indicam
o quanto ele está (ou não) alcançando seus objetivos. Esse rendimento pode
ser medido de várias maneiras, por exemplo, em um sistema de controle de
estoque que tenha como objetivo principal não deixar faltar produtos em um
almoxarifado, a quantidade de produtos que não ficaram faltando nas prate-
leiras pode ser considerada uma medida de rendimento. Em outras palavras,
se faltar produtos nas prateleiras por erro nos relatórios do sistema, pode-se
concluir que o programa não atendeu a seu objetivo, que era garantir sem-
pre a disponibilidade de produtos.
O ambiente do sistema está associado com aquilo que está ao redor dele,
ou seja, com todos os outros sistemas ou “coisas” que se encontram exter-
namente próximos dele.
Atividades de aprendizagem
1. Considere o sistema Corpo Humano. Explique qual o objetivo geral desse
sistema e cite uma medida de rendimento que pode ser aplicada a ele.
Partida
Trigo + Sal + Óleo Pão
b) sistema de Ar Refrigerado;
Objetivos
Estudos feitos nos EUA para se medir a produtividade no desenvolvimento Uma importante empresa que
de sistemas (STANDISH GROUP, 2011) revelaram que: faz estudos de produtividade
de desenvolvimento de
software chama-se Standish
Group. Veja em http://
a) 30% a 40% dos projetos são cancelados; standishgroup.com/newsroom/
chaos_manifesto_2011.php
b) 50% dos projetos custam mais que o dobro do custo inicialmente um resumo do Chaos Manifesto
2011. Escreva um pequeno
projetado; texto informando a respeito do
manifesto (documento) e envie
c) 15 a 20% dos projetos terminam dentro do prazo e dentro do orçamento. para seu tutor a distância.
d) modelo em cascata
a) modelo espiral
Mas esse modelo não tem somente vantagens, ele também apresenta algu-
mas desvantagens, que podemos citar:
b) pode ocorrer precipitação e entrega de código, sem que seja feita análise
completa do alcance dos seus objetivos.
Normalmente o cliente fica satisfeito ao ver que as versões que são geradas
de seu software estão ficando conforme sua expectativa. Isso mostra para os
desenvolvedores que estão no caminho certo do desenvolvimento do sistema.
b) elaboração;
c) construção;
d) transição.
Essas fases são realizadas em sequência e não devem ser confundidas com
as etapas do modelo em cascata.
a) Concepção
b) Elaboração
c) Construção
Nessa fase ocorre a construção de fato do software. Essa fase do projeto não
é executada de modo linear, mas na forma do modelo espiral, fazendo uma
série de iterações. Em cada uma dessas iterações utilizamos o modelo em
cascata. Tornando cada iteração mais curta possível, evitamos os problemas
do modelo em cascata (Figura 2.3).
Interação 2 Análise
Projeto
Implementação
Interação 1 Análise
Teste
Projeto
Utilização
Implementação
Teste
Interação n Análise
Utilização
Projeto
Implementação
Teste
Utilização
• treinamento de usuários;
A fase de transição não deve ser confundida com a fase de teste tradicional.
No início da fase de transição deve existir um produto completo, testado e
operacional para os usuários (os clientes).
Resumo
Encerramos assim nossa segunda aula e vimos que muita informação nova
foi aprendida. Esse conhecimento é necessário para que continuemos nosso
estudo sobre a análise e o projeto de sistemas que atendam, cada vez mais,
às necessidades de nossos clientes.
Vale lembrar que, apesar dos problemas naturais para se desenvolver siste-
mas, é muito importante que sempre trabalhemos na construção de nosso
software usando ferramentas adequadas. As metodologias e as linguagens
de modelagem são fundamentais para esse trabalho. Vimos que a UML é
a mais importante linguagem de modelagem usada atualmente e pode ser
Atividades de aprendizagem
1. Quais as principais diferenças entre linguagens de modelagem e metodo-
logias de desenvolvimento de sistemas?
3. Cite dois exemplos de sistemas complexos que são mais bem desenvolvi-
dos se usarmos o Modelo Iterativo e Incremental.
Objetivos
a) entrevistas;
a) todas as ideias são boas: as ideias não são julgadas pelo grupo;
d) sempre que surgir uma ideia, ela deve ser imediatamente escrita no
quadro-negro;
c) quais os objetivos;
a) Funções do sistema
Uma boa regra para verificar se uma expressão X é, de fato, uma função do
sistema, colocamos X na sentença “O sistema deveria fazer X” e essa sen-
tença deve fazer sentido.
b) oculta: deve executar, mas não deve ser visível para os usuários;
c) enfeite/decoração: opcional.
b) Atributos do sistema
a) Questões fundamentais
3. Por que fazemos isso? Por que fazemos assim? Por que fazemos desse modo?
14. O trabalho está sendo executado onde ele faz mais sentido?
4. analise cuidadosamente os requisitos para que não haja conflito entre eles;
Os casos de uso são escritos em um documento que serve para orientar a Caso de uso
É uma descrição detalhada de
construção dos demais elementos do projeto. um conjunto de interações entre
um usuário e o sistema.
Vamos examinar agora os casos de uso com mais detalhes. Vamos conhecer Ator
É alguém ou alguma coisa que
os elementos e conceitos a eles ligados. participa do caso de uso e é
externo ao sistema.
3.3.1 Atores
Na definição de casos de uso encontramos o termo “usuário”. Nos casos de
uso o “usuário” é chamado de ator.
a) ator iniciador: é ele que inicia o caso de uso, geralmente, sendo o seu
ator principal. Por exemplo, se estamos fazendo um sistema bancário,
o caso de uso “retirar dinheiro” terá como ator iniciador o ator cliente;
d) um conceito abstrato como hora, data, etc. Por exemplo, o ator data
pode iniciar um caso de uso chamado “cancelar pedidos” para pedidos
feitos há mais de seis meses.
Tipo: Primário.
12. autor e data: listagem dos autores e datas das várias versões revistas.
Exemplo de levantamento
Exemplo de levantamento:
a) entrar cartão;
b) entrar senha;
d) confirmar quantia;
e) remover cartão;
f) retirar recibo.
Aplicando essa regra aos outros itens da lista, vemos que a resposta é NÃO para
todos eles. O objetivo real do usuário é retirar dinheiro, logo, Retirar Dinheiro
deve ser o caso de uso, isto é, o nome do caso de uso será Retirar Dinheiro.
Algumas vezes uma função resultará em um único caso de uso; outras vezes,
várias funcionalidades resultarão em um único caso de uso.
Quanto mais respostas “SIM” você obtiver nessas perguntas, mais importan-
te será o caso de uso em questão. Assim, podemos criar uma lista de caso
de usos numa ordem decrescente de importância. Os primeiros casos de uso
listados serão os primeiros a ser implementados.
Ator
SISTEMA
Comprar ítens
Login
Caixa Cliente
Reembolsar ítens
Comprados
O diagrama de casos de uso é muito interessante para dar uma visão geral
do sistema, com seus atores, casos de uso e a relação entre eles.
e) escreva os casos de uso mais críticos, influentes e de maior risco para o No vídeo chamado “Diagramas
sistema, no formato expandido; de caso de uso”, disponível
em http://www.youtube.
com/watch?v=fGA-
f) defina a ordem de implementação segundo a importância de cada caso eF8HCjw&feature=related,
de uso (conforme orientação da seção 3.3.6). podemos ver o uso dos
diagramas de caso de uso
para o desenvolvimento dos
sistemas. Cite três casos de uso
Dessa forma, ao final da Fase de Concepção, teremos a produção do Do- que encontramos comumente
nos sistemas de informação
cumento de requisitos, conforme vimos na seção 3.2.3, e o Documento de de secretaria escolar. Envie sua
casos de uso, que conterá os diagramas e as descrições de casos de uso. resposta para seu tutor a distância.
Atividades de aprendizagem
1. Em que situações devemos usar a descrição de caso de uso de alto nível
e expandido?
Objetivos
4.1 Introdução
O comportamento de um sistema é definido pelas operações que ele realiza.
Esse comportamento demonstra situações em que o sistema pode se encontrar.
Por exemplo, se considerarmos um boleto de pagamento em um sistema finan- Comportamento do Sistema
É o conjunto de operações que o
ceiro empresarial, podemos identificar alguns comportamentos possíveis: boleto sistema realiza. Um termo muito
pago, boleto não pago, boleto com pagamento atrasado, etc. usado para referenciar esse
comportamento é Application
Programming Interface (API)
do sistema.
Em UML, a representação gráfica utilizada para mostrar as operações do
sistema chama-se Diagrama de Sequência de Sistema (DSS).
Ator
Sistema
Mensagem1
Resposta1
Mensagem2
Resposta2
Uma vez que o caso de uso está elaborado, é bem simples desenhar o dia-
grama de sequência de sistema. Basta ir examinando as interações descritas
no Cenário de sucesso principal e nas Extensões.
Atividades de aprendizagem
2. Explique como devem ser escritos os nomes das mensagens num DSS.
Objetivos
5.1 Introdução
A criação de modelos é uma atividade comum em várias áreas de trabalho,
principalmente nas profissões que fazem projetos, como engenharia, arqui-
tetura, etc.
5.3 Conceitos
Conceito é um objeto, uma coisa ou uma ideia (por exemplo: cliente, estu-
dante, professor, matrícula, manutenção, atendente, venda, etc.).
Exemplos:
5.5 Atributo
Devemos incluir em nosso modelo conceitual todos os atributos que de algu-
ma forma devem ser memorizados (ou guardados) pelos conceitos. atributo
é um valor de dado lógico de um
conceito.
Uma regra prática para tipo de atributo simples: faça dele um atributo, se
ele puder ser visto naturalmente como um número, uma string, um boolean,
uma data, etc.; caso contrário, represente-o como um conceito. Em caso de
dúvida, defina-o como um conceito separado, em vez de um atributo.
5.7 Associações
A maioria dos sistemas que iremos desenvolver apresentará, no mínimo, al-
guns conceitos que terão algum tipo de relacionamento com outros conceitos.
Para que o relacionamento seja identificado como associação, ele deve ser
preservado por algum tempo dentro do sistema. Ou seja, não faz sentido
indicarmos um relacionamento entre dois conceitos que acontece uma úni-
ca vez durante a existência do sistema (seria o mesmo que desenvolvermos
uma função dentro de um sistema que seria usado somente uma única vez
pelo usuário). É importante ainda lembrar que a associação também deve
ser identificada por um nome, da mesma forma que o conceito e o atributo.
Conceito
-Atributos
Aluno
-nome
-curso
Figura 5.2: Exemplo em UML de um conceito: Estudante
Fonte: Elaborada pelo autor
* zero ou muitos;
1..* um ou muitos;
5 exatamente cinco;
3, 5, 8 exatamente três,
cinco ou oito;
Serafini e Cunha (2010) lembram que quando formos decidir sobre que
nomes daremos às associações, devemos evitar nomes fracos, ou seja, no-
mes com significado muito genérico. Por exemplo: “tem”, “é associado a”,
“possui”, etc. A utilização desses nomes pode esconder problemas ou erros
na definição da associação por darem uma ideia muito ampla de seu signi-
ficado, deixando o desenvolvedor com a possibilidade de criar, no futuro,
programas sem utilidade por ter interpretado erroneamente qual tipo de
associação existe entre os conceitos.
Médico Paciente
Medicamento Equipe
Essas perguntas devem ser feitas até que se esgotem todas as possibilidades
de associações entre os conceitos.
atende
Médico Paciente
1 *
1 1
1 Equipe
prescreve
dirige
*
Medicamento
Atividades de avaliação
1. Explique o que é uma associação e dê um exemplo do relacionamento
entre os seguintes conceitos:
c) Motorista – Carro:
d) Banco – Correntista:
e) Médico – Paciente:
f) Juiz – Processo:
Conceitos:
a) Médico
b) Paciente
c) Enfermeiro
e) Enfermaria
f) Prontuário Médico
g) Farmácia Hospitalar
Associações:
1. atende
2. cuida
3. prescreve
4. está internado
5. escreve
6. fornece
Objetivos
Arquitetura de Software
É a forma como dividimos e
6.1 Introdução organizamos o sistema em blocos
reutilizáveis que aumentam a
Da mesma maneira que um arquiteto trabalha organizando os espaços para a qualidade e reusabilidade do
construção de uma casa, organizamos os componentes de software de manei- software
ra a distribuir da forma mais eficaz todos os componentes que farão parte do Segundo Booch, Rumbaugh e
nosso sistema. Existem várias formas de se projetar um software, dependendo Jacobson (1997 apud LARMAN,
2007), uma Arquitetura de
de seu objetivo e funcionalidade. Assim, também na arquitetura de software software é um conjunto de
decisões significativas sobre a
são definidos modelos que podem ser utilizados para que cada projeto esteja organização de um sistema, a
com o formato mais adequado para seu uso. seleção dos elementos estruturais
e suas interfaces pelas quais o
sistema é composto, juntamente
Começamos nesta aula o estudo da forma como nossos sistemas podem com seu comportamento, suas
colaborações e sua composição.
agrupar seus componentes. Pelo estudo das camadas nas quais podemos
dividir nosso projeto, aprenderemos quais os tipos de arquitetura podemos
usar para que tenhamos um bom projeto. Dessa forma, estaremos nos pre-
parando para as futuras fases de desenvolvimento de sistemas (codificação)
de forma planejada e que atenda às necessidades dos nossos clientes.
Camada 1
Camada 2 Camada
Camada Relaxada
Estrita
Camada 3
Camada 4
Package
<<sbsystem>>
SUBSISTEMA
GUI subsistema
Web
Consultas
Observe que os exemplos acima são idênticos: mostram a mesma coisa. Am-
bos mostram os pacotes inseridos em seus respectivos subsistemas, porém
com representações gráficas distintas. Use a representação que achar mais
interessante em seus projetos.
Camada
Servidor
Servidor
a) aumenta a escalabilidade;
Servidor de
Aplicação
Servidor Servidor
Dados Dados
Servidor de Servidor de
Web Web Camada
WEB
Servidor de Servidor de
Aplicação Aplicação Camada
Aplicação
Servidor de Servidor de
Dados Dados Camada
de Dados
Figura 6.7: Arquitetura em quatro camadas
Fonte: Serafini e Cunha (2010, p.79)
Na última seção desta aula vimos quais os tipos de arquiteturas são mais comu-
mente usados no mercado: arquitetura em uma camada, arquitetura em duas
camadas, arquitetura em três camadas e, por fim, arquitetura em n-camadas.
Atividades de aprendizagem
1. Explique as diferenças entre os tipos de arquitetura em n camadas e SOA.
Objetivos
7.1 Introdução
Após os levantamentos feitos na fase inicial, quando conhecemos os requi-
sitos e domínio do sistema, escrevemos o diagrama de classes. Ele apresenta
o sistema de forma estática e detalha quais classes e seus relacionamentos
foram identificados no sistema a partir da aprovação do cliente.
NomeDaClasse
-atributo1: Tipo
+atributo2
#atributo3
-operacao1()
+operacao2()
+operacao3( parametro1, parametro2 )
Registradora1
-vendaAtual: Venda
Formato:
ou
Registradora2 Venda
-vendaAtual
Classe
+operacao()
+: public
-: private
#: protected
<<ator>>
<<interface>>
[abstract]
[ordered]
Para mostrar objetos do tipo Interface podemos utilizar o símbolo (Figura 7.5):
Interface1
+operacao1()
+operacao1()
Venda1
-linhaDeItens : LinhaDeItensDeVenda[1..*]
Formato:
Venda2 LinhaDeItensDeVenda
-linhaDeItens 1..*
Figura 7.8:Associação
Fonte: Serafini e Cunha (2010, p. 105)
Comentário UML
Pai
Filho
Uma dependência é mostrada com uma linha (tracejada com uma seta
partindo do cliente para o fornecedor) entre dois elementos, como mostrado
na Figura 7.11.
Cliente Fornecedor
Aluno Curso
-nome : String -nome
-c : Curso -cargaHoraria
Cliente Endereco
LinhaPedido DescricaoProduto
Observe que, nesse caso, a representação gráfica possui o losango NÃO pre-
enchido. No exemplo da Figura 7.14, se eliminarmos o objeto LinhaPedido,
não devemos eliminar a DescriçãoProduto. Faz sentido não eliminarmos a
DescriçãoProduto pois esse objeto provavelmente deverá ser utilizado por ou-
tros objetos. Em termos de programação Java, a diferença entre composição
e agregação é sutil e pode ser ignorada.
Assim, cada tabela do banco de dados foi mapeada para uma classe, man-
tendo-se o mesmo nome da entidade (tabela) na classe.
Atividades de aprendizagem
1. Use sua criatividade e desenhe um diagrama de classes que possua os
seguintes conceitos:
1. Homem
2. Mulher
3. Certidão de Casamento
4. Filhos
5. Residência
a) Método,
b) Atributos,
c) Composição e Generalização
Objetivos
8.1 Introdução
Quando identificamos os conceitos em nosso sistema, identificamos o que
ele deve ser capaz de realizar, isto é, identificamos as suas responsabilidades.
Podemos esperar que os conceitos dependam da ajuda de outros conceitos,
isto é, que eles colaborem entre si para realizar as suas responsabilidades.”
(SERAFINI, 2008, p. 95).
colaboração
é aquilo que um objeto pode faz-
er/executar para outro objeto, de
auxilia modo que o caso de uso possa
ser realizado. Dessa forma, um
objeto ajuda o outro a executar
aquilo que é a responsabilidade
do outro.
Bibliotecario verifica Catalogo
Assim temos:
A utilização dos padrões de projeto propostos por Larman (2007) pode melhorar
bastante nossos diagramas de colaboração e, por conseguinte, nossos projetos.
Larman deu nome a seu conjunto de regras de GRASP que significa “General
Responsibility Assigment Software Patterns,“ ou seja, Padrões de “Software“
Genéricos de Atribuição de Responsabilidades, e esses padrões podem nos
ajudar a alocar responsabilidades (ou comportamentos) às classes de uma
forma muito prática.
a) “Expert“ – Especialista
b) “Creator“ – Criador
e) “Controller“ – Controlador
Pedido
-data
-hora
contém
O padrão “Expert“ diz que a única classe que deve ser permitida lidar com o
Custo Total de um pedido é a classe Pedido – isso porque ela deve ser espe-
cialista sobre todas as “coisas” relativas a pedidos.
Mas para calcular o total do pedido, este precisa saber o total de cada
linha de Pedido.
Mais uma vez aplicamos o padrão “Expert“, e temos que a única classe que
deveria calcular o total de Linha de Pedido é LinhaPedido; assim, criamos um
método calcularSubTotal() e alocamos em LinhaPedido.
+calcularTotal()
contém
: Pedido : LinhaPedido
2: subTotal=obterSubTotal();
: LinhaPedido
2.1: Preco=obterPreco;
Síntese:
Nome: Expert
Quem deve ser responsável pela criação de instâncias de uma classe particular?
A resposta é que a classe A deve ser responsável pela criação dos objetos
da classe B se:
a) A contém objetos B;
b) A utiliza objetos B;
1: cria();
: Pedido : LinhaPedido
Síntese:
Nome: Creator
Solução: a classe A deve ser responsável pela criação dos objetos da classe B se:
a) A contém objetos B;
b) A utiliza objetos B;
(LARMAN, 2007)
Exemplo
ControladorElevadores
+obterAndar()
+moverElevador()
+abribuirViagem()
+procedimentoEmergencia()
+acionaAlarme()
+atualizarLED()
+abrirPorta()
+fecharPorta()
+reset()
+iniciar()
+desativar()
+mostrarLog()
Esse não é um bom projeto, porque a classe não é coesiva, ela está tentando
realizar muitas coisas diferentes.
Essa classe deve ser difícil de manter, e não está claro o que ela deve fazer,
isto é, quais as suas responsabilidades.
Pode
escrever
Porta Log
+abrir() +mostrar()
+fechar() +limpar()
Síntese:
Solução: Cada classe deve representar uma única “coisa” (ou abstração) do
mundo real.
(LARMAN, 2007)
I A C
H B
G F D E
Exemplo:
–– Por que a classe C está associada à classe A, se existe uma associação in-
direta pela classe B? Essa associação pode ter sido criada para melhorar o
desempenho, o que seria razoável, ou pode ter sido criada por desleixo...
–– Por que a classe B possui tantas associações? Essa classe provavel-
mente está realizando muito trabalho.
Seguir o modelo conceitual é uma forma excelente de reduzir o acopla-
mento. Somente envie mensagem de uma classe à outra se a associação foi
identificada durante a fase de modelagem conceitual. Agindo assim, você
estará se restringindo a introduzir acoplamentos que existem no mundo real.
No caso de uso “Criar Pedidos”, que classe deve ser responsável por criar
um novo pedido?
Cliente
Cliente
1: criar
Pedidos
Pedido
Assim, acoplamos Cliente a Pedidos. Neste caso, está “OK“, pois eles são
acoplados no mundo real (veja no modelo conceitual).
A seguir, uma vez que Pedido foi criado, o caso de uso precisa adicionar as
linhas de pedidos a Pedidos. Quem deve ser responsável por adicionar as
linhas de pedidos?
Uma solução seria Cliente adicionar as linhas (afinal ele possui as informa-
ções de inicialização necessárias: quantas linhas, que produtos, que quanti-
dades, etc.). Essa solução é mostrada na Figura 8.11:
Cliente
1: criar
LinhaPedido Pedido
Se fizermos Pedido responsável pela criação das linhas de pedidos, faremos com
que Cliente não tenha nenhum acoplamento com LinhaPedidos (Figura 8.12):
Cliente
1: criar
2: *[para cada linha] adiciona nova linha
LinhaPedido Pedido
Síntese:
Para que o usuário possa fazer as apostas, precisamos que o sistema permita
entrar com as apostas e mostre os resultados dos jogos.
Partida
+mostraResultados()
O padrão “Controller“ é uma solução possível. Criamos uma nova classe que
vai ficar entre o usuário e as classes de negócio. Essa classe funciona como
uma ponte (ou controlador) entre a Interface Gráfica e as Classes do Domínio.
<nomeDoCasoDeUSo>Handler.
Partidas
FazerApostaHandler
Apostador
Aposta
Síntese:
Nome: “Controller”
(LARMAN, 2007)
Atividades de aprendizagem
1. Explique qual o tipo de problema que o padrão “Creator“ aborda e indi-
que qual a solução que ele propõe.
FOWLER, Martin. UML essencial: um breve guia para a linguagem-padrão. São Paulo:
Bookman, 2004.
SERAFINI, J. I.; CUNHA, L.E.C. Análise e projeto de sistemas I. Serra: CEFETES, 2010.
THE STANDISH GROUP. Disponível em: <http://standishgroup.com>. Acesso em: 19 set. 2011.
TEORIA geral dos sistemas e tipologia dos sistemas de informação. Disponível em <http://
www.youtube.com/watch?v=_EXOAh44oWg&feature=related>. Acesso em: 19 set. 2011b.
Tempo
Aplicação Aplicação Aplicação Camada
Desktop Desktop Desktop Cliente
Completo
Projeto Camada
Análise Servidor
Servidor
Teste
Implementação