• Nenhum resultado encontrado

SlidesValeria-Padroes-parte2-

N/A
N/A
Protected

Academic year: 2021

Share "SlidesValeria-Padroes-parte2-"

Copied!
45
0
0

Texto

(1)

Padrões de Software

Exemplos

Exemplos

Valéria Lelli

(2)

Agenda



Introdução



Requisitos

 Padrão de Caso de Uso CRUD

 Análise  Análise  Padrão Party  Projeto  Padrões GoF  Singleton  Padrão arquitetural – MVC  Implementação  Padrão de idiomas Testes

(3)
(4)

Requisitos



Padrões de Requisitos



Documentam as necessidades do usuário



Documentam as necessidades do usuário e o

comportamento genérico do sistema em um alto nível

comportamento genérico do sistema em um alto nível

de abstração



Englobam a captura de requisitos funcionais e

não-funcionais



Ações que os desenvolvedores de software podem

tomar para melhorar os requisitos não-funcionais

(5)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Contexto

 Este padrão é utilizado para a documentação dos requisitos

de manutenção em sistemas da informação, por meio do uso de modelos e especificações de casos de uso. Os requisitos de de modelos e especificações de casos de uso. Os requisitos de manutenção são caracterizados por operações de Inclusão, Consulta, Alteração e Exclusão



Problema

 Como documentar os requisitos funcionais de inserção,

(6)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Forças

 As operações de manutenção podem ocorrer tanto sobre entidades

simples, com poucos atributos, como em entidades complexas, com vários atributos e relacionamentos.

vários atributos e relacionamentos.

 As operações de inclusão, alteração, remoção e consulta devem ser

tratadas e seus requisitos documentados. Esses requisitos incluem validação de atributos e regras de negócio.

 Os atributos mantidos de cada entidade devem ser documentados.  Os requisitos documentados devem ser de fácil entendimento para

os usuários e para a equipe de desenvolvimento.

(7)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Solução

 Organizar o fluxo de eventos do caso de uso em cinco

subfluxos (Fluxo básico, Incluir, Alterar, Remover e Consultar)

 O Fluxo básico descreve a condição de início e desvia o fluxo

para um dos sub-fluxos, de acordo com as operações disponíveis: Incluir, Alterar, Excluir e Consultar.

(8)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Solução

 O subfluxo Incluir apresenta os atributos para a inclusão e descreve

o comportamento da inclusão.

O subfluxo Alterar apresenta os atributos atualizáveis, exibe seus

 O subfluxo Alterar apresenta os atributos atualizáveis, exibe seus

valores e descreve o comportamento da atualização.

 O subfluxo Remover descreve o comportamento da remoção e

documenta as restrições da exclusão da entidade.

 O subfluxo Consultar documenta requisitos para localização da

entidade, que atributos devem ser filtros para a consulta, quais são obrigatórios e quais atributos são exibidos no resultado.

(9)

Padrão de Caso de Uso CRUD

(10)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Padrões de Caso de Uso CRUD



Estrutura



Fluxo básico (happy day)



Fluxo básico (happy day)



Subfluxo Incluir <nome da entidade>



Subfluxo Alterar <nome da entidade>



Subfluxo Remover <nome da entidade>



Subfluxo Consultar <nome da entidade>

(11)

Padrão de Caso de Uso CRUD

[Souza et al., 2005]



Estrutura

 1. Este fluxo inicia quando o <nome do ator> solicita

consultar <nome da entidade>;

 2. O sistema solicita o preenchimento dos seguintes filtros:

- <lista de filtros>

 3. O <nome do ator> preenche os filtros e solicita a consulta;  4. O sistema apresenta as seguintes informações dos <nome

da entidade> obtidos na consulta: - <lista de atributos>

(12)

Análise



Padrões de Análise



Documentam as necessidades do usuário



Inicialmente apresentados como complementos aos

padrões de projeto

É composto, entre outras partes, de um fragmento de diagrama de classes que pode ser customizado para uma situação de modelagem

padrões de projeto



Um passo antes do projeto



Modelo de análise que focaliza nas estruturas

conceituais



Padrões de análise do Martin Fowler



Domínio de conhecimento de software de negócios



Party, quantity, subtype state machines, dentre

(13)

Party

Analysis Patterns: Reusable Object Models

[Martin Fowler, 1997]



Problema

 Modelar uma agenda de endereços que contém informação

sobre pessoas e organizações.



Motivação

 “Observe a sua agenda de endereços: o que vê?

 Verá um conjunto de endereços, números de telefone, e

endereços de e-mail … todos ligados a algo. Geralmente esse algo é uma pessoa, embora por vezes também

