Cinema
Cinema
Cinema
1. Visão de Negócio
Escopo do sistema:
Neste projeto o sistema abrange aplicativo para venda de ingressos de cinema através da web e sua emissão nos
guichês da empresa de cinema.
1.1 Objetivo
Objetivo - (Custom diagram)
Objetivo do sistema:
O Sistema para Venda de Ingressos de Cinema via Internet tem por objetivo a implantação de um sistema de informação que
possibilite a venda de ingressos de cinema através da Web.
Figura: 1 Objetivo
Atualmente a venda de ingressos é realizada apenas nos guichês do cinema, de forma presencial.
A empresa de cinema possui um website que disponibiliza de forma dinâmica toda programação de cinema, a qual é cadastrada
num banco de dados MySQL.
A empresa tem o objetivo de ampliar suas vendas através da venda de ingressos pela Web e para tanto deseja que seja
desenvolvido um sistema de informação para atender às suas necessidades.
Para a elaboração do projeto de software, foi realizada entrevista com o gerente da empresa de cinema, a qual encontra-se em
anexo. Nessa entrevista foi fornecido o modelo de banco de dados atual do sistema, para que sejam reaproveitados os cadastros já
existentes.
Documentação de levantamentos
Os documentos apresentados neste item foram coletados durante o levantamento dos requisitos do sistema, através
de reuniões com o proprietário e funcionários da livraria.
Documentação de levantamentos - (Custom diagram)
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:5
via Internet
MemóriaReunião1
Figura: 3 Documentação
MemóriaReunião1
MEMÓRIA DE REUNIÃO
Descrição:
O cinema atualmente oferece venda de ingressos apenas presencial, porém deseja-se que se
possam vender ingressos pela internet, aumentando as vendas, diminuindo as filas,
oferecendo desta forma um conforto aos seus clientes.
A empresa já possui um website para divulgação da programação. Todos os filmes e
programação são cadastrados em um banco de dados (MySQL), sendo a geração da
informações dinâmica. O modelo de banco de dados atual é apresentado no item 6.1.1. O
cadastro da programação do cinema não faz parte do escopo deste projeto, uma vez que já é
contemplado pelo sistema que atualiza dinamicamente o website da empresa.
Pretende-se que o cliente acesse uma área de compra de ingressos, onde serão listados os
filmes em cartaz e os horários disponíveis no dia, os quais são obtidos do banco de dados
existente da empresa de cinema. Caso o cliente queira comprar ingresso para outro dia, o
sistema deverá disponibilizar esta possibilidade.
Após escolher o filme, data e horário, o cliente também informará o número de ingressos que
deseja comprar e o tipo de ingresso: inteira, meia, sênior ou menor de 12 anos. Os preços são
diferenciados por tipo.
Não será considerada a venda de ingressos promocionais, ou seja, o preço é diferenciado
somente por tipo, independente do horário e dia da semana.
Não é realizada a venda de poltronas numeradas.
Ao preço de cada ingresso é acrescida uma taxa de serviço, a qual será definida pelo gerente
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:6
via Internet
Pretende-se desenvolver e implantar um sistema para a venda de ingressos de cinema através da Internet. Neste projeto não se
pretende alterar o sistema atual para vendas presencial, o qual está em pleno funcionamento, nem os procedimentos adotados para
tal fim.
Para o novo sistema, pretende-se utilizar toda a base de dados já existente na empresa de cinema, não sendo necessário
implementar cadastro para a programação do cinema.
Início
Cliente
novo?
[Não]
[Sim]
Registra ou atualiza
dados do cliente
Pagamento aceito?
[Nao]
[Sim]
Neste projeto o sistema abrange aplicativo para venda de ingressos de cinema através da web e sua emissão nos guichês da
empresa de cinema.
Restrições:
- Não faz parte do escopo deste projeto o cadastro da programação do cinema, já existente no atual sistema da empresa.
- Como o sistema é para fins didáticos, não serão considerados controles mais complexos, tais como:
• Ingressos promocionais.
• Poltronas numeradas
• Cancelamento de ingressos
• Re-emissão de ingressos
• Reserva de lugares em sessões
2. Requisitos
RF01 - O sistema deve permitir a compra de ingressos de RF10 - O sistema deve permitir a retirada dos ingressos
cinema através da web. pelo cliente na bilheteria do cinema.
RF02 - O sistema deve permitir a escolha da sessão de RF11 - O sistema deve permitir ao funcionário do cinema
cinema para a qual o cliente deseja adquirir ingressos. localizar os ingressos através do número do protocolo ou
documento de identificação do cliente.
NF02 - O sistema para consulta deve permitir o acesso a no mínimo 100 usuários simultaneamente.
(Proposed, Low difficulty)
NF03 - As senhas de acesso ao sistema não devem estar diretamente visíveis no banco de dados e sim de
algum modo criptografado. (Proposed, Medium difficulty)
NF04 - A interface disponível para o cliente deve ser simples de forma que um usuário inexperiente possa
operá-lo (Proposed, Low difficulty)
NF06 - Somente clientes cadastrados podem efetivar a compra de ingressos. (Proposed, Medium
difficulty)
RF02 - O sistema deve permitir a escolha da sessão de cinema para a qual o cliente
deseja adquirir ingressos.
O sistema deve permitir que o cliente selecione uma sessão de cinema, optando por filme, data e horário.
Responsabilidades (requisitos externos)
NF08 - Somente os filmes em cartaz poderão ser selecionados para compra de ingressos. (Proposed,
Medium difficulty)
Considera-se filme em cartaz aqueles que possuem sessão cadastrada para a data corrente e datas futuras
próximas.
NF09 - Por padrão, o sistema apresenta as sessões da data corrente, permitindo ao cliente selecionar outra
data. (Proposed, Medium difficulty)
NF11 - A compra de ingressos deve ser feita para uma única sessão de cinema. (Proposed, Medium
difficulty)
O usuário somente pode selecionar um filme e sessão (horário, data e sala). Caso queira adquirir ingressos
para outros filmes, deverá realizar outra compra.
NF10 - A quantidade de ingressos deve ser informada separadamente para cada tipo de ingresso.
(Proposed, Medium difficulty)
NF11 - A compra de ingressos deve ser feita para uma única sessão de cinema. (Proposed, Medium
difficulty)
O usuário somente pode selecionar um filme e sessão (horário, data e sala). Caso queira adquirir ingressos
para outros filmes, deverá realizar outra compra.
NF02 - O sistema para consulta deve permitir o acesso a no mínimo 100 usuários simultaneamente.
(Proposed, Low difficulty)
NF03 - As senhas de acesso ao sistema não devem estar diretamente visíveis no banco de dados e sim de
algum modo criptografado. (Proposed, Medium difficulty)
NF04 - A interface disponível para o cliente deve ser simples de forma que um usuário inexperiente possa
operá-lo (Proposed, Low difficulty)
NF06 - Somente clientes cadastrados podem efetivar a compra de ingressos. (Proposed, Medium
difficulty)
RF06 - O sistema deve calcular o valor total da compra, considerando a taxa de serviço
por ingresso.
Após selecionar as quantidades e tipos de ingresso, o sistema deverá aplicar uma taxa de serviço por ingresso e
calcular o valor total da compra.
RF07 - O sistema deve emitir um recibo com número de protocolo para retirada dos
ingressos na bilheteria.
Para que o cliente retire seus ingressos, o sistema vai informar um número de protocolo associado à compra dos
ingressos efetivada.
RF08 - O sistema deve controlar a quantidade de ingressos vendidos para uma mesma
sessão.
O sistema deve ter um mecanismo que controle o número de ingressos vendidos para uma sessão, levando em conta
o número de poltronas disponíveis na sala de exibição.
Responsabilidades (requisitos externos)
NF07 - A cada venda de ingresso o sistema deve atualizar o número de ingressos vendidos para uma
sessão. (Proposed, Medium difficulty)
Para cada ingresso vendido para uma sessão, o sistema deve atualizar a quantidade disponível para aquela
sessão.
NF12 - Apenas podem ser vendidos ingressos para uma sessão se existirem poltronas disponíveis.
(Proposed, Medium difficulty)
O sistema vai verificar se a sessão escolhida tem poltronas disponíveis para o número total de ingressos
que o cliente pretende adquirir.
RF10 - O sistema deve permitir a retirada dos ingressos pelo cliente na bilheteria do
cinema.
O sistema deverá permitir que o cliente retire seu ingresso na bilheteria do cinema.
NF01 - O sistema deve possuir um mecanismo de NF07 - A cada venda de ingresso o sistema deve Alguns autores
segurança para evitar que pessoas não autorizadas atualizar o número de ingressos vendidos para uma denominam esses
tenham acesso ao sistema ou a dados privados. sessão. requisitos como
Regras de
Negócio,
associadas aos
NF02 - O sistema para consulta deve permitir o acesso a NF08 - Somente os filmes em cartaz poderão ser
requisitos
no mínimo 100 usuários simultaneamente. selecionados para compra de ingressos.
funcionais.
NF03 - As senhas de acesso ao sistema não devem NF09 - Por padrão, o sistema apresenta as sessões da
estar diretamente visíveis no banco de dados e sim de data corrente, permitindo ao cliente selecionar outra
algum modo criptografado. data.
NF04 - A interface disponível para o cliente deve ser NF10 - A quantidade de ingressos deve ser informada
simples de forma que um usuário inexperiente possa separadamente para cada tipo de ingresso.
operá-lo
NF05 - Os tipos de ingressos considerados serão: inteira, NF11 - A compra de ingressos deve ser feita para uma
meia (estudantes), sênior e menor de 12 anos. única sessão de cinema.
NF06 - Somente clientes cadastrados podem efetivar a NF12 - Apenas podem ser vendidos ingressos para uma
compra de ingressos. sessão se existirem poltronas disponíveis.
Apesar de não
NF14 - O sistema será desenvolvido em Java
explícito na entrevista,
cabe ao projetista
especificar a
arquitetura completa
do aplicativo.
NF15 - O Container Servlet adotado será o T omCat
NF01 - O sistema deve possuir um mecanismo de segurança para evitar que pessoas
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:13
via Internet
NF02 - O sistema para consulta deve permitir o acesso a no mínimo 100 usuários
simultaneamente.
NF03 - As senhas de acesso ao sistema não devem estar diretamente visíveis no banco
de dados e sim de algum modo criptografado.
NF04 - A interface disponível para o cliente deve ser simples de forma que um usuário
inexperiente possa operá-lo
menor de 12 anos.
NF10 - A quantidade de ingressos deve ser informada separadamente para cada tipo de
ingresso.
NF11 - A compra de ingressos deve ser feita para uma única sessão de cinema.
O usuário somente pode selecionar um filme e sessão (horário, data e sala). Caso queira adquirir ingressos para
outros filmes, deverá realizar outra compra.
Responsabilidades (requisitos externos)
RF02 - O sistema deve permitir a escolha da sessão de cinema para a qual o cliente deseja adquirir
ingressos. (Proposed, Low difficulty)
O sistema deve permitir que o cliente selecione uma sessão de cinema, optando por filme, data e horário.
RF03 - O sistema deve permitir a aquisição de diversos ingressos em uma mesma compra. (Proposed,
Medium difficulty)
O sistema deve permitir que o cliente adquira diversos ingressos em uma mesma compra.
NF12 - Apenas podem ser vendidos ingressos para uma sessão se existirem poltronas
disponíveis.
O sistema vai verificar se a sessão escolhida tem poltronas disponíveis para o número total de ingressos que o cliente
pretende adquirir.
Responsabilidades (requisitos externos)
RF08 - O sistema deve controlar a quantidade de ingressos vendidos para uma mesma sessão. (Proposed,
Medium difficulty)
O sistema deve ter um mecanismo que controle o número de ingressos vendidos para uma sessão, levando
em conta o número de poltronas disponíveis na sala de exibição.
• O formato casual, apresenta uma descrição em alto nível que consiste em explicar sucintamente o objetivo e
o funcionamento do caso de uso, indicando algumas exceções importantes, mas não necessariamente todas
(WAZLAWICK, 2004, p. 64-65).
• O formato detalhado contempla a descrição dos cenários, sendo eles: principal, alternativo e de exceção. O
cenário principal descreve o que normalmente acontece quando um caso de uso é realizado. Os cenários
alternativos descrevem o que acontece quando o ator faz uma escolha alternativa, diferente da descrita no
fluxo principal, para alcançar o seu objetivo. Os cenários de exceção descrevem o que acontece quando algo
inesperado ocorre na interação entre ator e casos de uso (BEZERRA, 2002, p. 66-67).
Neste projeto foram adotados os dois modelos, a título de exemplificação. A descrição casual será adotada para
casos de uso básicos, enquanto que o formato detalhado será aplicado aos casos de uso essenciais do negócio.
Os planos de teste são baseados nos cenários dos casos de uso. Deve-se prever pelo menos um teste para cada
cenário descrito, incluindo cenários alternativos e de exceção.
É importante lembrar que para a execução dos testes, faz-se necessária a preparação da base de dados. Todo dado
informado nos testes que supõem-se já existentes, precisam ser previamente inseridos no banco de dados, caso
contrário, podem ser detectados erros referentes à falta de dados, e não do aplicativo.
Testes mais sofisticados ou automatizados também podem ser planejados para o sistema, porém os mesmos fogem
ao escopo do nosso curso.
Organização dos pacotes - (Analysis diagram)
«extend»
Cliente
UC01.01 Compra
ingressos
«extend» UC 02.01 Loga no
Sistema
Prestadora de Cartão de
Crédito
Cliente
Este ator representa os clientes que acessam o site do cinema.
Cenários
1. Compra ingresso de cinema - Principal
1. No passo 3 do fluxo 1, caso o cliente queira outra data, deverá selecionar uma nova data na tela.
2. O sistema retorna ao passo 2 do fluxo 1, re-apresentando as sessões para a data informada.
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:19
via Internet
1. A qualquer momento, antes que seja efetuada a compra (passo 10 do fluxo 1), o cliente pode
cancelar o procedimento de compra.
2. O sistema retornar ao passo 1 do fluxo 1.
1. No passo 7 do fluxo 1, caso o cliente ainda não seja cadastrado, deverá realizar seu cadastro para
prosseguir na compra (UC01.02)
1. No passo 2 do fluxo 1, para cada sessão, caso todos os ingressos já tenham sido vendidos, o sistema
desabilita sua seleção, apresentando ao lado a informação de que a mesma está lotada.
Cenários
1. Cadastra cliente - Principal
1. O sistema apresenta formulário para cadastro do cliente, contendo: nome completo, e-mail, senha,
CPF, RG, data de nascimento, sexo, endereço completo (rua, número, CEP, bairro, cidade, UF) e
telefone.
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:20
via Internet
1. No passo 2 do fluxo 1, o sistema verifica se todos os campos obrigatórios foram preenchidos. Caso
negativo, solicita o preenchimento do cliente. São considerados obrigatórios: nome completo, e-
mail, senha, CPF, RG, data de nascimento e telefone
1. No passo 3 do fluxo 1, o sistema verifica antes de salvar se já existe cliente com mesmo e-mail,
CPF ou RG informados. Caso afirmativo, avisa ao cliente e impede o cadastro.
UC 02.01 Loga no
Sistema
Funcionario
UC02.02 Emite
ingresso
Número do protoco
«flow»
Cliente
(from Pacote 01 - Venda de ingresso web)
Funcionario
Este ator representa a(s) pessoa(s) que trabalham no cinema.
Cenários
1. Emite ingressos - Principal
1. No passo 2 do fluxo 1, caso o número do protocolo seja inválido, sistema emite aviso informando a
inexistência do protocolo informado.
2. Retorna ao passo 4 do fluxo 1.
1. No passo 1 do fluxo 2, caso o Cliente não seja localizado ou não existam ingressos comprados para
o mesmo, o sistema emite mensagem informando ao funcionário esta situação.
2. Retorna ao passo 4 do fluxo 1.
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:24
via Internet
4. Modelagem Dinâmica
Cliente Site do Cinema : Site :CtrlSite CtrlCompraIngresso CtrlConsulta : Programacao : Filme :Filme Sala :Sala Sessao :Sessao
Site : CtrlConsultaProgramacao Programacao
CompraIngresso() CtrlCompraIngresso
CompraIngresso()
IniciaCompra()
ListaProgramacao()
GetProgramacao(int)
GetFilme(char)
GetSala(char)
GetSessao(data)
New()
Programacao :
FormProgramacao
ShowProgramacao()
ListaProgramacao()
SelecionaSessao()
CompraIngresso()
CompraIngresso()
Continua no diagrama
SQ01.01 - Informa
quantidades
GetT iposIngresso()
New()
FormIngressos :
FormIngresso
Informa quantidades de
ingressos()
ConfirmaIngressos()
ConfirmaIngressos()
VerificaDisponibilidade()
GetCapacidade()
GetTaxa()
ApresentaT otal()
[Primeira compra]
Primeira compra()
alt UC01.02
[Cliente novo]
ConfirmaCompra()
[Login efetuado]:
ConfirmaCompra()
Continua no SQ01.01 -
Confirma Compra (cartão)
Cliente Prestadora Cartão WebService : CtrlCompraIngresso CtrlCartao : Ingresso :Ingresso IngressosComprados Sessao :Sessao
WebService : CtrlCartao :
CtrlCompraIngresso IngressoComprado
New()
FormCartao :
FormFinalizacao
ProcessaCartao()
SolicitaServico()
SubmeteRequisicao()
RetornaProcessamento()
[Pagamento negado]:
CancelaCompra()
[Pagamento efetuado]:
ConfirmaPagamento()
InsereIngresso(int) :protocolo
*InsereIngressos()
Para cada tipo de ingresso
AtualizaIngressosVendidos()
Msg(O número do protocolo de retirada de ingressos é
<<nnn>>.)
Compra ingresso
Emitido
5. Modelos de classes
0..*
Programacao
Ingresso
PrecoIngresso
- numeroProtocolo: int 0..*
- valorTotal: double - tipoIngresso: char
- cartaoCredito: char - precoIngresso: double
- validadeCartao: date
- statusIngresso: char + GetTiposIngresso() : void
+ InsereIngresso(int) : void
IngressoComprado
- quantidade: int
+ InsereIngressos() : void
Visão
Site FormProgramacao
Controle
CtrlCompraIngresso
CtrlConsultaProgramacao
+ IniciaCompra() : void
CtrlSite + CompraIngresso() : void
+ ListaProgramacao() : void
+ ConfirmaIngressos() : void
+ CompraIngresso() : void
+ CompraIngresso() : void + CalculaT otal() : void
+ VerificaDisponibilidade() : void
+ ConfirmaCompra() : void
+ ProcessaCartao() : void
+ ConfirmaPagamento() : void
+ CancelaCompra() : void
Modelo
Sessao Sala
Visão
FormIngresso
+ New() : void
+ ConfirmaIngressos() : void
+ Msg(char) : void
+ ApresentaTotal() : void
+ ConfirmaCompra() : void
Controle
CtrlCompraIngresso
+ IniciaCompra() : void
+ CompraIngresso() : void
+ ConfirmaIngressos() : void
+ CalculaT otal() : void
+ VerificaDisponibilidade() : void
+ ConfirmaCompra() : void
+ ProcessaCartao() : void
+ ConfirmaPagamento() : void
+ CancelaCompra() : void
Modelo
Visão
WebServ ice
FormFinalizacao
+ SolicitaServico() : void
+ New() : void
+ Msg(char) : void
Controle
CtrlCompraIngresso
+ IniciaCompra() : void
+ CompraIngresso() : void CtrlCartao
+ ConfirmaIngressos() : void
+ CalculaTotal() : void + ProcessaCartao() : void
+ VerificaDisponibilidade() : void
+ ConfirmaCompra() : void
+ ProcessaCartao() : void
+ ConfirmaPagamento() : void
+ CancelaCompra() : void
Modelo
6. Visão de Implantação
Filme
«Chave Primaria»
*PK idFilme: INTEGER
«column»
Titulo: CHAR(100) PK_Filme
siteOficial: CHAR(200)
Sinopse: TEXT
FK_Programacao_Filme
Programacao
«Chave Primária»
*PK idProgramacao: INTEGER
«column»
FK idFilme: INTEGER
FK_Programacao_Sala FK idSala: INTEGER
periodoExibicaoInicial: DATE
periodoExibicaoFinal: DATE
Sala PK_Sala
PK_Programacao
«Chave Primária»
*PK idSala: INTEGER FK_Sessao_Programacao
«column»
nomeSala: CHAR(20)
capacidade: INTEGER Sessao
«Chave Primária»
*pfK idProgramacao: INT EGER
*PK dataHora: DATETIME
Filme Cidade
TomCat
HTTP
Nav egador
Figura: 23 Componentes
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:36
via Internet
HTTP
Nav egador
Nav egador
7. Planos de testes
2. Seleçao de Not Run 1) No passo 3 do fluxo 1, caso 1) O cliente clica no No passo 4 do 09/12/2008
outra data o cliente queira outra data, link Ingressos Input, verificar se
deverá selecionar uma nova 2) O cliente escolhe o total está
data na tela. o filme "Queime correto: (valor dos
2) O sistema retorna ao passo depois de ler", uma ingressos
2 do fluxo 1, re-apresentando data diferente da apresentados +
as sessões para a data data corrente taxa de serviço) *
informada. (hoje), e a sessão 2
das "19:00" Após passo 5 do
3) O cliente informa Input, é
a quantidade 2 apresentado o
para o tipo de número do
ingresso inteira. protocolo de
4) Após verificar o compra dos
total, o cliente ingressos para a
informa login: data selecionada
[email protected]. no passo 2 do
br e senha: 1234 Input.
5) Informa a
bandeira do cartão:
Visa, o número do
cartão : 12345678
e validade: 10/10
2. Campos Standar Not Run 1) No passo 2 do fluxo 1, o 1) O cliente informa O sistema informa 09/12/2008
obrigatórios d sistema verifica se todos os os dados: que o campo
campos obrigatórios foram nome completo: senha é
preenchidos. Caso negativo, Joao de Souza obrigatório e não
solicita o preenchimento do e-mail: deixa prosseguir
cliente. São considerados senha: AB444 na compra do
obrigatórios: nome completo, CPF: 675.632.276- ingresso.
e-mail, senha, CPF, RG, data 10 (Obtido em
de nascimento e telefone http://www.gerador
cpf.com/, gerador
de CPF para
testes)
RG: 987456
data de
nascimento:
22/08/1980
sexo: F
endereço
completo: Rua
Brusque, 1230
CEP: 88700-800
bairro: Centro
cidade: Itajai
Sistema de Venda de Ingressos de Cinema Documento de projeto do software Página:41
via Internet