Projetar e organizar o trabalho em um sistema Web

Bom dia pessoal

Estou desenvolvendo(para fins de aprendizagem) um sistema web de contas a pagar, porém, estou muito perdido com o que fazer e o que fazer primeiro. Estou usando as seguintes ferramentas:

Banco de dados: MySql
Interface visual: Dreamweaver
IDE: Eclipse
Framework 1: Spring MVC
Framework 2: Hibernate

O banco de dados já está criado e inicialmente minha ideia é desenvolver todas as interfaces com o usuário no Dreamweaver. Após esse ponto pensei em iniciar a codificação das classes que representam as entidades e fazer o mapeamento com o Hibernate e só então começar a organizar o projeto com o spring.

Eu sei que a explicação da ideia está bem genérica, mas alguém poderia me dizer se devo seguir essa linha ou mudar a forma como vou trabalhar? Gostaria de seguir o processo que seguiria em uma empresa, pois como mencionei no começo, estou desenvolvendo esse sistema para fins de aprendizagem.

Obrigado pela atenção, abraços.

Eu faria diferente. Primeiro criaria a camada de acesso aos dados e com isso geraria um componente. Depois disso faria uma outra camada para as regras de negócio e geraria um novo componente também e só depois disso desenvolveria a UI. Mas claro, isso é só opinião, você deve começar por onde se sentir mais seguro. Apenas estou de expondo uma maneira diferente.

Apenas creio que seria interessante você aplicar alguma ferramenta de TDD quando desenvolver as classes de acesso aos dados e negócio.

Primeiramente tem que estar na sua cabeça as entidades e seus relacionamentos, enfim, o negócio em si. Como funciona um Sistema de Contas a Pagar? Faça esta pergunta a você mesmo e saia desenhando e criando as entidades. Com o modelo relacional fechado, você começa a levantar os serviços que você vai ter e depois as telas principais.

Se vai usar Spring MVC, Struts, JSF bla bla bla isso é o de menos, primeiro você tem que fechar o que o sistema fará e como ele fará.

[quote=Mendigo_do_Futuro]Bom dia pessoal

Estou desenvolvendo(para fins de aprendizagem) um sistema web de contas a pagar, porém, estou muito perdido com o que fazer e o que fazer primeiro. Estou usando as seguintes ferramentas:

Banco de dados: MySql
Interface visual: Dreamweaver
IDE: Eclipse
Framework 1: Spring MVC
Framework 2: Hibernate

O banco de dados já está criado e inicialmente minha ideia é desenvolver todas as interfaces com o usuário no Dreamweaver. Após esse ponto pensei em iniciar a codificação das classes que representam as entidades e fazer o mapeamento com o Hibernate e só então começar a organizar o projeto com o spring.

Eu sei que a explicação da ideia está bem genérica, mas alguém poderia me dizer se devo seguir essa linha ou mudar a forma como vou trabalhar? Gostaria de seguir o processo que seguiria em uma empresa, pois como mencionei no começo, estou desenvolvendo esse sistema para fins de aprendizagem.

Obrigado pela atenção, abraços.[/quote]

O processo usado por empresas (fazer todo o banco, depois fazer toda interface, etc.) não é apropriado nem mesmo para as próprias empresas, imagina quem esta aprendendo. :stuck_out_tongue:

[quote=lkbm][quote=Mendigo_do_Futuro]Bom dia pessoal

Estou desenvolvendo(para fins de aprendizagem) um sistema web de contas a pagar, porém, estou muito perdido com o que fazer e o que fazer primeiro. Estou usando as seguintes ferramentas:

Banco de dados: MySql
Interface visual: Dreamweaver
IDE: Eclipse
Framework 1: Spring MVC
Framework 2: Hibernate

O banco de dados já está criado e inicialmente minha ideia é desenvolver todas as interfaces com o usuário no Dreamweaver. Após esse ponto pensei em iniciar a codificação das classes que representam as entidades e fazer o mapeamento com o Hibernate e só então começar a organizar o projeto com o spring.

Eu sei que a explicação da ideia está bem genérica, mas alguém poderia me dizer se devo seguir essa linha ou mudar a forma como vou trabalhar? Gostaria de seguir o processo que seguiria em uma empresa, pois como mencionei no começo, estou desenvolvendo esse sistema para fins de aprendizagem.

Obrigado pela atenção, abraços.[/quote]

O processo usado por empresas (fazer todo o banco, depois fazer toda interface, etc.) não é apropriado nem mesmo para as próprias empresas, imagina quem esta aprendendo. :P[/quote]
Pelo menos sem querer ou não ele está simulando uma situação mais possível de acontecer na realidade. Nem sempre “o errado” academicamente é errado para algum cenário real. Mas concordo que ele deveria estar ciente do que seria o “fluxo ideal”.