(14)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Contexto

 Pessoas e organizações estão presentes em praticamente

todos os sistemas que lidam com o fator humano. A agenda de endereços é apenas um exemplo. Pessoas e organizações de endereços é apenas um exemplo. Pessoas e organizações partilham um comportamento semelhante: acedem a um

conjunto de objectos comuns (e.g., números de telefone, endereços de e-mail) e efetuam operações sobre eles.

(15)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Requisitos

 Funcionais

 Cada Pessoa ou Organização tem um conjunto de:

R1: números de telefone

 R1: números de telefone  R2: endereços

 R3: endereços de e-mail que são superiores ou iguais a

zero

 R4: Pessoa e Organização partilham alguns dados

descritivos.

 R5: cada Pessoa ou Organização pode obter, adicionar

ou modificar informação sobre outras pessoas ou organizações.

(16)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]

(17)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Requisitos

 Não-funcionais

 R6: Pessoa/Organização tem de ser autorizada

(segurança). (segurança).

 R7: Informação tem de ser obtida rapidamente

(performance).

 R8: Informação tem de estar correta (precisão).

 Resolução de conflitos

 Os requisitos não-funcionais de performance (R7) e

segurança (R6) podem entrar em conflito. Este é

solucionado pela atribuição de prioridades aos diferentes requisitos.

(18)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Prioridades

--- Alta prioridade --- Baixa prioridade R8 R7 R6 R8 R7 R6

(19)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Estrutura

(20)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Descrição dos objetos



Party

: supertipo que define uma pessoa ou

organização, contendo as funcionalidades comuns a

ambas, de maneira que a associação entre informações

ambas, de maneira que a associação entre informações

fosse relativa às partes e não à pessoa ou organização

diretamente.



Pessoa

e

Organização

contêm dados específicos a cada

uma das entidades que descrevem.



Party

é definida através das relações com as classes

(21)

Party

Analysis Patterns: Reusable Object

Models

[Martin Fowler, 1997]



Participantes

 Pessoa e Organização



Padrões Relacionados

Role Object

Para adaptar um objeto a diferente necessidades de cliente de forma transparente.

Associando papéis a objetos, um objeto pode ser usado em

contextos diferentes, sendo conhecido, em cada um, por

 Role Object



Implementação

 Use uma linguagem orientada a objetos para a

implementação deste padrão. Apesar de ser um sistema muito simples, deverá resistir à tentação de implementar numa única classe. Evitar o anti-padrão: The Blob.

Os padrões indicam exatamente o contrário. O foco dos anti-padrões são os erros comuns dos projetistas e as principais falhas

conhecido, em cada um, por um diferente papel.

(22)

Projeto



Padrões de Projetos



Definem soluções para problemas de projeto de

software



“Um esquema para o refinamento de subsistemas ou de



“Um esquema para o refinamento de subsistemas ou de

componentes de sistemas ou as relações entre eles.”



“...resolvem um problema geral de projeto num

contexto particular.”, [GoF]



Padrões de projeto que incluem detalhes de código de

baixo nível



Aplicados a diferentes tipos de problemas

(23)
(24)

Singleton

[Gamma et al., 1995]



Intenção



Garantir que uma classe tenha uma única instância e

um único ponto de acesso a essa instância

Motivação



Motivação



Sistemas podem precisar de classes com uma única

instância

 Um único valor de precisão  Um único sistema de arquivos

 Uma aplicação que precisa de uma infra-estrutura de log de

dados, pode-se implementar uma classe no padrão singleton. Dessa forma, existe apenas um objeto responsável pelo log em

(25)

Singleton

[Gamma et al., 1995]



Use um Singleton quando:



É preciso que exista apenas uma instância de uma

classe e essa instância deve ser acessada através de um

único ponto bem conhecido

único ponto bem conhecido



Quando essa classe possa ser estendida através de

derivação e que os seus clientes possam usar a

instância estendida sem modificar seu código

(26)

Singleton

[Gamma et al., 1995]



Estrutura

Exemplo: Seu sistema pode ter apenas um gerenciador de janelas,

ou gerenciador de impressão, ou então um

único ponto de acesso ao banco de dados.

 Acesso controlado à instância única

 Evita poluição do espaço de nomes com variáveis globais

(27)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Objetivos

 Separa uma aplicação interativa em três componentes:

Modelo, Visão e Controlador.

 O Modelo contém as funcionalidades básicas (lógica de  O Modelo contém as funcionalidades básicas (lógica de

negócios) e os dados

 A Visão exibe a informações para o usuário  O Controlador manipula a entrada do usuário

 A idéia é permitir que uma mesma lógica de negócios possa

ser acessada e visualizada através de várias interfaces.

 Na arquitetura MVC, a lógica de negócios (chamaremos de

Modelo) não sabe de quantas e nem quais as interfaces com o usuário estão exibindo seu estado.

(28)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]

