Melhores soluções para iniciar um projeto

Pessoal, hoje em dia dispõe-se de muitos frameworks e varias metodologias para adotarmos em nossos projetos.

Gostaria da opinião de vocês sobre quais seriam as ferramentas, frameworks etc, que melhor se encaixam para iniciarmos um projeto de médio para grande porte?

Em outras palavras, como cada um começaria um projeto?

Então, somente com essas informações que você passou fica difícil tomar alguma decisão.
O ideal é levantar todas as necessidades, para aí sim pensar no que é melhor utilizar para resolver estas necessidades.

independente do projeto, eu aconselho a utilizar o maven. facilita muito sua vida com relação a dependencias entre bibliotecas, builds, deploys e etc. o resto só sabendo mais

Acho que deve ser feito um levantamento do projeto! Verificar se o projeto é SE, EE…

Fazer todo o processo de levantamento de requisitos, e conforme o conhecimento da sua equipe…

Aplica no projeto o conhecimento que sua equipe tem! pois nao da pra ti manda todo mundo estuda de ultima hora aquele framework!
isso é o meu ponto de vista! hehe… mesmo ja tendo feito isso!

mais conforme o conhecimento de todos e o tipo de projeto… aplicar frameworks que te deem produtividade! e que sejam confiaveis!

Ateh mais!! :smiley:

[quote=MaxWeber]

Pessoal, hoje em dia dispõe-se de muitos frameworks e varias metodologias para adotarmos em nossos projetos.

Gostaria da opinião de vocês sobre quais seriam as ferramentas, frameworks etc, que melhor se encaixam para iniciarmos um projeto de médio para grande porte?

Em outras palavras, como cada um começaria um projeto?[/quote]

Quão difícil você quer que a manutenção do sistema seja ?
Algumas ideias:

-Use a plataforma Java , se não quiser usar a linguagem java tudo bem, mas use a JVM
-Use OO
-Use o minimo de bibliotecas de terceiros.
-Isole todas as bibliotecas de terceiros.
-Tenha cuidado ao escolher bibliotecas de javasscript.

  • Use um mecanismo de injeção. use um já pronto ou escreva o seu. Não é dificil.
  • Se for web use um mecanismo de injeção de dados e classes de tratamento de ações independentes da api de servlets.
  • Crie testes. Dê prioridade ao teste. se precisar mudar uma biblioteca ou complicar as coisas um pouco para fazer o teste, faça-o.
  • Rode os testes frequentemente. Um mecanismo de integração continua é ideal. Eu gosto do hudson.
  • Use Maven 2 e fique de olho no Maven 3.
  • Use uma IDE competente (Eclipse, NetBeans…) . Use o minimo de plugins possivel.
  • Se é uma site não orientado a formulários (aka sistema de cadastro e controle) nem pense em usar flex ou GWT.
  • Se é desktop dê uma olhada em JavaFX ou pelo menos Swing. Tenha alguem na equipa que manja de UI.
  • Se é web defina os browsers que vai suportar. Não tente suportar todos a menos que seja um site de e-commerce. E neste caso a equipa precisa de um designer experiente. Use páginas tableless e priorize o uso CSS. Aprenda a usar CSS corretamente.
  • Se é web, crie suas proprias tags. Não use as de bibliotecas de terceiros. (isolamento)
  • Defina a sua arquitetura. dimensione o numero de usuários.
  • Define politicas de segurança. Vai ter login-password ? encripte a password.
  • Use transações
  • Use padrões de projeto de aplicação e de arquitetura corretamente

-considere usar Scrum.
-considere usar práticas ágeis como Pair Programing, Repositorio Partilhado,etc…

  • Estime o projeto corretamente. corte o que é superfluo. Arquitetura correta não é superfluo. Plataforma de aplicação não é superfluo.

  • Mantenha seu código sempre limpo, custe o que custar, doa a quem doer.

  • em termos tecnologicos tenha muito cuidado com as escolhas que faz. Mantenha as bibliotecas de terceiros isoladas.

  • Algumas opções comuns:
    para Web
    Cliente : javascript com JQuery , CSS 3 , Firefox (com plugn in firebug)
    Apresentação : Spring MVC ou algo criado por si. Nem pense em struts 2 , muito menos o 1. Não pense em JSF a menos que tenha mais de uma pessoa na equipa com experiencia nisso. Parece legal para aplicações de cadastro, mas apenas se form bem simples. Veja se é compativel com os seus requisitos de tela.

: independnete
Dominio : velho e bom OO. Defina bem entidades, objetos auxiliares, aplica padrões corretamente. Use repositorios para isolar a pesquisa e persistencia. considere usar EJB apenas como ultimo recurso e apenas se tiver uma forte carga transacional e distribuida (como precisar ter transações JDBC e JMS interligadas) , fora isso não use EJB.
Integração : Hibernate é melhor que JPA. Mas JDBC é melhor que Hibernate se a equipa tiver experiência. Se a equipa tiver experiência suficiente considere implementar sem mecanismo ORM.
Recursos : Banco de dados relacional transacional. Muito importante que seja transacional, cuidado com o MySQL porque algumas configurações não são transacionais. PostgreSQL é , quanto a mim, o melhor em todos os aspetos. Melhor que Oracle inclusive, e é free.

  • Leia Effective Java segunda edição (se possivel tb Java Puzzlers) do Joshua Block
  • Leia Clean Code do Robert C Martin
  • Se for estimar leia Software Estimation: Demystifying The Black Art
  • Se for usar ágil leia :Agile Estimating And Planning
  • Para levantar requisitos leia Software Requirement Patterns

Básicamente é isso…

basicamente… :shock:

Eu recomendo o uso de Spring, JPA e JSF. (Se for web) além do que foi dito.

Ola,

Gostaria de agradecer as respostas a este topico, em especial ao Sergio Taborda, exelente post. Desde a data tem me ajudado muito e creio que pode ajudar a outros desenvolvedores também a terem uma ideia. Obrigado.