Você está na página 1de 31

HHD Help the HelpDesk

Anlise e Projeto
Henrique Borges (hbas@cin.ufpe.br)
Igor Marques (irlm@cin.ufpe.br)
Jobson Ronan (jrjs@cin.ufpe.br)

Motivao
Com o crescimento da complexidade do ambiente
tecnolgico, o pessoal do Helpdesk passou a dispender
muito mais tempo para encontrar solues, uma vez
que os usurios passaram a trazer questes cada vez
mais sofisticadas.
Sistemas de Gerncia de Helpdesk so necessrios para
proativamente detectar, corrigir e previnir problemas
nos sistemas de aplicao.
Cliff Oxford, fundador e presidente da Support
Technologies

Roteiro
Viso Geral do Sistema
Casos de Uso
Anlise de Casos de Uso
Projeto de Arquitetura
Padres de Projeto

Objetivos do Sistema
Usurios podem:

Realizar pedidos
Acompanhar o estado do pedido
Acompanhar a lista de todos os pedidos
pendentes

Auxiliar no escalonamento da equipe do


Helpdesk
Melhorar a transparncia do setor,
permitindo o acompanhamento das
tarefas por qualquer usurio do sistema

Casos de Uso
Atores

Usurio (abstrato)
Requester
Helper

Sistema de Email
Timer

Casos de Uso
Casos de Uso do Usurio
Visualizar Solicitacoes na Fila de
Espera

Efetuar Login

Efetuar Logoff
Visualizar Solicitacoes em
Atendimento
Usuario
Visualizar Detalhes da Solicitacao
Visualizar Solicitacoes Finalizadas
<<include>>

Visualizar Estatisticas Gerais

Enviar Mensagem Sobre


Solicitao
Sistema de Email

Casos de Uso
Casos de Uso do Requester

Usuario

Solicitar Reabertura da Solicitao


<<include>>

<<include>>
Realizar uma Solicitao

Requester

Avaliar Atendimento de Solicitao

Visualizar Solicitacoes Finalizadas

Casos de Uso
Casos de Uso do Helper
Visualizar Solicitacoes na Fila de
Espera

Usuario

Visualizar Detalhes da Solicitacao

<<include>>
<<include>>

Aceitar Solicitacao

Helper

Alterar Estado da Solicitacao

Casos de Uso
Caso de Uso do Relgio

Relogio

Atualizar Estatisticas Gerais

Anlise de Casos de Uso


Casos de Uso Selecionados

[RF-07] Enviar mensagem sobre


solicitao
[RF-11] Realizar uma solicitao
[RF-14] Atualizar Estatsticas Gerais

Anlise: Enviar mensagem sobre


solicitao
Diagrama de Seqncia
: Usuario

: TelaEnviarMensagem

:
ControladorEnviarMen...

:
CadastroSolicitacoes

enviarMensagem()
enviarMensagem(usuario, idSolicitacao, mensagem)
solicitacao := procurarSolicitacao(idSolicitacao)
adicionarMensagem(mensagem)
atualizarSolicitacao(solicitacao)

msgEmail := criarMsgEmail(MensagemSolicitacao)
enviarEmail(msgEmail)

solicitacao : Solicitacao

: ComunicacaoSistemaDeEmail

Anlise: Enviar mensagem sobre


solicitao
VOPC

Anlise: Realizar uma solicitao


Diagrama de Seqncia

: Requester

: TelaNovaSolicitacao

:
ControladorNovaSolicit...

: Solicitacao

abrirNovaSolicitacao()
abrirNovaSolicitacao(requester, solicitacao)
setRequester(requester)
cadastrarSolicitacao(Solicitacao)

:
CadastroSolicitacoes

Anlise: Realizar uma solicitao


VOPC

Anlise: Atualizar Estatsticas Gerais


Diagrama de Seqncia

: Relogio

: InterfaceRelogio

:
ControladorAtualizarEst...

: CadastroSolicitacoes

interrupcao()
atualizarEstatisticas()
solicitacoes = listarSolicitacoes( )

estatistica = computarEstatisticas()
cadastrarEstatistica(estatistica)

: CadastroEstatisticas

Anlise: Atualizar Estatsticas Gerais


VOPC
InterfaceRelogio
interrupcao()
1

