Você está na página 1de 11

PUC-Rio/CCE

UML - Prof. Luiz Antônio

Exercício

Sistema Q-Sereia de Controle da Produção e Vendas.

A peixaria Q-Sereia teve suas vendas aumentadas substancialmente quando passou a fornecer pescado limpo
para grandes restaurantes de frutos do mar no Rio de Janeiro. Há algum tempo resolveu entrar no ramo da pesca,
adquirindo algumas traineiras e, eventualmente, comprando a produção de embarcações de terceiros. O Sr. Manoel,
proprietário da peixaria, procurou nossa empresa, a CCE-S - Cooperativa de Competentes Engenheiros de Software,
com a finalidade de contratar o desenvolvimento de um sistema computadorizado para controle de suas operações.
Inicialmente é necessário desenvolvermos o sistema de controle da produção e vendas - SCPV, conforme descrevemos
abaixo.

É necessário que o SCPV armazene a matrícula na Capitania dos Portos e a capacidade em toneladas de
qualquer embarcação. Para as embarcações próprias, é necessário que o sistema armazene também a capacidade em
litros do tanque de diesel, além do status da mesma (situações possíveis são descritas mais adiante). Para as
embarcações de 3os., apenas o código da empresa proprietária é necessário. Embarcações (quaisquer) saem em
missões de pesca para as quais são necessários os registros da data de saída, data prevista de chegada, data da efetiva
chegada de volta ao porto, além dos registros de suas produções (feitos ao aportarem), compostos de itens de produção
(zero ou mais) dos quais constam a espécie de pescado e o peso bruto. As espécies são cadastradas no SCPV através
de seus nomes populares. Do cadastro de espécies constam, também, o percentual estimado de perda, os preços por
quilo bruto e limpo de cada espécie.

O capitão possui um número de registro de habilitação na Capitania. Todos os tripulantes (inclusive o capitão),
ao saírem para uma missão, têm seus nomes e telefones de contato em terra cadastrados no sistema pelo Auxiliar
Administrativo da Peixaria. As missões são definidas no sistema da seguinte forma: o Aux. Administrativo cadastra a
data de saída, data prevista de chegada, os dados do capitão (especificado pelo no. da habilitação), os dados dos
demais componentes da equipe, e associa a missão a uma embarcação. Se a embarcação ainda não se encontra
cadastrada, esse é o momento de fazê-lo.

Ao chegar de uma missão ao porto, a embarcação passa a ser descarregada, quando o Capitão coordena a
separação e peso por espécie do produto da pesca, preenchendo um formulário em duas vias com esses dados. Os
dados da produção são conferidos pelo encarregado do estoque, que rubrica o formulário após a conferência. O
Capitão dirige-se, então, ao escritório da peixaria no porto e entrega o diário de bordo (no caso de embarcações
próprias da peixaria), juntamente com as duas vias do formulário. O auxiliar administrativo da peixaria, após verificar

