Você está na página 1de 9

Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI Frum Nacional de Iniciao Cientfica no Ensino Mdio e Tcnico

o - I FONAIC-EMT Cambori, SC, 22, 23 e 24 de abril de 2009 Universidade Federal de Santa Catarina - Colgio Agrcola de Cambori

___________________________________________________________________ ESTUDO DO PADRO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC Patrcia Freitas da Silva1, Jos Afonso Moraes Penha2, Gabriel Marcelino Alves3 RESUMO
Este trabalho discute a utilizao do design pattern (padro de projeto) Observer no desenvolvimento de softwares orientados a objetos utilizando a arquitetura MVC (Model, View, Controller). Verifica-se que sistemas de software tm desempenhado um papel cada vez mais preponderante no dia-a-dia das pessoas e, conseqentemente, se tornaram maiores e mais complexos. O grande desafio das equipes de desenvolvimento produzir sistemas seguros, eficientes, de fcil manuteno, reutilizveis e em prazos cada vez menores. Neste sentido, as propostas da metodologia de Programao Orientada a Objetos vm de encontro s necessidades das equipes, que so: permitir o compartilhamento e reutilizao de cdigo; reduzir a complexidade no desenvolvimento; simplificar o processo de manuteno e aumentar a produtividade. Atualmente, tal metodologia tm sido cada vez mais empregada em projetos de desenvolvimento de software. Isso possibilita identificar estruturas recorrentes, conhecidas como padres de projeto. No desenvolvimento deste trabalho realizou-se o estudo do padro de projeto Observer aliado ao padro arquitetural MVC. O estudo verificou o funcionamento deste padro como mecanismo de comunicao e propagao de mudanas entre os componentes de modelo, de controle e de visualizao. Com isso, foi possvel verificar a importncia dos padres de projetos no desenvolvimento de software e compreender como o padro de projeto Observer age em conjunto com o padro arquitetural MVC. Palavras-chave: Padres de Projeto, Model-View-Controller e Observer.

1 INTRODUO

Sistemas de software tm desempenhado um papel cada vez mais preponderante no dia-a-dia das pessoas e, conseqentemente, se tornaram maiores e mais complexos. A partir do momento em que os produtos de software se tornaram complexos e que as atividades do processo de desenvolvimento deixaram de ser atribudas a uma nica pessoa, passando a ser executada por uma equipe, surgiram medidas que se tornaram essenciais nesse processo. A obteno de informaes precisas sobre o produto a ser construdo e a comunicao adequada seja entre os membros da equipe nas vrias fases do desenvolvimento, seja entre os membros da equipe e usurios, tornaram-se essenciais para que as atividades envolvidas na construo de produtos de software sejam executadas a contento. Alm de
1 2

Aluna do Centro Federal de Educao Tecnolgica de So Paulo. E-mail: patty.cefetsjbv@gmail.com Aluno do Centro Federal de Educao Tecnolgica de So Paulo. E-mail: joseafonso.ti@gmail.com 3 Professor Orientador. E-mail: gabriel.marcelino@cefetsp.br

informaes precisas e comunicao adequada, outra medida se tornou essencial no desenvolvimento de sistemas de software: o uso de padres de projeto. O grande desafio das equipes de desenvolvimento de sistemas de software produzir sistemas seguros, eficientes, de fcil manuteno, reutilizveis e em prazos cada vez menores. Neste sentido, as propostas da metodologia de Programao Orientada a Objetos (POO) vm de encontro s necessidades das equipes, que so: permitir o compartilhamento e reutilizao de cdigo; reduzir a complexidade no desenvolvimento e simplificar o processo de manuteno e aumentar a produtividade (DEITEL, 2007; SEBESTA, 2003). Atualmente, tal metodologia tm sido cada vez mais empregada nos projetos de desenvolvimento de software. Isso possibilita identificar estruturas recorrentes, conhecidas como padres de projeto, ou design patterns. Um padro de projeto nomeia, abstrai e identifica os aspectos principais de uma estrutura de projeto comum para torn-la til para a criao de um projeto orientado a objetos reutilizvel (GAMMA et. al., 1995; LARMAN, 2007). O sucesso para o desenvolvimento de sistemas com tecnologia orientada a objetos est intimamente ligada a arquitetura que ser utilizada para construir o sistema. A tendncia indica que esta arquitetura est baseada na organizao da aplicao em componentes e na observao dos padres utilizados pelo mercado. A organizao em componentes a chave para a independncia entre os mdulos e esta independncia que vai atingir os objetivos de eficincia, escalabilidade, reutilizao e facilidade de manuteno. Um dos primeiros padres identificados o padro de arquitetura de software, conhecido como MVC (Model-View-Controller). Este padro divide a aplicao em trs componentes distintos, separando a tarefa de acesso aos dados da lgica do negcio e da apresentao e interao com o usurio. O presente trabalho apresenta o padro de projeto Observer como mecanismo de propagao de mudanas e sua utilizao na Arquitetura MVC. O objetivo mostrar como este padro auxilia no desenvolvimento de aplicaes utilizando tal arquitetura e apontar a importncia da utilizao de padres no desenvolvimento de software.

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