Solicitacao

ControladorAtualizarEstatisticas

0..*

setHelper()
setRequester()
adicionarMensagem()

1
<<entity collection>>
CadastroSolicitacoes
listarSolicitacoesEmEspera()
atualizarSolicitacao()
cadastrarSolicitacao()
procurarSolicitacao()
listarSolicitacoes()

atualizarEstatisticas()
computarEstatisticas()

1
<<entity collection>>
CadastroEstatisticas
cadastrarEstatistica()

0..*
Estatistica

Mapeamento entre Classes de


Anlise e Elementos de Projeto
Classes de Anlise
TelaAceitarSolicitacao

Elementos de Projeto
<<capsule>> TelaAceitarSolicitacao
<<protocol>> ProtocoloAceitarSolicitacao
TelaEnviarMensagem
<<capsule>> TelaEnviarMensagem
<<protocol>> ProtocoloEnviarMensagem
TelaNovaSolicitacao
<<capsule>> TelaNovaSolicitacao
<<protocol>> ProtocoloNovaSolicitacao
InterfaceRelogio
<<capsule>> Relogio
<<protocol>> AtivacaoPeriodica
<<capsule>> Fachada
ComunicacaoSistemaDeEmail
ISubsistemaComunicacaoEmail
FachadaComunicacaoEmail
ProtocoloComunicacaoEmail
ContaUsuario
Usuario
ContaHelper
Helper
ContaRequester
Requester
<<entity collection>> CadastroSolicitacoes
CadastroSolicitacoes
IRepositorioSolicitacoes
RepositorioSolicitacoesBDR
<<entity collection>> CadastroContasUsuario CadastroUsuarios
IRepositorioUsuarios
RepositorioUsuariosBDR
<<entity collection>> CadastroEstatisticas
CadastroEstatistica
IRepositorioEstatistica
RepositorioEstatisticaBDR
FabricaRepositorio
FabricaRepositorioBDR

Projeto de Arquitetura
Princpios seguidos

Diviso em Camadas
Inverso de Controle

Projeto de Arquitetura
Viso dos pacotes

ui

comm

<<subsystem>>
subsistemaComunicacao
Email

controle

<<global>>
util

ISubsistemaComunicacaoEmail

estatisticas

solicitacoes

persistencia

usuarios

Projeto de Arquitetura
Pacote ui
<<capsule>>
TelaAceitarSolicitacao

<<capsule>>
TelaEnviarMensagem

aceitarSolicitacao()

enviarMensagem()

+protocolAceitarSolicitacao
<<port>>

<<capsule>>
TelaNovaSolicitacao
abrirNovaSolicitacao()

+protocoloEnviarMensagem
<<port>>

+protooloNovaSolicitacao
<<port>>

<<protocol>>
ProtocoloAceitarSolicitacao

<<protocol>>
ProtocoloEnviarMensagem

<<protocol>>
ProtocoloNovaSolicitacao

(from comm)

(from comm)

(from comm)

Projeto de Arquitetura
Pacote comm
<<capsule>>
TelaNovaSolicitacao

<<capsule>>
TelaEnviarMensagem

<<capsule>>
TelaAceitarSolicitacao

(from ui)

(from ui)

(from ui )

+protooloNovaSolicitacao

+protocoloEnviarMensagem

+protocolAceitarSolicitacao
<<port>>

<<port>>

<<port>>

<<protocol>>
ProtocoloAceitarSolicitacao

<<protocol>>
ProtocoloEnviarMensagem

<<out signal>> aceitarSolicitacao()


<<in signal>> solicitacaoAceita()

<<protocol>>
ProtocoloNovaSolicitacao

<<out signal>> enviarMensagem()


<<in signal>> MensagemEnviada()
<<port>>

<<out signal>> novaSolicitacao()


<<in signal>> novaSolicitacaoCriada()

<<port>>

+protocoloAceitarSolicitacao~

+protocoloEnviarMensagem~
<<capsule>>
Fachada
(from controle)

<<port>>
<<protocol>>
AtivacaoPeriodica
<<out signal>> interrupcao()

+interrupcao~

<<port>>
+protooloNovaSolicitacao~

