Jump to content
Mateus Silva

Arquitetura de Software

Recommended Posts

Estou iniciando um projeto que vai ser grande (bem grande) e terá constantes atualizações com novos módulos e manutenção nos já existentes!

Minha principal dúvida é: qual arquitetura utilizar ? Pela minha necessidade me veio à cabeça o MVC e, se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ? Pois já achei vários na internet e eu mesmo já usei de umas 2 formas diferentes, enfim, me deem uma luz!

PS. O sistemas vai ser criado do zero sem utilização de frameworks.

Share this post


Link to post
Share on other sites

Fala Mateus, beleza ? Bom, não sei o que você chama de projeto grande, mais ai vai uma sugestão de estrutura MVC comum e breve para se ter um "norte", adapte às suas necessidades.

 

mvc.jpg

Share this post


Link to post
Share on other sites
18 horas atrás, Mateus Silva disse:

se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ?

Uma boa organização já está presente nos próprios frameworks de ponta, tipo Laravael, Sinfony e Zend

https://github.com/laravel/laravel

Desenvolver uma aplicação, que pode vir a ser grande, sem o uso de Frameworks é no minimo insano para os dias de hoje.
 

Share this post


Link to post
Share on other sites
Em 07/02/2017 at 00:42, Alaerte Gabriel disse:

Fala Mateus, beleza ? Bom, não sei o que você chama de projeto grande, mais ai vai uma sugestão de estrutura MVC comum e breve para se ter um "norte", adapte às suas necessidades.

 

mvc.jpg

 

Legal, tinha pensado em algo simples assim mesmo.

 

Em 07/02/2017 at 18:41, Williams Duarte disse:

Uma boa organização já está presente nos próprios frameworks de ponta, tipo Laravael, Sinfony e Zend

https://github.com/laravel/laravel

Desenvolver uma aplicação, que pode vir a ser grande, sem o uso de Frameworks é no minimo insano para os dias de hoje.
 

 

Nunca tive muito interesse em usar frameworks, até estudei alguns como o próprio Laravel e o Cake, mas ainda assim, eu gosto de ter 100% das minhas aplicações na mão, poder criar o que quiser da forma que quiser sem muita restrição, por isso não sou muito adepto de usar frameworks, mas agradeço pelo toque, vou reconsiderar!

Share this post


Link to post
Share on other sites

Uma coisa é programar por Hobby e fazer alguns freelas, a outra é escalar um projeto, onde este demandara por profissionais qualificados mais a frente. Frameworks a grande vantagem é a agilidade no desenvolvimento e documentação extensa. 

 

Se uma empresa/aplicação cresce, pode ter certeza, os que vier a trabalhar na aplicação não pensaram igual a você, "gosto de desenvolver do zero", é você quem tem que se adequar ao mercado, e não ao mercado a você. 
 

Alguns frameworks tem suas limitações e o cake é um deles, este força a  usar suas convenções e não te ajudara a escalar o projeto. 

 

Não estou puxando sardinha pro Laravel, mas não vejo nenhuma limitação nesta obra de arte, principalmente em escalar qualquer projeto. 
"O que mais vejo em grupos é a limitação do próprio desenvolvedor", pois pulam etapas básicas e vai direto para o framework. 

 

:thumbsup:



 

Share this post


Link to post
Share on other sites
Em 07/02/2017 at 00:13, Mateus Silva disse:

se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ?

 

Por que raios você está preocupado com diretórios? MVC não tem absolutamente nada a ver com diretórios. Não importa a arquitetura que você vá utilizar; siga as PSR; a PSR-4 diz respeito ao autoloader: http://www.php-fig.org/psr/psr-4/

 

Em 07/02/2017 at 00:13, Mateus Silva disse:

Estou iniciando um projeto que vai ser grande (bem grande) e terá constantes atualizações com novos módulos e manutenção nos já existentes!

 

Grande é relativo; grande comparado a quê? A sugestão de trabalhar com DDD é interessante; tente visualizar cada um dos contextos da aplicação e trabalhá-los individualmente; isso evita que você se perca num emaranhado de coias.

 

Em 07/02/2017 at 00:13, Mateus Silva disse:

PS. O sistemas vai ser criado do zero sem utilização de frameworks.

 

Por quê?

Share this post


Link to post
Share on other sites
1 hora atrás, Williams Duarte disse:

Uma coisa é programar por Hobby e fazer alguns freelas, a outra é escalar um projeto, onde este demandara por profissionais qualificados mais a frente. Frameworks a grande vantagem é a agilidade no desenvolvimento e documentação extensa. 

 