Já viu a construção de um prédio, casa ou alguma coisa ligada a construção civil ?

Primeiro você precisa planejar, escolher a quantidade de dependências, pavimentos, entre outros fatores. Depois vem terraplenagem e só aí você consegue ter o seu alicerce implantado. Pós último você deixa para fazer o acabamento, perfumaria e detalhes visuais.

Com construção de software não é diferente, primeiro defina sua arquitetura, escolha sua plataforma de desenvolvimento, deixe bem claro os teus requisitos funcionais e não funcionais, especifique os teus requisitos, encare o projeto da forma correta, mesmo sendo apenas para aprendizado.

Depois de ter feito todas as suas definições, comece a construção da sua infraestrutura, pegue os requisitos que possuem impacto arquitetural e tente implementar eles.

A parte de acabamento você vai fazer depois, estilizar, fazer telas, dá cara para seu projeto…

Bom, é isso, claro que foi bem simplório, mas dá para você ter uma ideia.

[quote=javaflex]
Pelo menos sem querer ou não ele está simulando uma situação mais possível de acontecer na realidade. Nem sempre “o errado” academicamente é errado para algum cenário real. Mas concordo que ele deveria estar ciente do que seria o “fluxo ideal”.[/quote]

O cenário que você se refere como real (de uma empresa) e o cenário do autor do tópico (um projeto solo) são duas situações completamente diferentes. Você esta dizendo que ele devia usar o processo usado por empresas mesmo que ele não precise no projeto dele? E por que alguém faria isso?

[quote=lanlico]
Com construção de software não é diferente…[/quote]

Na verdade, desenvolvimento de software é completamente diferente de construção civil.

[quote=lkbm][quote=javaflex]
Pelo menos sem querer ou não ele está simulando uma situação mais possível de acontecer na realidade. Nem sempre “o errado” academicamente é errado para algum cenário real. Mas concordo que ele deveria estar ciente do que seria o “fluxo ideal”.[/quote]

O cenário que você se refere como real (de uma empresa) e o cenário do autor do tópico (um projeto solo) são duas situações completamente diferentes. Você esta dizendo que ele devia usar o processo usado por empresas mesmo que ele não precise no projeto dele? E por que alguém faria isso?[/quote]

Na verdade a minha intenção é realmente simular um cenário real, como se fosse dentro de uma empresa. O meu objetivo é chegar o mais próximo possível disso, para que com esse projeto, de alguma forma, eu ganhe conhecimento que possa servir como “experiência de campo” e possa ser usado durante uma entrevista de emprego por exemplo.

[quote=lkbm][quote=javaflex]
Pelo menos sem querer ou não ele está simulando uma situação mais possível de acontecer na realidade. Nem sempre “o errado” academicamente é errado para algum cenário real. Mas concordo que ele deveria estar ciente do que seria o “fluxo ideal”.[/quote]

O cenário que você se refere como real (de uma empresa) e o cenário do autor do tópico (um projeto solo) são duas situações completamente diferentes. Você esta dizendo que ele devia usar o processo usado por empresas mesmo que ele não precise no projeto dele? E por que alguém faria isso?[/quote]
O banco de dados dele já está criado, por isso eu toquei nessa questão de sem querer ou não estar diante de uma situação da maioria das empresas. Isso não é errado, ele só está seguindo a modelagem orientado a banco como acontece muito. Importante é ele estar ciente agora que o “fluxo ideal” seria outro, mas não tendo que se sentir errado para refazer um trabalho.

[quote=Mendigo_do_Futuro]
Na verdade a minha intenção é realmente simular um cenário real, como se fosse dentro de uma empresa. O meu objetivo é chegar o mais próximo possível disso, para que com esse projeto, de alguma forma, eu ganhe conhecimento que possa servir como “experiência de campo” e possa ser usado durante uma entrevista de emprego por exemplo.[/quote]

Como vai simular uma equipe com analistas e programadores num projeto solo?

[quote=javaflex]
O banco de dados dele já está criado, por isso eu toquei nessa questão de sem querer ou não estar diante de uma situação da maioria das empresas. Isso não é errado, ele só está seguindo a modelagem orientado a banco como acontece muito. Importante é ele estar ciente agora que o “fluxo ideal” seria outro, mas não tendo que se sentir errado para refazer um trabalho.[/quote]

Então o cenário é o mesmo pq o banco ta pronto e nas empresas o banco costuma ficar pronto primeiro?

hm, entendi.

Mas quando critiquei fazer todo o banco primeiro, depois toda a interface, estava me referindo ao “todo”, e não a ordem com que são feitos. Não vejo nada de errado em fazer o banco ou a interface primeiro, e sim que eles devem ser feitos em pequenos passos e de maneira iterativa.