Projeto de Arquitetura
Pacote controle
<<protocol>>
ProtocoloAceitarSolicitacao
<<protocol>>
ProtocoloEnviarMensagem

(from comm)

(from comm)

<<protocol>>
AtivacaoPeriodica

<<port>>

(from comm)

<<protocol>>
ProtocoloNovaSolicitacao

<<port>>
<<port>>

<<port>>

+protocoloAceitarSolicitacao~

+interrupcao~
<<capsule>>
Fachada

+interrupcao
<<capsule>>
Relogio

(from comm)

+protocoloEnviarMensagem~

+protooloNovaSolicitacao~

<<port>>

getInstance()

ControladorAceitarSolicitacao
aceitarSolicitacao()
criarMensagemSolicitacaoAceita()
ControladorEnviarMensagem
enviarMensagem()
criarMsgEmail()

ControladorAtualizarEstatisticas
atualizarEstatisticas()
computarEstatisticas()

ControladorNovaSolicitacao
abrirNovaSolicitacao()

Projeto de Arquitetura
Subsistema de comunicao por email

Contexto do subsistema
ControladorEnviarMensagem

ISubsistemaComunicacaoEmail
enviarEmail()

<<singleton>>
FachadaComunicacaoEmail

ControladorAceitarSolicitacao

<<entity>>
MensagemEmail
origem : String
destinatario : String
descricao : String

Projeto de Arquitetura
Subsistema de comunicao por email

Diagrama de classes
ISubsistemaComunicacaoEmail

enviarEmail()

<<singleton>>
FachadaComunicacaoEmail

ProtocoloComunicacaoEmail
enviarEmail()

MensagemEmail
origem : String
destinatario : String
descricao : String

Projeto de Arquitetura
Pacote estatsticas
CadastroEstatisticas
cadastrarEstatistica()

1
0..*

IRepositorioE
statisticas

RepositorioEstatisticasBDR
(from persistenci a)

Estatistica
totalSolicitacoesAtendidas : Integer
tempoAtendimentoCompleto : Integer
tempoEmFilaDeEspera : Integer
tempoEmAtendimento

Projeto de Arquitetura
Pacote usuarios
CadastroUsuarios

0..*

Usuario
login : String
senha : String

procurarUsuario()
getSenha()

<<Interface>>
IRepositorioUsuarios

RepositorioUsuariosDBR
(from persistenci a)

Requester

Helper
nome : String
cargo : String

Projeto de Arquitetura
Pacote solicitacoes
Helper

CadastroSolicitacoes
listarSolicitacoesEmEspera()
atualizarSolicitacao()
cadastrarSolicitacao()
procurarSolicitacao()
listarSolicitacoes()

IRepositorioSolicitacoes

0..*

setHelper()
setRequester()
adicionarMensagem()
adicionarMensagem()
1

-mensagens
0..*
MensagemSolicitacao
descricao

RepositorioSolicitacoesBDR
(from persistenci a)

-helper

Solicitacao

(from usuarios)

0..1
1
1
1

-requester

Requester
(from usuarios)

Projeto de Arquitetura
Pacote persistencia
<<abstract factory>>
FabricaRepositorio
(from uti l)

FabricaRepositorioBDR

<<cria>>

<<cria>>

<<cria>>

RepositorioUsuariosDBR

RepositorioEstatisticasBDR

RepositorioSolicitacoesBDR

<<Interface>>
IRepositorioUsuarios

<<Interface>>
IRepositorioEstatisticas

<<Interface>>
IRepositorioSolicitacoes

(from usuarios)

(from estati sticas)

(from solici tacoes)

Padres de Projeto
Padres Estruturais

Faade
PDC

Padres Criacionais

Singleton
Abstract Factory
Factory Method

Padres de Projeto
Contexto dos padres Abstract
Factory e Factory Method
CadastroUsuarios
CadastroSolicitacoes

(from usuarios)

(from solicitacoes)

CadastroEstatisticas
(from estati sticas)

<<usa>>
<<usa>>

<<usa>>

<<abstract factory>>
FabricaRepositorio
(from util)

<<cria>>
<<cria>>

<<cria>>

IRepositorioE
statisticas
(from estati sticas)

IRepositorioSo
licitacoes
(from solicitacoes)

IRepositorioUs
uarios
(from usuarios)

Dvidas???