Se uma empresa/aplicação cresce, pode ter certeza, os que vier a trabalhar na aplicação não pensaram igual a você, "gosto de desenvolver do zero", é você quem tem que se adequar ao mercado, e não ao mercado a você. 
 

Alguns frameworks tem suas limitações e o cake é um deles, este força a  usar suas convenções e não te ajudara a escalar o projeto. 

 

Não estou puxando sardinha pro Laravel, mas não vejo nenhuma limitação nesta obra de arte, principalmente em escalar qualquer projeto. 
"O que mais vejo em grupos é a limitação do próprio desenvolvedor", pois pulam etapas básicas e vai direto para o framework. 

 

:thumbsup:



 

Concordo em alguns pontos.

 

Porém, não vejo problema algum em desenvolver qualquer projeto do zero, nem vejo problema em documentá-lo, se o projeto recebe mais tarde outros profissionais para atuar, já que estes são denominados "profissionais mais a frente", eles saberão com certeza como dar continuidade, expandir o projeto em questão. Desenvolver um projeto do zero é uma arte bélica, é o verdadeiro sentido de "criar/desenvolver". O que o Mateus quer dizer, (eu acho) é que desenvolver do zero, ele puxa o controle pra ele, sem depender de limitação ou exigência da ferramenta.

 

Agora, se por exigência por parte do contratante, o "desenvolvedor do zero" tem de estar apto e preparado para utilizar um bom Framework, e não vejo porque não utilizar o Laravel, é bom framework realmente, e bem aceito no mercado.

Share this post


Link to post
Share on other sites
6 horas atrás, Alaerte Gabriel disse:

Porém, não vejo problema algum em desenvolver qualquer projeto do zero, nem vejo problema em documentá-lo, se o projeto recebe mais tarde outros profissionais para atuar.

O problema é este, muitos não sabem nem como se documenta um projeto, sem falar que sai caro fazer toda está documentação, se for para futuramente deixar um vespeiro na mão de outras pessoas, que escolha um bom FW e trabalhe em cima. Já trabalhei em empresas onde os antigos desenvolvedores deixaram bombas, se mexer quebra parte da aplicação, colocar novos requisitos nem pensar.

Estou falando de sistemas de médio a grande porte, onde é mais fácil deixar o legado pra trás, e ter como base para o novo um FW e  não de microsites onde um dois mete a mão.  Pois se a equipe cresce rapidamente, já tem toda um gama de documentação. Seja o FW front ou back.

Share this post


Link to post
Share on other sites

@Williams Duarte esse é um problema endêmico do mundo do desenvolvimento. Trabalhei nas mais variadas empresas, desde empresa com 3 pessoas, até empresa de âmbito nacional com um número expressivo de funcionários. Todas sofreram, sofrem e/ou sofrerão com esse problema. Somente os ERPs globais (SAP, AX, etc...) eu posso considerar uma exceção, pois, você deve desenvolver neles e ponto final. E nem são tão padronizados assim.

 

@Mateus Silva  normalmente, quando encontro com pessoas com resistência a frameworks, é por um pequeno sentimento de que se tornarão "menos" programadores por estarem utilizando uma ferramenta. Pergunta, o contador deixa de ser "menos" contador por utilizar uma calculadora ao invés de realizar os cálculos de cabeça? Alguém que usa uma calculadora HP 12C tem menos controle que alguém que utilize uma calculadora sharp elsi mate el-230? Ou até outros exemplos: um pedreiro é "menos pedreiro" por usar uma betoneira em detrimento de uma enchada com uma caixa de cimento? O marceneiro é "menos" marceneiro por utilizar ferramentas elétricas ao invés de manuais?

 

Nenhum deles deixará de ter controle na ação que desenpenharem, eles ainda serão totalmente responsável pelo trabalho que realizaram, e isso tem tudo haver com confiança na ferramenta que estão utilizado. O framework não é nada mais que uma ferramenta e, sua função, não difere em nada do que qualquer outra ferramenta aqui mencionada.  O contrário também é verdadeiro, ninguém será melhor que outro apenas por utilizar inúmeras ferramentas.

 

Hoje em dia não importa qual framework você utiliza, seja X, Y ou Z ou se nem utiliza um framework. Apenas que entenda os padrões que eles estão utilizando. Eu, particularmente, aprendi apenas um framework (CodeIgniter), pois ele não segue nenhum padrão. Mas trabalho basicamente com qualquer framework, apenas porque aprendi como deve funcionar o MVC, PSRs, Design Patterns, entre outros muitos estudos ligados ao desenvolvimento de software. Caso eu tenha alguma dúvida, o manual com certeza irá me atender. Se não me atender, existem fóruns para dúvidas rápidas (tal qual iMasters). Se nem isso me ajudar, bem, por que diabos usaram esse FrameWork?

 