(29)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Problema



Interfaces com o usuário são sensíveis a mudanças:

 Estender uma funcionalidade de uma aplicação pode

modificar menus para acessar essas novas funções e modificar menus para acessar essas novas funções e

requer uma adaptação na interface que pode implicar em mudanças no código.

 A aplicação pode ter que ser implementada em outra

plataforma com diferente look and feel.

 O usuário está sempre querendo mudar funcionalidades

e a interface das aplicações. Se o sistema não suporta estas mudanças, temos um grande problema!

(30)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Problema



A mesma aplicação possui diferentes requisitos

dependendo do usuário:

 Um digitador prefere uma interface onde tudo pode ser feito

através do teclado e visualizado como texto.

Um digitador prefere uma interface onde tudo pode ser feito através do teclado e visualizado como texto.

 Um gerente prefere uma interface através do mouse e de

menus com visualização gráfica



Nesse contexto, se o código para a interface gráfica é

muito acoplado ao código da aplicação, o

desenvolvimento pode se tornar muito caro e difícil.



Quantas interfaces possíveis existem para a lógica de

(31)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Solução

 O MVC separa a modelagem do domínio, a apresentação e as

ações com base na entrada do usuário em três classes distintas:

Modelo: gerencia o comportamento e os dados do

 Modelo: gerencia o comportamento e os dados do

domínio da aplicação, responde aos pedidos de

informações sobre seu estado (geralmente da visão), e responde às instruções para mudança de estado

(geralmente do controlador).

 Visão: a visão gerencia a exibição de informações e

obtém os dados do Modelo.

 Controlador: o controlador interpreta as entradas de

(32)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]

 É importante notar que tanto a visão e o controlador dependem do

(33)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Benefícios



Suporta várias visões

 Porque a visão é separada do modelo e não há nenhuma

dependência direta do modelo para a visão. dependência direta do modelo para a visão.

 A interface do usuário pode exibir múltiplas visualizações

dos mesmos dados ao mesmo tempo.

 Por exemplo, várias páginas em uma aplicação Web pode

usar os objetos do mesmo modelo.

 Uma aplicação Web que permite ao usuário mudar a

aparência das páginas. Essas páginas exibem os mesmos dados do modelo compartilhado, mas mostram de uma maneira diferente.

(34)

Padrão Arquitetural – Model View

Controller (MVC)

[Buschmann et al.,1996]



Benefícios



Acomoda mudanças



Requisitos de interface do usuário tendem a mudar

mais rapidamente do que regras de negócio.

mais rapidamente do que regras de negócio.



Usuários podem preferir diferentes cores, fontes,

layouts

de tela e níveis de suporte para novos

dispositivos, como telefones celulares ou PDAs.



Como o modelo não depende de visões,

adicionando novos tipos de visão para o sistema

geralmente não afetam o modelo.

(35)

Implementação



Padrões de Idiomas



Relacionados com a implementação de características

de projeto específicas



Padrão de baixo nível específico para uma linguagem de

programação



Um idioma descreve como implementar aspectos

particulares de componentes ou os relacionamentos

entre eles usando as características da linguagem.



