De que se trata o artigo:

Apresenta a experiência do desenvolvimento de uma aplicação web de compra coletiva usando a arquitetura MVC e explorando os recursos do framework CodeIgniter.

Em que situação o tema é útil:

O artigo destaca que manutenção e reuso de software são preocupações de um engenheiro de software e ilustra como essas questões podem ser tratadas através da apresentação do desenvolvimento de uma aplicação web usando a arquitetura MVC e framework CodeIgniter.

Resumo DevMan:

Este artigo apresenta a engenheiros e projetistas de software os benefícios, do ponto de vista da manutenção e reuso de software, proporcionado pela arquitetura MVC no desenvolvimento de aplicação web quando implementado com os recursos oferecidos por um framework.

Autores: Thiago Barbosa Couto e Antonio Mendes da Silva Filho

Software é um artefato sujeito a mudanças e manutenção de software deve ser preocupação contínua do engenheiro de software. Ao longo das duas últimas décadas, diversos esforços têm sido observados visando facilitar o desenvolvimento de software. Como exemplo disso, destacam-se as contribuições de padrões de projeto, tais como observer, composite e strategy. Principalmente no decorrer da última década, houve crescimento no uso de padrões de projetos na engenharia de software. Isso ocorreu, em parte, devido ao crescimento da complexidade dos sistemas e a necessidade de reutilização do software.

Os padrões de projetos possibilitam que classes de sistemas orientados a objetos sejam flexíveis, possibilitando ao projetista de software reutilizar componentes e/ou técnicas que já tiveram êxito em outros sistemas, como também ajudam os desenvolvedores a buscar minimizar erros cometidos em projetos anteriores.

Nota-se que esses padrões possuem um relacionamento direto com uma arquitetura que atende a necessidades da programação orientada a objeto, denominada de MVC (Model-View-Controller). O componente model dessa arquitetura é o objeto que interage diretamente com o banco de dados, enquanto que view é o objeto que representa o conteúdo exibido na tela, e controller define a maneira como a interface de usuário reage com a camada de dados. Isso possibilita um desenvolvimento em paralelo já que os três componentes são independentes, além de facilitar a manutenção.

Adicionalmente, o uso difundido do paradigma de orientação a objetos e propostas de novas arquiteturas de software tem fomentado o surgimento de frameworks que suportam um conjunto de API’s e bibliotecas, visando facilitar a reutilização e a manutenção dos códigos. Hoje, vários deles estão disponíveis para diferentes linguagens de programação. Por exemplo, na linguagem PHP existem diversos frameworks como o Cake, CodeIgniter e o Zend.

Os frameworks oferecem facilidade de desenvolvimento e há expectativa que seu uso possa propiciar minimização do esforço aos programadores, o que pode resultar em suporte à produtividade. Nesse sentido, este artigo apresenta uso da arquitetura MVC, avaliando suas vantagens e limitações no desenvolvimento de uma aplicação web de compra coletiva. Para o desenvolvimento da aplicação foi utilizado o framework CodeIgniter e a arquitetura MVC, discutida a seguir.

Arquitetura MVC

O aumento da complexidade e tamanho do software pode causar dificuldades na manutenção do software. O crescimento contínuo dos sistemas de software requer que seu desenvolvimento seja feito de maneira planejada e componentizada, de modo a tornar os sistemas mais flexíveis, facilitando a manutenção e seu desenvolvimento. Por exemplo, com o uso da arquitetura em camadas, é possível separar os dados de persistência, da lógica do sistema e da interface do usuário, facilitando o desenvolvimento e a manutenção.

A arquitetura MVC (Model-View-Controller) foi criada nos anos 80 na Xerox Parc, tendo como princípio a separação entre a camada de persistência da camada de apresentação do usuário. Para isso, foi criada uma arquitetura com três camadas, onde cada camada é representada por um objeto. O modelo é o objeto de persistência, a visão é o objeto de interface com o usuário e o controlador define como as interfaces do usuário irão reagir com o sistema. Esses objetos podem se comunicar entre si. A arquitetura MVC é atualmente utilizada em diversos frameworks de várias linguagens como JAVA, PHP e .NET devido às vantagens que oferece, tais como reuso do código e maior facilidade de manutenção do software.

Segundo Brian Kotek, MVCéum padrão de projetoque reforçaa separaçãoentre entrada, processamento esaídade uma aplicação.Para este fim,uma aplicaçãoé dividida emtrês componentes principais: o modelo, a visãoe o controlador.Cada um desses componenteslida com um conjuntoespecífico de tarefas. A Figura 1 mostra o funcionamento da arquitetura MVC.

Figura 1. Arquitetura MVC

Observa-se que as camadas View (Visão) e Model (Modelo) comunicam-se através de um Controller (Controlador) que recebe os dados de entrada do usuário através da View e envia os dados para o Model onde os dados são processados e retornados para a View. A camada View é a interface que o usuário interage. Em uma aplicação web, por exemplo, essa camada pode ser representada por um código HTML. O Model representa a camada de persistência de dados, essa camada é responsável por receber os dados vindos da View, processá-los e enviá-los de volta a View. O Controller interpreta requisições vindas do usuário através da View e faz a chamada do Model necessário para interpretar a requisição.

Segundo Gamma et al (2006), ”A abordagem MVC separa a View e Model pelo estabelecimento de um protocolo inserção/notificação (subscribe/notify). Uma View deve garantir que sua aparência reflita o estado do Model. Sempre que os dados do Model mudam, o Model notifica as Views que dependem dele. Em resposta, cada View tem a oportunidade de atualiza-se”.

A Figura 2 ilustra como as Views estão relacionadas a um único Model. Nesse exemplo, qualquer alteração do valor em Model resulta que todas as Views sejam notificadas da alteração e automaticamente atualizadas em conformidade com os dados de Model.

...
Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo