Escolar Documentos
Profissional Documentos
Cultura Documentos
Estudo de caso
Utilizamos a técnica de análise de casos de uso, estudamos a descrição de cada passo do fluxo
principal do caso de uso em que o sistema realiza alguma ação. Cada um desses passos implica classes e
responsabilidades dentro do sistema. Durante a identificação de classes a partir do texto de um caso de uso,
os fluxos alternativos e de exceção devem também ser analisados.
Descrevemos a aplicação desta e de outras técnicas para identificar classes de entidade nos três
seguintes casos de uso do SCA:
● Fornecer Grade de Disponibilidades,
● Realizar Inscrição,
● Lançar Avaliações.
“Sistema apresenta a lista de disciplinas disponíveis (conforme RN04), e a lista de dias da semana e
de horários do semestre letivo”.
Esse passo leva o modelador a concluir que é necessária uma classe para representar disciplinas.
Além disso, é possível concluir também que o sistema deve ter conhecimento acerca dos horários em que
pode haver alocação de uma turma de alguma disciplina. Como consequência, é criada uma classe Disciplina
e outra denominada ItemHorario .
Outra conclusão é que esse mesmo sistema também deve ter informações acerca de que disciplinas
um professor está apto a lecionar, o que resulta na criação de uma associação entre Professor e Disciplina
. A semântica dessa associação corresponde às habilitações de um professor, i.e., quais disciplinas da grade
curricular ele está apto a lecionar. Repare também que essa associação é uma forma de refletir no modelo a
regra de negócio cujo identificador é RN04.
Quando passamos para analisar o terceiro passo do caso de uso, encontramos:
“Professor informa (1) cada disciplina que deseja lecionar e (2) cada disponibilidade para o próximo semestre
letivo”.
Uma interpretação razoável é que o sistema deve registrar duas listas de informações associadas ao
professor.
1. A primeira lista corresponde às disciplinas que o professor selecionou.
2. A segunda lista corresponde aos dias da semana (e respectivos horários de início e término) em que
este mesmo professor está disponível para ser alocado em turmas de disciplinas componentes da
primeira lista.
Primeiramente é possível concluir que uma turma é composta por um professor e uma disciplina:
O modelador então decide unificar essas duas listas como a definição de um novo conceito
denominado grade de disponibilidades. Como resultado, a classe GradeDisponibilidades é criada, assim
como são criadas duas novas associações (para representar as duas listas de informações previamente
mencionadas), uma com Disciplina e outra com ItemHorario . Finalmente, uma terceira associação é criada,
entre Professor e GradeDisponibilidades.
Realizar Inscrição
Fluxo Principal
1. Aluno solicita a realização de inscrições.
2. Sistema apresenta as disciplinas (e respectivos códigos das turmas) em que o aluno pode se inscrever
(conforme a RN03).
3. Aluno escolhe a lista de turmas que deseja cursar no próximo semestre letivo e as submete para inscrição.
4. Para cada turma, o sistema informa o professor, os horários e os respectivos locais das aulas.
5. Aluno confirma as inscrições.
6. Sistema registra as inscrições do aluno, envia os dados sobre as mesmas para o Sistema de Faturamento,
e o caso de uso termina.
RN03 → Um aluno não pode se inscrever em uma turma de uma disciplina para a qual não possua Descrição
os pré-requisitos necessários. Além disso, um aluno não pode se inscrever em uma turma de alguma
disciplina que já tenha cursado com aprovação.
Os passos 1, 2 e 3 deste caso de uso sugerem que deve haver alguma forma de o sistema registrar
cada solicitação de matrícula realizada por um aluno. Como resultado, a classe Turma foi criada. Essa classe
é a contrapartida temporal de uma disciplina: toda vez que uma disciplina deve ser ofertada em um semestre
letivo, uma nova turma é criada.
Foram também criadas a classe Inscrição e as associações desta com as classes Aluno e Turma .
Repare ainda que o passo 2 faz menção à regra de negócio RN03. Essa restrição é contemplada no modelo
por meio da adição de uma autoassociação na classe Disciplina .
Ainda sobre o passo 3, a análise de sua descrição nos permite concluir que é responsabilidade do
sistema saber cada turma (e respectiva disciplina) que pode ser apresentada a um determinado aluno para
inscrição. Avaliar RN03. Criamos a classe HistoricoEscolar para assumir a responsabilidade de gerar a lista
de disciplinas em cujas turmas um aluno pode se inscrever. Essa classe está associada a Aluno .
Uma vez de posse dessa lista, o próximo passo é determinar que turmas (no período letivo corrente)
estão abertas para cada uma dessas disciplinas. Visto que essa responsabilidade envolve a manipulação de
várias turmas, decidimos atribuí-la a uma nova classe GradeHorarios e criamos uma associação dessa
última com Turma.
Portanto, repare que a obtenção da lista de turmas possíveis para um aluno é um procedimento de
dois passos. Primeiro deve-se definir a lista de disciplinas e, depois disso, definir uma lista de turmas. Para
orquestrar a realização desses dois passos, decidimos criar um Serviço de Domínio denominado
TurmasPossiveisServico. Neste ponto, está claro que um objeto dessa classe irá interagir com objeto da
classe HistoricoEscolar e com outro da classe GradeHorarios, mas não de que forma ocorrerá essa
interação. Portanto, definição completa dessa parte do modelo será postergada para quando iniciar a
atividade de modelagem de interações
O passo 4 desse caso de uso sugere que o sistema deve manter informação acerca do professor,
assim dos horários e respectivos locais de aula de cada turma. Por conta disso, as classes Aula e Local são
adicionadas ao modelo e associações são criadas para contemplar essa necessidade de informação. A
classe ItemHorario , que surgiu durante a análise do caso de uso Fornecer Grade de Disponibilidades , é
reusada aqui com o propósito de registrar, para cada aula, os horários em que ela ocorre.
Por meio da análise do fluxo alternativo Inclusão em lista de espera, identificamos a necessidade da
classe ListaEspera, responsável por manter uma fila de alunos que estão esperando pela abertura de mais
uma turma para uma determinada disciplina.
A Figura a seguir também apresenta a classe ListaEspera, associada a duas classes que já haviam
sido identificadas, Aluno e Disciplina . Dessa forma, uma lista de espera é criada para registrar a espera de
alunos pela abertura de uma turma para a disciplina associada. Ao mesmo tempo, uma lista de espera está
associada aos alunos que aguardam a abertura dessa turma.
Um detalhe relevante nessa modelagem é o uso da restrição {ordered} na associação entre
ListaEspera e Aluno , no extremo próximo a esta última classe. Essa restrição, predefinida na UML, indica que
a ordem dos objetos na coleção de alunos associada a uma lista de espera deve ser mantida pelo sistema.
Cada caso de uso tem, a princípio, um objeto de fronteira para cada ator e um objeto controlador. Com
base nessa heurística, as primeiras classes identificadas para o cenário principal desse caso de uso foram
RealizarInscriçãoControlador, RealizarInscriçãoFormulário e SistemaFaturamento. Essas duas últimas
são classes de fronteira do sistema que realizam a interface com os atores Aluno e Sistema de Faturamento,
respectivamente. Note que essas classes de fronteira têm naturezas completamente diferentes. Uma
corresponde possivelmente a uma interface gráfica com o usuário. A outra corresponde à implementação de
algum protocolo de comunicação. Entretanto, não devemos nos ater a esses detalhes durante a análise, pois
eles precisam ser abordados apenas na etapa de projeto do sistema. O importante neste momento da
modelagem é apenas identificar que tais classes são necessárias para prover as funcionalidades (requisitos
funcionais) do sistema.
Disciplina
1. Conhecer seus pré-requisitos;
2. Conhecer seu código, nome e quantidade de créditos.
ListaEspera
1. Conhecer a disciplina para a qual foi criada;
2. Manter os alunos em espera pela abertura de vagas.
Aluno
1. Conhecer seu número de registro e nome;
2. Conhecer as disciplinas que já cursou.
HistoricoEscolar
1. Permitir o lançamento de trancamentos, aprovações e reprovações;
2. Conhecer quais são as disciplinas da grade curricular que ainda não foram cursadas pelo aluno;
3. Conhecer quais são as disciplinas da grade curricular que já foram cursadas e as que não foram
pelo aluno.
Turma
1. Conhecer o seu código e situação;
2. Conhecer a disciplina para a qual é ofertada;
3. Inscrever um aluno;
4. Conhecer o semestre letivo em que acontece;
5. Conhecer dias, horários e salas de aula em que acontece;
6. Conhecer sua capacidade, por exemplo, sua quantidade máxima de alunos;
7. Conhecer seu professor.