Uêba    RSS   

Design Patterns e MVC: Programando de maneira produtiva – Parte I

Ao deparar-se com um novo projeto de software, o desenvolvedor fica envolvido com diversas questões como seleção de SGBD (Sistema Gerenciador de Bancos de Dados) e linguagem de programação, estilo de interface, modelagem de dados e muitas outras.
Infelizmente, muitos deles parecem ignorar um passo anterior: a Engenharia de Software. Trata-se de uma abordagem sistemática e disciplinada, baseada em princípios da engenharia, para o desenvolvimento, operação e manutenção dos softwares. Podemos traçar uma analogia dizendo que você mesmo pode construir uma casinha de bonecas para sua filha, mas vai contratar um mestre-de-obras para fazer um “puxadinho” nos fundos da casa onde colocará aquelas tranqueiras das quais não quer se desfazer. Mas a casa onde você vai abrigar sua família, o edifício de escritórios onde centenas de colegas trabalham e a ponte que está no seu caminho para casa são obras que você só confiaria a um engenheiro civil. Da mesma forma, seu orçamento doméstico pode estar a cargo de uma planilha com uma macro de sua autoria, entretanto, se você não for um profissional de software, o ERP da sua empresa precisará de uma equipe especializada.
Dois tópicos interessantes da Engenharia de Software são os Padrões de Projeto (Design Patterns) e Padrões de Arquitetura (Architectural Patterns). Demonstrando que os desenvolvedores e programadores parecem apreciar as questões mais imediatistas do desenvolvimento, verificamos que os Design Patterns são muito mais comentados do que os Architectural Patterns.
Design Patterns são padrões de soluções que podem ser utilizados em problemas comuns do projeto de software. Não são modelos de código ou algoritmos, mas descrições de como resolver problemas que ocorrem em muitas situações.
Architectural Patterns são soluções para questões de maior escala na Engenharia de Software. Elas expressam a organização da estrutura básica dos sistemas de software. A primeira decisão de um projeto de software deve ser a seleção de uma Architectural Pattern. Muitos programadores parecem agir como se ninguém houvesse programado antes deles e partem para escrever seus códigos a partir de seus próprios algoritmos, copiando e cortando trechos de soluções de conhecidos, manuais e tutoriais, criando “colchas de retalhos” cujos esforços de manutenção são hercúleos.
Um dos Padrões de Arquitetura mais utilizados em aplicações web é o MVC (Model-View-Controller). Ele é baseado no princípio da separação dos dados (Modelo) da interface do usuário (Visão), de tal forma que uma alteração em uma destas partes não afete de maneira sensível à outra. A lógica da aplicação – também denominada Lógica do Negócio – fica à parte do Modelo e da Visão pela implementação de um terceiro componente, o Controle.
O Modelo é a representação do estado dos dados da aplicação em determinado instante. Ele é representado, muitas vezes, como os nós de um autômato finito. O MVC não sugere uma forma de implementar um mecanismo de armazenamento destes dados, pois é implícito ao Padrão de que isto estará encapsulado no Modelo. Ele pode ser implementado como uma classe para cada conjunto de objetos manipulados ou com a utilização de uma classe especializada para acesso ao SGBD.
A Visão implementa a interface do usuário, em nosso caso será geralmente um documento HTML, com extenso uso de Javascript, DOM, XML e JSON. Não é raro implementarmos visões distintas no mesmo aplicativo, uma vez que é cada vez mais comum termos de produzir interfaces para desktops e para dispositivos móveis.
O Controle é responsável por processar e responder a eventos e ações do usuário, invocando mudanças nos dados do Modelo. É comum ser representado como os arcos de um autômato finito.
Espero seus comentários para guiar os próximos posts sobre MVC e Padrões de Arquitetura e de Desenvolvimento.

 

7 Comentários

  1. raci0nal says:

    Assino o feed do seu blog há pouco tempo, mas devido a qualidade dos textos, não me contentei com os apenas 10 mais novos que o Google Reader me listou e comecei a dar uma olhada nos posts mais antigos, até que encontrei este aqui.
    Padrões de Projeto é algo que me interessa bastante, provavelmente será o tema do meu TCC, mais focado no MVC.
    Porém o que se acha de monte por aí é o bendito MVC para internet, acho que por ter se tornado quase um padrão para desenvolvedores Java, Ruby, etc.
    Já material e principalmente exemplos do padrão MVC aplicado à aplicações desktop é muito difícil de se encontrar.
    Até hoje não encontrei um exemplo de aplicação Desktop que comunique-se com uma base de dados e esteja escrito: “isso aqui é MVC”.
    Sei que o foco do seu Blog é para desenvolvimento web, mas como não vi a Parte II deste post, fica aí uma dica/pedido, se puder, escreva sobre MVC em aplicações Desktop.

    Abraços!

  2. Cid Andrade says:

    Valeu pela sugestão, farei o post em breve.

  3. Cid Andrade says:

    raciOnal, acho que encontrei algo. O artigo MVC meets Swing tem o que você deseja. Creio que seja melhor ler algo do nível dele do que esperar que eu caminhe pela seara do desktop

  4. Oi, li seu artigo e adorei. Estou pesquisando isso para definir e implementar nos sistemas uso. Bem aqui tem várias plataformas e linguagens, será um grande desafio… temos de Cobol a .NET, passando por ASP, VB e outros…. sei que al vários destes casos não conseguirei apliicar, mas quero aplicar ao menos nos sistemas q sou responsavel que são em ASP e ASP.NET…..
    Pode me indicar material para esta pesquisa ou se quiser debater sobre o assunto fique a vontade tb…

    []s
    Eduardo

  5. Cid Andrade says:

    Eduardo, nos próximos dias darei prosseguimento a este assunto, em novos posts

  6. [...] Design Patterns e MVC – Programando de maneira produtiva: Parte I [...]

  7. [...] então fazer um aplicativo com uma arquitetura MVC (Model-View-Controller). O NetBeans será utilizado como IDE para este desenvolvimento e o SGBDR [...]

Envie comentário