Primeiros Domínios no Django Python

A proposta deste artigo é um pouco diferente dos anteriores. Neste irei refletir sobre o domínio da aplicação visando descobrir problemas, questões, requisitos, entre outras coisas para o projeto. Como estou sozinho, à principio o brainstorm será individual, mas sinta-se convidado a dar novas ideias ou opinar lá na parte dos comentários. Se sua ideia for muito interessante, obviamente ela será acrescentada ao corpo do artigo.

Como havia esquecido de comentar, e relatei isso no artigo https://medium.com/@felipebastosweb/primeiro-template-com-django-9e75dbe9729a#.dqoip4hf9 eu havia criado algumas classes de Domínio.

Diferente dos outros artigos, em que fiz demonstrações básicas sobre os comandos, neste artigo discutirei com você diversas regras de negócio que embasam as escolhas definidas nas regras de Domínio. Por enquanto vamos ficar com o módulo Escola e suas primeiras classes.

Nessas classes, temos a Escola ao qual o aluno estuda ou já estudou. Minha ideia é que todas as escolas que utilizarem o aplicativo possam ter acesso ao cadastro de outras escolas, mesmo que elas ainda não participem do aplicativo.

Temos também a classe de domínio chamada Segmento que informa todos os segmentos (Creche, Educação Infantil, Ensinos Fundamentais I e II, e Ensino Médio) que o sistema dará suporte.

E como uma escola pode atuar em mais de um segmento, foi criada e entidade EscolaSegmento, para relacionar as escolas e os segmentos em que elas atuam.

Em Seguida temos a Formação de Classes, que é o Processo Administrativo executado antes de iniciar o Período Letivo (para escolas já implantadas), ou que é uma das etapas de planejamento de uma nova escola, caso ela esteja iniciando suas atividades.

Neste trecho, como podemos observar, foi criado uma classe de Período Letivo, para demarcar o período de existência das turmas. Como podem existir períodos com turmas semestrais (Educação de Jovens e Adultos do Fundamental I e II) e anuais (todas as demais), esse Período demarca a data de início e fim das turmas. De acerta forma, a data de início e fim poderiam ser associadas à série ofertada, ao invés de criar uma entidade de domínio só para fazer esse controle. Então, com o decorrer dos trabalhos poderei reavaliar se vale a pena evitar o armazenamento destas datas em todas as séries ou não (o principal motivo foi o custo do banco de dados).

Obs.: Vale salientar que, como se trata de uma prototipação de uma ideia, é essencial fazer benchmarks relacionados ao custo de espaço do banco de dados e o impacto do desempenho das consultas com a retirada da classe do Período Letivo (Esse problema merece novo artigo).

Bom, já o motivo de termos série e turma é muito simples. Por exemplo, se temos a série 7o ano, teremos as turmas 7o ano A, 7o ano B, etc.

Observe também que Série poderia se chamar Curso, para tornar o domínio menos específico. E Segmento poderia se chamar Categoria. Assim, teríamos uma classificação de cursos que abrangeria um domínio mais amplo do que o Escolar tradicional. Revisando: Categoria, Curso e Turma. Onde o Curso é ministrado em uma Escola. Daí, reforça a ideia da retirada do Período Letivo, já que em cada ano os Cursos continuariam tendo data de início e fim. Poderemos pensar nisso mais para frente.

Agora falaremos um pouco da grade do curso, abrangendo as disciplinas de cada Curso (Série). Neste momento será envolvido o também o Professor de determinada Disciplina vinculada a Turma.

Esse trecho é uma parte um pouco complexa, que considero ainda não ter terminado sua análise, mas vai aqui sua versão prévia.

A Entidade de Domínio Área trata das competências do Professor para ministrar determinada disciplina. Observe que o Professor é um Funcionário, cujo domínio está definido no módulo Pessoas. Então, como particularidade de uma escola, eu defino que o funcionário Professor terá algumas características diferentes que complementam seu domínio.

Em relação a Disciplina, inicialmente ela terá um nome, carga horária e estará vinculada a uma Série. Este vinculo é necessário pois genericamente pode ocorrer uma disciplina com mesmo nome, porém com carga-horária diferente, para um curso diferente.

Para finalizar, tem um trecho bem polêmico, que é o Professor da Turma, onde vinculei também a disciplina pois, se antes já era possível ter mais de um professor para as séries do Ensino Fundamental, com as novas regras isto se tornará mais comum, e por consequência, já fica adaptado para as séries posteriores (Ensino Médio, por exemplo). Esta entidade é mais uma entidade incompleta, ao qual precisarei conferir os demais requisitos.

Fico por aqui, espero que tenha gostado desta discussão e aguardo seus comentários na seção abaixo.