2 METODOLOGIA 2.1. Padres de Projeto O surgimento de padres de projeto (design patterns) teve incio na rea da Engenharia Civil por Chistopher Alexander, que percebeu que determinada soluo se aplicava mais de uma vez em diferentes problemas. Dessa maneira ele verificou que um padro descreve um problema que ocorre diversas vezes e a descrio do ncleo da soluo deste problema poderia ser reutilizado vrias vezes (BECK, 1987 apud ALEXANDER, 1977). No incio da dcada de 90, diante de diversas solues para problemas semelhantes de software, especialistas propuseram organiz-las em padres de software. Desde ento, vrios autores publicaram catlogos que organizam novos padres de projeto e mostram como implement-los em diferentes linguagens de programao (GAMMA et al.,1995; GRAND, 1998). Um padro de projeto uma soluo, j testada, de problemas recorrentes que identifica aspectos essenciais de uma estrutura de modo que ela possa ser usada para criar um projeto orientado a objeto reutilizvel. Alm disso, o emprego de padres de projeto no desenvolvimento de software tende a diminuir esforos e o tempo de implementao, produzir sistemas flexveis, reusveis, com alta qualidade e mais confiveis, j que as solues foram testadas e aprovadas em outros sistemas. Um padro de projeto pode ser descrito conforme apresenta a Tabela 1.
Tabela 1 Modelo de descrio para um padro de projeto.

Artefato Nome do Padro: Objetivo: Tambm Conhecido Como: Motivao: Aplicabilidade: Estrutura:

Descrio Descreve a essncia do padro. O nome deve ser curto. Descreve o que o padro faz. Lista de sinnimos para o determinado padro. Apresenta um exemplo de um problema e como o padro o resolve. Lista as situaes onde o padro pode ser aplicado. Um conjunto de diagramas de classes e os objetos que descrevem o padro.

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

Participantes:

Colaboraes:

Conseqncias:

Descreve as classes e objetos que participam junto ao padro e suas responsabilidades. Descreve como os participantes colaboram para cumprir com suas responsabilidades. Descreve os benefcios e os custos da utilizao do padro.

importante observar que um padro pode ser usado em diferentes casos e pode ser combinado a outros padres. Normalmente desenvolvedores experientes utilizam mais de um padro nas aplicaes, pois compreendem a importncia dos padres no entendimento e desenvolvimento do projeto. 2.2. Padro Arquitetural MVC Um Padro Arquitetural define a estrutura do sistema, oferecendo uma viso de mais alto nvel. Este padro trata efeitos globais do sistema e pode ser composto de vrios padres de projeto combinados. Um exemplo o padro arquitetural MVC (Model-View-Controller). A Arquitetura MVC tem por objetivo evitar o acoplamento entre os componentes e garantir a modularidade do sistema, separando os dados de sua apresentao. Ela separa as funes da aplicao (Modelo) das funes da apresentao (Viso) e permite a comunicao entre esses dois tipos de funes por meio de um Controle (BURBECK, 1980; PRIETO, 2001). No componente de Modelo se encontram os dados pertinentes aplicao. Esse componente faz uma interface entre o repositrio de dados e o Controle e pode ser o ncleo da aplicao. O componente de Visualizao a interface com o usurio, representando a forma como os dados sero apresentados, de acordo com cada requisio. Pode ser uma pgina de internet, uma aplicao desktop ou qualquer outro dispositivo que apresente dados ao usurio. O componente de Controle interliga a visualizao e o modelo. Nele esto concentradas as regras de negcio. Este componente responsvel por gerenciar todas as requisies realizadas pela visualizao e as consultas ao modelo.

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

