====== Organização do repositório de código e dos arquivos do sistema ====== ===== Propósito ===== Estabelecer uma estrutura padrão para a organização dos arquivos do projeto. ===== Descrição ===== ==== Estrutura geral do repositório ==== O repositório do sistema deve ser nomeado de acordo com o nome interno do produto (School) e dividido em uma série de pastas principais, conforme especificado a seguir: * **bin**: Diretório que deve armazenar o(s) arquivo(s) binário(s) resultante(s) do processo de compilação do software, as bibliotecas de vinculo dinâmico (Dlls), os pacotes usados em tempo de execução(BPL) e os arquivos de configuração necessários para a execução do software; * **dat**: pasta que deve armazenar todos os arquivos de dados utilizados pelo software (Bancos de dados, scripts de atualização de banco, ...); * **img**: pasta que deve armazenar todos os arquivos de imagem utilizados pelo software (ícones, logotipos, ...); * **lib**: pasta que deve armazenar todos os componentes adicionais necessários para o funcionamento do software (descritores de pacotes (DCP), units adicionais usadas no software (.pas), ...); * **src**: pasta que deve armazenar o código-fonte do software e de todos os componentes ou softwares auxiliares, desenvolvidos pela equipe; * **templates**: pasta que deve armazenar os modelos utilizados no software (modelos de relatório, modelos de arquivos de exportação, ...); * **temp**: pasta que deve armazenar os arquivos temporários gerados durante o processo de compilação do software ou arquivos que estão sendo usados para o desenvolvimento mas serão removidos do projeto ao final do desenvolvimento; * **tests**: pasta que deve armazenar a implementação dos testes unitários do software ou outros arquivos relativos às atividades de teste e verificação do software; * **deploy**: pasta que deve armazenar os artefatos referentes à implantação do software. ==== Organização dos arquivos binários ==== Os arquivos binários, bem como arquivos de outros formatos que devem ser distribuídos junto com o sistema, devem ser armazenados na pasta **bin** do repositório. Para organizar melhor esses arquivos, a seguinte estrutura de pastas deve ser adotada: * **bin (pasta principal)**: arquivos executáveis (.exe), bibliotecas (.dll), pacotes de componentes (*.bpl), arquivos de configuração (*.ini) e arquivo de notas de versão (*.htm); * **imagens**: imagens que serão utilizadas pelo software em tempo de execução, independente se seu formato; * **css**: folhas de estilo (*.css) utilizadas na visualização e impressão de relatórios e documentos; * **schemas**: esquemas xml (*.xsd) utilizados para a validação e manipulação de arquivos xml; * **censo**: arquivos de layout (*.xml) utilizados para a geração dos arquivos do censo; * **planilhas**: templates (*.ods) utilizados para a exportação de documentos em formato ods; * **temp**: arquivos temporários gerados durante o uso do sistema. O sistema deve ser programado para localizar os arquivos necessários dentro dessa estrutura. Portanto, a mesma organização dos arquivos deve ser replicada durante a implantação do sistema (com exceção da pasta bin, que deve ser renomeada de acordo com as convenções de instalação).