Buscar

62 - ARQUITETURA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

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.

Outros materiais