• Nome do Projeto: Kodificando

Componentes


  • Guilherme


5W2H


What


  1. Qual o objetivo deste projeto?
    1. 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


  1. Quais os maiores desafios, na sua opinião, para se realizar este trabalho?
    1. Seleção e planejamento dos conteúdos disponibilizados.
    2. Moderação do fórum de discussões.
    3. Disponibilização de um ambiente dinâmico onde se possa aprender programação


  1. Quais os conhecimentos básicos que devemos ter para se implementar este projeto?
    1. Conhecimento sobre o assunto a ser tratado (Conceitos e termos Básicos de Computação).
    2. Conhecimentos de Javascript e PHP/Python/Ruby
    3. Noções de HTML e CSS.


  1. Quais soluções similares existem no mercado (Benchmarking)?


Why

  1. Porque é interessante desenvolver este projeto?
    1. É 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.
    1. Algumas citações:
      1. "Todos nesse país deviam aprender como programar um computador porque isso te ensina a pensar" - Steve Jobs
      2. "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
  1. Porque deve usar a tecnologia escolhida?
    1. 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:
      1. "Active Record Pattern" - que consiste em armazenar os dados em bancos de dados
      2. CVC ("Convention over configuration" - Convenção sobre configuração) - que visa ganhar simplicidade sem perder flexibilidade
      3. DRY ("Don't repeat yourself" - não se repita) - visa a não repetição das linhas de código
      4. 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


Who

  1. Quem pode se beneficiar deste projeto?
  • Todos que tiverem interesse sobre o assunto e em aprender.


  1. Quem poderá operar o sistema?
  • Qualquer pessoa com um dispositivo com acesso à internet


  1. 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

  1. Onde os dados serão inseridos?
  • Por ser um website, os dados serão inseridos no servidor através de um navegador.


  1. Onde os dados serão externalizados, publicados?
  • Os dados serão publicados e mostrados em um navegador


  1. Onde esta aplicação poderá ser usada?
  • Esta aplicação poderá ser acessada em qualquer dispositivo com uma conexão à internet.


  1. Onde os dados serão armazenadas?
  • Os dados serão armazenados em um Banco de Dados SQL.


  1. 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

  1. Em quanto tempo pretende desenvolver o sistema?
    1. 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
  2. Quais serão as fases e em quanto tempo cada uma?
    1. Primeiro deve-se estudar e escolher os temas a ser tratados e utilizados (Consideramos 2 meses)
    2. Em seguida pode-se fazer o protótipo (Cerca de 1 mês)


How

  1. 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)
  1. Como será feita a entrada de dados?
    • A entrada de dados no sistema será feita através de um navegador de internet
  1. Como será feita a saída de dados?
    • A saída de dados no sistema será feita através de um navegador de internet
  1. Descreva a 1a. funcionalidade?
    • Sistema de Cadastro/Login
  1. Descreva a 2a. funcionalidade?
    • Fórum de Discussões (criar novo tópico, responder, etc...)
  1. Descreva a 3a. funcionalidade?
    • Acesso ao banco de artigos, notícias, aulas, perguntas/respostas, etc...
  1. Descreva a 4a funcionalidade?
    • Salvar junto à pagina do usuário tudo que já foi comprido pelo mesmo
  1. Descreva a 5a funcionalidade?
    • Acesso à ambiente dinâmico de programação (junto com alguns tutoriais)


How much

  1. Quanto deverá custar o sistema?
    1. 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.
  2. Quantas pessoas deverão ser usadas?
    1. 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)
  3. Qual deverá ser o preço de aquisição do seu software para o usuário final?
    1. 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


Arquivo:K casodeuso.pdf