O objetivo desta arquitetura tornar a aplicao modular. A modularidade consiste em dividir o software em componentes independentes. Isso facilita a resoluo de grandes problemas, transformando-os em outros menores, que podem ser resolvidos mais facilmente, alm de facilitar o planejamento do desenvolvimento. Assim, o emprego da arquitetura MVC facilita o desenvolvimento e eventuais atualizaes na aplicao, visto que os componentes so independentes. A arquitetura MVC oferece vantagens como: desenvolver mdulos de maneira individual; realizar manuteno simplificada; gerenciar vrias interfaces em uma mesma base de dados. Por outro lado pode se observar as seguintes desvantagens: modelar o sistema torna-se uma atividade mais demorada; requer mo-de-obra especializada; utilizar a arquitetura MVC em pequenas aplicaes no aconselhvel. A Figura 1 ilustra o padro arquitetural Model-View-Controller.

Figura 1 Representao grfica da Arquitetura MVC.

3 RESULTADOS E DISCUSSO O padro de projeto Observer tem a responsabilidade de propagar atualizaes. Ele define dependncia um para muitos entre os objetos para garantir que quando um objeto muda de estado todos os seus dependentes sejam notificados e atualizados automaticamente (GAMMA et al., 1995). Para garantir o correto funcionamento do padro Observer, necessrio a construo de uma classe conhecida como Observado e uma interface denominada Observador. Uma aplicao baseada no padro Observer pode ter mais de uma interface Observador, visto que ela representa as vrias visualizaes que podem existir.
Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

A interface Observador tem a funo de implementar um mtodo que atualize as visualizaes de acordo com o estado do componente modelo (Model). A classe Observado tem a finalidade de monitorar o componente modelo; detectar atualizaes; adicionar, excluir e modificar Observadores, alm de notificar os Observadores sobre atualizaes. A utilizao do padro de Projeto Observer apresenta as seguintes vantagens: Permite adicionar observadores sem modificar a classe Observado; Baixo acoplamento entre a classe Observado e a interface Observador; No momento que um objeto da classe Observador notificado sobre uma atualizao, ele tem a autonomia de considerar ou ignor-la; Na arquitetura MVC, o padro de projeto Observer utilizado como mecanismo de propagao de mudanas. Este mecanismo faz com que os componentes tenham coeso ao se comunicarem e que estejam de acordo com o estado do modelo. A Figura 2 ilustra o diagrama de classe do padro de projeto Observer.

Figura 2 Diagrama de Classes do Padro de Projeto Observer.

O funcionamento do mecanismo de propagao de mudanas na Arquitetura MVC ocorre da seguinte maneira: So criados registros de todas as Visualizaes e Controles; Tais registros so associados ao componente Modelo correspondente; Quando o Modelo atualizado, esse registro responsvel por notificar as visualizaes sobre tal alterao; Caso ocorram atualizaes no Modelo, o mecanismo de propagao de mudanas acionado;

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

Cada visualizao deve conter um procedimento de atualizao que dever ser executado quando o mecanismo for acionado. A Figura 3 apresenta o diagrama de seqncia onde empregado o

padro de projeto Observer aliado a Arquitetura MVC.

Figura 3 Diagrama de Seqncia do padro Observer e a Arquitetura MVC.

