From 787a3d3296bf3cd0c384e5e69fc08671987b55c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santanch=C3=A8?= Date: Tue, 8 Jun 2021 09:59:18 -0300 Subject: [PATCH] feat (project/template): partial and final template of the project --- templates/project/README.md | 250 +-------------------------- templates/project/entrega-final.md | 247 ++++++++++++++++++++++++++ templates/project/entrega-parcial.md | 200 +++++++++++++++++++++ 3 files changed, 451 insertions(+), 246 deletions(-) create mode 100644 templates/project/entrega-final.md create mode 100644 templates/project/entrega-parcial.md diff --git a/templates/project/README.md b/templates/project/README.md index e120e5f..878e0b5 100644 --- a/templates/project/README.md +++ b/templates/project/README.md @@ -1,247 +1,5 @@ -# Modelo de Apresentação do Projeto +# Templates das Entregas do Trabalho -# Estrutura de Arquivos e Pastas - -A estrutura aqui apresentada é uma simplificação daquela proposta pelo [Cookiecutter Data Science](https://drivendata.github.io/cookiecutter-data-science/). Também será aceito que o projeto adote a estrutura completa do Cookiecutter Data Science e isso será considerado um diferencial. A estrutura geral é a seguinte e será detalhada a seguir: - -~~~ -├── README.md <- apresentação do projeto -│ -├── data <- dados usados pelo jogo (se houver) -│ -├── notebooks <- Jupyter notebooks ou equivalentes -│ -├── src <- projeto em Java (preferencialmente projeto no Eclipse) -│ │ -│ ├── src <- arquivos-fonte do projeto (.java) -│ │ -│ ├── bin <- arquivos em bytecode (.class) -│ │ -│ └── README.md <- instruções básicas de instalação/execução -│ -└── assets <- mídias usadas no projeto -~~~ - -Na raiz deve haver um arquivo de nome `README.md` contendo a apresentação do projeto, como detalhado na seção seguinte. - -## `data` - -Arquivos de dados usados no projeto, quando isso ocorrer. Por exemplo, se o jogo lê mapas de labirintos que estão em arquivo-texto, coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). - -## `notebooks` - -Testes ou prototipos relacionados ao projeto que tenham sido executados no Jupyter. Por exemplo, coloque aqui uma cópia dos testes feitos nas Exceptions. - -## `src` - -Projeto em Java, preferencialmente em Eclipse, incluindo todos os arquivos de dados e bibliotecas necessários para a sua execução. Dentro dessa pasta sugerimos que você mantenha uma estrutura equivalente ao Eclipse, com uma subpasta `src` onde estarão os fontes e outra subpasta `bin` onde estarão os bytecodes. - - Acrescente na raiz um arquivo `README.md` com as instruções básicas de instalação e execução. - -## `assets` - -Qualquer mídia usada no seu projeto: vídeo, imagens, animações, slides etc. Coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). - -# Modelo para Apresentação do Projeto - -Este é um guia de como produzir documentação em Markdown. Para entender como criar documentos em Markdown no Github, veja o material/vídeo: -[Guia de Uso do Markdown](https://github.com/mc-unicamp/oficinas/tree/master/docs). - -Vide detalhes sobre o Markdown em: [Mastering Markdown](https://guides.github.com/features/mastering-markdown/). - -E mais especificamente sobre tabelas em: [Organizing information with tables](https://help.github.com/en/articles/organizing-information-with-tables) - -Segue abaixo o modelo de como deve ser documentado o projeto e cada componente do projeto. Tudo o que for indicado entre `<...>` indica algo que deve ser substituído pelo indicado. No modelo são colocados exemplos ilustrativos, que serão substituídos pelos do seu projeto. - -Para a construção dos diagramas, devem ser usados modelos disponíveis em: [Diagramas de Classes, Interfaces e Componentes](https://docs.google.com/presentation/d/1ML3WrnDtzh-4wqLmdXN9au1TBIwEqo7TIbMLNOYSMAI/edit?usp=sharing) - -# Modelo para Apresentação do Projeto - -# Projeto `` - -# Descrição Resumida do Projeto/Jogo - -> - -# Equipe -* `` - `` - -# Vídeos do Projeto - -## Vídeo da Prévia -> - -## Vídeo do Jogo -> - -# Slides do Projeto - -## Slides da Prévia -`` - -## Slides da Apresentação Final -`` - -## Relatório de Evolução - -> - -# Destaques de Código - -> - -~~~java -// Recorte do seu código -public void algoInteressante(…) { - … - trechoInteressante = 100; -} -~~~ - -# Destaques de Pattern -`` - -## Diagrama do Pattern -`` - -## Código do Pattern -~~~java -// Recorte do código do pattern seguindo as mesmas diretrizes de outros destaques -public void algoInteressante(…) { - … - trechoInteressante = 100; -} -~~~ - -> - -# Conclusões e Trabalhos Futuros - -> - -# Documentação dos Componentes - -O vídeo a seguir apresenta um detalhamento de um projeto baseado em componentes: - -[![Projeto baseado em Componentes](http://img.youtube.com/vi/1LcSghlin6o/0.jpg)](https://youtu.be/1LcSghlin6o) - -# Diagramas - -## Diagrama Geral do Projeto - -> - -> - -## Diagrama Geral de Componentes - -### Exemplo 1 - -Este é o diagrama compondo componentes para análise: - -![Diagrama Analise](diagrama-componentes-analise.png) - -### Exemplo 2 - -Este é um diagrama inicial do projeto de jogos: - -![Diagrama Jogos](diagrama-componentes-jogos.png) - -### Exemplo 3 - -Este é outro diagrama de um projeto de vendas: - -![Diagrama Vendas](diagrama-componentes-vendas.png) - -Para cada componente será apresentado um documento conforme o modelo a seguir: - -## Componente `` - -> - -![Componente](diagrama-componente.png) - -**Ficha Técnica** -item | detalhamento ------ | ----- -Classe | ``
Exemplo: `pt.c08componentes.s20catalog.s10ds.DataSetComponent` -Autores | `` -Interfaces | `` - -### Interfaces - -Interfaces associadas a esse componente: - -![Diagrama Interfaces](diagrama-interfaces.png) - -Interface agregadora do componente em Java: - -~~~java -public interface IDataSet extends ITableProducer, IDataSetProperties { -} -~~~ - -## Detalhamento das Interfaces - -### Interface `` - -`` - -~~~ - -~~~ - -Método | Objetivo --------| -------- -`` | `` - -## Exemplo: - -### Interface `ITableProducer` - -Interface provida por qualquer fonte de dados que os forneça na forma de uma tabela. - -~~~java -public interface ITableProducer { - String[] requestAttributes(); - String[][] requestInstances(); -} -~~~ - -Método | Objetivo --------| -------- -`requestAttributes` | Retorna um vetor com o nome de todos os atributos (colunas) da tabela. -`requestInstances` | Retorna uma matriz em que cada linha representa uma instância e cada coluna o valor do respectivo atributo (a ordem dos atributos é a mesma daquela fornecida por `requestAttributes`. - -### Interface `IDataSetProperties` - -Define o recurso (usualmente o caminho para um arquivo em disco) que é a fonte de dados. - -~~~java -public interface IDataSetProperties { - public String getDataSource(); - public void setDataSource(String dataSource); -} -~~~ - -Método | Objetivo --------| -------- -`getDataSource` | Retorna o caminho da fonte de dados. -`setDataSource` | Define o caminho da fonte de dados, informado através do parâmetro `dataSource`. - -# Plano de Exceções - -## Diagrama da hierarquia de exceções -`` - -![Hierarquia Exceções](exception-hierarchy.png) - -## Descrição das classes de exceção - -`:` - -Classe | Descrição ------ | ----- -DivisaoInvalida | Engloba todas as exceções de divisões não aceitas. -DivisaoInutil | Indica que a divisão por 1 é inútil. -DivisaoNaoInteira | Indica uma divisão não inteira. +Cada template a seguir corresponde a uma entrega do trabalho: +* [Entrega Parcial](entrega-parcial.md) +* [Entrega Final](entrega-final.md) diff --git a/templates/project/entrega-final.md b/templates/project/entrega-final.md new file mode 100644 index 0000000..e120e5f --- /dev/null +++ b/templates/project/entrega-final.md @@ -0,0 +1,247 @@ +# Modelo de Apresentação do Projeto + +# Estrutura de Arquivos e Pastas + +A estrutura aqui apresentada é uma simplificação daquela proposta pelo [Cookiecutter Data Science](https://drivendata.github.io/cookiecutter-data-science/). Também será aceito que o projeto adote a estrutura completa do Cookiecutter Data Science e isso será considerado um diferencial. A estrutura geral é a seguinte e será detalhada a seguir: + +~~~ +├── README.md <- apresentação do projeto +│ +├── data <- dados usados pelo jogo (se houver) +│ +├── notebooks <- Jupyter notebooks ou equivalentes +│ +├── src <- projeto em Java (preferencialmente projeto no Eclipse) +│ │ +│ ├── src <- arquivos-fonte do projeto (.java) +│ │ +│ ├── bin <- arquivos em bytecode (.class) +│ │ +│ └── README.md <- instruções básicas de instalação/execução +│ +└── assets <- mídias usadas no projeto +~~~ + +Na raiz deve haver um arquivo de nome `README.md` contendo a apresentação do projeto, como detalhado na seção seguinte. + +## `data` + +Arquivos de dados usados no projeto, quando isso ocorrer. Por exemplo, se o jogo lê mapas de labirintos que estão em arquivo-texto, coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). + +## `notebooks` + +Testes ou prototipos relacionados ao projeto que tenham sido executados no Jupyter. Por exemplo, coloque aqui uma cópia dos testes feitos nas Exceptions. + +## `src` + +Projeto em Java, preferencialmente em Eclipse, incluindo todos os arquivos de dados e bibliotecas necessários para a sua execução. Dentro dessa pasta sugerimos que você mantenha uma estrutura equivalente ao Eclipse, com uma subpasta `src` onde estarão os fontes e outra subpasta `bin` onde estarão os bytecodes. + + Acrescente na raiz um arquivo `README.md` com as instruções básicas de instalação e execução. + +## `assets` + +Qualquer mídia usada no seu projeto: vídeo, imagens, animações, slides etc. Coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). + +# Modelo para Apresentação do Projeto + +Este é um guia de como produzir documentação em Markdown. Para entender como criar documentos em Markdown no Github, veja o material/vídeo: +[Guia de Uso do Markdown](https://github.com/mc-unicamp/oficinas/tree/master/docs). + +Vide detalhes sobre o Markdown em: [Mastering Markdown](https://guides.github.com/features/mastering-markdown/). + +E mais especificamente sobre tabelas em: [Organizing information with tables](https://help.github.com/en/articles/organizing-information-with-tables) + +Segue abaixo o modelo de como deve ser documentado o projeto e cada componente do projeto. Tudo o que for indicado entre `<...>` indica algo que deve ser substituído pelo indicado. No modelo são colocados exemplos ilustrativos, que serão substituídos pelos do seu projeto. + +Para a construção dos diagramas, devem ser usados modelos disponíveis em: [Diagramas de Classes, Interfaces e Componentes](https://docs.google.com/presentation/d/1ML3WrnDtzh-4wqLmdXN9au1TBIwEqo7TIbMLNOYSMAI/edit?usp=sharing) + +# Modelo para Apresentação do Projeto + +# Projeto `` + +# Descrição Resumida do Projeto/Jogo + +> + +# Equipe +* `` - `` + +# Vídeos do Projeto + +## Vídeo da Prévia +> + +## Vídeo do Jogo +> + +# Slides do Projeto + +## Slides da Prévia +`` + +## Slides da Apresentação Final +`` + +## Relatório de Evolução + +> + +# Destaques de Código + +> + +~~~java +// Recorte do seu código +public void algoInteressante(…) { + … + trechoInteressante = 100; +} +~~~ + +# Destaques de Pattern +`` + +## Diagrama do Pattern +`` + +## Código do Pattern +~~~java +// Recorte do código do pattern seguindo as mesmas diretrizes de outros destaques +public void algoInteressante(…) { + … + trechoInteressante = 100; +} +~~~ + +> + +# Conclusões e Trabalhos Futuros + +> + +# Documentação dos Componentes + +O vídeo a seguir apresenta um detalhamento de um projeto baseado em componentes: + +[![Projeto baseado em Componentes](http://img.youtube.com/vi/1LcSghlin6o/0.jpg)](https://youtu.be/1LcSghlin6o) + +# Diagramas + +## Diagrama Geral do Projeto + +> + +> + +## Diagrama Geral de Componentes + +### Exemplo 1 + +Este é o diagrama compondo componentes para análise: + +![Diagrama Analise](diagrama-componentes-analise.png) + +### Exemplo 2 + +Este é um diagrama inicial do projeto de jogos: + +![Diagrama Jogos](diagrama-componentes-jogos.png) + +### Exemplo 3 + +Este é outro diagrama de um projeto de vendas: + +![Diagrama Vendas](diagrama-componentes-vendas.png) + +Para cada componente será apresentado um documento conforme o modelo a seguir: + +## Componente `` + +> + +![Componente](diagrama-componente.png) + +**Ficha Técnica** +item | detalhamento +----- | ----- +Classe | ``
Exemplo: `pt.c08componentes.s20catalog.s10ds.DataSetComponent` +Autores | `` +Interfaces | `` + +### Interfaces + +Interfaces associadas a esse componente: + +![Diagrama Interfaces](diagrama-interfaces.png) + +Interface agregadora do componente em Java: + +~~~java +public interface IDataSet extends ITableProducer, IDataSetProperties { +} +~~~ + +## Detalhamento das Interfaces + +### Interface `` + +`` + +~~~ + +~~~ + +Método | Objetivo +-------| -------- +`` | `` + +## Exemplo: + +### Interface `ITableProducer` + +Interface provida por qualquer fonte de dados que os forneça na forma de uma tabela. + +~~~java +public interface ITableProducer { + String[] requestAttributes(); + String[][] requestInstances(); +} +~~~ + +Método | Objetivo +-------| -------- +`requestAttributes` | Retorna um vetor com o nome de todos os atributos (colunas) da tabela. +`requestInstances` | Retorna uma matriz em que cada linha representa uma instância e cada coluna o valor do respectivo atributo (a ordem dos atributos é a mesma daquela fornecida por `requestAttributes`. + +### Interface `IDataSetProperties` + +Define o recurso (usualmente o caminho para um arquivo em disco) que é a fonte de dados. + +~~~java +public interface IDataSetProperties { + public String getDataSource(); + public void setDataSource(String dataSource); +} +~~~ + +Método | Objetivo +-------| -------- +`getDataSource` | Retorna o caminho da fonte de dados. +`setDataSource` | Define o caminho da fonte de dados, informado através do parâmetro `dataSource`. + +# Plano de Exceções + +## Diagrama da hierarquia de exceções +`` + +![Hierarquia Exceções](exception-hierarchy.png) + +## Descrição das classes de exceção + +`:` + +Classe | Descrição +----- | ----- +DivisaoInvalida | Engloba todas as exceções de divisões não aceitas. +DivisaoInutil | Indica que a divisão por 1 é inútil. +DivisaoNaoInteira | Indica uma divisão não inteira. diff --git a/templates/project/entrega-parcial.md b/templates/project/entrega-parcial.md new file mode 100644 index 0000000..9d3bc7b --- /dev/null +++ b/templates/project/entrega-parcial.md @@ -0,0 +1,200 @@ +# Modelo de Apresentação do Projeto + +# Estrutura de Arquivos e Pastas + +A estrutura aqui apresentada é uma simplificação daquela proposta pelo [Cookiecutter Data Science](https://drivendata.github.io/cookiecutter-data-science/). Também será aceito que o projeto adote a estrutura completa do Cookiecutter Data Science e isso será considerado um diferencial. A estrutura geral é a seguinte e será detalhada a seguir: + +~~~ +├── README.md <- apresentação do projeto +│ +├── data <- dados usados pelo jogo (se houver) +│ +├── notebooks <- Jupyter notebooks ou equivalentes +│ +├── src <- projeto em Java (preferencialmente projeto no Eclipse) +│ │ +│ ├── src <- arquivos-fonte do projeto (.java) +│ │ +│ ├── bin <- arquivos em bytecode (.class) +│ │ +│ └── README.md <- instruções básicas de instalação/execução +│ +└── assets <- mídias usadas no projeto +~~~ + +Na raiz deve haver um arquivo de nome `README.md` contendo a apresentação do projeto, como detalhado na seção seguinte. + +## `data` + +Arquivos de dados usados no projeto, quando isso ocorrer. Por exemplo, se o jogo lê mapas de labirintos que estão em arquivo-texto, coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). + +## `notebooks` + +Testes ou prototipos relacionados ao projeto que tenham sido executados no Jupyter. Por exemplo, coloque aqui uma cópia dos testes feitos nas Exceptions. + +## `src` + +Projeto em Java, preferencialmente em Eclipse, incluindo todos os arquivos de dados e bibliotecas necessários para a sua execução. Dentro dessa pasta sugerimos que você mantenha uma estrutura equivalente ao Eclipse, com uma subpasta `src` onde estarão os fontes e outra subpasta `bin` onde estarão os bytecodes. + + Acrescente na raiz um arquivo `README.md` com as instruções básicas de instalação e execução. + +## `assets` + +Qualquer mídia usada no seu projeto: vídeo, imagens, animações, slides etc. Coloque os arquivos aqui (mesmo que você mantenha uma cópia no diretório do código). + +# Modelo para Apresentação do Projeto + +Este é um guia de como produzir documentação em Markdown. Para entender como criar documentos em Markdown no Github, veja o material/vídeo: +[Guia de Uso do Markdown](https://github.com/mc-unicamp/oficinas/tree/master/docs). + +Vide detalhes sobre o Markdown em: [Mastering Markdown](https://guides.github.com/features/mastering-markdown/). + +E mais especificamente sobre tabelas em: [Organizing information with tables](https://help.github.com/en/articles/organizing-information-with-tables) + +Segue abaixo o modelo de como deve ser documentado o projeto e cada componente do projeto. Tudo o que for indicado entre `<...>` indica algo que deve ser substituído pelo indicado. No modelo são colocados exemplos ilustrativos, que serão substituídos pelos do seu projeto. + +Para a construção dos diagramas, devem ser usados modelos disponíveis em: [Diagramas de Classes, Interfaces e Componentes](https://docs.google.com/presentation/d/1ML3WrnDtzh-4wqLmdXN9au1TBIwEqo7TIbMLNOYSMAI/edit?usp=sharing) + +# Modelo para Apresentação do Projeto + +# Projeto `` + +# Descrição Resumida do Projeto/Jogo + +> + +# Equipe +* `` - `` + +# Vídeos do Projeto + +## Vídeo da Prévia +> + +# Slides do Projeto + +## Slides da Prévia +`` + +# Documentação dos Componentes + +# Diagramas + +## Diagrama Geral do Projeto + +> + +> + +## Diagrama Geral de Componentes + +### Exemplo 1 + +Este é o diagrama compondo componentes para análise: + +![Diagrama Analise](diagrama-componentes-analise.png) + +### Exemplo 2 + +Este é um diagrama inicial do projeto de jogos: + +![Diagrama Jogos](diagrama-componentes-jogos.png) + +### Exemplo 3 + +Este é outro diagrama de um projeto de vendas: + +![Diagrama Vendas](diagrama-componentes-vendas.png) + +Para cada componente será apresentado um documento conforme o modelo a seguir: + +## Componente `` + +> + +![Componente](diagrama-componente.png) + +**Ficha Técnica** +item | detalhamento +----- | ----- +Classe | ``
Exemplo: `pt.c08componentes.s20catalog.s10ds.DataSetComponent` +Autores | `` +Interfaces | `` + +### Interfaces + +Interfaces associadas a esse componente: + +![Diagrama Interfaces](diagrama-interfaces.png) + +Interface agregadora do componente em Java: + +~~~java +public interface IDataSet extends ITableProducer, IDataSetProperties { +} +~~~ + +## Detalhamento das Interfaces + +### Interface `` + +`` + +~~~ + +~~~ + +Método | Objetivo +-------| -------- +`` | `` + +## Exemplo: + +### Interface `ITableProducer` + +Interface provida por qualquer fonte de dados que os forneça na forma de uma tabela. + +~~~java +public interface ITableProducer { + String[] requestAttributes(); + String[][] requestInstances(); +} +~~~ + +Método | Objetivo +-------| -------- +`requestAttributes` | Retorna um vetor com o nome de todos os atributos (colunas) da tabela. +`requestInstances` | Retorna uma matriz em que cada linha representa uma instância e cada coluna o valor do respectivo atributo (a ordem dos atributos é a mesma daquela fornecida por `requestAttributes`. + +### Interface `IDataSetProperties` + +Define o recurso (usualmente o caminho para um arquivo em disco) que é a fonte de dados. + +~~~java +public interface IDataSetProperties { + public String getDataSource(); + public void setDataSource(String dataSource); +} +~~~ + +Método | Objetivo +-------| -------- +`getDataSource` | Retorna o caminho da fonte de dados. +`setDataSource` | Define o caminho da fonte de dados, informado através do parâmetro `dataSource`. + +# Plano de Exceções + +## Diagrama da hierarquia de exceções +`` + +![Hierarquia Exceções](exception-hierarchy.png) + +## Descrição das classes de exceção + +`:` + +Classe | Descrição +----- | ----- +DivisaoInvalida | Engloba todas as exceções de divisões não aceitas. +DivisaoInutil | Indica que a divisão por 1 é inútil. +DivisaoNaoInteira | Indica uma divisão não inteira.