olá, vou desenvolver um sistema web em java e queria saber por onde começar?
depois de saber o q o sistema precisa o que desenvolver primeiro:
classes, banco, interface grafica, modelagem etc…
por favor postem a sequencia.
ficarei grato!!!
olá, vou desenvolver um sistema web em java e queria saber por onde começar?
depois de saber o q o sistema precisa o que desenvolver primeiro:
classes, banco, interface grafica, modelagem etc…
por favor postem a sequencia.
ficarei grato!!!
Sei que tem muita gente que vai discordar, mas ainda acho importante fazer um planejamento primeiro de como será estruturado seu software(modelagem e pelo menos o DER e alguns diagramas). Quanto a sequencia de desenvolvimento, que nem precisa ser realmente feito em sequência, várias coisas podem ser feitas em paralelo, principalmente se a equipe for grande e o prazo curto xD, na minha opinião ficaria
1- Banco de dados (quando já se tem o DER fica fácil)
2- Classes
3- Interface gráfica
Bom como estou nesse msm barco comprei livros e pesquisei em todo lugar, comprei video-aulas(foi o q mais impulsionou meu aprendizado), depois de 3 meses comecei a entender como iria funcionar a programação via web e coloquei a mão na massa, com muitas dúvidas ainda e muito a aprender estou seguindo devagar só focado no meu sistema, mas como volta as aulas hj terei menos tempo mas estou gostando muito, espero relatos dos amigos para termos ideias de como seguir…
O mais importante é entender a necessidade do cliente e o que o cliente PRECISA (que é diferente do que o cliente PEDE).
Depois disso, cada um vai pra um lado, tem gente que prefere começar definindo a arquitetura, outros a tabela, outros ainda montam a interface pra mostrar ao cliente pra ele conseguir visualizar como ficaria e dando mais informações que ele só perceberia lá na frente, mesmo que você vá fazer processos incrementais e interativos.
inicie usando um software parecido.
vc quer fazer um webmail? use o gmail, hotmail, mailinator (não lembro de outro minimalista apesar deste ter uma proposta bem DIFERENTE).
ja usou? faça uma prova de conceito. Uns htmls estaticos por exemplo, para vc clicar e brincar. Adicione um javascriptzinho se desejar.
entendeu como alguem usaria? então pense na coisa mais simples possivel de ser feita. Por exemplo, mandar um email para vc mesmo com subject de teste e mensagem teste 123. Não serve pra nada mas vc ENVIOU um email, vc fez um software que chama uma biblioteca ou componente que manda email provavelmente e configurou as coisas certas. Agora disso para algo que recebe os dados de um POST HTTP é um pulo, assim como um login para dar acesso ao mesmo.
é claro que existe banco, design grafico,SEO, segurança, etc. Mas se vc extrai o VALOR do software e proriza o mesmo, fazendo algo que funciona desde a versão 0.0.1 é maneiro para caramba.
Agora imagine que vc faz com TDD ou ATDD ?
Vc tem que fazer um webmail. Vc cria um teste onde vc recebe um email e executa o software e o teste falha pq vc não implementou. Vc implementa e roda o teste. Mas como testar isto?
Ai entra a safadeza. Digamos que vc usa o PQPMail, um framework BOLADÃO de envio de email. E é simples
IPQPMail pqpmail = new PQPMail(configuration);
pqpmail.to("vc@mail.com");
pqpmail.from("papainoel@mail.com");
pqpmail.subject("teste");
pqpmail.message("teste 123");
pqpmail.send();
OPA! o seu codigo não é nada mais do que chamar um codigo de terceiros com os parametros certos e “enviar”.
Eu posso substituir o objeto pqpmail por um Mock - um objeto falso, de testes - e verifico se os metodos foram chamados com os argumentos certos. Existem varias bibliotecas para criar Mocks em java.
Mas isto manda email? Bom vc pode conferir na sua caixa postal. Vc pode automatizar isto? Pode, assim que descobrir como.
Mas vc precisa de muitas firulas no sistema, muitas funcionalidades! E agora?
Bom, se vc quebra em funcionalidades e pensa em uma trilha para implementar as paradas, o resto vc cria com o tempo. Pense bem, um webmail pode ser algo tão simples quanto o formulario de post do GUJ removendo os botoes para negrito, italico, etc!
E como vc evolui? Deixe as pessoas mandar email ue. Elas vão comentar o que pode ser e o que não pode. De repente vc não precisa ter as funcionalidades X e Y e sim A e B. De repente vc não precisa de banco de dados.
Mas como o software escala? Isto é uma boa pergunta. Se é um sistema web, vc tem certas tecnicas para escalar um sistema assim. Para isso vc vai querer saber quanta carga um servidor aguenta. Se vc deixa rodando toda a noite um teste de carga e analisa CPU, IO, Memoria, etc vc sabe como a adição de codigo afeta a performance. Se cair 1000x de um dia para o outro tem algo errado. Se vc sabe como escala e quanto um servidor aguenta vc consegue prever coisas como
É claro que vc parar uma hora para produzir um CSS maneiro. Fazer uma documentação DUCA ou tunar o banco de dados socando indices e outras coisas, ou vendo opções de cache para os servidores. Mas faça isso sob demanda ou quando estiver de saco cheio.
Tenho amigos que adicionaram track via analitics de TODAS as funcionalidades de um dado site. Eis que descobriram coisas como 90% das pessoas usavam um dado link ao inves de um botão. Dai removiam o botão e colocavam mais links. Navegação dobrou.
Nessas horas tem que ser malandro. Para isso:
quer fazer um software? use software. use bastante!
quer programar? conheça quem programa coisas e aprenda.
coloque logo em produção e deixe as pessoas usarem. sei la, seu pai, sua irmã, seus colegas de AD&D.
“fiz um software que calcula o Indice de Massa Corporal. os gordinhos vão usar?”
“fiz um programa que calcula a expectativa de vida a partir da quantidade de cigarros fumados. fumantes vão usar?”
“fiz um site de compras coletivas focado no publico marciano. os ets vão dar dinheiro pra essa parada?”
perceba que é menos tecnico e mais jeito de fazer as coisas.