Idiomas em C++ [C++ Programming Styles and

(36)

Implementação



Padrões de Idiomas



Formam uma base para a padronização da

nomenclatura e da estrutura do código fonte.



Agem como diretrizes de projeto ou, ainda, como

(37)

Idioma de Pree

[Pree, 1995]



Pree apresenta uma outra abordagem que se refere a

convenções de nomes a serem dados a variáveis, constantes e

métodos.



O trabalho de Pree é baseado nas convenções descritas no



O trabalho de Pree é baseado nas convenções descritas no

framework ET++.



A utilização de convenções de nomenclatura em

frameworks é importante, pois facilita o aprendizado e

utilização do mesmo.

(38)

Idioma de Pree

[Pree, 1995]



Nomes de classes e de métodos: devem iniciar

com letras maiúsculas seguidos de letras minúsculas.



Variáveis locais devem iniciar com letras minúsculas.

Se um nome consiste de várias palavras, a segunda e as



Se um nome consiste de várias palavras, a segunda e as

palavras subsequentes iniciam com letras maiúsculas, como

por exemplo



DoLeftButtonDownCommand(...).



Variáveis globais: devem iniciar com o prefixo g, como:

(39)

Idioma de Pree

[Pree, 1995]



Constantes: devem iniciar com o prefixo c, tais como:

 cldNone.



Métodos: quando definem o valor de uma variável instanciada

devem iniciar com Set

devem iniciar com Set

 SetSaldo(..).



Métodos que retornam tais valores devem iniciar com Get

 GetOrigin(...).



Métodos que desenham objetos na tela devem iniciar com Gr

(40)

Testes



Padrões de Testes



São orientações para as atividades de teste, incluindo

documentação, execução e divulgação de resultados

documentação, execução e divulgação de resultados

[Rising 2000].



Os padrões de testes auxiliam a equipe de testes com

um vocabulário comum e útil, apresentando soluções

para problemas que ocorrem repetidamente quando se

testa o software.

(41)

Padrões de Testes



[Lange, 2001]

 Apresenta quatro padrões de testes para melhorar os testes

funcionais

 Se encaixam perfeitamente na metodologia XP (Extreme  Se encaixam perfeitamente na metodologia XP (Extreme

Programming), onde os casos de testes constroem um elemento central da metodologia

 Separate Test Interface  Error Simulator

 Call Stack Tracer

(42)



Separate Test Interface

 Mostra como empregar uma interface de teste separada

para o teste proposto. Com o uso dessa interface é possível testar classes internas de componentes sem mudar as

Padrões de Testes

testar classes internas de componentes sem mudar as

interfaces oficiais dos componentes, ela permite inspecionar automaticamente estados internos ou desempenhar testes para classes somente visíveis dentro do componente do software.

(43)

Padrões de Testes



Test Case with Time Specification

 As especificações funcionais ou características são escritas como

casos de testes. Uma completa automatização do caso de teste é um pedaço de código executado, quando um caso de teste termina é pedaço de código executado, quando um caso de teste termina é verificado se os resultados das operações levaram a um resultado correto. A corretude funcional do caso de teste é checada através do seu tempo de execução, verificando se ele está dentro da

especificação.

 Repositório de padrões de testes via web [Marick]

 Padrões do PoST (Patterns of Software Testing)

 Padrões de testes específicos para linguagem de programação

(44)

Referências

 Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M. (1996).

Pattern-Oriented Software Architecture, John Wiley and Sons, New York, NY, 1996.

 Gamma E., Helm R., Johnson R., Vlissides J. (1995). “Design Patterns: Element of

Reusable Object-Oriented Software”, 1995.

 Lange, M. (2001). It’s Testing Time! - Patterns for Testing Software. In: Proceedings

of XI European Conference on Pattern Languages of Programs (EUROPLOP 2001), Bard Irsee, Germany, 2001.

of XI European Conference on Pattern Languages of Programs (EUROPLOP 2001), Bard Irsee, Germany, 2001.

 Martin Fowler (1997). Analysis Patterns: Reusable Object Models.

Addison-Wesley,1997.

 Marick, B. Software Testing Patterns. Disponível em:

<http://www.exampler.com/testing-com/test-patterns/ >. Acesso em: 29 out. 2010.

 PREE, W.(1995). Design Patterns for Object-Oriented Software Development.

Addison- Wesley Publishing Company, ACM Press, 1995.

 SOUZA, Gabriela, Pires, Carlo Giovano, Marinho, Fabiana e Belchior, Arnaldo Dias

(2005). Padrões de Requisitos para Especificação de Casos de Uso em Sistemas de Informação. 5th Latin American Conference on Pattern Languages of Programming SugarLoafPloP.

(45)

Obrigada.

Obrigada.

Referências

Documentos relacionados

Serra Geral, são menos restritivos e evidenciam um maior grau de suscetibilidade nas regiões onde há o registro de deslizamentos. Figura 5.4 Comparação entre os modelos que

Depois, quando todos terminaram de se apresentar na avenida e alguns foliões lamentaram antecipadamente o final dos dias libertos, Espanhol passou as penúltimas horas

Aos dezoito dias do mês de setembro do ano de dois mil e dezenove, às dezesseis horas e trinta minutos, reuniram-se na Sala de videoconferência no prédio da

No entanto, a mudança duradoura ocorre quando se modificam as crenças nucleares por meio de procedimentos de reestruturação cognitiva de crenças nucleares, como é o caso do

As condições climáticas nas regiões tropicais semiáridas são mais severas, com reduzidos volumes de precipitação, alta taxas de evaporação, e a velocidade dos

Todos eles retratam o léxico, a cultura e a sociedade de seus Estados. Alagoas está representado por Elza Cansanção Medeiros. O léxico de Pernambuco tem além de Pereira da Costa

Average values for number of leaves (NL), leaf area (LA), leaves dry matter (LDM), stem dry matter (SDM), fruit dry matter (FDM) and total dry matter (TDM) in gherkin