Post on 07-Apr-2016
HHD – Help the HelpDeskAnálise e Projeto
Henrique Borges (hbas@cin.ufpe.br)Igor Marques (irlm@cin.ufpe.br)Jobson Ronan (jrjs@cin.ufpe.br)
Motivação“Com o crescimento da complexidade do ambiente
tecnológico, o pessoal do Helpdesk passou a dispender muito mais tempo para encontrar soluções, uma vez que os usuários passaram a trazer questões cada vez mais sofisticadas.”
“Sistemas de Gerência de Helpdesk são necessários para proativamente detectar, corrigir e previnir problemas nos sistemas de aplicação.”
Cliff Oxford, fundador e presidente da Support Technologies
RoteiroVisão Geral do SistemaCasos de UsoAnálise de Casos de UsoProjeto de ArquiteturaPadrões de Projeto
Objetivos do SistemaUsuários podem: Realizar pedidos Acompanhar o estado do pedido Acompanhar a lista de todos os pedidos
pendentesAuxiliar no escalonamento da equipe do HelpdeskMelhorar a transparência do setor, permitindo o acompanhamento das tarefas por qualquer usuário do sistema
Casos de UsoAtores Usuário (abstrato)
Requester Helper
Sistema de Email Timer
Casos de UsoCasos de Uso do Usuário
Efetuar Logoff
Efetuar Login
Visualizar Detalhes da Solicitacao
Visualizar Estatisticas Gerais
Visualizar Solicitacoes na Fila de Espera
Visualizar Solicitacoes em Atendimento
Visualizar Solicitacoes Finalizadas
Usuario
Sistema de Email
Enviar Mensagem Sobre Solicitação
<<include>>
Casos de UsoCasos de Uso do Requester
Visualizar Solicitacoes Finalizadas
Usuario
Realizar uma Solicitação
Solicitar Reabertura da Solicitação
<<include>>
Avaliar Atendimento de Solicitação
<<include>>
Requester
Casos de UsoCasos de Uso do Helper
Visualizar Solicitacoes na Fila de Espera
Aceitar Solicitacao
<<include>>
Alterar Estado da SolicitacaoHelper
Visualizar Detalhes da Solicitacao
<<include>>
Usuario
Casos de UsoCaso de Uso do Relógio
Atualizar Estatisticas GeraisRelogio
Análise de Casos de UsoCasos de Uso Selecionados [RF-07] Enviar mensagem sobre
solicitação [RF-11] Realizar uma solicitação [RF-14] Atualizar Estatísticas Gerais
Análise: Enviar mensagem sobre solicitação
Diagrama de Seqüência
: ComunicacaoSistemaDeEmail : Usuario : TelaEnviarMensagem : ControladorEnviarMen...
: CadastroSolicitacoes solicitacao : Solicitacao
enviarMensagem()
enviarMensagem(usuario, idSolicitacao, mensagem)
solicitacao := procurarSolicitacao(idSolicitacao)
adicionarMensagem(mensagem)
atualizarSolicitacao(solicitacao)
msgEmail := criarMsgEmail(MensagemSolicitacao)
enviarEmail(msgEmail)
Análise: Enviar mensagem sobre solicitação
VOPC
Análise: Realizar uma solicitação Diagrama de Seqüência
: Requester : TelaNovaSolicitacao : ControladorNovaSolicit...
: Solicitacao : CadastroSolicitacoes
abrirNovaSolicitacao()abrirNovaSolicitacao(requester, solicitacao)
setRequester(requester)
cadastrarSolicitacao(Solicitacao)
Análise: Realizar uma solicitação VOPC
Análise: Atualizar Estatísticas Gerais Diagrama de Seqüência
: Relogio : InterfaceRelogio : ControladorAtualizarEst...
: CadastroSolicitacoes : CadastroEstatisticas
interrupcao()atualizarEstatisticas()
solicitacoes = listarSolicitacoes( )
estatistica = computarEstatisticas()
cadastrarEstatistica(estatistica)
Análise: Atualizar Estatísticas Gerais VOPC
Estatistica
InterfaceRelogio
interrupcao()
CadastroEstatisticas
cadastrarEstatistica()
<<entity collection>>
0..*1 0..*1
ControladorAtualizarEstatisticas
atualizarEstatisticas()computarEstatisticas()
1
1
1
1
1
1
1
1
CadastroSolicitacoes
listarSolicitacoesEmEspera()atualizarSolicitacao()cadastrarSolicitacao()procurarSolicitacao()listarSolicitacoes()
<<entity collection>>
1
1
1
1
Solicitacao
setHelper()setRequester()
adicionarMensagem()
1
0..*
1
0..*
Mapeamento entre Classes de Análise e Elementos de Projeto
Classes de Análise Elementos de Projeto<<capsule>> TelaAceitarSolicitacao<<protocol>> ProtocoloAceitarSolicitacao<<capsule>> TelaEnviarMensagem<<protocol>> ProtocoloEnviarMensagem<<capsule>> TelaNovaSolicitacao<<protocol>> ProtocoloNovaSolicitacao<<capsule>> Relogio<<protocol>> AtivacaoPeriodica<<capsule>> FachadaISubsistemaComunicacaoEmailFachadaComunicacaoEmailProtocoloComunicacaoEmail
ContaUsuario UsuarioContaHelper HelperContaRequester Requester
CadastroSolicitacoesIRepositorioSolicitacoesRepositorioSolicitacoesBDRCadastroUsuariosIRepositorioUsuariosRepositorioUsuariosBDRCadastroEstatisticaIRepositorioEstatisticaRepositorioEstatisticaBDRFabricaRepositorioFabricaRepositorioBDR
TelaAceitarSolicitacao
TelaEnviarMensagem
TelaNovaSolicitacao
InterfaceRelogio
ComunicacaoSistemaDeEmail
<<entity collection>> CadastroSolicitacoes
<<entity collection>> CadastroContasUsuario
<<entity collection>> CadastroEstatisticas
Projeto de ArquiteturaPrincípios seguidos Divisão em Camadas Inversão de Controle
Projeto de ArquiteturaVisão dos pacotes
controle
ui
subsistemaComunicacaoEmail
<<subsystem>>
usuarios
ISubsistemaComunicacaoEmail
util<<global>>
solicitacoesestatisticas
persistencia
comm
Projeto de ArquiteturaPacote ui
ProtocoloNovaSolicitacao(from comm)
<<protocol>>
TelaNovaSolicitacao
abrirNovaSolicitacao()
<<capsule>>
+protooloNovaSolicitacao
<<port>>
ProtocoloEnviarMensagem(from comm)
<<protocol>>
TelaEnviarMensagem
enviarMensagem()
<<capsule>>
+protocoloEnviarMensagem
<<port>>
ProtocoloAceitarSolicitacao(from comm)
<<protocol>>
TelaAceitarSolicitacao
aceitarSolicitacao()
<<capsule>>
+protocolAceitarSolicitacao
<<port>>
Projeto de ArquiteturaPacote comm
TelaAceitarSolicitacao(from ui)
<<capsule>>TelaEnviarMensagem
(from ui )
<<capsule>>
AtivacaoPeriodica
<<out signal>> interrupcao()
<<protocol>>
ProtocoloAceitarSolicitacao
<<out signal>> aceitarSolicitacao()<<in signal>> solicitacaoAceita()
<<protocol>>
+protocolAceitarSolicitacao
<<port>>
ProtocoloEnviarMensagem
<<out signal>> enviarMensagem()<<in signal>> MensagemEnviada()
<<protocol>>
+protocoloEnviarMensagem
<<port>>
Fachada(from controle)
<<capsule>>
+interrupcao~<<port>>
+protocoloAceitarSolicitacao~
<<port>>
+protocoloEnviarMensagem~
<<port>>
ProtocoloNovaSolicitacao
<<out signal>> novaSolicitacao()<<in signal>> novaSolicitacaoCriada()
<<protocol>>
+protooloNovaSolicitacao~
<<port>>
TelaNovaSolicitacao(from ui)
<<capsule>>
+protooloNovaSolicitacao
<<port>>
Projeto de ArquiteturaPacote controle
ControladorAceitarSolicitacao
aceitarSol icitacao()criarMensagemSolici tacaoAceita()
ControladorNovaSolicitacao
abrirNovaSolicitacao()
ControladorEnviarMensagem
enviarMensagem()criarMsgEmail()
ControladorAtualizarEstatisticas
atualizarEstatisticas()computarEstatisticas()
Relogio<<capsule>>
AtivacaoPeriodica(from comm)
<<protocol>>
<<port>>
+interrupcao
ProtocoloAceitarSolicitacao(from comm)
<<protocol>>
ProtocoloEnviarMensagem(from comm)
<<protocol>>
ProtocoloNovaSolicitacao(from comm)
<<protocol>>
Fachada
getInstance()
<<capsule>>+interrupcao~
<<port>> +protocoloAceitarSolici tacao~
<<port>>
+protocoloEnviarMensagem~
<<port>>
+protooloNovaSolicitacao~<<port>>
Projeto de ArquiteturaSubsistema de comunicação por e-mail Contexto do subsistema
MensagemEmailorigem : Stringdestinatario : Stringdescricao : String
<<entity>>
ControladorEnviarMensagem
ISubsistemaComunicacaoEmail
enviarEmail()
ControladorAceitarSolicitacao
FachadaComunicacaoEmail<<singleton>>
Projeto de ArquiteturaSubsistema de comunicação por e-mail Diagrama de classesISubsistemaComunicacaoEmail
enviarEmail()
MensagemEmailorigem : Stringdestinatario : Stringdescricao : String
ProtocoloComunicacaoEmail
enviarEmail()
FachadaComunicacaoEmail<<singleton>>
Projeto de ArquiteturaPacote estatísticas
EstatisticatotalSolicitacoesAtendidas : IntegertempoAtendimentoCompleto : IntegertempoEmFilaDeEspera : IntegertempoEmAtendimento
IRepositorioEstatisticas
CadastroEstatisticas
cadastrarEstatistica() 1
0..*
1
0..*
RepositorioEstatisticasBDR(from persistencia)
Projeto de ArquiteturaPacote usuarios
Requester Helpernome : Stringcargo : String
Usuariologin : Stringsenha : String
getSenha()
IRepositorioUsuarios<<Interface>>
CadastroUsuarios
procurarUsuario()
1 0..*1 0..*
RepositorioUsuariosDBR(from persistencia)
Projeto de ArquiteturaPacote solicitacoes
RepositorioSolicitacoesBDR(from persistencia)
IRepositorioSolicitacoes
CadastroSolicitacoes
listarSolicitacoesEmEspera()atualizarSolicitacao()cadastrarSolicitacao()procurarSolicitacao()listarSolicitacoes()
MensagemSolicitacaodescricao
Helper(from usuarios)Solicitacao
setHelper()setRequester()adicionarMensagem()adicionarMensagem()
1 0..*1 0..*
1
0..*
1
-mensagens
0..*
10..1
1
-helper
0..1
Requester(from usuarios)
11
1 -requester
1
Projeto de ArquiteturaPacote persistencia
RepositorioEstatisticasBDR RepositorioSolicitacoesBDRRepositorioUsuariosDBR
FabricaRepositorio(from uti l)
<<abstract factory>>
IRepositorioEstatisticas(from estatisticas)
<<Interface>>IRepositorioSolicitacoes
(from solici tacoes)
<<Interface>>IRepositorioUsuarios
(from usuarios)
<<Interface>>
FabricaRepositorioBDR
<<cria>> <<cria>> <<cria>>
Padrões de ProjetoPadrões Estruturais Façade PDCPadrões Criacionais Singleton Abstract Factory Factory Method
Padrões de ProjetoContexto dos padrões Abstract Factory e Factory Method
CadastroEstatisticas(from estatisticas)
IRepositorioEstatisticas
(from estatisticas)
CadastroSolicitacoes(from solici tacoes)
IRepositorioSolicitacoes
(from solicitacoes)
CadastroUsuarios(from usuarios)
IRepositorioUsuarios
(from usuarios)
FabricaRepositorio(from util)
<<abstract factory>>
<<usa>>
<<usa>><<usa>>
<<cria>>
<<cria>><<cria>>
Dúvidas???