Baixe o app para aproveitar ainda mais
Prévia do material em texto
Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI Fórum Nacional de Iniciação Científica no Ensino Médio e Técnico - I FONAIC-EMT Camboriú, SC, 22, 23 e 24 de abril de 2009 Universidade Federal de Santa Catarina - Colégio Agrícola de Camboriú ___________________________________________________________________ ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC Patrícia Freitas da Silva1, José Afonso Moraes Penha2, Gabriel Marcelino Alves3 RESUMO Este trabalho discute a utilização do design pattern (padrão de projeto) Observer no desenvolvimento de softwares orientados a objetos utilizando a arquitetura MVC (Model, View, Controller). Verifica-se que sistemas de software têm desempenhado um papel cada vez mais preponderante no dia-a-dia das pessoas e, conseqüentemente, se tornaram maiores e mais complexos. O grande desafio das equipes de desenvolvimento é produzir sistemas seguros, eficientes, de fácil manutenção, reutilizáveis e em prazos cada vez menores. Neste sentido, as propostas da metodologia de Programação Orientada a Objetos vêm de encontro às necessidades das equipes, que são: permitir o compartilhamento e reutilização de código; reduzir a complexidade no desenvolvimento; simplificar o processo de manutenção e aumentar a produtividade. Atualmente, tal metodologia têm sido cada vez mais empregada em projetos de desenvolvimento de software. Isso possibilita identificar estruturas recorrentes, conhecidas como padrões de projeto. No desenvolvimento deste trabalho realizou-se o estudo do padrão de projeto Observer aliado ao padrão arquitetural MVC. O estudo verificou o funcionamento deste padrão como mecanismo de comunicação e propagação de mudanças entre os componentes de modelo, de controle e de visualização. Com isso, foi possível verificar a importância dos padrões de projetos no desenvolvimento de software e compreender como o padrão de projeto Observer age em conjunto com o padrão arquitetural MVC. Palavras-chave: Padrões de Projeto, Model-View-Controller e Observer. 1 INTRODUÇÃO Sistemas de software têm desempenhado um papel cada vez mais preponderante no dia-a-dia das pessoas e, conseqüentemente, 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 atribuídas a uma única pessoa, passando a ser executada por uma equipe, surgiram medidas que se tornaram essenciais nesse processo. A obtenção de informações precisas sobre o produto a ser construído e a comunicação adequada seja entre os membros da equipe nas várias fases do desenvolvimento, seja entre os membros da equipe e usuários, tornaram-se essenciais para que as atividades envolvidas na construção de produtos de software sejam executadas a contento. Além de 1 Aluna do Centro Federal de Educação Tecnológica de São Paulo. E-mail: patty.cefetsjbv@gmail.com 2 Aluno do Centro Federal de Educação Tecnológica de São Paulo. E-mail: joseafonso.ti@gmail.com 3 Professor Orientador. E-mail: gabriel.marcelino@cefetsp.br Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 2 informações precisas e comunicação adequada, outra medida se tornou essencial no desenvolvimento de sistemas de software: o uso de padrões de projeto. O grande desafio das equipes de desenvolvimento de sistemas de software é produzir sistemas seguros, eficientes, de fácil manutenção, reutilizáveis e em prazos cada vez menores. Neste sentido, as propostas da metodologia de Programação Orientada a Objetos (POO) vêm de encontro às necessidades das equipes, que são: permitir o compartilhamento e reutilização de código; reduzir a complexidade no desenvolvimento e simplificar o processo de manutenção e aumentar a produtividade (DEITEL, 2007; SEBESTA, 2003). Atualmente, tal metodologia têm sido cada vez mais empregada nos projetos de desenvolvimento de software. Isso possibilita identificar estruturas recorrentes, conhecidas como padrões de projeto, ou design patterns. Um padrão de projeto nomeia, abstrai e identifica os aspectos principais de uma estrutura de projeto comum para torná-la útil para a criação de um projeto orientado a objetos reutilizável (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 tendência indica que esta arquitetura está baseada na organização da aplicação em componentes e na observação dos padrões utilizados pelo mercado. A organização em componentes é a chave para a independência entre os módulos e esta independência é que vai atingir os objetivos de eficiência, escalabilidade, reutilização e facilidade de manutenção. Um dos primeiros padrões identificados é o padrão de arquitetura de software, conhecido como MVC (Model-View-Controller). Este padrão divide a aplicação em três componentes distintos, separando a tarefa de acesso aos dados da lógica do negócio e da apresentação e interação com o usuário. O presente trabalho apresenta o padrão de projeto Observer como mecanismo de propagação de mudanças e sua utilização na Arquitetura MVC. O objetivo é mostrar como este padrão auxilia no desenvolvimento de aplicações utilizando tal arquitetura e apontar a importância da utilização de padrões no desenvolvimento de software. Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 3 2 METODOLOGIA 2.1. Padrões de Projeto O surgimento de padrões de projeto (design patterns) teve início na área da Engenharia Civil por Chistopher Alexander, que percebeu que determinada solução se aplicava mais de uma vez em diferentes problemas. Dessa maneira ele verificou que um padrão descreve um problema que ocorre diversas vezes e a descrição do núcleo da solução deste problema poderia ser reutilizado várias vezes (BECK, 1987 apud ALEXANDER, 1977). No início da década de 90, diante de diversas soluções para problemas semelhantes de software, especialistas propuseram organizá-las em padrões de software. Desde então, vários autores publicaram catálogos que organizam novos padrões de projeto e mostram como implementá-los em diferentes linguagens de programação (GAMMA et al.,1995; GRAND, 1998). Um padrão de projeto é uma solução, 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 reutilizável. Além disso, o emprego de padrões de projeto no desenvolvimento de software tende a diminuir esforços e o tempo de implementação, produzir sistemas flexíveis, reusáveis, com alta qualidade e mais confiáveis, já que as soluções foram testadas e aprovadas em outros sistemas. Um padrão de projeto pode ser descrito conforme apresenta a Tabela 1. Tabela 1 – Modelo de descrição para um padrão de projeto. Artefato Descrição Nome do Padrão: Descreve a essência do padrão. O nome deve ser curto. Objetivo: Descreve o que o padrão faz. Também Conhecido Como: Lista de sinônimos para o determinado padrão. Motivação: Apresenta um exemplo de um problemae como o padrão o resolve. Aplicabilidade: Lista as situações onde o padrão pode ser aplicado. Estrutura: Um conjunto de diagramas de classes e os objetos que descrevem o padrão. Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 4 Participantes: Descreve as classes e objetos que participam junto ao padrão e suas responsabilidades. Colaborações: Descreve como os participantes colaboram para cumprir com suas responsabilidades. Conseqüências: Descreve os benefícios e os custos da utilização do padrão. É importante observar que um padrão pode ser usado em diferentes casos e pode ser combinado a outros padrões. Normalmente desenvolvedores experientes utilizam mais de um padrão nas aplicações, pois compreendem a importância dos padrões no entendimento e desenvolvimento do projeto. 2.2. Padrão Arquitetural MVC Um Padrão Arquitetural define a estrutura do sistema, oferecendo uma visão de mais alto nível. Este padrão trata efeitos globais do sistema e pode ser composto de vários padrões de projeto combinados. Um exemplo é o padrão 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 apresentação. Ela separa as funções da aplicação (Modelo) das funções da apresentação (Visão) e permite a comunicação entre esses dois tipos de funções por meio de um Controle (BURBECK, 1980; PRIETO, 2001). No componente de Modelo se encontram os dados pertinentes à aplicação. Esse componente faz uma interface entre o repositório de dados e o Controle e pode ser o núcleo da aplicação. O componente de Visualização é a interface com o usuário, representando a forma como os dados serão apresentados, de acordo com cada requisição. Pode ser uma página de internet, uma aplicação desktop ou qualquer outro dispositivo que apresente dados ao usuário. O componente de Controle interliga a visualização e o modelo. Nele estão concentradas as regras de negócio. Este componente é responsável por gerenciar todas as requisições realizadas pela visualização e as consultas ao modelo. Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 5 O objetivo desta arquitetura é tornar a aplicação modular. A modularidade consiste em dividir o software em componentes independentes. Isso facilita a resolução de grandes problemas, transformando-os em outros menores, que podem ser resolvidos mais facilmente, além de facilitar o planejamento do desenvolvimento. Assim, o emprego da arquitetura MVC facilita o desenvolvimento e eventuais atualizações na aplicação, visto que os componentes são independentes. A arquitetura MVC oferece vantagens como: desenvolver módulos de maneira individual; realizar manutenção simplificada; gerenciar várias 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 mão-de-obra especializada; utilizar a arquitetura MVC em pequenas aplicações não é aconselhável. A Figura 1 ilustra o padrão arquitetural Model-View-Controller. Figura 1 – Representação gráfica da Arquitetura MVC. 3 RESULTADOS E DISCUSSÃO O padrão de projeto Observer tem a responsabilidade de propagar atualizações. Ele define dependência 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 padrão Observer, é necessário a construção de uma classe conhecida como Observado e uma interface denominada Observador. Uma aplicação baseada no padrão Observer pode ter mais de uma interface Observador, visto que ela representa as várias visualizações que podem existir. Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 6 A interface Observador tem a função de implementar um método que atualize as visualizações de acordo com o estado do componente modelo (Model). A classe Observado tem a finalidade de monitorar o componente modelo; detectar atualizações; adicionar, excluir e modificar Observadores, além de notificar os Observadores sobre atualizações. A utilização do padrão 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 atualização, ele tem a autonomia de considerar ou ignorá-la; Na arquitetura MVC, o padrão de projeto Observer é utilizado como mecanismo de propagação de mudanças. Este mecanismo faz com que os componentes tenham coesão ao se comunicarem e que estejam de acordo com o estado do modelo. A Figura 2 ilustra o diagrama de classe do padrão de projeto Observer. Figura 2 – Diagrama de Classes do Padrão de Projeto Observer. O funcionamento do mecanismo de propagação de mudanças na Arquitetura MVC ocorre da seguinte maneira: • São criados registros de todas as Visualizações e Controles; • Tais registros são associados ao componente Modelo correspondente; • Quando o Modelo é atualizado, esse registro é responsável por notificar as visualizações sobre tal alteração; • Caso ocorram atualizações no Modelo, o mecanismo de propagação de mudanças é acionado; Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 7 • Cada visualização deve conter um procedimento de atualização que deverá ser executado quando o mecanismo for acionado. A Figura 3 apresenta o diagrama de seqüência onde é empregado o padrão de projeto Observer aliado a Arquitetura MVC. Figura 3 – Diagrama de Seqüência do padrão Observer e a Arquitetura MVC. O padrão de projeto Observer está disponível na plataforma Java, no pacote java.util, para utilizá-lo é necessário importar as classes Observable e Observer. Essas classes servem para implementar o padrão Observer. O Código 1 apresenta o padrão de projeto Observer codificado em linguagem Java. Código 1 – Exemplo que demonstra o padrão 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 Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 8Leitor 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 método alteraMensagem, da classe Aviso, propaga a atualização aos observadores ao invocar o método notifyObservers. 4 CONCLUSÃO Este estudo verificou a importância da utilização de Padrões de Projeto e Padrões Arquiteturais no desenvolvimento de softwares orientado a objeto. A utilização de padrões pode minimizar o esforço no desenvolvimento de software e auxiliar no desenvolvimento de aplicações. Além disso, verificou-se que é possível utilizar vários padrões de projeto em uma mesma arquitetura. Observou-se que sem a utilização do padrão Observer em aplicações baseadas em MVC o acoplamento entre os componentes aumenta, visto que não haverá classes e interfaces especializadas para realizar as operações designadas ao padrão. O acoplamento consiste na dependência que podem existir entre dois ou mais componentes de uma aplicação. Assim, verificou-se que o padrão de projeto Observer, aliado á arquitetura MVC, ajuda a manter a característica de modularidade, reduz o acoplamento entre os componentes, realizando a comunicação entre eles e auxilia para que cada componente cumpra apenas as suas responsabilidades. O estudo realizado permitiu compreender a importância do padrão de projeto Observer e do padrão arquitetural MVC no desenvolvimento de aplicações orientadas a objeto. Com isso, o presente trabalho contribui para o desenvolvimento da segunda etapa do projeto de iniciação científica que consiste em modelar um sistema utilizando tais recursos. Anais da III Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar – III MICTI - 2009 e I Fórum Nacional de Iniciação Cientifica no Ensino Médio e Técnico – I FONAIC – EMT - 2009 Universidade Federal de Santa Catarina – Colégio Agrícola de Camboriú 9 REFERÊNCIAS 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 Model- View-Controller (MVC), 1980. Disponível em: < http://st- www.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. São 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 padrões: Uma Introdução à análise e ao Projeto Orientados a Objeto e ao Desenvolvimento Iterativo. Tradução: Rosana Vacare Braga, et al. 3ª edição. Porto Alegre: Bookman, 2007. PRIETO, G. A. Utilização de Padrões de Projeto de Software na Reengenharia de Sistemas. 2001. 94 f. Dissertação (Mestrado) - UFSCar, São Carlos - Sp, 2001. SEBESTA, R. W. Conceitos de linguagens de programação. tradução: José Carlos Barbosa.5ª edição. Porto Alegre: Bookman,2003. AGRADECIMENTOS Os autores agradecem ao bibliotecário Giovani Ribeiro e ao CEFET-SP pelo apoio acadêmico e financeiro.
Compartilhar