HHD – Help the HelpDesk Análise e Projeto

Post on 28-Jan-2016

36 views 0 download

description

HHD – Help the HelpDesk Análise e Projeto. Henrique Borges (hbas@cin.ufpe.br) Igor Marques (irlm@cin.ufpe.br) Jobson Ronan (jrjs@cin.ufpe.br). Motivação. - PowerPoint PPT Presentation

Transcript of HHD – Help the HelpDesk Análise e Projeto

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

Roteiro

Visã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

pendentes

Auxiliar no escalonamento da equipe do HelpdeskMelhorar a transparência do setor, permitindo o acompanhamento das tarefas por qualquer usuário do sistema

Casos de Uso

Atores Usuário (abstrato)

Requester Helper

Sistema de Email Timer

Casos de Uso

Casos 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 Uso

Casos 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 Uso

Casos 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 Uso

Caso de Uso do Relógio

Atualizar Estatisticas GeraisRelogio

Análise de Casos de Uso

Casos 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 Arquitetura

Princípios seguidos Divisão em Camadas Inversão de Controle

Projeto de Arquitetura

Visão dos pacotes

controle

ui

subsistemaComunicacaoEmail

<<subsystem>>

usuarios

ISubsistemaComunicacaoEmail

util<<global>>

solicitacoesestatisticas

persistencia

comm

Projeto de Arquitetura

Pacote 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 Arquitetura

Pacote 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 Arquitetura

Pacote controle

ControladorAceitarSolicitacao

aceitarSolicitacao()criarMensagemSolicitacaoAceita()

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>> +protocoloAceitarSolicitacao~

<<port>>

+protocoloEnviarMensagem~

<<port>>

+protooloNovaSolicitacao~<<port>>

Projeto de Arquitetura

Subsistema de comunicação por e-mail Contexto do subsistema

MensagemEmail

origem : Stringdestinatario : Stringdescricao : String

<<entity>>

ControladorEnviarMensagem

ISubsistemaComunicacaoEmail

enviarEmail()

ControladorAceitarSolicitacao

FachadaComunicacaoEmail<<singleton>>

Projeto de Arquitetura

Subsistema de comunicação por e-mail Diagrama de classesISubsistemaComunicacaoEmail

enviarEmail()

MensagemEmail

origem : Stringdestinatario : Stringdescricao : String

ProtocoloComunicacaoEmail

enviarEmail()

FachadaComunicacaoEmail<<singleton>>

Projeto de Arquitetura

Pacote estatísticas

Estatistica

totalSolicitacoesAtendidas : IntegertempoAtendimentoCompleto : IntegertempoEmFilaDeEspera : IntegertempoEmAtendimento

IRepositorioEstatisticas

CadastroEstatisticas

cadastrarEstatistica() 1

0..*

1

0..*

RepositorioEstatisticasBDR(from persistencia)

Projeto de Arquitetura

Pacote usuarios

Requester Helper

nome : Stringcargo : String

Usuario

login : Stringsenha : String

getSenha()

IRepositorioUsuarios<<Interface>>

CadastroUsuarios

procurarUsuario()

1 0..*1 0..*

RepositorioUsuariosDBR(from persistencia)

Projeto de Arquitetura

Pacote solicitacoes

RepositorioSolicitacoesBDR(from persistencia)

IRepositorioSolicitacoes

CadastroSolicitacoes

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

MensagemSolicitacao

descricao

Helper(from usuarios)Solicitacao

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

1 0..*1 0..*

1

0..*

1

-mensagens

0..*

1

0..1

1

-helper

0..1

Requester(from usuarios)

11

1 -requester

1

Projeto de Arquitetura

Pacote 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 Projeto

Padrões Estruturais Façade PDC

Padrões Criacionais Singleton Abstract Factory Factory Method

Padrões de Projeto

Contexto dos padrões Abstract Factory e Factory Method

CadastroEstatisticas(from estatisticas)

IRepositorioEstatisticas

(from estatisticas)

CadastroSolicitacoes(from solici tacoes)

IRepositorioSolicitacoes

(from solici tacoes)

CadastroUsuarios(from usuarios)

IRepositorioUsuarios

(from usuarios)

FabricaRepositorio(from util)

<<abstract factory>>

<<usa>>

<<usa>><<usa>>

<<cria>>

<<cria>><<cria>>

Dúvidas???