Livro Proprietário-Modelagem de Sistemas
Livro Proprietário-Modelagem de Sistemas
Livro Proprietário-Modelagem de Sistemas
autor
1 edio
SESES
rio de janeiro 2016
Conselho editorial regiane burger; roberto paes; gladis linhares; karen bortoloti;
helcimara affonso de souza
Autor do original joo paulo casati
Projeto editorial roberto paes
Coordenao de produo gladis linhares
Coordenao de produo EaD karen fernanda bortoloti
Projeto grfico paulo vitor bastos
Diagramao bfs media
Reviso lingustica amanda carla duarte aguiar
Imagem de capa cc0 public domain / faq
Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida
por quaisquer meios (eletrnico ou mecnico, incluindo fotocpia e gravao) ou arquivada em
qualquer sistema ou banco de dados sem permisso escrita da Editora. Copyright seses, 2016.
96 p. : il.
isbn: 978-85-5548-211-3
Sumrio
Prefcio 5
1. Introduo Engenharia de Software e Modelagem 7
1.1 O que a engenharia de software? 9
1.2 O processo de software 10
1.2.1 O modelo cascata
11
1.2.2 O modelo evolucionrio
12
1.2.3 O modelo incremental
14
1.3 Princpios de modelagem de sistemas
16
1.3.1 A importncia da modelagem
16
1.4 A modelagem orientada a objetos
18
1.5 A linguagem UML
18
23
25
26
27
29
31
37
3. Diagrama de Classes
41
43
48
48
53
55
3.2.4Composio
3.2.5Dependncia
3.3 Estudo de caso
56
57
58
65
68
69
72
73
75
81
88
88
90
Prefcio
Prezados(as) alunos(as),
Sejam bem-vindos disciplina de modelagem de sistemas. Esta disciplina
oferece uma viso sistmica muito importante para futuros desenvolvedores e
analistas de sistemas, pois o seu entendimento facilita toda uma vida de tomada de decises quanto abordagem a ser utilizada na resoluo de problemas
com o uso de software.
Neste captulo so abordados os conceitos iniciais de engenharia de software e seus ciclos de desenvolvimento. Posteriormente, conceitos de modelagem
so apresentados, indicando a importncia da criao de modelos em desenvolvimento de software.
Logo aps, entra-se no mundo orientado a objetos. Um tema empolgante
e de grande importncia para o desenvolvimento de software contemporneo.
O estudo do paradigma orientado a objetos (tambm conhecido pela sigla OO)
traz grandes benefcios ao raciocnio lgico visando criao de programas para
soluo de problemas.
Desejo bons estudos e muita ateno nos conceitos de orientao a objetos
que vo sendo explicados e revistos ao longo de todo o livro.
Bons estudos!
1
Introduo
Engenharia
de Software e
Modelagem
Este captulo visa introduzir os conceitos de engenharia de software, apresentando um panorama geral de processos de desenvolvimento e o ciclo de vida do
desenvolvimento de software. Uma introduo aos conceitos de modelagem de
sistemas tambm apresentada, assim como a explicao do que orientao
a objetos e os conceitos iniciais da linguagem de modelagem chamada UML.
A orientao a objetos um paradigma muito utilizado em desenvolvimento de
software e traz tambm um nvel de raciocnio e abstrao interessantes para
alunos de graduao.
OBJETIVOS
Ao final deste captulo, o aluno conhecer:
Conceitos bsicos de engenharia de software;
Os principais ciclos de vida do processo de desenvolvimento de software;
Conceitos bsicos de modelagem de sistemas;
Uma viso crtica do porqu se utilizar de modelos em desenvolvimento de software;
Conceitos iniciais de orientao a objetos;
Conceitos iniciais sobre a UML.
captulo 1
CONCEITO
O autor Sommerville (2007) define o termo engenharia de software como:
Uma disciplina de engenharia relacionada com todos os aspectos da produo de software,
desde os estgios iniciais de especificao do sistema at sua manuteno, depois que este
entrar em operao.
10
captulo 1
Projeto: definio fsica dos procedimentos, inclusive abrangendo os recursos tecnolgicos a serem utilizados;
Implementao: construo do sistema (cdigos);
Teste: validao do sistema, verificando se os requisitos levantados foram
devidamente desenvolvidos, se atendem s expectativas do cliente e se o sistema funciona sem erros;
Implantao: disponibilizar o produto ao cliente (usurio), inclusive treinamentos e carga de dados;
Manuteno: efetuar os ajustes necessrios em caso de erros no programa, no levantamento de requisitos ou at mesmo no desenvolvimento de novas
funcionalidades, conforme necessidade do cliente; e a
Qualidade: efetuar medidas para a verificao e busca pela excelncia
do sistema.
A abordagem utilizada neste livro considera as cinco atividades definidas por Pressman (2011) por se tratar de uma abordagem mais simples e de
fcil entendimento, porm, pode-se facilmente adaptar outras definies
mais detalhadas.
A padronizao no processo de software pode melhorar o desempenho e reduzir custos do desenvolvimento de software. Com isto, alguns modelos so comumente adotados com o objetivo de otimizar o processo de desenvolvimento
de software (SOMMERVILLE, 2007).
Os modelos de processos, tambm conhecidos como ciclos de vida de software mais utilizados so:
O modelo cascata;
O modelo evolucionrio; e
O modelo incremental.
Todos estes modelos podem acomodar as cinco atividades definidas anteriormente (comunicao, planejamento, modelagem, construo e emprego) e
so mais detalhadamente descritas a seguir.
11
Levantamento
de requisitos
Comunicao
Planejamento
Estimativas e
cronograma
Modelagem
Anlise e
projeto
Construo
Codificao e
testes
Emprego
Entrega e
suporte
EXEMPLO
Ao utilizar-se do modelo cascata, quando um requisito entendido de forma errada na etapa
de comunicao e este erro persiste at a etapa de emprego, preciso retornar etapa de
comunicao e passar novamente por todas as outras etapas at que o emprego seja executado novamente. Sendo assim, ao utilizar-se deste modelo, imprescindvel que cada etapa
seja exaustivamente checada antes de se passar para a prxima, a fim de se evitar custos
adicionais e atrasos no prazo de entrega.
12
captulo 1
Emprego
Comunicao
Construo
Planejamento
Modelagem
13
A segunda abordagem do modelo evolucionrio o modelo espiral, proposto por Boehm (1988) em seu artigo cientfico.
Uma das diferenas do modelo espiral para os outros modelos que seu
ciclo no necessariamente termina quando o software entregue, ele pode ser
adaptado para perdurar por toda a vida do software (PRESSMAN, 2011).
Segundo Sommerville (2007), o modelo espiral orientado a riscos. Ele
busca definir os riscos a cada iterao (volta no ciclo) e minimiz-los durante
o processo.
Analisando a figura 1.3 pode-se ter uma ideia melhor de como o modelo espiral funciona.
Custo Acumulado
Progresso atravs das fases
Determina
Objetivo
Alternativas
Restries
Avalia alternativas
identifica e
resolve riscos
Anlise de
riscos
Anlise de
riscos
Reviso
Anlise de
riscos
Comprometimento
Plano de Requisitos
Plano de Ciclo de Vida
partio
Planeja a
prxima fase
Anlise
de Prottipo
Prottipo
risco
1 Prottipo 2 Prottipo 3 Operacional
Ideia de
Operao
Requisitos de
Software Projeto do
Projeto
Produto
Requisitos de
Plano de
Detalhado
Soflware
Validao
Desenvolvimento
Projeto da
Cdigo
Plano de Testes
Teste
Verificao e
Plano de integrao
de
Validao
Teste
Unidade
de
Teste
Integrao
Desenvolve e verifica
de
Implementao
Aceitao
o produto no nvel
seguinte
14
captulo 1
CONEXO
Uma das metodologias geis mais utilizadas para o desenvolvimento de software o Scrum.
Informaes sobre esta metodologia podem ser encontradas no site:
http://www.desenvolvimentoagil.com.br/scrum/
Os servios a serem fornecidos pelo software a ser produzido so devidamente identificados e desenvolvidos independentemente. Sendo assim, logo
na primeira entrega, o sistema j pode ser utilizado.
A figura 1.4 apresenta a forma como o modelo incremental funciona, onde
cada etapa de emprego a entrega do software incrementado para o cliente.
Incremento 2
Comunicao
Planejamento
Modelagem
Construo
Emprego
Planejamento
Modelagem
Construo
Emprego
Planejamento
Modelagem
Construo
Emprego
Incremento 2
Comunicao
Incremento N
Comunicao
Cada incremento entregue ao cliente um produto perfeitamente opervel. Geralmente se divide o sistema em diversas funcionalidades e em cada
incremento, escolhe-se algumas destas funcionalidades para integrarem a
prxima verso do sistema. Estas funcionalidades so completamente desenvolvidas e a verso do software gerada a partir do novo incremento perfeitamente utilizvel.
De acordo com Pressman (2011), um dos problemas do modelo incremental
definir as funcionalidades em tamanho adequado, visto que os incrementos devem
ser relativamente pequenos, com o objetivo de serem entregues em pouco tempo.
captulo 1
15
16
captulo 1
COMENTRIO
A criao de um modelo facilita o entendimento do software, facilita a definio dos requisitos e pode trazer reduo de custos possibilitando alteraes no software ainda na fase
de modelagem.
captulo 1
17
COMENTRIO
Uma vez, quando cursava a graduao em sistemas de informao, ouvi de um professor de
anlise de sistemas, que o conceito de orientao a objetos parecia fcil, mas que o amadurecimento do conhecimento demora a acontecer e que em alguns anos, talvez uns 5 anos,
ns alunos teramos noo do que realmente a orientao a objetos, at mesmo depois de
utiliz-la em nosso dia-a-dia. Em termos ele estava correto, a utilizao plena da orientao a
objetos vai muito alm daquilo que aprendemos em uma disciplina, s o tempo e a experincia nos faro amadurecer este conhecimento e aplic-la plenamente em nossos softwares.
18
captulo 1
A UML no apenas uma linguagem de modelagem de software, mas tambm pode ser empregada em diversas outras reas de conhecimento. Algumas
destas reas so citadas por Booch, Rumbaugh e Jacobson (2005):
Fluxo de trabalho no sistema legal;
Estrutura de sistemas de sade; e
Projeto de hardware.
Apenas de poder trafegar por diversas reas do conhecimento, o foco principal da UML ser empregada em sistemas de software complexos. So alguns casos onde a UML pode ser aplicada, segundo Booch, Rumbaugh e Jacobson (2005):
Sistemas de informao corporativos;
Servios bancrios;
Servios financeiros;
Setor de transportes;
Setor de telecomunicaes;
Sistemas de eletrnica mdica;
Softwares cientficos;
Servios distribudos na internet;
Entre muitas outras.
A UML abrange no s a documentao da arquitetura do sistema, mas tambm de seus detalhes, podendo expressar requisitos e modelar as atividades de
planejamento (BOOCH; RUMBAUGH; JACOBSON, 2005).
AUTOR
Os autores Grady Booch, James Rumbaugh e Ivar Jacobson so os criadores originais da
UML. Estes autores so reconhecidos mundialmente por suas contribuies significativas
para a tecnologia de objetos.
captulo 1
19
PESSOA
- nome : string
- idade: int
- altura: float
- peso: float
+ faladr(): voi
+ andar (): void
+ dormir(): void
+ ler(): void
Figura 1.5 Representao de uma classe na UML.
20
captulo 1
ATIVIDADES
01. Cite duas desvantagens de se utilizar o modelo cascata em desenvolvimento de software.
02. Em um sistema de locao de carros, cite o nome de duas possveis classes.
03. Qual dos modelos de processo de software comumente utilizado quando se adota uma
metodologia gil?
REFLEXO
Neste captulo foram apresentados os conceitos bsicos de engenharia de software assim
como os principais ciclos de vida de desenvolvimento de software, uma viso essencial para
desenvolvedores que desejam aplicar tcnicas reconhecidas e amplamente testadas em
seus processos de desenvolvimento. Tambm foram abordados conceitos de modelagem de
sistemas, apresentando a necessidade e as vantagens de se modelar software no processo
de desenvolvimento, permitindo ao aluno adquirir uma viso crtica sobre diversos aspectos
do desenvolvimento de software. A linguagem UML foi apresentada neste captulo, esta ser
utilizada durante quase todo o livro, portanto, seus conceitos bsicos so de fundamental
importncia para um bom aprendizado prtico.
captulo 1
21
LEITURA
Na pgina 45 do livro Engenharia de Software: uma abordagem profissional de Roger S.
Pressman (PRESSMAN, 2011) so apresentados alguns mitos relativos software, abordando gerenciamento, clientes e profissionais da rea. importante ficar a par do que mito
e do que realidade neste caso.
PRESSMAN, Roger S.. Engenharia de Software: Uma Abordagem Profissional. 7. ed. Porto
Alegre: Amgh, 2011.
REFERNCIAS BIBLIOGRFICAS
BOEHM, B. W.. A spiral model of software development and enhancement. Computer, [s.l.], v. 21, n. 5,
p.61-72, maio 1988. Institute of Electrical & Electronics Engineers (IEEE). DOI: 10.1109/2.59.
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usurio. 2. ed. Rio de Janeiro:
Campus, 2005.
ERIKSSON, Hans-erik et al. UML 2 Toolkit. Indianapolis: Wiley, 2004.
PRESSMAN, Roger S.. Engenharia de Software: Uma Abordagem Profissional. 7. ed. Porto Alegre:
Amgh, 2011.
SOMMERVILLE, Ian. Engenharia de Software. 8. ed. Pearson: So Paulo, 2007.
NEPOMUCENO, Dnys. Modelos Incremental, Espiral e de Prototipao. Disponvel em: <http://
engenhariadesoftwareuesb.blogspot.com.br/2012/12/blog-post.html>. Acesso em: 22 set. 2015.
22
captulo 1
2
Ferramentas Case
e Casos de Uso
OBJETIVOS
Ao final deste captulo, o aluno conhecer:
As diferentes vises de sistema;
Ferramentas CASE; e
Casos de uso.
24
captulo 2
Viso de
Projeto
Viso de
Implementao
Viso de
Casos de Uso
Viso de
Processo
Viso de
Implantao
A viso de casos de uso utiliza o contexto externo para a modelagem do sistema, isto , modela as interaes do sistema com o ambiente e agentes externos.
Segundo Bezerra (2007) os modelos criados a partir desta viso geralmente servem de direcionamento para os modelos das demais vises.
As demais vises do suporte a reas especficas do sistema. A viso de projeto d suporte a funcionalidades externamente visveis, a viso de implementao d suporte ao gerenciamento de verses, mdulos e subsistemas, a viso
de processo evidencia caractersticas de desempenho e paralelismo e a viso
captulo 2
25
de implantao foca na distribuio fsica do sistema, sua instalao e acoplamento dos subsistemas (BEZERRA, 2007).
Nem todas as vises devem ser obrigatoriamente construdas, isto depende da complexidade e do foco do sistema, da documentao e dos modelos necessrios.
26
captulo 2
Um recurso muito interessante do uso de ferramentas CASE (algumas delas) o sincronismo entre o modelo do software e o cdigo-fonte. Este recurso
permite que o modelo esteja sempre atualizado, mesmo aps alteraes serem
feitas diretamente no cdigo, mantendo a documentao sempre vlida e atual.
Em alguns casos, alteraes feitas no modelo podem repercutir em alteraes
automticas no cdigo-fonte e sua estrutura, mas esta abordagem pouco utilizada por programadores e analistas de sistemas.
Os modelos apresentados neste livro so criados utilizando a ferramenta
Astah. O uso bsico desta ferramenta descrito a seguir.
CONEXO
No site oficial da ferramenta Astah pode-se obter maiores informaes e fazer o download
do software.
http://astah.net/
Esta ferramenta possui uma srie de recursos. Para a elaborao dos modelos necessrios para o acompanhamento da disciplina, a sua verso community
suficiente. Por possuir uma interface grfica de fcil utilizao e permitir a
criao de uma srie de modelos da UML, esta ferramenta utilizada na elaborao deste livro.
A interface do Astah apresentada na figura 2.2.
captulo 2
27
Diversos diagramas podem ser criados utilizando a ferramenta Astah, sejam eles da UML ou no, como pode-se observar na figura 2.3. Porm, alguns
destes somente na verso professional, marcados com [PAID].
28
captulo 2
Diagrama de classes;
Diagrama de casos de uso;
Diagrama de grfico de estados;
Diagrama de atividades;
Diagrama de sequncia;
Diagrama de comunicao;
Diagrama de componentes;
Diagrama de implantao; e
Diagrama de estruturas compostas.
A seguir, os primeiros diagramas sero apresentados: os diagramas de casos de uso.
Cadastrar Veculo
captulo 2
29
CONEXO
O link a seguir leva a uma pgina da Universidade Federal de Campina Grande a qual possui
um resumo sobre os diagramas de casos de uso.
http://www.dsc.ufcg.edu.br/~sampaio/cursos/2007.1/Graduacao/SI-II/Uml/diagramas/
usecases/usecases.htm
Para que se possa interagir diretamente com o caso de uso, necessrio que
um agente externo seja representado tambm. Este agente externo chamado
de ator.
Podemos dizer que o ator quem realiza o caso de uso. Sua representao
grfica demonstrada na figura 2.5.
Secretria
Figura 2.5 Exemplo de representao de ator.
30
captulo 2
Realizar cadastro
Usurio
Figura 2.6 Interao entre ator e caso de uso.
Vender produto
Vendedor
<<include>>
<<extend>>
Cadastrar cliente
captulo 2
31
Cliente
Pessoa Fsica
Pessoa Jurdica
32
captulo 2
um ator. Neste exemplo, subentende-se que existam casos de uso que podem
ser realizados tanto pelo ator pessoa fsica quanto pelo ator pessoa jurdica.
Para facilitar e simplificar o modelo, pode-se generalizar estes atores criando o
ator cliente, que executar o caso de uso. Um exemplo de como isto pode ser
feito apresentado na Figura.
Realizar cadastro
Cliente
Pessoa Fsica
Pessoa Jurdica
Realizar cadastro
Cliente
Pessoa Fsica
Pagar Conta
Pessoa Jurdica
Solicitar Emprstimo
captulo 2
33
A Figura 2.9 traz um exemplo onde qualquer tipo de cliente pode criar uma
conta bancria, porm apenas o cliente pessoa jurdica pode solicitar emprstimos e o cliente pessoa fsica o nico que pode pagar contas.
COMENTRIO
A generalizao, tambm conhecida como herana, um conceito de orientao a objetos e
utilizada em diversos diagramas da UML.
Cadastrar Aluno
de Graduao
Cadastrar Aluno
de Ps-graduao
34
captulo 2
Cadastrar Aluno
Secretria-chefe
Cadastrar Aluno
de Graduao
Cadastrar Aluno
de Ps-graduao
Secretria de
Graduao
Secretria de
Ps-graduao
PERGUNTA
Por que, no modelo demonstrado na figura 2.11, no se pode generalizar as secretrias de
graduao e ps-graduao, como filhas de secretria-chefe?
captulo 2
35
de realizar o caso de uso cadastrar aluno de ps-graduao. O mesmo acontece com o ator secretria de ps-graduao, que impossibilitado de realizar o
caso de uso cadastrar aluno de graduao.
De forma resumida, quando se utiliza generalizao em casos de uso, podese deixar os modelos mais concisos e enxutos, alm de possibilitar descrio
mais abrangente e detalhada do requisito.
Outro termo utilizado em casos de uso so os assuntos. A figura 2.12 exibe
um exemplo de diagrama de casos de uso utilizando assunto.
Cadastro
Cadastrar Pessoas
Funcionrio
Pedidos
Atendimento
Chamada
36
captulo 2
Solicitar Servio
Cliente
<<include>>
Notificar responsveis
<<include>>
Validar cliente
O cenrio apresentado na figura 2.13 demonstra que, no sistema em questo, no momento em que um cliente registra uma solicitao de servio, o sistema automaticamente valida o cliente (verifica se o mesmo cadastrado) e
notifica os responsveis.
Por se tratar de um <<include>>, a notificao dos responsveis e a validao do cliente so aes obrigatrias na realizao do caso de uso solicitar servio.
PERGUNTA
Se o requisito descrito pela figura 2.13 fosse tal que o cliente pudesse optar por enviar ou
no uma notificao aos responsveis, quais seriam as alteraes necessrias no diagrama
para que representasse esta mudana no requisito?
captulo 2
37
Finalizar solicitao
Tcnico
<<include>>
<<extend>>
Notificar superior
Notificar solicitante
<<extend>>
<<extend>>
Registrar atuao
Figura 2.14 Exemplo de caso de uso onde o tcnico atua na solicitao de servio.
38
captulo 2
ATIVIDADE
01. Crie um diagrama de casos de uso que represente a funcionalidade de cadastro de um
material didtico por um professor em um sistema de gesto de materiais de disciplinas.
Os requisitos do sistema so:
O professor cadastra material didtico;
O sistema checa se o professor vinculado disciplina em questo;
O sistema checa se a extenso do arquivo do material condizente e segura;
O professor pode escolher proteger o material cadastrado com uma senha.
REFLEXO
Neste captulo foram apresentados alguns conceitos de vises de sistemas, onde pde-se
observar que dependendo da necessidade e do foco que se quer alcanar com a modelagem,
utiliza-se um certo conjunto de modelos. Outro tema importante abordado aqui foi a utilizao
de ferramentas CASE, estas so de grande valia para analistas de sistemas, ajudando na
tarefa de modelagem e at gerao automtica de cdigo-fonte. A ferramenta Astah, que
utilizada para a criao dos modelos apresentados, mostra-se poderosa e pode ser de grande ajuda para estudos e utilizao real.
Os casos de uso foram apresentados e sua importncia destacada, assim como diversos
exemplos. Estes exemplos so de grande utilidade pois alm de ajudar a fixar os conceitos
do diagrama de casos de uso, tem-se uma viso de como modelar sistemas simples, partindo
de requisitos corriqueiros, para ento se aprofundar em complexidade.
LEITURA
O livro de Ana Cristina Melo (MELO, 2006) apresenta uma srie de exerccios resolvidos utilizando a modelagem UML. De forma didtica, as resolues so bem comentadas exemplificadas.
MELO, Ana Cristina. Exercitando modelagem em UML: 51 exerccios resolvidos. Rio de
Janeiro: Brasport, 2006.
captulo 2
39
REFERNCIAS BIBLIOGRFICAS
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML: Um Guia Prtico Para
Modelagem De Sistemas Orientados A Objetos Atravs Da Linguagem De Modelagem Unificada. 2.
ed. Rio de Janeiro: Elsevier, 2007.
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usurio. 2. ed. Rio de Janeiro:
Campus, 2005.
MELO, Ana Cristina. Exercitando modelagem em UML: 51 exerccios resolvidos. Rio de Janeiro:
Brasport, 2006.
SOMMERVILLE, Ian. Engenharia de Software. 8. ed. Pearson: So Paulo, 2007.
40
captulo 2
3
Diagrama de
Classes
Este captulo aborda o diagrama responsvel por modelar a estrutura de um sistema. Em muitos casos, a modelagem utilizando este diagrama feita para que,
aps discutida e definida, sejam gerados automaticamente os cdigos-fonte da
lgica de negcios do sistema a ser desenvolvido. Os conceitos de orientao
a objetos apresentados neste captulo so de grande utilidade para o entendimento do paradigma e para futuras aplicaes em desenvolvimento e modelagem de sistemas.
No final do captulo existe um estudo de caso para que os conceitos apresentados no decorrer deste possam ser melhor fixados e posteriormente estudados.
OBJETIVOS
Este captulo apresenta a modelagem utilizando o diagrama de classes conceitual da UML,
alm de importantes conceitos de orientao a objetos muito teis para modelagem e desenvolvimento de software.
42
captulo 3
NOME
atributo 1: tipo
atributo 2: tipo
captulo 3
43
ATENO
A notao utilizada para os tipos de variveis e atributos (String, Integer, Float, entre outros)
advinda da linguagem de programao Java, que implementa a orientao a objetos.
VENTILADOR
voltagem: Integer
peso: Float
rotaoMxima: Integer
nmeroPs: Integer
cor: String
44
captulo 3
VENTILADOR
girarAntiHorrio(valocidade:Integer): void
girarHorrio(valocidade:Integer): void
desligar(): void
checarSeEstLigado(): Boolean
Figura 3.2 A classe ventilador.
captulo 3
45
CURIOSIDADE
A escrita que aparece na Figura 3.2, onde as palavras so juntas, porm, ao iniciar uma nova
palavra utiliza-se a primeira letra maiscula chama-se CamelCase, pelas frases ficarem com
ondulaes parecidas com corcovas de camelo. Esta escrita adotada como padro em
muitas linguagens de programao, como Java.
A classe, como dito anteriormente, um modelo para a criao (instanciao) de objetos. A tabela 3.1 exibe uma srie de objetos que poderiam ser instanciados da classe Ventilador com seus respectivos atributos.
Ventilador 1
Ventilador 2
46
captulo 3
voltagem
220
peso
2,13
rotao mxima
700
nmero de ps
cor
rosa
voltagem
220
peso
1,54
rotao mxima
650
nmero de ps
cor
preto
Ventilador 3
voltagem
110
peso
1,95
rotao mxima
800
nmero de ps
cor
branco
Nota-se nos ventiladores da Tabela 3.1 que seus valores obedecem ao tipo
definido na classe, isto , onde na classe definido que o atributo um nmero
inteiro, no objeto o valor a ser atribudo deve obedecer ao modelo, portanto,
deve ser um nmero inteiro tambm, acontecendo isto para todos os atributos
de um objeto instanciado.
EXEMPLO
Um exemplo clssico de classe a classe Carro. Seus atributos podem ser cor, modelo,
renavam, placa, ano de fabricao, entre outros. Como mtodos, pode-se citar acelerar,
frear, trocar a marcha, ligar o rdio, desligar o rdio, entre outros.
captulo 3
47
3.2 Relacionamentos
Os blocos de construo de um sistema so basicamente as classes, porm classes por si s no o descrevem suficientemente. Para que o entendimento do
modelo seja satisfatrio e cumpra seu objetivo de representar o funcionamento
do sistema de software, necessrio que as classes interajam entre si.
As interaes entre classes so chamadas de relacionamentos. Estes relacionamentos podem ser de diversos tipos, dependendo da funo que a classe
exerce no sistema a ser modelado.
Os tipos de relacionamento entre classes em um diagrama de classes so:
Herana;
Associao;
Agregao;
Composio; e
Dependncia.
Estes quatro tipos de relacionamentos so detalhados nos prximos itens.
3.2.1 Herana
Para se identificar um relacionamento de herana (tambm conhecido como
generalizao ou especializao) entre duas ou mais classes, costuma-se utilizar da pergunta: um(a)?. Ao fazer esta pergunta entre duas classes, se a
resposta for sim, pode-se ento considerar o emprego de um relacionamento
de herana.
Na herana da vida real as caractersticas dos pais so passadas aos filhos.
Os filhos, herdando as caractersticas dos pais, desenvolvem as suas prprias e
tambm seu prprio comportamento.
Em sistemas orientados a objetos, tem-se tambm a classe pai e a classe
filha. Em algumas linguagens de programao, um filho pode ter mais de um
pai, como o caso de C++ e Python, isto chamado de herana mltipla. A herana simples quando uma classe s pode ter uma classe pai, como no caso
da linguagem Java.
Para exemplificar este tipo de relacionamento, so utilizadas classes de animais, imaginando-se que um sistema necessite das classes de animais para seu
48
captulo 3
Mamfero
Ave
Peixe
O exemplo da figura 3.3 considera apenas os nomes das classes pois o intuito de identificao da herana, na figura 3.4 o modelo est completo.
Para a identificao da herana de animais, a pergunta proposta um(a)?
utilizada. Portanto, quando se dirige a pergunta de MamferoTerrestre para
Animal, a resposta sim, portanto, MamferoTerrestre filho de Animal
(todo mamfero terrestre um animal). J quando dirigimos a pergunta de
Animal para Ave, a resposta no, portanto, Animal no filho de Ave.
No modelo apresentado na figura 3.3, MamferoTerrestre, Ave e Peixe
so filhos de Animal, pois todos so obrigatoriamente animais. Alm disto,
a herana pode conter vrios nveis. Poderamos modelar mais classes como
filhas de MamferoTerrestre, filhas de Ave e filhas de Peixe, e assim
por diante.
Outra propriedade da herana entre classes que uma classe filha pode sobrescrever os mtodos da classe pai, se desejar que ele seja executado de forma
especfica (o nome e o tipo dos parmetros devem ser idnticos aos do mtodo
a ser sobrescrito). Na figura 3.4, um exemplo de sobrescrio de mtodo apresentado na classe Peixe, onde o mtodo respirar sobrescrito, visto que os
animais do tipo peixe executariam este mtodo (respirariam) de uma forma diferente que seu pai (animal).
captulo 3
49
Animal
nome: String
peso: Float
altura: Float
comprimento: Float
respirar(): void
Mamfero Terrestre
Peixe
Ave
quantidadeLeit: Float
tamanhoAsa: Float
tamanhoNadadeira: Float
Ave 1
50
captulo 3
nome
Piu-Piu
peso
0,55
altura
0,35
comprimento
0,25
tamanho Asa
0,28
Ave 2
Mamfero terrestre1
Mamfero terrestre2
nome
Blue
peso
1,65
altura
0,30
comprimento
0,35
tamanho Asa
0,40
nome
Tom
peso
12,8
altura
0,55
comprimento
0,70
quantidade Leite
nome
Rex
peso
25,45
altura
0,80
comprimento
1,15
quantidade Leite
captulo 3
51
Peixe1
Peixe2
nome
Adam
peso
0,07
altura
0,03
comprimento
0,08
tamanho Nadadeira
0,02
nome
Zeus
peso
0,15
altura
0,07
comprimento
0,12
tamanho Nadadeira
0,06
EXERCCIO RESOLVIDO
Treine o relacionamento de herana utilizando a pergunta um(a)? entre as seguintes classes de uma loja de departamentos (utilize apenas o nome das classes):
Televiso;
Eletrnico;
Cadeira;
Computador;
Produto;
52
captulo 3
Livro;
Mvel;
Mesa; e
Tablet.
Resoluo:
Produto
Eletrnico
Computador
Televiso
Livro
Tablet
Mvel
Cadeira
Mesa
3.2.2 Associao
O relacionamento de associao a base da interao entre as classes de um
projeto de sistema. A associao entre classes pode ser:
Simples;
De agregao;
De composio; e
De dependncia.
Este item trata da associao simples, as outras modalidades so apresentadas nos itens seguintes.
As associaes so relaes entre classes que possuem um rtulo e uma
cardinalidade (tambm conhecida como multiplicidade). O rtulo um nome
descritivo dado ao relacionamento para que o entendimento da relao entre
captulo 3
53
Produto
1 Compra
54
captulo 3
Setor
1..* Trabalha em
3.2.3 Agregao
Este relacionamento uma associao diferente da associao simples apresentada no item anterior. A agregao considera as classes relacionadas como
sendo uma o todo e a outra a parte. Por tal motivo tambm conhecida,
juntamente com a composio, como relacionamento todo-parte.
captulo 3
55
O smbolo que identifica a agregao apresentado na figura 3.7. Um losango vazado utilizado para identificar qual a classe todo e qual a classe
parte. Como pode-se observar, o losango indica a classe todo.
Todo
Parte
Item
cdigo: Integer
nome: String
preo: Flota
3.2.4 Composio
A representao grfica da composio feita com um losango cheio (pintado).
Um exemplo desta representao apresentado na figura 3.9.
Todo
Parte
A utilizao da composio muito similar agregao, porm, com uma diferena principal: a existncia da parte no faz sentido se o todo no existir.
56
captulo 3
CONCEITO
Na agregao, o objeto parte pode pertencer a mais de um todo, enquanto na composio,
o objeto parte pode pertencer somente a um todo. Na composio, as partes so destrudas
como consequncia na destruio do seu respectivo todo (PODESWA, 2005).
Para melhor entendimento de como a composio funciona em modelagem de sistemas, a figura 3.10 exibe um exemplo real de utilizao.
Galeria
cdigo: Integer
nome: String
Foto
cdigo: Integer
Descrio: String
3.2.5 Dependncia
A dependncia de classes utilizada quando, para que aes sejam executadas
por um objeto, necessrio que exista um objeto de outra classe.
Um exemplo prtico deste uso apresentado na figura 3.11, onde um caixa
de banco possui o mtodo de depositar (no caso, dinheiro). Este mtodo recebe
dois parmetros: o valor a ser depositado e a conta em que o valor ser creditado. Para que a conta possa ser especificada, necessrio que um objeto da
classe Conta seja passado como parmetro para o mtodo, portanto, a classe
Caixa tem uma relao de dependncia com a classe Conta.
captulo 3
57
Caixa
cdigo: Integer
nome: String
depositar (valor: Float, conta: Conta): void
Conta
nmero: Integer
CURIOSIDADE
No momento do desenvolvimento do sistema orientado a objetos, os relacionamentos de muitos
para muitos, tambm conhecidos como N para N, possuem uma implementao onde cada um dos
objetos possui uma lista do objeto com o qual est se relacionando. Ao utilizar bancos de dados relacionais para o desenvolvimento, a soluo para este relacionamento de forma diferente, criandose uma tabela entre as outras duas relacionadas para que se possa fazer a navegao entre ambas.
58
captulo 3
Telefone
Pessoa
nome: String
cpf: Strin
Possui
0 . .*
cdigo: Integer
dds: Integer
nmero: String
Aluno
Professor
registroAcademico: Integer
codigoInterno: String
Leciona para
Contm
1
Disciplina
cdigo: Integer
nome: String
Turma
*
Estuda
nmero: Integer
nome: String
ano: Integer
captulo 3
59
CONEXO
Uma explicao sucinta e didtica sobre classes associativas apresentada no seguinte link:
http://www.inf.ufpr.br/silvia/ESNovo/UML/pdf/ModeloConceitualAl.pdf
ATIVIDADE
01. Crie um diagrama de classes que modele um sistema bancrio simplificado, onde devem ser abordados os clientes, as contas, e os gerentes de conta. Utilize apenas os nomes
das classes.
REFLEXO
A apresentao de conceitos importantes de orientao a objetos, guiados pelo diagrama de
classe, foram apresentados neste captulo. A construo de um sistema informatizado passa
pela definio de suas estruturas bsicas, sendo assim, o diagrama de classes d o suporte
necessrio para que esta estrutura seja montada e modelada de acordo com o paradigma
orientado a objetos. Classes, objetos e os diversos relacionamentos apresentados do suporte criao de modelos de sistemas simples a complexos.
LEITURA
O segundo captulo do livro UML for the IT Business Analyst (UML para o analista de negcios de TI) de Howard Podeswa (2005) apresenta de forma sucinta, objetiva e didtica
conceitos de orientao a objetos direcionados analistas de TI.
60
captulo 3
PODESWA, Howard. UML for the IT Business Analyst: A Practical Guide to Object-Oriented
Requirements gathering. 1. ed. Boston: Thomsom, 2005.
REFERNCIAS BIBLIOGRFICAS
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usurio. 2. ed. Rio de Janeiro:
Campus, 2005.
FOWLER, Martin. UML Essencial: Um breve guia para a linguagem-padro de modelagem de objetos.
3. ed. Porto Alegre: Bookman, 2005.
PODESWA, Howard. UML for the IT Business Analyst: A Practical Guide to Object-Oriented
Requirements gathering. 1. ed. Boston: Thomsom, 2005.
captulo 3
61
62
captulo 3
4
Descrio de
Casos de Uso e
Outros Diagramas
da UML
OBJETIVOS
Ao final deste captulo, o aluno conhecer:
Conceitos de descrio de casos de uso;
Os diagramas de interao da UML;
O diagrama de estados; e
O diagrama de atividade;
64
captulo 4
Ps-condio
C
A
B
E
A
L
H
O
captulo 4
65
COMENTRIO
Utilize a descrio no expandida para casos de uso corriqueiros e de fcil entendimento.
Desta forma diminui-se o cansao com leitura excessiva, alm de evitar documentao desnecessria do sistema.
C
A
B
E
A
L
H
O
D
E
S
C
R
I
A descrio expandida utilizada em casos de uso mais complexos, por se tratar de uma descrio detalhada. Um passo-a-passo da realizao do caso de uso
exibida nesta descrio, que possui seu fluxo normal e seus fluxos alternativos.
O fluxo normal de uma descrio de casos de uso a maneira comum com
que este realizado. Seus fluxos alternativos so acionados caso uma particularidade acontea durante sua realizao.
66
captulo 4
C
A
B
E
A
L
H
O
D
E
S
C
R
I
A incluso de outros casos de uso pode ocorrer na descrio (como nos itens
8 e 9 do fluxo normal da tabela 4.3), porm as descries destes que esto sendo includos devem ser feitas de forma separada. importante frisar que cada
descrio contempla apenas um caso de uso.
captulo 4
67
Na descrio expandida o sistema quem realiza a primeira e a ltima tarefa, em outras palavras, quem inicia e finaliza o caso de uso o sistema.
CURIOSIDADE
A descrio do caso de uso pode conter um esboo da tela do sistema que ser utilizada para
sua realizao, desta forma, adiciona-se mais valor descrio.
comum que durante a descrio de um caso de uso se identifique a necessidade de criao de novos destes. Quando isto ocorre, necessrio que se
reveja o modelo do software para que este contemple a nova necessidade.
CONEXO
O site da Microsoft Developer Network traz informaes sobre modelagem de software, apesar de ser direcionado ao uso do software Visual Studio, conceitos so apresentados de
forma didtica e aplicada.
https://msdn.microsoft.com/pt-br/library/dd409445.aspx
68
captulo 4
Papis ou objetivos;
Comunicaes ou vnculos; e
Mensagens.
Os diagramas de interao so explicados e exemplificados a seguir.
produto1: Produto
1: avalia ()
<<confirmao de avaliao>>
captulo 4
69
CONEXO
O documento em PDF do link apresentado (disponibilizado pela wiki da PUC-RIO traz, em slides, informaes aprofundadas sobre o diagrama de sequncia, com detalhes interessantes).
http://www.les.inf.puc-rio.br/wiki/images/e/ef/Aula02-diagrama_sequencia.pdf
Os objetos podem trocar mensagens de criao e destruio de objetos entre si e uma mensagem pode ser enviada de um objeto para ele prprio. As mensagens so mtodos, onde podem ser passados parmetros para sua execuo.
O exemplo apresentado na figura 4.1, apesar de ser muito simples, d uma
viso de artefatos que podem ser utilizados neste tipo de diagrama.
Um exemplo mais complexo apresentado na figura 4.2, onde se tem includos alguns conceitos como a criao e destruio de objetos e a utilizao de atores (mais informaes sobre os atores so apresentadas no captulo 2 deste livro).
70
captulo 4
<<lista de produtos>>
2: escolhe produtos ()
3: escolhe cliente ()
<<dados do cliente>>
4: clica em confirmar ()
<<envia confirmao>>
captulo 4
71
Nota-se na figura 4.3 que o diagrama exibe apenas as informaes que entram e saem do sistema, sem detalhamento de quais objetos esto participando, portanto, trata-se de um caso particular de diagrama de sequncia onde
apenas a interao do sistema com o mundo externo modelada.
CURIOSIDADE
Engenharia de produo em desenvolvimento de software fazer a codificao (produto)
a partir de um modelo (projeto). A engenharia reversa criar o modelo (projeto) a partir do
cdigo-fonte (produto). Existem softwares que auxiliam a criao de modelos a partir da
anlise de cdigo-fonte.
CONEXO
O arquivo disponibilizado no link a seguir, desenvolvido por Aristfanes Corra Silva, possui
uma descrio detalhada sobre os diagramas de comunicao (SILVA, 2015).
http://www.deinf.ufma.br/~acmo/MOO_Com.pdf
72
captulo 4
Apesar de manter o sequenciamento da ordem do envio das mensagens, o diagrama de colaborao no tem o enfoque temporal que o diagrama de sequncia possui.
: Computador
1: imprimir ()
: FilaDeImpressora
: Impressora
EXEMPLO
Caso um objeto possua muitas entradas, ou seja, receba muitas mensagens de outros objetos, esta representao pode ficar confusa no diagrama de comunicao, pois todas as
mensagens so representadas na mesma ligao. A vantagem de se utilizar o diagrama de
comunicao neste caso ter uma viso abrangente de todas as mensagens enviadas a um
nico objeto sem ter que percorrer toda a linha do tempo do diagrama de sequncia.
captulo 4
73
como os eventos que fazem com que o estado seja alterado, sendo uma tcnica muito utilizada para tratar as restries do sistema que so impostas pelos requisitos.
O exemplo exibido na figura 4.5 traz um diagrama onde o objeto em questo
pode assumir trs estados. O incio do diagrama representado pela esfera preta, sendo o estado 1 o estado inicial do objeto, antes de qualquer ocorrncia. O
objeto assume o estado 2 quando o evento 1 acontece. O estado final do objeto, representado pela esfera preta com um crculo externo, assumido quando o
evento 2 acontece. H tambm a possibilidade de um objeto retornar ao mesmo
estado (auto-transio). Portanto, este diagrama composto basicamente por:
Incio;
Estado: nome do estado e atividade;
Transio: mudana de estado; e
Fim.
estado 1
entry/ atividade
evento1
estado 2
evento 2
74
captulo 4
LEITURA
O captulo 22 do livro UML: Guia do Usurio traz uma especificao de mquinas de estados
complexas, com conceitos especficos e avanados sobre o uso deste diagrama, como sub
estados sequenciais, estados concorrentes, entre outros conceitos (BOOCH; RUMBAUGH;
JACOBSON, 2005).
em estoque
cliente desiste da compra
captulo 4
75
Gerente
Vendedor
cadastrar
produto
vender
produto
Cliente no
cadastrado
Cliente cadastrado
cadastrar
cliente
concluir
venda
notificar
gerente
registrar
notificao
de venda
gerar relatrio
para diretoria
76
captulo 4
As ramificaes sequenciais, tambm denominadas ns de deciso, so representadas por um losango e so utilizadas para definir qual ao ser tomada
dependendo de uma condio. No caso do exemplo da Figura 4.7, a condio o
cliente estar ou no cadastrado no sistema. O losango pode tambm representar
intercalao, com o objetivo de unir sadas de aes, assim como feito antes da
concluso da venda.
As bifurcaes concorrentes e unies concorrentes so representadas por
barras onde, a prxima ao s executada aps todas as aes da bifurcao
serem executadas. Neste caso (Figura 4.7), a atividade s finalizada quando ambas aes descritas na bifurcao forem completamente executadas (o registro da
notificao da venda e a emisso do relatrio para a diretoria).
ATIVIDADES
Responda s seguintes questes:
01. Sobre casos de uso, geralmente qual detm maior quantidade de informao, o diagrama ou a descrio?
02. Cite uma vantagem de se utilizar diagrama de sequncia ao invs do diagrama
de comunicao.
03. Como eram conhecidos os diagramas de comunicao?
04. Qual a principal diferena entre um diagrama de atividade e um fluxograma?
REFLEXO
Este captulo abordou uma grande quantidade de informao sobre modelagem de software.
Primeiramente foi apresentada a descrio de casos de uso e pde-se observar que o nvel
de detalhamento aumenta consideravelmente quando se opta por fazer a descrio estendida. Refletindo sobre algo que foi dito no incio do livro, no comum que se utilize de todos
os diagramas ao modelar software, porm uma viso abrangente e conhecimento sobre os
modelos pode trazer qualidade modelagem, pois a chance de serem selecionados diagramas que representem melhor o que se quer modelar maior.
captulo 4
77
LEITURA
O quinto captulo do livro UML 2 Toolkit aborda modelagem dinmica, que trata tambm
dos diagramas apresentados neste captulo. Alguns exemplos e aprofundamento podem ser
encontrados nesta leitura altamente recomendada.
ERIKSSON, Hans-erik et al. UML 2 Toolkit. Indianapolis: Wiley, 2004.
REFERNCIAS BIBLIOGRFICAS
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usurio. 2. ed. Rio de Janeiro:
Campus, 2005.
ERIKSSON, Hans-erik et al. UML 2 Toolkit. Indianapolis: Wiley, 2004.
LARMAN, Craig. Utilizando UML e Padres: Uma introduo anlise e ao projeto orientados a
objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007.
SILVA, Aristfanes Corra. Unified Modeling Language (UML). Disponvel em:
<http://www.deinf.ufma.br/~acmo/MOO_Com.pdf>. Acesso em: 16 out. 2015.
78
captulo 4
5
Diagrama de
Classe de Projeto
e Diagrama de
Implementao
Chegamos ao ltimo captulo do livro de modelagem de sistemas. Aqui, abordado o diagrama de classes de projeto, que uma derivao do diagrama de
classes j apresentado no captulo 3 (inclusive sua apresentao teve alguns aspectos de projeto embutidos). Este diagrama, diferentemente do diagrama de
classes conceitual j visto, enfoca na implementao do sistema e no em sua
lgica de negcios. Porm, o entendimento do diagrama de classes conceitual
de suma importncia para que se possa transferir seus conceitos para o diagrama de classes de projeto.
O aspecto fsico da modelagem de sistemas tambm abordado neste captulo, onde so enfatizados itens fsicos da implementao e implantao do
software a ser desenvolvido.
Espero que tenha absorvido os conceitos apresentados at aqui e que este
ltimo captulo lhe fornea uma viso de programao do software aliada
modelagem.
OBJETIVOS
Ao final deste captulo, o aluno conhecer:
Diagrama de classes de projeto;
Diagrama de componentes; e
Diagrama de implantao.
80
captulo 5
CONCEITO
O diagrama de classes (modelo de domnio) apresenta os objetos do sistema dentro de uma
viso lgica, representando as funcionalidades do sistema independente de tecnologia. As
classes de projeto representam um modelo dependente de tecnologia, com a adio de itens
que so pertinentes implementao do software.
Pelo fato dos diagramas de classe de projeto serem dependentes de tecnologia, necessrio adotar uma para que se possa desenvolver os modelos. Neste
captulo, subentende-se que o projeto desenvolvido utilizando a linguagem
de programao Java.
Vale a pena relembrar os tipos de atributos que vamos utilizar nos diagramas apresentados:
String: atributo do tipo texto;
Integer: atributo do tipo nmero inteiro;
captulo 5
81
CURIOSIDADE
O diagrama de classes de projeto possui informao suficiente para a criao do banco de
dados do sistema, portanto, pode ser utilizado para este fim.
82
captulo 5
Usurio
Formulrio
- cpf: String
- isbn: String
identifica
Livro
- cpf: String
- nome: boolean
- dataNascimento: String
+ ler (): Usuario
+ incluir (): void
+ atualizar (): void
+ remover (): void
Emprtimos
- isbn: String
- titulo: String
- exemplares: Integer
+ ler (): Livro
+ incluir (): void
+ atualizar (): void
+ remover (): void
- cdigo: Integer
- dataEmprestimo: Date
- dataDevolucao: Date
- dataDevolvido: Date
+ registrar (): void
+ ler (): Empretimo
Autor
- cdigo: Integer
- nome: String
- citao: String
+ ler (): Autor
captulo 5
83
No caso da classe associativa Emprstimo, pode-se afirmar que esta possui um objeto da classe Livro e um objeto da classe Usurio como atributos.
Segundo a visibilidade de objetos, pode-se afirmar que Emprstimo enxerga
Usurio e Livro.
CURIOSIDADE
Do ponto de vista de implementao, pode-se utilizar listas de objetos para facilitar o desenvolvimento, como no exemplo da Figura 5.1, pode-se ter uma lista de objetos da classe
Autor como atributo da classe Livro.
Para que um objeto possa enviar mensagens a outro, este destinatrio deve
ser visvel ao remetente. A visibilidade pode ser conseguida de quatro maneiras:
1. Por atributo: quando uma classe detm um objeto de outra como seu
atributo, assim como apresentado no exemplo da figura 5.1.
2. Por parmetro: quando um objeto de uma classe parmetro de algum
mtodo de outra. Se uma classe A possui um mtodo que recebe um objeto da
classe B como parmetro, ento B visvel para A.
3. Declarao local: quando um objeto de uma classe declarado como
varivel local em um mtodo de outra. Se a classe A possui um mtodo e, neste
mtodo, declarado um objeto da classe B, ento B visvel para A. Este mtodo muito utilizado com listas, inclusive resultados de pesquisas em bancos
de dados.
4. Visibilidade global: quando uma varivel, objeto de uma classe, visvel globalmente no sistema. Deste modo, visvel para todos os outros objetos.
A navegabilidade indica a associao unidirecional, ou seja, a navegao de
um objeto de origem para o objeto-alvo. A navegao s permitida se o objeto
-alvo for visvel, portanto, a rota de navegao dada pela seta de visibilidade.
No exemplo da figura 5.1, podemos interpretar a navegabilidade entre
Emprstimo e Livro como: um Emprstimo possui um Livro.
O conceito de dependncia, explicado no item 3.2.5 deste livro, utilizado
em diagramas de classes de projeto. A dependncia indica que um objeto tem
conhecimento de outro por um curto prazo e associado visibilidade por parmetro, por definio local ou por definio global.
84
captulo 5
Setor
*
Trabalha em
Projeto
Funcionrio
Setor
Setor
Trabalha
Trabalha
Projeto
Funcionrio
Setor
FuncionarioSetor
No conceito de herana, h trs formas ou abordagens das classes envolvidas serem transportadas para o diagrama de classes de projeto:
Criando todas as classes envolvidas;
Criando apenas a classe pai;
Criando apenas as classes filhas;
captulo 5
85
Diretoria
Gerncia
Operao
86
captulo 5
CURIOSIDADE
comum que se utilize a abordagem de criao de todas as classes (primeira abordagem)
para a implementao no sistema, porm no banco de dados isto varia com mais frequncia.
Outro conceito utilizado em diagramas de classes de projeto so as interfaces. Estas no podem ser confundidas com as interfaces grficas do sistema,
pois so aes que um objeto pode realizar dentro de um sistema especfico.
Na figura 5.5 tem-se um exemplo de interface em um diagrama de classes
de projeto.
<<interface>>
Tributvel
calcularTributacao (): Float
Salrio
valor: Float
calcularTributacao (): Float
Benefcio
valor: Float
Quando uma classe realiza a ao de uma interface, diz-se que esta classe
implementa tal interface. Portanto, no exemplo da figura 5.5, pode-se dizer
que a classe Salrio implementa a interface Tributvel, enquanto a classe
Benefcio no.
Uma interface contm um conjunto de mtodos (aes), porm, estes mtodos no so implementados pela interface. O que acontece que a interface
possui apenas a assinatura destes mtodos, em outras palavras, ela descreve o
que fazer, mas no como faz-lo.
A implementao dos mtodos da interface de responsabilidade das classes que a implementam e esta implementao deve ser feita utilizando a assinatura idntica a que apresentada na interface, inclusive tipos de parmetros
e de retorno. Neste caso, no exemplo da Figura 5.5, a implementao de como
captulo 5
87
88
captulo 5
Componentes de cdigo-fonte;
Componentes de cdigo binrio; e
Componentes executveis;
Pode-se definir este diagrama como um grafo de componentes conectados
por relacionamentos de dependncia.
CONEXO
Grafos so definidos de forma terica no link a seguir, disponibilizado pela Universidade
Federal de Santa Catarina:
http://www.inf.ufsc.br/grafos/definicoes/definicao.html
Interface 1
Interface 1
Interface 1
Alunos
Professores
Turmas
captulo 5
89
Tela do Sistema
Servio de Vendas
Processador de Transaes
Driver de Contabilidade
90
captulo 5
CONCEITO
Um sistema embutido uma coleo complexa de software para o hardware que interage
com o mundo fsico. Os sistemas embutidos envolvem software que controla dispositivos
como motores, atuadores e monitores e que, por sua vez, controlado por estmulos externos
como entrada de um sensor, movimentao e mudana de temperatura. (BOOCH; RUMBAUGH; JACOBSON, 2005)
CONCEITO
O sistema cliente/servidor uma arquitetura comum, cujo foco a criao de uma clara
separao de questes entre a interface para o usurio (que vive no cliente) e os dados
persistentes no sistema (que vive no servidor). (BOOCH; RUMBAUGH; JACOBSON, 2005)
CONCEITO
Sistema distribudo
Um sistema distribudo um conjunto de computadores independentes que se apresenta
a seus usurios como um sistema nico e coerente (TENENBAUM; VAN STEEN, 2007)
Os diagramas de implantao mostram a configurao de ns de processamento em tempo de execuo e seus componentes. Os componentes que no
existem em tempo de execuo no so abordados por estes diagramas.
Basicamente, o diagrama de implantao um grafo de ns conectados
por associaes de comunicaes. A representao de um n neste diagrama
apresentada na figura 5.9.
N
captulo 5
91
Os ns geralmente so:
Computadores;
Impressoras;
Leitores de carto;
Dispositivos de comunicao;
Entre outros.
Na figura 5.10 apresentado um exemplo de diagrama de implantao simplificado e didtico. Neste exemplo, um cliente acessa um servidor de aplicao na internet por meio do protocolo HTTP (Hyper-Text Transfer Protocol),
enquanto este servidor faz o acesso ao banco de dados para coletar e gravar informaes.
O banco de dados do sistema modelado possui um sistema gerenciador
(SGBD) e a unidade de persistncia (os dados propriamente ditos). A persistncia destes dados dependente do sistema gerenciador, pois ele quem controla as transaes.
O sistema tambm possui uma impressora, que acessada pelo cliente via
rede local (LAN)
Cliente: Browser
Servidor de Aplicao
<<HTTP>>
<<ODBC>>
<<LAN>>
Banco de Dados
SGBD
Impressora
Persistncia
92
captulo 5
ATIVIDADES
01. Qual o foco do diagrama de classes de projeto para modelagem de sistemas?
02. Pensando em um sistema fictcio e puramente didtico, faa um diagrama de classes
de projeto com apenas duas classes: Elefante e Urubu, onde uma delas deve implementar
uma interface chamada Voador, que define o mtodo voar.
03. D trs exemplos de itens que podem ser representados por ns em diagramas
de implementao.
REFLEXO
Os modelos de classes de projeto so uma alternativa muito rica para modelagem de software visando a implementao do cdigo-fonte, assim como os modelos de implementao
trazem aspectos prticos da especificao fsica do funcionamento e implantao do software como produto.
importante lembrar que os modelos podem ter diferentes nveis de abstrao e detalhamento, portanto, devem ser definidos pelo analista conforme a necessidade.
LEITURA
No stimo captulo do livro Engenharia de Software: uma abordagem profissional de Roger
S. Pressman (PRESSMAN, 2011) abordada modelagem de software especfica para aplicaes web.
PRESSMAN, Roger S.. Engenharia de Software: Uma Abordagem Profissional. 7. ed. Porto
Alegre: Amgh, 2011.
REFERNCIAS BIBLIOGRFICAS
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usurio. 2. ed. Rio de Janeiro:
Campus, 2005.
captulo 5
93
FOWLER, Martin. UML Essencial: Um breve guia para a linguagem-padro de modelagem de objetos.
3. ed. Porto Alegre: Bookman, 2005.
PRESSMAN, Roger S.. Engenharia de Software: Uma Abordagem Profissional. 7. ed. Porto Alegre:
Amgh, 2011.
TENENBAUM, Andrew S.; VAN STEEN, Maarten. Sistemas Distribudos: princpios e paradigmas. 2.
ed. So Paulo: Pearson Prentice Hall, 2007.
GABARITO
Captulo1
01. A primeira desvantagem que pode ser citada que se ocorrer algum erro de especificao do software, necessrio que se retorna ao ponto de especificao para que este seja
refeito, o que reflete em retrabalho tambm nas prximas etapas. Uma segunda desvantagem pode ser a entrega do produto pronto, pois o cliente pode identificar erros na execuo,
e ento o projeto todo deve ser revisado.
02. Neste tipo de sistema pode-se identificar uma srie de classes. Para citar apenas duas,
podem ser escolhidas a classe Cliente e a classe Carro.
03. Na adoo de metodologia gil de desenvolvimento de software, comum utilizar o
processo incremental.
Captulo2
Existem diversas maneiras de se especificar software em diagramas de casos de uso, com
diferentes nveis de detalhamento. Uma delas apresentada a seguir:
proteger material
<<extend>>
cadastrar material
professor
<<include>>
94
captulo 5
<<include>>
verificar vnculo
Captulo3
O diagrama de classes representa a estrutura lgica do sistema, e desta forma, um sistema
bem simplificado de uma instituio bancria abrangendo apenas cliente, conta e gerente
pode ser como a seguir:
Cliente
Conta
1
PessoaFisica
tem
1..*
1..*
gerencia
1
Gerente
Pessoa Juridica
Neste modelo, um cliente pode ser de dois tipos: pessoa fsica ou pessoa jurdica e ambos
podem ter contas bancrias. Uma conta bancria pode ser de apenas um cliente. Um gerente
pode gerenciar diversas contas, porm, uma conta s pode ter um gerente.
Esta modelagem pode variar conforme interpretao e lgica de negcios, portanto, variaes podem estar corretas.
Captulo4
01. A descrio de casos de uso detm mais informao, por descrever a realizao do
caso de uso passo a passo, provendo inclusive informaes sobre os fluxos alternativos que
podem ocorrer em uma realizao.
02. O diagrama de sequncia pode ser utilizado em casos que o processo precisa ser
analisado de forma temporal, ou seja, identificar a sequncia das mensagens trocadas entre objetos.
03. Antigamente, os diagramas de comunicao eram conhecidos como diagramas de
colaborao (at a verso 1.5 da UML). A partir da seu nome foi alterado para diagrama
de comunicao.
04. A principal diferena entre um diagrama de atividade e um fluxograma que o diagrama
de atividade capaz de implementar processos paralelos.
captulo 5
95
Captulo5
01. O foco do diagrama de classes de projeto na implementao do sistema, definindo
tipos de variveis, mtodos, entre outros termos. Isto o torna dependente de tecnologia.
02. Um modelo bsico que satisfaz o que pedido na questo exibido abaixo:
<<interface>>
Voador
voar(): void
Urubu
Efefante
voar(): void
03. Trs dos itens que podem ser representados por ns nestes diagramas podem ser:
a) computadores (como processadores);
b) impressoras; e
c) dispositivos de comunicao.
96
captulo 5