1-1
o preenchimento correto do formulário, carimba "Recebido" na primeira via, entregando-a ao Capitão para seu
controle. A segunda via é usada pelo auxiliar para informar os dados da produção ao SCPV e para posterior
arquivamento.
No início do cadastramento da produção o sistema deverá solicitar o no. da habilitação do capitão (que já
identificará que a embarcação é própria (maioria das vezes) ou de terceiros. O SCPV passa a solicitar os dados da
produção. Ao final do cadastramento da produção o sistema deverá "passar", automaticamente, os dados da mesma aos
sistemas de Controle de estoque (sempre) e de Folha de Pagamento (parte do pagamento da tripulação dos barcos
próprios da Peixaria é função da produção) ou de Contas a Pagar, se embarcação é própria ou de terceiros,
respectivamente.

É também tarefa do auxiliar o cadastramento no SCPV dos dados das espécies de pescado, usados também
pelo sistema de contas a pagar para pagamento dos terceiros. A informação da perda média pode ser alterada pelo
Sistema de Controle de Estoque, baseado nas quantidades de cada espécie que entram e nas quantidades que são
efetivamente estocadas após a limpeza.

Os vendedores devem dispor de uma rotina de cadastramento de vendas, que verifica as quantidades
disponíveis em estoque, verifica se os restaurantes compradores estão na "lista negra" e que processa a venda, dando
baixa automática no estoque e criando novo compromisso no Contas a Receber.

A lista negra de restaurantes inadimplentes é mantida pelo próprio Sr. Manoel, como outra funcionalidade do
sistema SCPV. Um aviso é enviado ao Contas a Receber quando um restaurante é colocado na lista negra,.

Qualquer embarcação própria da Q-Sereia pode estar em uma das seguintes situações: (1) disponível (quando
está pronta, aguardando nova missão), (2) em missão, (3) descarregando (após chegada ao porto), (4) em avaliação
(após ser descarregada, quando é feita uma limpeza e avaliação para verificação da necessidade de reparos antes de
uma nova missão) e (5) em reparos (quando, na avaliação, é constatada a necessidade de reparo(s)).

2-2
Solução

1 - Diagrama de Casos de Uso:

Peixaria Q-Sereia -
SCPV
Cadastrar
Produção Sistema de Controle de
Estoque
<<extend>
Auxiliar
Administrativo Manter Dados
Espécie
d
Sistema de Folha de
<<include> Pgmto.

Informar
Cadastrar Perdas
Embarcação
Sistema de Contas a
Pagar
<<extend>
Cadastrar
Missão
Sistema de Controle de
Efetuar
Estoque
Vendedor Venda

Manter Lista
Negra Sistema de Contas a
Receber
Dono

3-3
2 - Descrições dos Casos de Uso
Caso de Uso: Cadastrar Missão
Ator(es): Auxiliar Administrativo
Descrição: Registro no SCPV dos dados da tripulação, da embarcação das datas de saída e prevista de
retorno, para que qualquer embarcação (própria da Q-Sereia ou de terceiros) saia em missão de
pesca pela Q-Sereia.
Curso Típico dos Eventos
No. Ações
1 Sistema solicita data de saída
2 Auxiliar informa data de saída
3 Sistema solicita data prevista de chegada
4 Auxiliar informa data prevista de chegada
5 Sistema solicita número da habilitação, nome e telefone para contato em terra do capitão
6 Auxiliar informa ao sistema os dados solicitados
7 Para todos os tripulantes Auxiliar solicita cadastramento de dados
8 Para todos os tripulantes Sistema solicita nome e telefone para contato em terra
9 Para todos os tripulantes Auxiliar informa ao sistema os dados solicitados
10 Sistema solicita número da matrícula da embarcação
11 Auxiliar informa número da matrícula da embarcação
12 Sistema busca e exibe dados da embarcação
13 Sistema solicita confirmação dos dados da missão
14 Auxiliar confirma dados da missão
15 Sistema informa sucesso no cadastramento da nova missão
--- Fim do caso de uso ---
Curso Alternativo No. 1 - Passo 6 do Curso Típico: Capitão não possui número da habilitação
No. Ações
1 Auxiliar solicita cancelamento do caso de uso Cadastrar Missão
--- Fim do caso de uso ---
Curso Alternativo No. 2 - Passo 11 do Curso Típico: Embarcação não possui matrícula
1 Auxiliar solicita cancelamento do caso de uso Cadastrar Missão
--- Fim do caso de uso ---
Curso Alternativo No. 3 - Passo 12 do Curso Típico: Embarcação não cadastrada no SCPV
1 Executar caso de uso "Cadastrar Embarcação"
2 Volta ao passo 13 do curso típico
Curso Alternativo No. 4 - Passo 14 do Curso Típico: Auxiliar não confirma dados
--- Fim do caso de uso ---

4-4
Caso de Uso: Cadastrar Embarcação
Ator(es): Auxiliar Administrativo
Descrição: Registro no SCPV dos dados de uma embarcação, necessário para que qualquer embarcação
(própria da Q-Sereia ou de terceiros) saia em missão de pesca.
Curso Típico dos Eventos
No. Ações
1 Sistema solicita matrícula da embarcação na Capitania dos Portos
2 Auxiliar informa matrícula da embarcação na Capitania dos Portos
3 Sistema solicita capacidade em toneladas da embarcação
4 Auxiliar informa capacidade em toneladas da embarcação
5 Sistema indaga se a embarcação é própria ou de terceiros
6 Auxiliar informa que a embarcação é própria
7 Sistema solicita capacidade em litros do tanque de combustível
8 Auxiliar informa capacidade em litros do tanque de combustível
9 Sistema solicita confirmação dos dados da nova embarcação
10 Auxiliar confirma dados da nova embarcação
11 Sistema armazena dados da nova embarcação própria com status "disponível"
12 Sistema informa sucesso no cadastramento de nova embarcação própria
--- Fim do caso de uso ---
Curso Alternativo No. 1 - Passo 2 do Curso Típico: Embarcação não possui matrícula na C. Portos
No. Ações
1 Auxiliar solicita cancelamento do caso de uso Cadastrar Embarcação
--- Fim do caso de uso ---
Curso Alternativo No. 2 - Passo 6 do Curso Típico: Embarcação é de terceiros
1 Sistema exibe lista de empresas terceiras e seus códigos
2 Auxiliar seleciona empresa terceira proprietária da embarcação
3 Sistema solicita confirmação dos dados da nova embarcação
4 Auxiliar confirma dados
5 Sistema armazena dados da nova embarcação de terceiros
6 Sistema informa sucesso no cadastramento de nova embarcação de terceiros
--- Fim do caso de uso ---
Curso Alternativo No. 2.1 - Passo 2 do Curso Alternativo no. 2: Empresa terceira não consta da lista
1 Auxiliar solicita cancelamento do caso de uso Cadastrar Embarcação
--- Fim do caso de uso ---
Curso Alternativo No. 2.2 - Passo 4 do Curso Alternativo no. 2: Auxiliar não confirma dados
--- Fim do caso de uso ---
Curso Alternativo No. 3 - Passo 10 do Curso Típico: Auxiliar não confirma dados
--- Fim do caso de uso ---

5-5
3 - Diagrama de Classes

<<singleton>>
Frota

Missao
+novaEmbarcacao:boolean
+localizaEmbarcacao:void -dataSaida:Date
-defLinkEmbarcacao:void +dataChegada:Date
-dataPrevistaChegada:Date Capitao
1
0..* +definirTripulante:void 1 1 +numeroHabilitacao:S
+definirCapitao:void comanda
Embarcacao -defLinkTripulante:void -defLinkMissao:void
+removerCapitao:void +Capitao:void
+capacidadeToneladas:Int
-defLinkEmbarcacao:void +SetDados:void
+matriculaCapitania:Strin 1 1..*
+removerTripulantes:void
-defLinkCapitao:void
+getNextEmbarcacao:void
+associarMissaoEmbarcacao:
+getFirstEmbarcacao:void
+Missao
+defLinkMissao:void
1 2..* Tripulante
tripula
1 +telefoneContato:Tel
+nome:String
1..*
+setDados:void
ItemProducao +Tripulante:void
Propria Terceiros -defLinkMissao:void
+pesoBruto:Int
+status:char +codigoProprietaria:
+capacidadeTanque:I
0..*
+setStatus:void
+setDados:void 1
-defLinkFrota:void
Especie

+nomePopular:String
+percentualPerda:float
+precoLiquidoVenda:Money
+precoBrutoCompra:Money

6-6
4 - Diagramas de Atividades
4.1 - Cadastrar Missão

Solicitar data de s

Solicitar data prevista

Solicitar habilitacao, n
em terra do capitao
[capitao nao possui habil

[else]
Solicitar nome e telefon
em terra do tripulante

[else]
[fim da lista de tripulantes]
Solicitar numero da matr
embarcacao

[embarcacao nao possui


[else] matricula]
Buscar dados de embarcac
matricula

[else]
[dados encontrados]
Exibir dados da
embarcacao para Executar "Cadastr
confirmacao Embarcacao"

Solicitar confirmac
dados

[dados nao confirmados]

[dados confirmados]
Informar sucesso na criac
missao

7-7
4.2 - Cadastrar Embarcação

Solicitar matricula da e
Capitania

[else]

[embarcacao possui matricula]


Solicitar capacidade em

Indagar se a embarcação
ou de terceiros

[else]
[embarcaçao é propria da QSereia]
Solicitar capacidade e Exibir lista de empresas
tanque de combustível seus códigos

Solicitar confirmação Solicitar escolha de emp

Solicitar confirmação d

[Auxiliar confirma dados]


Armazenar os dados da [else]
embarcação própria co
status "disponível" [auxiliar confirma
Armazenar os dados da
embarcação de terceiro

Informar sucesso no Informar sucesso no


cadastramento de nova cadastramento de nova
embarcação prórpria embarcação prórpria

[else]

8-8
5 - Diagramas de Estados
5.1 - Objeto Embarcação Própria

Disponive EmMissao

missaoCadastrada

reparoEfetuado [embarcacaoOk] chegadaAoPorto

EmRepar EmAvaliacao Descarregando


fazer/separarPesarEsp
[else] saida/limparEmbarcaca

9-9
6 - Diagramas de Seqüências
6.1 - Caso de Uso: Cadastrar Embarcação - Cenário: Curso Típico

janelaEntradaDadosEmb umaFrota
Frota

umAuxilia
1: "Entre Matrícula Capitania"
2: matriculaCapitania
3: "Entre com a Tonelagem"
4: tonelagem
5: "Própria ou de Terceiro?"
6:[embPropria = TRUE] Os dados da nova
7: "Capacidade do Tanque?" embarcação são
passados como
8: capacidadeTanque parâmetros

9: "Confirma Dados?"
10: dados confirmados
10.1: novaEmbarcacao():boolean umaNovaEmbarca
10.1.1: <<create>> Propria

10.1.2: defLinkEmbarcacao():void
10.1.3: setDados():void

10.1.3.1: defLinkF

10.1.4: setStatus("disponível"):void

11: "Nova Embarcação Adicionada à Frota"

10-10
6.2 - Caso de Uso: Cadastrar Missão - Cenário: Curso Típico
formCadastrarMi frotaQSere primeiraEmbarc proximaEmbarca
Frota Embarcacao Embarcacao

umAtendent
1: "Informe data de saída"
2: data de saída
3: "Informe data prevista de chegada"
4: data prevista de chegada umaNovaMiss
4.1: <<create>>
Missao

5: "No. habilitação, nome e telefone do capitão"


6: habilitação, nome e telefone do capitão
6.1: definirCapitao():void umNovoCapit
6.1.1: <<create>>
Capitao

6.1.2: defLinkCapitao():void
6.1.3: SetDados():void

6.1.3.1: defLinkMissao():void

7:*[1..*] //"Informe dados de tripulante"

8:*[1..*] //nome e telefone de tripulante


9: definirTripulante():void umNovoTripul
9.1: <<create>> Tripulante

Em uma iteração
genérica assumim
9.2: defLinkTripulante():void que essa foi a
9.3: setDados():void embarcação local

9.3.1: defLinkMissao():void
10: "Informe matricula da embarcacao"
11: No. matricula 11.1: localizaEmbarcacao():void
11.1.1: getFirstEmbarcacao():void

11.1.2:*[*] getNextEmbarcacao():void

12: Dados da Embarcacao


13: "Confirma?"
14: confirmacao
14.1: associarMissaoEmbarcacao():void

14.1.1: defLinkEmbarcacao():void
14.1.2: defLinkMissao():void

11-11

Você também pode gostar