[quote=lkbm][quote=javaflex]
O banco de dados dele já está criado, por isso eu toquei nessa questão de sem querer ou não estar diante de uma situação da maioria das empresas. Isso não é errado, ele só está seguindo a modelagem orientado a banco como acontece muito. Importante é ele estar ciente agora que o “fluxo ideal” seria outro, mas não tendo que se sentir errado para refazer um trabalho.[/quote]

Então o cenário é o mesmo pq o banco ta pronto e nas empresas o banco costuma ficar pronto primeiro?

hm, entendi.

Mas quando critiquei fazer todo o banco primeiro, depois toda a interface, estava me referindo ao “todo”, e não a ordem com que são feitos. Não vejo nada de errado em fazer o banco ou a interface primeiro, e sim que eles devem ser feitos em pequenos passos e de maneira iterativa.[/quote]
Sim, fazer de forma iterativa concordo plenamente, mas já é outro assunto, não envolvendo só o banco. “Nas empresas” costuma sim ficar pronto antes, quando se tem uma equipe de ADs que vão liderar a modelagem. Se fizer OO antes e gerar tabelas corre o risco da AD barrar e ter retrabalho ou dificuldade de mapear o que a AD aprovar. Fora isso, existem casos que nem todos os sistemas envolvidos são orientados a objetos.

[quote=javaflex]
Sim, fazer de forma iterativa concordo plenamente, mas já é outro assunto, não envolvendo só o banco. “Nas empresas” costuma sim ficar pronto antes, quando se tem uma equipe de ADs que vão liderar a modelagem. Se fizer OO antes e gerar tabelas corre o risco da AD barrar e ter retrabalho ou dificuldade de mapear o que a AD aprovar. Fora isso, existem casos que nem todos os sistemas envolvidos são orientados a objetos.[/quote]

Desenvolver um sistema solo como se fosse uma empresa (ou seja, usando o mesmo processo) é uma coisa retardada de se fazer. Não conheço ninguém com experiencia que defende fazer isso, quanto mais quem esta aprendendo e não sabe fazer as adaptações necessárias.

[quote=lkbm][quote=javaflex]
Sim, fazer de forma iterativa concordo plenamente, mas já é outro assunto, não envolvendo só o banco. “Nas empresas” costuma sim ficar pronto antes, quando se tem uma equipe de ADs que vão liderar a modelagem. Se fizer OO antes e gerar tabelas corre o risco da AD barrar e ter retrabalho ou dificuldade de mapear o que a AD aprovar. Fora isso, existem casos que nem todos os sistemas envolvidos são orientados a objetos.[/quote]

Desenvolver um sistema solo como se fosse uma empresa (ou seja, usando o mesmo processo) é uma coisa retardada de se fazer. Não conheço ninguém com experiencia que defende fazer isso, quanto mais quem esta aprendendo e não sabe fazer as adaptações necessárias.[/quote]
Não me referi a sistema solo essa última resposta.

[quote=javaflex]
Não me referi a sistema solo essa última resposta.[/quote]

98% dos programadores não são treinados em OO e acham que fazer OO é usar hibernarte, se não pode usar hibernaste então não deve ser OO.

Mas achei que estavamos falando de processos usados em empresas e não de OO e hibernaste.

[quote=lkbm][quote=lanlico]
Com construção de software não é diferente…[/quote]

Na verdade, desenvolvimento de software é completamente diferente de construção civil.[/quote]

Claro, mas tem muitas similaridades.
De onde veio os padrões de projeto?

[quote=lkbm][quote=Mendigo_do_Futuro]
Na verdade a minha intenção é realmente simular um cenário real, como se fosse dentro de uma empresa. O meu objetivo é chegar o mais próximo possível disso, para que com esse projeto, de alguma forma, eu ganhe conhecimento que possa servir como “experiência de campo” e possa ser usado durante uma entrevista de emprego por exemplo.[/quote]

Como vai simular uma equipe com analistas e programadores num projeto solo?[/quote]

Dividindo o trabalho.
O importante é executar os papéis, não quem faz.

[quote=A H Gusukuma][quote=lkbm][quote=lanlico]
Com construção de software não é diferente…[/quote]

Na verdade, desenvolvimento de software é completamente diferente de construção civil.[/quote]

Claro, mas tem muitas similaridades.
De onde veio os padrões de projeto?
[/quote]

Dica: não veio de engenheiros civis ou arquitetos.

[quote=A H Gusukuma]

Como vai simular uma equipe com analistas e programadores num projeto solo?[/quote]

Dividindo o trabalho.
O importante é executar os papéis, não quem faz.[/quote]

Não existe divisão de trabalho em projetos solo.