| (38 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
* Nome do Projeto: Kodificando | * Nome do Projeto: Kodificando | ||
= Componentes = | |||
<br> | |||
* Guilherme | |||
<br> | |||
= 5W2H = | |||
<br> | |||
== What == | == What == | ||
| Linha 14: | Linha 23: | ||
# Quais os conhecimentos básicos que devemos ter para se implementar este projeto? | # Quais os conhecimentos básicos que devemos ter para se implementar este projeto? | ||
## Conhecimento sobre o assunto a ser tratado (Conceitos e termos Básicos de Computação). | ## Conhecimento sobre o assunto a ser tratado (Conceitos e termos Básicos de Computação). | ||
## | ## Conhecimentos de Javascript e PHP/Python/Ruby | ||
## Noções de HTML e CSS | ## Noções de HTML e CSS. | ||
<br> | <br> | ||
# Quais soluções similares existem no mercado (Benchmarking)? | # Quais soluções similares existem no mercado (Benchmarking)? | ||
| Linha 22: | Linha 31: | ||
** Code.org: http://code.org/ | ** Code.org: http://code.org/ | ||
** Codeacademy: http://www.codecademy.com | ** Codeacademy: http://www.codecademy.com | ||
** Um similar brasileiro: http://codeclubbrasil.org/ | |||
** Páginas que podem vir a interessar: | ** Páginas que podem vir a interessar: | ||
** http://tryruby.org/levels/1/challenges/1 (Ruby Básico) | ** http://tryruby.org/levels/1/challenges/1 (Ruby Básico) | ||
** https://www.khanacademy.org/cs | ** https://www.khanacademy.org/cs (Fundamentos de Programação) | ||
** http://codehs.com/ | ** http://codehs.com/ (Abordagem mais simples) | ||
** http://scratch.mit.edu/ | ** http://scratch.mit.edu/ (Abordagem mais simples) | ||
** https://www.coursera.org/ | ** https://www.coursera.org/ (Site com cursos de várias universidades renomadas) | ||
** Uma "alternativa" Brasileira: http://www.aprenderprogramar.com.br/ | ** Uma "alternativa" Brasileira: http://www.aprenderprogramar.com.br/ | ||
** Sobre hacking e segurança: https://www.hackthissite.org/ | ** Sobre hacking e segurança: https://www.hackthissite.org/ | ||
| Linha 36: | Linha 46: | ||
== Why == | == Why == | ||
# Porque é interessante desenvolver este projeto? | |||
## É interessante porque, acima de tudo, esses conhecimentos não são tão difundidos, e atualmente, para os obter é necessário um estudo mais especializado sobre o assunto. Enquanto isso, a necessidade cresce cada vez mais, e o número de profissionais é cada vez menor comparando com a demanda. | |||
##Algumas citações: | |||
### "Todos nesse país deviam aprender como programar um computador porque isso te ensina a pensar" - Steve Jobs | |||
### "Aprender a escrever programas faz sua mente crescer e te ajuda a pensar melhor, cria uma maneira de pensar que eu acredito que ajude em todas as áreas" - Bill Gates | |||
# Porque deve usar a tecnologia escolhida? | # Porque deve usar a tecnologia escolhida? | ||
## Deve-se utilizar HTML e CSS para poder marcar melhor os componentes na página e uma linguagem de programação para que o aplicativo interaja de fato com o usuário, as principais opções são: Python Django, uma plataforma muito utilizada para aplicativos WEB que utiliza uma linguagem que vem crescendo cada vez mais - Ruby on Rails, outra plataforma também amplamente utilizada, inclusive por grandes aplicativos (Exemplo: Twitter), feita em uma linguagem um pouco mais antiga e um pouco mais consolidada no mercado. As duas plataformas são fundadas em conceitos e paradigmas que são importantes e consolidados, como: | |||
### "Active Record Pattern" - que consiste em armazenar os dados em bancos de dados | |||
### CVC ("Convention over configuration" - Convenção sobre configuração) - que visa ganhar simplicidade sem perder flexibilidade | |||
### DRY ("Don't repeat yourself" - não se repita) - visa a não repetição das linhas de código | |||
### MVC ("Model-View-Controller" - modelo-visão-controlador) - tem o intuito de separar a informação da interface com a qual o usuário interage | |||
<br> | <br> | ||
| Linha 44: | Linha 64: | ||
# Quem pode se beneficiar deste projeto? | # Quem pode se beneficiar deste projeto? | ||
* Todos que tiverem interesse sobre o assunto e em aprender. | |||
<br> | |||
# Quem poderá operar o sistema? | # Quem poderá operar o sistema? | ||
* Qualquer pessoa com um dispositivo com acesso à internet | |||
<br> | |||
# Quem deverá participar do desenvolvimento do sistema? | # Quem deverá participar do desenvolvimento do sistema? | ||
* Pessoas que compartilham da ideia inicial do projeto e com capacidade e disposição para construir tal ambiente | |||
<br> | <br> | ||
== Where == | == Where == | ||
# Onde os dados serão inseridos? | # Onde os dados serão inseridos? | ||
* Por ser um website, os dados serão inseridos no servidor através de um navegador. | |||
<br> | |||
# Onde os dados serão externalizados, publicados? | # Onde os dados serão externalizados, publicados? | ||
* Os dados serão publicados e mostrados em um navegador | |||
<br> | |||
# Onde esta aplicação poderá ser usada? | # Onde esta aplicação poderá ser usada? | ||
# Onde os dados serão armazenadas? | * Esta aplicação poderá ser acessada em qualquer dispositivo com uma conexão à internet. | ||
# Onde o software deverá ser hospedado? | <br> | ||
# Onde os dados serão armazenadas? | |||
* Os dados serão armazenados em um Banco de Dados SQL. | |||
<br> | |||
# Onde o software deverá ser hospedado? | |||
* Em uma máquina dedicada e alugada, possivelmente também fazendo uso de Computação em Nuvem para alguns recursos. | |||
<br> | <br> | ||
| Linha 60: | Linha 94: | ||
# Em quanto tempo pretende desenvolver o sistema? | # Em quanto tempo pretende desenvolver o sistema? | ||
## Em cerca de 3 meses acredita-se que seja possivel obter um protótipo simples, mas o desenvolvimento do sistema seria continuado em quanto ele funcionasse | |||
# Quais serão as fases e em quanto tempo cada uma? | # Quais serão as fases e em quanto tempo cada uma? | ||
## Primeiro deve-se estudar e escolher os temas a ser tratados e utilizados (Consideramos 2 meses) | |||
## Em seguida pode-se fazer o protótipo (Cerca de 1 mês) | |||
<br> | <br> | ||
| Linha 66: | Linha 103: | ||
# Como será dividido o desenvolvimento do sistema? | # Como será dividido o desenvolvimento do sistema? | ||
** O Sistema será desenvolvido utilizando conceitos básicos de HTML e CSS, utilizando jQuery (Javascript) e fazendo o uso de no mínimo uma das seguintes frameworks: CakePHP (PHP), Django (Python) e Ruby on Rails (Ruby) | |||
# Como será feita a entrada de dados? | # Como será feita a entrada de dados? | ||
** A entrada de dados no sistema será feita através de um navegador de internet | |||
# Como será feita a saída de dados? | # Como será feita a saída de dados? | ||
** A saída de dados no sistema será feita através de um navegador de internet | |||
# Descreva a 1a. funcionalidade? | # Descreva a 1a. funcionalidade? | ||
** Sistema de Cadastro/Login | |||
# Descreva a 2a. funcionalidade? | # Descreva a 2a. funcionalidade? | ||
** Fórum de Discussões (criar novo tópico, responder, etc...) | |||
# Descreva a | # Descreva a 3a. funcionalidade? | ||
** Acesso ao banco de artigos, notícias, aulas, perguntas/respostas, etc... | |||
# Descreva a 4a funcionalidade? | |||
** Salvar junto à pagina do usuário tudo que já foi comprido pelo mesmo | |||
# Descreva a 5a funcionalidade? | |||
** Acesso à ambiente dinâmico de programação (junto com alguns tutoriais) | |||
<br> | <br> | ||
| Linha 77: | Linha 123: | ||
# Quanto deverá custar o sistema? | # Quanto deverá custar o sistema? | ||
## O Custo inicial não deve ser uma quantia muito alta, seria o custo de uma máquina dedicada e de um domínio e hospedagem de internet. | |||
# Quantas pessoas deverão ser usadas? | # Quantas pessoas deverão ser usadas? | ||
## De início não são necessárias muitas pessoas, mas como o projeto pode vir a tratar sobre vários assuntos específicos, seria interessante futuramente terceirizar essas áreas para seus respectivos profissionais. De maneira geral: Em torno de 2 programadores Front-End e 2 Back-End, sendo 1 para tratamento do Banco de Dados e 2 "Idealizadores" (responsaveis pelos conteúdos e moderação/gestão do aplicativo) | |||
# Qual deverá ser o preço de aquisição do seu software para o usuário final? | # Qual deverá ser o preço de aquisição do seu software para o usuário final? | ||
## Inicialmente, deverá ser gratuito para o usuário, será possivel talvez cobrar uma pequena taxa para serviços mais especializados | |||
<br> | <br> | ||
= Diagrama de Fluxo de Dados = | |||
[[Arquivo:kodificando.png]] | |||
= Criticas = | |||
* Definir com mais clareza quais as abrangencias da aplicação | |||
EX: esta aplicação ao final será composta de um forum de discussão, ambiente de programação e 'banco de códigos', etc.... | |||
Professor: | |||
* A aplicação será composta dos seguintes módulos: | |||
** Cadastro de usuário: Opções de cadastrar, acessar e recuperar senha. O cadastro deverá manter os dados da pessoa e também alguns itens adicionais como Área de Estudo, Formação, Escola, Cidade, Curso, Preferências, Horário de estudo. | |||
** Forum de Discussão: O Forum deverá ser aberto com as últimas postagens. Além disso, deverá ter ainda as opções de Pesquisar conteúdo, Postar mensagem, Acessar Twitter, Linkedin e Facebook | |||
** Ambiente de programação: Na página inicial mostrará as últimas informações para os desenvolvedores. Opções: Pesquisar tutorial, Baixar tutorial, Acessar ambiente de programação, Mostrar códigos (arquivos em cpp, por exemplo) e Apagar arquivos. | |||
** Chat: Disponibilizar ambiente de interação com outros estudantes (online e offline). Opções: Escolher destinatário (um, grupo ou todos), Iniciar conversa, Finalizar conversa, Upload de arquivos, Download de Arquivos. | |||
<br> | |||
* Qual das "partes" da aplicação será desenvolvida primeiro? | |||
Professor: | |||
* Cronograma: | |||
** 1a. parte: Cadastro de usuário | |||
** 2a. parte: Forum de Discussão | |||
** 3a. parte: Chat | |||
** 4a. parte: Ambiente de programação | |||
<br> | |||
* Quais os especialistas necessários? | |||
Ex: um para banco de dados, 2 para design, um para engenharia de software.. | |||
Professor: | |||
* Especialistas: | |||
** Arquiteto de software: 1 | |||
** Desenvolvedores: 2 | |||
** DBA: 1 | |||
** Designer: 1 | |||
** Tester: 1 | |||
** Especialista em Educação: 1 | |||
** Especialista em Marketing: 1 | |||
** Advogado: 1 | |||
= Diagrama de Classes = | |||
[[Arquivo:diagramaclasses.png]] | |||
= Diagrama de Casos de Uso = | |||
== Diagrama == | |||
<br>[[Arquivo:k_casodeuso.png]]<br> | |||
[[Arquivo:k_casodeuso.pdf]]<br> | |||
== Detalhamento == | |||
<br>'''PDF:''' [[Arquivo:k_detalhamento.pdf]]<br> | |||
'''Requisitos Não-Funcionais do Aplicativo''': | |||
* Resposta em, no máximo, 30 segundos em 90% dos casos. | |||
* Segurança na troca de informações e senhas. | |||
* Acessível de todas as plataformas. | |||
* Atendendo todas as leis de Direitos Autorais. | |||
* Aplicativo faz comunicação com base de dados SQLite. | |||
* Implementado em Python.<br><br> | |||
'''Nome do Caso de Uso:''' Fazer Cadastro.<br> | |||
'''Ator:''' Usuário.<br> | |||
'''Pré-Condição:''' Desejo ou necessidade de ter acesso à todo conteudo da página.<br> | |||
'''Pós-Condição:''' Conta Criada.<br> | |||
'''Sequência de Eventos:''' | |||
* Usuário clica para se cadastrar | |||
* Sistema Requisita as informações necessárias. | |||
* Usuário preenche as informações e as envia para o servidor | |||
* Sistema Confere e pede uma verificação por e-mail. | |||
* Usuário faz validação por e-mail e tem sua conta criada. | |||
'''Sequências Alternativas:''' | |||
* Usuário já existe. | |||
* E-Mail já cadastrado. | |||
* Confirmação de senha não corresponde. | |||
* Erro de comunicação com o servidor. | |||
<br><br> | |||
'''Nome do Caso de Uso:''' Fazer login.<br> | |||
'''Ator:''' Usuário.<br> | |||
'''Pré-Condição:''' Usuário ter uma conta criada.<br> | |||
'''Pós-Condição:''' Login efetuado.<br> | |||
'''Sequência de Eventos:''' | |||
* Usuário clica para fazer login. | |||
* Sistema requisita email e senha. | |||
* Usuário preenche e envia. | |||
* Sistema confere. | |||
* Usuário logado. | |||
'''Sequências Alternativas:''' | |||
* Usuário ou senha incorreta. | |||
* Falha na resposta do sistema (Superlotação) | |||
<br><br> | |||
'''Nome do Caso de Uso''' Postar uma Mensagem<br> | |||
'''Atores:''' Usuário ou Administrador<br> | |||
'''Pré-Condição:''' Estar logado<br> | |||
'''Pós-Condição:''' Mensagem Postada, atualização da página.<br> | |||
'''Sequência de Eventos:''' | |||
* Usuário clica para postar uma mensagem | |||
* Sistema exibe uma caixa de texto para o usuário digitar. | |||
* Usuário digita o que for pretendido e envia. | |||
* Sistema recebe, adiciona a mensagem e atualiza a página. | |||
'''Sequências Alternativas:''' | |||
* Mensagem excede tamanho máximo | |||
* Usuário postou muitas mensagens em pouco espaço de tempo (sistema anti-Flooding) | |||
* Erro de comunicação com o sistema. | |||
<br><br> | |||
'''Nome do Caso de Uso:''' Ambiente de Programação<br> | |||
'''Atores:''' Usuário ou Administrador<br> | |||
'''Pré-Condição:''' Estar Logado.<br> | |||
'''Pós-Condição:''' Acesso. | |||
<br> | |||
'''Sequência de Eventos:''' | |||
* Usuário clica para acessar o ambiente de programação. | |||
* Sistema exibe uma caixa de texto para digitar o código e uma tela com os resultados. | |||
'''Sequências Alternativas:''' | |||
* Erro de Comunicação com o sistema | |||
Edição atual tal como às 20h47min de 6 de fevereiro de 2014
- Nome do Projeto: Kodificando
Componentes
- Guilherme
5W2H
What
- Qual o objetivo deste projeto?
- O principal objetivo deste projeto é fornecer um ambiente (como um website) para que os usuários possam ler sobre, aprender e discutir sobre assuntos relacionados à computação, levando em consideração que esses tipos de conhecimento por muitas vezes não é levado às salas de aula de Ensino Fundamental e Médio
- Quais os maiores desafios, na sua opinião, para se realizar este trabalho?
- Seleção e planejamento dos conteúdos disponibilizados.
- Moderação do fórum de discussões.
- Disponibilização de um ambiente dinâmico onde se possa aprender programação
- Quais os conhecimentos básicos que devemos ter para se implementar este projeto?
- Conhecimento sobre o assunto a ser tratado (Conceitos e termos Básicos de Computação).
- Conhecimentos de Javascript e PHP/Python/Ruby
- Noções de HTML e CSS.
- Quais soluções similares existem no mercado (Benchmarking)?
- Abordando Programação:
- Similares:
- Code.org: http://code.org/
- Codeacademy: http://www.codecademy.com
- Um similar brasileiro: http://codeclubbrasil.org/
- Páginas que podem vir a interessar:
- http://tryruby.org/levels/1/challenges/1 (Ruby Básico)
- https://www.khanacademy.org/cs (Fundamentos de Programação)
- http://codehs.com/ (Abordagem mais simples)
- http://scratch.mit.edu/ (Abordagem mais simples)
- https://www.coursera.org/ (Site com cursos de várias universidades renomadas)
- Uma "alternativa" Brasileira: http://www.aprenderprogramar.com.br/
- Sobre hacking e segurança: https://www.hackthissite.org/
- Sobre computação: https://www.udacity.com/course/cs101
- Sobre computação: https://class.coursera.org/cs101-selfservice/class/index
Why
- Porque é interessante desenvolver este projeto?
- É interessante porque, acima de tudo, esses conhecimentos não são tão difundidos, e atualmente, para os obter é necessário um estudo mais especializado sobre o assunto. Enquanto isso, a necessidade cresce cada vez mais, e o número de profissionais é cada vez menor comparando com a demanda.
- Algumas citações:
- "Todos nesse país deviam aprender como programar um computador porque isso te ensina a pensar" - Steve Jobs
- "Aprender a escrever programas faz sua mente crescer e te ajuda a pensar melhor, cria uma maneira de pensar que eu acredito que ajude em todas as áreas" - Bill Gates
- Algumas citações:
- Porque deve usar a tecnologia escolhida?
- Deve-se utilizar HTML e CSS para poder marcar melhor os componentes na página e uma linguagem de programação para que o aplicativo interaja de fato com o usuário, as principais opções são: Python Django, uma plataforma muito utilizada para aplicativos WEB que utiliza uma linguagem que vem crescendo cada vez mais - Ruby on Rails, outra plataforma também amplamente utilizada, inclusive por grandes aplicativos (Exemplo: Twitter), feita em uma linguagem um pouco mais antiga e um pouco mais consolidada no mercado. As duas plataformas são fundadas em conceitos e paradigmas que são importantes e consolidados, como:
- "Active Record Pattern" - que consiste em armazenar os dados em bancos de dados
- CVC ("Convention over configuration" - Convenção sobre configuração) - que visa ganhar simplicidade sem perder flexibilidade
- DRY ("Don't repeat yourself" - não se repita) - visa a não repetição das linhas de código
- MVC ("Model-View-Controller" - modelo-visão-controlador) - tem o intuito de separar a informação da interface com a qual o usuário interage
- Deve-se utilizar HTML e CSS para poder marcar melhor os componentes na página e uma linguagem de programação para que o aplicativo interaja de fato com o usuário, as principais opções são: Python Django, uma plataforma muito utilizada para aplicativos WEB que utiliza uma linguagem que vem crescendo cada vez mais - Ruby on Rails, outra plataforma também amplamente utilizada, inclusive por grandes aplicativos (Exemplo: Twitter), feita em uma linguagem um pouco mais antiga e um pouco mais consolidada no mercado. As duas plataformas são fundadas em conceitos e paradigmas que são importantes e consolidados, como:
Who
- Quem pode se beneficiar deste projeto?
- Todos que tiverem interesse sobre o assunto e em aprender.
- Quem poderá operar o sistema?
- Qualquer pessoa com um dispositivo com acesso à internet
- Quem deverá participar do desenvolvimento do sistema?
- Pessoas que compartilham da ideia inicial do projeto e com capacidade e disposição para construir tal ambiente
Where
- Onde os dados serão inseridos?
- Por ser um website, os dados serão inseridos no servidor através de um navegador.
- Onde os dados serão externalizados, publicados?
- Os dados serão publicados e mostrados em um navegador
- Onde esta aplicação poderá ser usada?
- Esta aplicação poderá ser acessada em qualquer dispositivo com uma conexão à internet.
- Onde os dados serão armazenadas?
- Os dados serão armazenados em um Banco de Dados SQL.
- Onde o software deverá ser hospedado?
- Em uma máquina dedicada e alugada, possivelmente também fazendo uso de Computação em Nuvem para alguns recursos.
When
- Em quanto tempo pretende desenvolver o sistema?
- Em cerca de 3 meses acredita-se que seja possivel obter um protótipo simples, mas o desenvolvimento do sistema seria continuado em quanto ele funcionasse
- Quais serão as fases e em quanto tempo cada uma?
- Primeiro deve-se estudar e escolher os temas a ser tratados e utilizados (Consideramos 2 meses)
- Em seguida pode-se fazer o protótipo (Cerca de 1 mês)
How
- Como será dividido o desenvolvimento do sistema?
- O Sistema será desenvolvido utilizando conceitos básicos de HTML e CSS, utilizando jQuery (Javascript) e fazendo o uso de no mínimo uma das seguintes frameworks: CakePHP (PHP), Django (Python) e Ruby on Rails (Ruby)
- Como será feita a entrada de dados?
- A entrada de dados no sistema será feita através de um navegador de internet
- Como será feita a saída de dados?
- A saída de dados no sistema será feita através de um navegador de internet
- Descreva a 1a. funcionalidade?
- Sistema de Cadastro/Login
- Descreva a 2a. funcionalidade?
- Fórum de Discussões (criar novo tópico, responder, etc...)
- Descreva a 3a. funcionalidade?
- Acesso ao banco de artigos, notícias, aulas, perguntas/respostas, etc...
- Descreva a 4a funcionalidade?
- Salvar junto à pagina do usuário tudo que já foi comprido pelo mesmo
- Descreva a 5a funcionalidade?
- Acesso à ambiente dinâmico de programação (junto com alguns tutoriais)
How much
- Quanto deverá custar o sistema?
- O Custo inicial não deve ser uma quantia muito alta, seria o custo de uma máquina dedicada e de um domínio e hospedagem de internet.
- Quantas pessoas deverão ser usadas?
- De início não são necessárias muitas pessoas, mas como o projeto pode vir a tratar sobre vários assuntos específicos, seria interessante futuramente terceirizar essas áreas para seus respectivos profissionais. De maneira geral: Em torno de 2 programadores Front-End e 2 Back-End, sendo 1 para tratamento do Banco de Dados e 2 "Idealizadores" (responsaveis pelos conteúdos e moderação/gestão do aplicativo)
- Qual deverá ser o preço de aquisição do seu software para o usuário final?
- Inicialmente, deverá ser gratuito para o usuário, será possivel talvez cobrar uma pequena taxa para serviços mais especializados
Diagrama de Fluxo de Dados
Criticas
- Definir com mais clareza quais as abrangencias da aplicação
EX: esta aplicação ao final será composta de um forum de discussão, ambiente de programação e 'banco de códigos', etc....
Professor:
- A aplicação será composta dos seguintes módulos:
- Cadastro de usuário: Opções de cadastrar, acessar e recuperar senha. O cadastro deverá manter os dados da pessoa e também alguns itens adicionais como Área de Estudo, Formação, Escola, Cidade, Curso, Preferências, Horário de estudo.
- Forum de Discussão: O Forum deverá ser aberto com as últimas postagens. Além disso, deverá ter ainda as opções de Pesquisar conteúdo, Postar mensagem, Acessar Twitter, Linkedin e Facebook
- Ambiente de programação: Na página inicial mostrará as últimas informações para os desenvolvedores. Opções: Pesquisar tutorial, Baixar tutorial, Acessar ambiente de programação, Mostrar códigos (arquivos em cpp, por exemplo) e Apagar arquivos.
- Chat: Disponibilizar ambiente de interação com outros estudantes (online e offline). Opções: Escolher destinatário (um, grupo ou todos), Iniciar conversa, Finalizar conversa, Upload de arquivos, Download de Arquivos.
- Qual das "partes" da aplicação será desenvolvida primeiro?
Professor:
- Cronograma:
- 1a. parte: Cadastro de usuário
- 2a. parte: Forum de Discussão
- 3a. parte: Chat
- 4a. parte: Ambiente de programação
- Quais os especialistas necessários?
Ex: um para banco de dados, 2 para design, um para engenharia de software..
Professor:
- Especialistas:
- Arquiteto de software: 1
- Desenvolvedores: 2
- DBA: 1
- Designer: 1
- Tester: 1
- Especialista em Educação: 1
- Especialista em Marketing: 1
- Advogado: 1
Diagrama de Classes
Diagrama de Casos de Uso
Diagrama
Detalhamento
PDF: Arquivo:K detalhamento.pdf
Requisitos Não-Funcionais do Aplicativo:
- Resposta em, no máximo, 30 segundos em 90% dos casos.
- Segurança na troca de informações e senhas.
- Acessível de todas as plataformas.
- Atendendo todas as leis de Direitos Autorais.
- Aplicativo faz comunicação com base de dados SQLite.
- Implementado em Python.
Nome do Caso de Uso: Fazer Cadastro.
Ator: Usuário.
Pré-Condição: Desejo ou necessidade de ter acesso à todo conteudo da página.
Pós-Condição: Conta Criada.
Sequência de Eventos:
- Usuário clica para se cadastrar
- Sistema Requisita as informações necessárias.
- Usuário preenche as informações e as envia para o servidor
- Sistema Confere e pede uma verificação por e-mail.
- Usuário faz validação por e-mail e tem sua conta criada.
Sequências Alternativas:
- Usuário já existe.
- E-Mail já cadastrado.
- Confirmação de senha não corresponde.
- Erro de comunicação com o servidor.
Nome do Caso de Uso: Fazer login.
Ator: Usuário.
Pré-Condição: Usuário ter uma conta criada.
Pós-Condição: Login efetuado.
Sequência de Eventos:
- Usuário clica para fazer login.
- Sistema requisita email e senha.
- Usuário preenche e envia.
- Sistema confere.
- Usuário logado.
Sequências Alternativas:
- Usuário ou senha incorreta.
- Falha na resposta do sistema (Superlotação)
Nome do Caso de Uso Postar uma Mensagem
Atores: Usuário ou Administrador
Pré-Condição: Estar logado
Pós-Condição: Mensagem Postada, atualização da página.
Sequência de Eventos:
- Usuário clica para postar uma mensagem
- Sistema exibe uma caixa de texto para o usuário digitar.
- Usuário digita o que for pretendido e envia.
- Sistema recebe, adiciona a mensagem e atualiza a página.
Sequências Alternativas:
- Mensagem excede tamanho máximo
- Usuário postou muitas mensagens em pouco espaço de tempo (sistema anti-Flooding)
- Erro de comunicação com o sistema.
Nome do Caso de Uso: Ambiente de Programação
Atores: Usuário ou Administrador
Pré-Condição: Estar Logado.
Pós-Condição: Acesso.
Sequência de Eventos:
- Usuário clica para acessar o ambiente de programação.
- Sistema exibe uma caixa de texto para digitar o código e uma tela com os resultados.
Sequências Alternativas:
- Erro de Comunicação com o sistema