Se achas um framework demasiado grande, utilize um micro framework. Todos eles são escalonáveis, se necessitar de algum módulo novo, basta inserí-los. Tenho certeza que sua produtividade se multiplicará, seus sistemas serão mais seguros e confiáveis e reduzirá o custo de manutenção. Acredito, custo de manutenção é intrinsicamente relacionado ao custo de desenvolvimento.

 

Se mesmo com as vantagens do uso de um framework tiver receio em utilizá-lo, não é um problema. Apenas atente-se para seguir os padrões mundiais de desenvolvimento PHP (PSR's) e, também, os padrões de desenvolvimento de software (design principles, design patterns, DDD, TDD, etc..)

 

Para finalizar, deixo a "frase do ano" dos meus colegas desenvolvedores aonde eu trabalho:

Citar

One man's crappy software is another man's full time job. ~Jessica Gaston

 

  • +1 3

Share this post


Link to post
Share on other sites

@Alaerte Gabriel Exatamente isso, eu gosto de ter liberdade total no meu sistema.

@Williams Duarte Sim! Trabalho em uma empresa onde o desenvolvedor criou o software estruturado, é uma bela de uma bagunça, e é por este motivo que quero fazer o negócio bem feito, pra não dar problema pra futuros desenvolvedores que venham a trabalhar nisso também.

@Gabriel Heming Então Gabriel, não é nem isto de "me tornar menos programador" é que eu realmente ainda não vi (ou não tive a necessidade) de algo que só um framework me disponibilizasse ou que fosse realmente muito melhor utilizar um. Quanto aos padrões, na maioria das minhas aplicações eu sigo o modelo MVC e PSR-4, recorri aqui ao fórum pra realmente ver o que seria mais útil e produtivo a longo prazo pro sistema.

Share this post


Link to post
Share on other sites

E PSR-7?

Share this post


Link to post
Share on other sites

A não ser que seja um sistema muito especifico, acredito que seja válido utilizar um framework, micro-framework ou então componentes que são mantidos pela comunidade PHP (Packagist/Composer), acho que assim é possível ficar mais focado em solucionar o problema da regra de negócio e não em problemas que já foram muito bem solucionados por várias pessoas da comunidade, como por exemplo: persistência no banco de dados, envio de e-mail, logs, etc.

 

No seu caso, como você disse que gostaria de ter uma "liberdade", acho que seria interessante a utilização de componentes, pois caso algum desses componentes não atenda mais a sua necessidade e você precise de algo mais especifico, acredito que terá menos dificuldade em alterá-lo; visto que realmente alguns frameworks ainda fazem com que o seu código fique acoplado ao código do framework, dificultando assim futuras modificações.

Share this post


Link to post
Share on other sites

@Gabriel Heming Não cheguei a ver sobre, vou pesquisar!

@deoliveiralucas Sim sim, uso o composer pra algumas coisas, twig, por exemplo. E é exatamente isso, o framework fica muito "dependente", tendo o código na mão eu acredito que seja melhor de adaptar ao que eu optar pelo melhor caminho, mas, como eu disse ai à cima, não afirmo nada, a gente tá sempre aprendendo coisas novas então se eu disse algo errado ou que possa ser tratado de forma melhor estou aberto à sugestões!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
    • By ricardonews
      olá pessoal, eu não estou conseguindo fazer o redirecionamento apos o cadastro para index, eu estou perdido entre os ifs e else, eu acho que só pode ser isso,  quando eu coloco meu código trava, e não faz nada. vou postar o print.

    • By Fábio Capello
      Oi pessoal tudo bem?sou novo no fórum estou desenvolvendo um sistema web preciso de ajuda meu dificuldade e para por segurança na páginas php.quando um usuário logado quer mudar de navegador ele cópia link e colou em outro navegador ele terá acesso mas quero que ele direcione para página de login 
    • By Dinho Nunes LC
      <div align="center" id="subtitulo"> Canais Abertos </div> <div class="ui cards"> <div class="card"> <div class="content"> <a href="globo.html" style="display: block; color: black"> <div align="center"> <div> <img class="ui tiny image" id="imagem_card_casa" src="assets/images/Rede_Globo_2014.png"> <div align="center" id = "nome_time_fora"> <b>Globo RJ</b> </div> </div> Onde "globo.html" seria substituído pelo link que esta em uma tabela do banco de dados.
       
      Já fiz a conexão. E tenho a base de dados pronta.
       
      Motivo pelo qual estou buscando ajuda:
       
      Faço manualmente a mudança de cada link (são mais de 300) diariamente para evitar copias de terceiros. Sendo assim poderia usar um CRUD para facilitar a troca dos links direto no banco de dados.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.