utilizando padrões de design no desenvolvimento rápido de aplicações de software zalkind lincoln...

24
Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Upload: benedita-milena-escobar-branco

Post on 07-Apr-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software

Zalkind Lincoln Dantas RochaJair Cavalcanti Leite

Page 2: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Objetivo

Mostrar o impacto do uso de padrão de design na arquitetura deste software bem como as dificuldades de implementá-lo utilizando uma linguagem em ambiente de desenvolvimento rápido de aplicações (RAD - Rapid Application Development)

Page 3: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Conteúdo

Patho Control - Descrição Problemas enfrentados Padrões de design Soluções encontradas

Page 4: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite
Page 5: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Etapas do Laudo

Page 6: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Modelo de navegação

Ir diretamente para as etapas de recepção, macroscopia, conclusão e entrega;

Navegar por estas etapas voltando ou avançando pelas telas que já percorreu;

Movimentar-se através de botões, opções de menu ou teclas de atalho.

Page 7: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Configuração de Ambiente Adequar comandos de acordo com a etapa. Exemplo:

Enviar um exame para entrega somente após ter sido concluído;

Excluir exame apenas na recepção e na entrega;

Comandos de voltar e avançar desabilitados quando na primeira e última etapa visitada.

Page 8: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Problema:

Construir uma arquitetura que: i) suporte o modelo de navegação

projetado; ii) permita implementar o recurso de

avançar e voltar; iii) facilite a configuração de

ambiente de acordo com a etapa.

Page 9: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrões de design

Um padrão de design é uma solução para um problema num determinado contexto.

Surgiu originalmente na arquitetura através dos trabalhos de Christopher Alexander.

Page 10: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrões de design

O objetivo é capturar a experiência acumulada de projetistas que perceberam padrões de solução para determinados problemas, catalogando e nomeando estas soluções testadas para serem reutilizadas mais facilmente.

Page 11: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrões de design

Alguns autores, como o grupo dos quatro, adaptaram este conceito, originalmente aplicado à arquitetura, para descrever soluções simples e elegantes para problemas específicos no design de softwares orientados a objetos.

Page 12: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Command

Parametrizar objetos por uma ação executa de modo a ser implementada em outro local;

Suportar a funcionalidade de desfazer comandos.

Page 13: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Command

ComandoExecute()

Chamador

ComandoConcretoEstado

Execute()

Cliente

RecebedorAção()

recebedor->Ação()

recebedor

Page 14: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Command (Aplicado)

Mudanças de etapas podem ser comandos;

Avançar e voltar podem ser desfazer e refazer;

Portanto o padrão COMMAND resolveria os problemas i e ii.

Page 15: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Command (Aplicado)

TCommand

Execute()UnExecute()Reversible()

TNotebook(from Unresolved References)

TfmPrincipal(from Main)

+nbAreaDeTrabalho

TIrParaCommand_ToPage : String_FromPage : String

Create()CreateNew()Execute()UnExecute()Reversible()<<Property>> FromPage()

-_NoteBook

+cmIrParaConteudo+cmIrParaRequisicao

+cmIrParaMacroscopia+cmIrParaMicroscopia

+cmIrParaConclusao+cmIrParaEntrega

Page 16: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Command (Aplicado)

TIrParaHistory_Index : Integer

Create()Present()Add()Next()Prior()Clear()

TList(from Classes)

-_HistoryList

Page 17: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Observer

Alterar um objeto requer mudanças em outros e não se sabe quantos objetos precisam ser mudados.

Page 18: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Observer

AssuntoVincular(Observador)Desvincular(Observador)Notificar()

ObservadorAtualizar()

*

for all o in observadores{ o->Atualizar() }

ObservadorConcretoEstado

Atualizar()

AssuntoConcretoEstado

GetEstado()SetEstado()

Assunto

Observadores

Retorna o Estado

Estado = assunto->GetEstado()

*

Page 19: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Observer (Aplicado)

Os controles podem ser observadores e é possível criar assuntos cujos estados indiquem quando estes controles devem ser habilitados ou desabilitados.

O padrão OBSERVER seria adequado para resolver o problema iii.

Page 20: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Padrão Observer (Aplicado)

TList(from Classes)

TSubject

Attach()Detach()Notify()

THistoryIrParaAtFirstSubject_AtFirst : boolean

SetState()Notify()<<Property>> AtFirst()

THistoryIrParaAtLastSubject_AtLast : boolean

SetState()Notify()<<Property>> AtLast()

T IrParaSubject_Page : String

FinalizarPosts()SetState()Notify()<<Property>> Page()

-_SubjectList

Page 21: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Considerações Finais

Os padrões realmente apresentaram soluções para problemas de design.

Adequações precisaram ser efetuadas: O padrão Subject perdeu o acoplamento

abstrato. Acoplar as modificações nos observadores concretos dentro do método Notify gerou altíssimo acoplamento.

Page 22: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Considerações Finais

Outras nem tanto: O padrão Command foi implementado

quase sem modificações em relação ao padrão proposto.

Novos assuntos e novos comandos foram acrescentados, inclusive fora do contexto de interface, sem implicação às classes já existentes.

Page 23: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Considerações Finais

Essas adaptações aos padrões originais para a solução dos problemas na linguagem utilizada podem contribuir na descrição de padrões mais específicos, chamados idiomas, podendo ser reutilizados em novos projetos

Page 24: Utilizando Padrões De Design No Desenvolvimento Rápido De Aplicações De Software Zalkind Lincoln Dantas Rocha Jair Cavalcanti Leite

Contatos:

Zalkind [email protected]

Jair Cavalcanti [email protected]