O padro de projeto Observer est disponvel na plataforma Java, no pacote java.util, para utiliz-lo necessrio importar as classes Observable e Observer. Essas classes servem para implementar o padro Observer. O Cdigo 1 apresenta o padro de projeto Observer codificado em linguagem Java.
Cdigo 1 Exemplo que demonstra o padro de projeto Observer.
import java.util.Observable; import java.util.Observer; public class Aviso extends Observable { private String messagem; public String getMessagem() { return messagem; } public void alteraMensagem(String messagem) { this.messagem = messagem; setChanged(); notifyObservers(messagem); } public static void main(String[] args) { Aviso mural = new Aviso(); Leitor afonso = new Leitor();
Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

Leitor patricia = new Leitor(); mural.addObserver(afonso); mural.addObserver(patricia); mural.alteraMensagem("Hoje e sabado..."); } } class Leitor implements Observer { public void update(Observable o, Object arg) { System.out.println("Mural foi alterado: " + arg); } }

O mtodo alteraMensagem, da classe Aviso, propaga a atualizao aos observadores ao invocar o mtodo notifyObservers.

4 CONCLUSO Este estudo verificou a importncia da utilizao de Padres de Projeto e Padres Arquiteturais no desenvolvimento de softwares orientado a objeto. A utilizao de padres pode minimizar o esforo no desenvolvimento de software e auxiliar no desenvolvimento de aplicaes. Alm disso, verificou-se que possvel utilizar vrios padres de projeto em uma mesma arquitetura. Observou-se que sem a utilizao do padro Observer em aplicaes baseadas em MVC o acoplamento entre os componentes aumenta, visto que no haver classes e interfaces especializadas para realizar as operaes designadas ao padro. O acoplamento consiste na dependncia que podem existir entre dois ou mais componentes de uma aplicao. Assim, verificou-se que o padro de projeto Observer, aliado arquitetura MVC, ajuda a manter a caracterstica de modularidade, reduz o acoplamento entre os componentes, realizando a comunicao entre eles e auxilia para que cada componente cumpra apenas as suas responsabilidades. O estudo realizado permitiu compreender a importncia do padro de projeto Observer e do padro arquitetural MVC no desenvolvimento de aplicaes orientadas a objeto. Com isso, o presente trabalho contribui para o desenvolvimento da segunda etapa do projeto de iniciao cientfica que consiste em modelar um sistema utilizando tais recursos.

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

REFERNCIAS BECK, K. Using Pattern Languages for Object-Oriented Programs. Technical Report N CR-87-43. Workshop on the Specification and Design for Object-Oriented Programming (OOPSLA). 1987 BURBECK, S. Applications Programming in Smalltalk-80: How to use ModelView-Controller (MVC), 1980. Disponvel em: < http://stwww.cs.uiuc.edu/users/smarch/st-docs/mvc.html>. Acesso em: 15 set. 2008. DEITEL, H. M.; DEITEL, P. J. Java como Programar. 6. ed. So Paulo: Pearson Prentice Hall, 2007. 1069 p. GAMMA, E.; VLISSIDES, J.; HELM, R.; JOHNSON, R. Design Patterns: Elements of Reusable Object Oriented Design. Addison-wesley, 1995. GRAND, M. Patterns in Java: A catalog of reusable Design Patterns Illustrated with UML. New York: John Wiley & Sons, Inc, 1998. 467 p. LARMAN, C. Utilizando UML e padres: Uma Introduo anlise e ao Projeto Orientados a Objeto e ao Desenvolvimento Iterativo. Traduo: Rosana Vacare Braga, et al. 3 edio. Porto Alegre: Bookman, 2007. PRIETO, G. A. Utilizao de Padres de Projeto de Software na Reengenharia de Sistemas. 2001. 94 f. Dissertao (Mestrado) - UFSCar, So Carlos - Sp, 2001. SEBESTA, R. W. Conceitos de linguagens de programao. traduo: Jos Carlos Barbosa.5 edio. Porto Alegre: Bookman,2003.

AGRADECIMENTOS Os autores agradecem ao bibliotecrio Giovani Ribeiro e ao CEFET-SP pelo apoio acadmico e financeiro.

Anais da III Mostra Nacional de Iniciao Cientfica e Tecnolgica Interdisciplinar III MICTI - 2009 e I Frum Nacional de Iniciao Cientifica no Ensino Mdio e Tcnico I FONAIC EMT - 2009 Universidade Federal de Santa Catarina Colgio Agrcola de Cambori

Você também pode gostar