3. DESENVOLVIMENTO
3.1. PROJETO
3.1.4. Diagramas UML
Abaixo são apresentados os diagramas UML com suas devidas explicações. Foram utilizados os diagramas que representam aspectos da estrutura e aspectos dinâmicos do sistema.
3.1.4.1. Diagrama de Caso de uso
Diagramas de caso de uso descrevem os requerimentos funcionais do sistema de maneira conceitual entre usuários e desenvolvedores de sistemas. Ele fornece uma descrição consistente e clara sobre as responsabilidades que devem ser cumpridas pelo sistema, além de formar a base para a fase de desenho (FURLAN, 1998).
O sistema possui dois atores, o usuário e o administrador; por este motivo foi construído dois diagramas de caso de uso, um para cada ator, conforme mostra a Figura 28 e a Figura 29.
A figura abaixo ilustra todas as ações que o administrador tem condições de realizar.
ud Caso de uso do Administrador
Administrador Aprov ar/Reprov ar
Cadastro do Usuário
Fazer Login
Listar Requisições Pendentes de
usuários
Excluir Usuários
Listar Usuários Fazer
Administração do Site Fazer Manutenção
do Observ atório Ver Utilização do
Telescópio Modificar Agendamento
Ver Cadastro de Usuários
Figura 28. Diagrama de caso de uso do administrador
O diagrama de caso de uso do usuário ilustra todas as ações que o usuário é capaz de realizar.
ud Caso de uso do usuário
Usuário Preencher
Cadastro
Submeter Cadastro
Confirmar Cadastro
Alterar Cadastro
Pedir Exclusão do Cadastro Ver Condições
Metereológicas
Listar Requisições Pendentes
Preencher Requisição
Submeter Requisição
Alterar Requisição
Excluir Requisição
Fazer Login
Figura 29. Diagrama de caso de uso do usuário
3.1.4.2. Diagrama de Classes
O diagrama de classes representa a estrutura lógica estática em uma superfície e a coleção de elementos que descrevem o modelo e as suas relações. Cada classe descreve as ações que serão realizadas. A Figura 30 descreve as classes desse sistema, que são: Gerenciador, Escalonador, Meteorologista, Executor, Astrônomo e Temporizador; todos com as suas devidas ações a serem realizadas.
c d As tra W e b
TW e b Mo d u le TW e bM odule 1
# p p In d e x: TP a g e P ro d u ce r*
# C lie n tS o cke t: TC lie n tS o cke t*
# p p P rin cip a l: TP a g e P ro d u ce r*
# p p C a d a s tro : TP a g e P ro d u ce r*
# p p R e q u is ica o : TP a g e P ro d u ce r*
# p p L o g in In va lid o : TP a g e P ro d u ce r*
# Tim e rTim e o u t: TTim e r*
# p p E s q u e ce u S e n h a : TP a g e P ro d u ce r*
# p p E n vio u S e n h a : TP a g e P ro d u ce r*
# p p R e q P e n d e n te s : TP a g e P ro d u ce r*
# p p R e q L is ta : TP a g e P ro d u ce r*
- a Tim e o u t: b o o l
# W e b Mo d u le 1 Actio n S u b m itR e q u e s tActio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# W e b Mo d u le 1 P o s tL o g in Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# p p P rin cip a lH TML Ta g (TO b je ct*, TTa g , An s iS trin g , TS trin g s *, An s iS trin g & ) : vo id
# W e b Mo d u le 1 Ge tP rin cip a lActio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# Tim e rTim e o u tTim e r(TOb je ct*) : vo id
# W e b Mo d u le 1 a cS u b m itS e n h a Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# W e b Mo d u le 1 a cS u b m itR e q u is ica o Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# p p R e q u is ica o H TML Ta g (TO b je ct*, TTa g , An s iS trin g , TS trin g s *, An s iS trin g & ) : vo id
# p p R e q P e n d e n te s H TML Ta g (TO b je ct*, TTa g , An s iS trin g , TS trin g s *, An s iS trin g & ) : vo id
# W e b Mo d u le 1 a cR e q u is ica o Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# W e b Mo d u le 1 a cR e s P e n d e n te s Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id
# W e b Mo d u le 1 a cS u b m e te C a d a s tro Actio n (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id - Ve rifica P a ra m e tro s C o rre to s U R L (TO b je ct*, TW e b R e q u e s t*, TW e b R e s p o n s e *, b o o l& ) : vo id - C o n n e ctTo As tra K e rn e l() : b o o l
- D is co n n e ctTo As tra K e rn e l() : vo id - S e n d Me s s a g e To As tra K e rn e l(S trin g ) : in t - S e n d Fie ld s To As tra K e rn e l() : in t
- S e n d Fie ld s To As tra K e rn e l(S trin g ) : in t - R e ce ive Me s s a g e Fro m As tra K e rn e l() : S trin g - G e tR e q u e s tFie ld s () : S trin g
- G e tQ u e ryFie ld s () : S trin g - G e tQ u e ryFie ld (S trin g ) : S trin g + TW e b Mo d u le 1 (TC o m p o n e n t*)
Figura 30. Diagrama de classes do Astra Web
c d As tra Ke rne l
C lL o g ClAs tronom o
# C lAs tro n o m o (vo id )
# Fa ca _ R e d u ca o _ a o _ D ia (TD a te Tim e , d o u b le , d o u b le , TD a te Tim e , d o u b le *, d o u b le *) : vo id
# D e te rm in e _ P e rio d o _ Vis ive l_ n a _ D a ta (TD a te Tim e , d o u b le , d o u b le , TD a te Tim e , TD a te Tim e *, TD a te Tim e *) : vo id
# C a lcu le _ D a ta _ Ju lia n a (flo a t, TD a te Tim e , flo a t) : flo a t
# C a lcu le _ Te m p o _ S id e ra l(flo a t, flo a t) : flo a t
# C a lcu le _ An g u lo _ H o ra rio (flo a t, flo a t) : flo a t
# C a lcu le _ Z(flo a t, flo a t) : flo a t
# C a lcu le _ Altu ra _ As tro (TD a te Tim e , d o u b le , d o u b le , TD a te Tim e , TD a te Tim e ) : flo a t
ClEx e c utor - Me te o ro lo g is ta : C lMe te o ro lo g is ta * - Te m p o riza d o r: C lTe m p o riza d o r*
- D rive rS E : C lD rive rS E * - C a rte iro : C lC a rte iro * - Ta b U s u a rio s : C lTa b U s u a rio s * - Ta b As tro s : C lTa b As tro s *
- Ta b R e q u is ico e s _ U s u a rio : C lTa b R e q u is ico e s _ U s u a rio * - a Tim e o u t: b o o le a n
+ C lE xe cu to r(vo id )
+ E xe cu te _ R e q u is ica o (s R e g is tro R e q u is ica o ) : in t - _ Tim e o u t() : vo id
- _ In icie Te m p o riza ca o (in t, in t) : vo id C lL o g
ClEs c a lona dor + As tro n o m o : C lAs tro n o m o *
- m e n s a g e m : S trin g - E xe cu to r: C lE xe cu to r*
- Te m p o riza d o r: C lTe m p o riza d o r*
- C a rte iro : C lC a rte iro * - Ta b H o ra rio s : C lTa b H o ra rio s *
- Ta b R e q u is ico e s _ U s u a rio : C lTa b R e q u is ico e s _ U s u a rio * - Ta b R e q u is ico e s : C lTa b R e q u is ico e s *
- Ta b U s u a rio s : C lTa b U s u a rio s * - Ta b As tro s : C lTa b As tro s *
# C lE s ca lo n a d o r(vo id )
# R e q u is ica o _ Te rm in a d a () : in t
# E s ca lo n e _ R e q u is ica o (TS trin g L is t*, s R e g is tro R e q u is ica o , b o o l) : S trin g
- _ Ve rifiq u e _ As tro _ Vis ive l_ N a _ D a ta (TD a te Tim e , TD a te Tim e , d o u b le , d o u b le , TD a te Tim e ) : b o o l - Ve rifiq u e _ As tro _ Vis ive l(s R e g is tro R e q u is ica o ) : b o o l
- _ E xe cu te _ R e q u is ica o () : vo id
- _ In icie _ Te m p o riza ca o _ E s ca lo n a m e n to () : in t
- _ Ag ru p e _ R e q u is ica o (TS trin g L is t*, s R e g is tro R e q u is ica o *, TD a te Tim e , TD a te Tim e ) : in t - _ E xclu i_ R e q u is ica o _ B a n co (in t) : vo id
- _ E s ca lo n e _ R e q u is ica o _ P a ra (TS trin g L is t*, s R e g is tro R e q u is ica o , TD a te Tim e , TD a te Tim e , b o o l) : S trin g - _ Ve rifiq u e _ R e s trico e s (s R e g is tro R e q u is ica o ) : S trin g
ClGe re nc ia dor - Me te o ro lo g is ta : C lMe te o ro lo g is ta *
- E s ca lo n a d o r: C lE s ca lo n a d o r*
- C a rte iro : C lC a rte iro * - Ta b U s u a rio s : C lTa b U s u a rio s * - Ta b As tro s : C lTa b As tro s * - Ta b H o ra rio s : C lTa b H o ra rio s * - Ta b R e q u is ico e s : C lTa b R e q u is ico e s * - Ta b Me te o ro lo g ico s : C lTa b Me te o ro lo g ico s *
- Ta b R e q u is ico e s _ U s u a rio : C lTa b R e q u is ico e s _ U s u a rio * - Ta b In s titu ico e s : C lTa b In s titu ico e s *
- Ta b C a rg o s : C lTa b C a rg o s * - S e rve rS o cke t: TS e rve rS o cke t*
+ C lGe re n cia d o r(vo id ) + _ Fa z_ Te s te s () : vo id
+ _ C ria G ra fico C o n d ico e s (in t) : vo id + _ C ria G ra fico R e q (in t, in t) : vo id
- _ E fe tu a _ L o g in (S trin g , S trin g , s R e g is tro U s u a rio *) : in t
- _ O n S o cke tG e tTh re a d (S ys te m ::TO b je ct*, TS e rve rC lie n tW in S o cke t*, TS e rve rC lie n tTh re a d *& ) : vo id - _ Tra ta Me n s a g e m W e b (S trin g , S trin g *) : vo id
- _ Tra ta Me n s a g e m L o g in (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m Ge tN u m R e q (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m E s q u e ce u S e n h a (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m S u b m e te R e q u is ica o (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m Ge tN o m e As tro s (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m Ge tR e q P e n d e n te s (TS trin g L is t*) : S trin g - _ Tra ta Me n s a g e m S u b m e te C a d a s tro (TS trin g L is t*) : S trin g
Figura 31. Diagrama de classes do Astra Kernel
3.1.4.3. Diagrama de Colaboração
O diagrama de colaboração descreve os métodos invocados, quem invoca e quem é invocado. Na Figura 32, as comunicações foram numeradas para facilitar a explicação das ligações.
Figura 32. Diagrama de colaboração
Abaixo é apresentada a descrição de cada ligação:
• Ligação 1: o Gerenciador recebe os parâmetros da interface Web e invoca o Escalonador para executar todo o processo de escalonamento;
• Ligação 2: o Escalonador invoca o Astrônomo, pois um dos passos do escalonamento é a consistência astronômica dos dados submetidos pelo usuário;
• Ligação 3: o Escalonador invoca o método Temporizador, sendo que este guarda a data e hora da próxima execução. Então caso o sistema tenha recebido uma nova requisição, o Temporizador deve ser atualizado;
• Ligação 4: o Temporizador invoca o Escalonador quando chegar a data e hora da requisição ser atendida;
• Ligação 5: caso o Escalonador tenha sido invocado para executar, ele invoca o Executor, que será responsável pela execução;
• Ligação 6: quando o Executor estiver ativado, ele invoca o Meteorologista para verificar as condições meteorológicas; e
Temporizador
Gerenciador
Escalonador Executor Meteorologista
Astrônomo 4
7
6
3
1
5 2
Servidor Web Interface
Interceptor Web
• Ligação 7: o Gerenciador invoca o Meteorologista quando precisa de informações meteorológica para alimentar o banco de dados ou quando um usuário requisitar informações meteorológicas atualizadas.
3.1.4.4. Diagramas de Seqüência
O diagrama de seqüência expõe o aspecto do modelo que enfatiza o comportamento dos objetos em um sistema em seqüência temporal de mensagem e representação das atividades e operações. Os objetos são desenhados em linhas verticais e a seqüência das linhas é lida de cima para baixo. Pode-se desenvolver um diagrama de seqüência para cada caso de uso existente. Nas próximas figuras serão apresentados os diagramas de seqüência que descrevem os principais casos de uso deste sistema. No apêndice são apresentados os diagramas de seqüência dos demais casos de uso.
No diagrama de seqüência do cadastro do usuário, o usuário acessa a interface, submete o cadastro que vai para o Gerenciador. O cadastro é enviado ao administrador que faz uma avaliação.
Caso esta avaliação seja positiva, o Gerenciador grava o cadastro no banco. Um retorno desta avaliação é enviado ao usuário.
s d C a d a s tr o d o U s u á r io
U s u á rio In te rfa c e G e re n c ia d o r Ad m
P re e n c h e c a m p o s d o c a d a s tro
S u b m e te c a d a s tro
S u b m e te c a d a s tro (d a d o s )
U s u á rio Va lid a C a d a s tro
Figura 33. Diagrama de seqüência do cadastro do usuário
A Figura 34 mostra o diagrama de seqüência da solicitação de uma requisição. O usuário preenche o cadastro e o submete. O Gerenciador envia-o ao Escalonador, que verifica com o Astrônomo se os dados astronômicos inseridos são válidos. Se não forem, ele envia uma mensagem ao usuário informando o problema. O Escalonador ainda verifica se existe choque com outras requisições nesta data e hora. Se for necessário reescalonar uma requisição, ele o faz. O Escalonador também verifica a possibilidade de agrupamento de requisições. Se a requisição for inserida, o Escalonador atualizará o Temporizador e retornará uma mensagem ao usuário.
s d Solic ita Re quis iç ã o
U s u á rio In te rfa ce G e re n cia d o r Es ca lo n a d o r As trô n o m o Te m p o riza d o r
Efe tu a lo g in
[s e n ã o a u te n tica d o ]: "lo g in in vá lid o "
[s e a u te n tica d o ]: P re e n ch e re q u is içã o
[s e re q u is içã o p re e n ch id a ]: S u b m e te re q u is içã o
In clu i R e q u is içã o
In clu i R e q u is içã o
Ve rifica r co n s is tê n cia d o s d a d o s a s tro n ô m ico s
[s e d a d o s in co n s is te n te s ]: "D a d o s in vá lid o s "
[s e d a d o s co n s is te n te s e s e n e ce s s ita r d e re e s ca lo n ]:
R e e s ca lo n a o u tra s re q u is içõ e s
[s e d a d o s a s tro n ô m ico s o k]:
E fe tu a e s ca lo n a m e n to
[s e d a d o s a s tro n ô m ico s o k]:
Atu a liza te m p o riza d o r [s e e s ca lo n a m e n to o k]: "R e q u is içã o a g e n d a d a co m s u ce s s o "
Figura 34. Diagrama de seqüência da requisição
A seguir serão mostrados, em forma de código estruturado, os passos que o sistema segue para a validação e possível inclusão de uma requisição no sistema.
C alcula a p rioridade da re quisição
Se (data e horário de observação foram especificados) então
Efe tua redução a o dia para a data e horá rio esp ecificad os a fim de verificar se o astro estará no m ínim o a 20o do horizonte Se (for perm itida a observação) então
S e (não houver nenhum a requisição para a data e horário especificados) então C adastra a n ova req uisição
S enão
Se (já houver um a requisição agendada para o m esm o astro na data e no horário especificados) então Ag ru pa re quisições
Senão
Se (prioridade da requisição já cadastrada for m aior ou igual que a prioridade da nova requisição) en tão m sg(“não é po ssíve l cad astrar a requisição para esta data e /ou ho rário !!”)
Senão
Increm e nta a p rioridad e da requisiçã o antig a C adastra a no va requisição
Efetua o reage ndam ento da requisição an tiga Senão
m sg(“não é possíve l cada strar a requisição !”) Se (apenas a data de observação foi especificada) então
Se (já houver um a requisição agendada para o m esm o astro na data especificada) então A grupa requisições
Senão
S e (na data especificada houver disponibilidade de horário no período de observação perm itido) então Busca horário disponível, efetua ndo a reduçã o ao dia , até encontra r um horário em que o astro e steja no m ínim o a 20o do horizonte
Se (for perm itida a observação) então C ad astra a n ova requisição Senão
m sg(“não é possível cadastrar a req uisição !”) S enão
Se (houver requisição com m enor prioridade) então
Efe tua redução ao dia para verificar se no horário da requisição d e m enor p riorid ade o astro e stará no m ínim o a 20o d o horizonte
Se (for perm itida a observação) então
Increm e nta a p rioridad e da requisiçã o antig a C adastra a no va requisição
Efetua o reage ndam ento da requisição an tiga Senão
m sg(“não é po ssíve l cad astrar a requisição !”) Senão
m sg(“não é possível cadastrar a req uisição !”) Se (apenas o horário de observação foi especificado) en tão
Se (já houver um a requisição agendada para o m esm o astro no horário especificado) então A grupa requisições
Senão
B usca data disponível, efetuando a redu ção ao dia , até encontra r um a data em que no h orário especifica do o astro este ja n o m ínim o a 20o do horizonte
S e (for perm itida a observação) então C adastra a n ova req uisição S enão
m sg (“n ão é possível cadastrar a requisição!”) Se (nem a data e nem o horário foram especificados) então
Se (já houver um a requisição agendada para o astro desejado) então A grupa requisições
Senão
B usca data e horário disp oníveis, efetuan do a re dução ao dia, até e nco ntrar um a data e um horário em que o a stro esteja n o m ínim o a 20o do horizonte
S e (for perm itida a observação) então C adastra a n ova req uisição S enão
m sg (“n ão é possível cadastrar a requisição”)
Figura 35. Passos que o sistema segue para a validação da requisição
O diagrama de seqüência da execução é ilustrado na Figura 36. O início da execução parte do Temporizador, que aciona o Escalonador na data e hora da execução. O escalonador verifica
qual será a requisição a ser atendida e envia o sinal ao Executor. O Executor verifica no Meteorologista as condições presentes, se estiverem dentro do limite aceitável pelo sistema, ele dá continuidade a execução, caso contrário, reagenda a requisição e envia uma mensagem ao usuário.
Se as condições estiverem de acordo, a requisição é executada e o Escalonador atualizado. O executor envia um sinal ao Sistema Embarcado do observatório que faz a captura da imagem. Esta imagem é enviada ao usuário solicitante.
s d Ex e c uç ã o
Es ca lo n a d o r
(fro m S o licita R e q u isiçã o ) Te m p o riza d o r
(fro m S o licita R e q u isiçã o )
Me te re o lo g is ta Exe cu to r
G e re n cia d o r
U s u á rio S E
[s e te m p o = te m p o d e e xe cu ta r]:
Aco rd a r!
E xe cu te
Ve rifica co n d içõ e s m e te o ro ló g ica s
re to rn a [s e co n ciçõ e s
m e te o ro ló g ica s n ã o p e rm itid a s ]: R e e s ca lo n a
[s e re q u is içã o re a g e n d a d a ]: a le rta d e re e s ca lo n a m e n to
E -m a il co m d a ta d o
re a g e n d a m e n to [s e co n d içõ e s m e te o ro ló g ica s
p e rm itid a s ]: E xe cu ta
Ativa d rive r d o s is te m a e m b a rca d o p a ra in te ra g ir co m a cú p u la e o te le s có p io
R e to rn a im a g e m o b tid a Atu a liza te m p o d e a co rd a r
[s e e xe cu çã o o k]: re to rn a im a g e m
E -m a il co m im a g e m
Figura 36. Diagrama de seqüência da execução da requisição
3.1.4.5. Diagrama de Implantação
O diagrama de implantação descreve a estrutura física do projeto. A Figura 37 ilustra esta estrutura: vários PCs conectados ao servidor, ou seja, usuários acessando o sistema para solicitar requisições de observações, o servidor ligado a uma estação meteorológica (para as verificações) e ligado também ao driver do sistema embarcado que é responsável pela interação com a parte mecânica do observatório (abertura da cúpula, movimentação do telescópio, etc.)
dd Dia gra m a de Im pla nta ç ã o
P C Re m oto P C Re m oto P C Re m oto
P C S e rvidor
Es ta ç ã o M e te orológic a
O bs e rva tório S is te m a Em ba rc a do
... ...
Figura 37. Diagrama de implantação