TCM

TCM

  • Sprints
  • Base
  • Modelagem
  • Padrões de Projeto
  • Arquitetura e Reutilização

›Grasp

Sprints

  • Sprint 1
  • Sprint 2
  • Sprint 3
  • Sprint 4
  • Sprint 5
  • Sprint 6
  • Sprint 7
  • Sprint 8
  • Sprint 9

Base

    Planos

    • Gerenciamento do cronograma do projeto
    • Plano de gerenciamento de custos
    • Plano de gerenciamento de riscos

    Pré-Rastreabilidade

    • Rich Picture
    • 5W2H
    • Mapas Mentais
    • Documento de Visão
    • Diagrama de Causa e Efeito

    Elicitação

    • Brainstorm
    • Entrevista
    • Personas
    • Observação

    Metodologia

    • Metodologia

    Modelagem

    • Protótipo

Modelagem

    Diagramas UML

    • Diagrama de Atividades
    • Diagrama de Classes
    • Diagrama de Componentes
    • Diagrama de Comunicação
    • Diagrama de Estados
    • Diagrama de Pacotes
    • Diagrama de Sequência

    Extras

    • Léxico
    • Plano de GCS
    • NFR Framework
    • Diagrama da metodologia
    • Backlog

Padrões de Projeto

    GOFs

    • GOFS Comportamentais
    • GOFs Criacionais
    • GOFS Estruturais

    Grasp

    • GRASP

    Extra

    • Extras
    • Guia de estilo

Aquitetura de software e reutilização

  • Documento de Arquitetura
  • Reutilização de Software

GRASP

Introdução

Os padrões GRASP (General Responsibility Assignment Software Patterns) consistem em uma série de princípios baseados em conceitos para atribuição de responsabilidades a classes e objetos na construção de bons softwares usando programação orientada a objetos. Os padrões GRASP buscam disponibilizar recomendações que procuram auxiliar na obtenção de sistemas melhor estruturados e de fácil manutenção.

Metodologia

A partir do estudo da equipe sobre os padrões de projeto (GRASP e GoFs) e feedback das avaliações, foi identificado os problemas onde os padrões podem ser aplicados. Os padrões que foram identificados no projeto foram documentados e foram fornecidas as descrições de suas aplicações.

Padrões

Versão 1.0

Creator

Determina qual classe deve ser responsável pela criação certos objetos. Atribua à classe B a responsabilidade de criar uma instância de A se pelo menos um desses for verdadeiro:

  • B contém ou agrega A
  • B registra a existência de A
  • B usa A
  • B tem os dados necessários para a inicialização de A que serão passados ao construtor de A.

Aplicação no projeto

O uso deste padrão foi incorporado ao padrão factory method exemplificado no documento GOFs Criacionais. Em resumo, as classes Tournament Factory, BarragemCreator e PlayoffsCreator tem apenas responsabilidades de instanciar objetos de outras classes.

Factory Method

Coesão

Coesão mede o quanto as responsabilidades de um elemento, seja classe, objeto ou subsistema, são fortemente relacionadas e altamente focadas.

Objetos com alta coesão: são aqueles que possuem apenas responsabilidades que estão relacionadas e não possuem uma carga excessiva de trabalho.

Objetos com baixa coesão: são aqueles que possuem uma carga elevada de responsabilidades que não estão relacionadas.

Aplicação no projeto

O padrão de coesão foi utilizado em todo sistema do backend, utilizando classes coesas contento apenas responsabilidades inerentes ao seu papel dentro da aplicação.

Exemplo da aplicação:

Coesão1

Coesão1

Especialista

O padrão GRASP especialista é uma abordagem que visa atribuir a responsabilidade de algo para uma classe específica, no caso, o especialista.

Aplicação no projeto

O padrão especialista foi identificado em algumas partes do projeto. Por exemplo, as classes FriendlyMatch, BarragemMatch e PlayoffsMatch são classes especialistas, pois cada uma representa um tipo específico de partida.

Participants

Polimorfismo

As responsabilidades devem ser atribuídas a abstrações e não a objetos concretos, permitindo que eles possam variar conforme a necessidade.

Aplicação no projeto

É possível identificar o padrão polimorfismo em várias classes do diagrama de classe.

Participants

É possível identificar o uso deste padrão incorporado em vários padrões GOFs, como: GOFs Criacionais.

Controller

O padrão controller determina que a responsabilidade da manipulação de eventos deve permanecer fora da interface com usuário, ela também distribui responsabilidades entre as demais classes do sistema, funciona como fachada do sistema retornando mensagens ao cliente

Aplicação no projeto

Utilizamos o padrão de projeto Controller em nosso backend distribuindo a manipulação de eventos para os serviços responsáveis, no projeto será utilizado a controller de Usuário, Sessão, Torneio, Rounds e Partidas.

Indirection

O padrão indirection suporta baixo acoplamento entre dois elementos, atribuindo a objeto intermediário a responsabilidade de ser o mediador entre eles. Um exemplo é a introdução do componente controlador para mediação entre modelo.

Aplicação no projeto

É possível identificar o padrão indirection no diagrama de sequência onde há baixo acoplamento entre a componente de registrar torneio e o repository do torneio. A controller e a service são dois intermediadores entre eles

Indirection

Conclusão

A partir do estudo e aplicação dos padrões GRASP, a equipe pode observar boas práticas e técnicas interessantes para se aplicar no projeto.

Referências

Padrões GRASP. Disponível em: http://www.facom.ufu.br/~bacala/ESOF/05a-Padr%C3%B5es%20GRASP.pdf

Understanding the GRASP Design Patterns. Disponível em: https://medium.com/@ReganKoopmans/understanding-the-grasp-design-patterns-2cab23c7226e

Padrões GRASP. Disponível em: http://www.facom.ufu.br/~bacala/ESOF/05a-Padr%C3%B5es%20GRASP.pdf

Padrão GRASP Controller. Disponível em: https://www.ramonsilva.net/post/controller-padr%C3%B5es-grasp

Autor(es)

DataVersãoDescriçãoAutor(es)
18/10/201.0Criação do documentoJoão Pedro e Moacir Mascarenha
18/10/201.1Adicionado padrão creatorJoão Pedro, Matheus Estanislau e Moacir Mascarenha
18/10/201.2Adicionado padrão polimorfismoJoão Pedro, Matheus Estanislau e Moacir Mascarenha
18/10/201.3Adicionado padrão controllerJoão Pedro, Matheus Estanislau e Moacir Mascarenha
19/10/201.4Ajustes no documentoRenan Cristyan
19/10/201.5Adicionado padrão especialistaRenan Cristyan
24/10/201.6Adicionado padrão indirectionLucas Alexandre e João Pedro
25/10/201.7Adicionado padrão coesãoLucas Alexandre e Matheus Estanislau
26/10/201.7Adicionado padrão coesãoLucas Alexandre e Matheus Estanislau
26/10/201.8Correções no documentoJoão Pedro, Lucas Alexandre, Matheus Estanislau, Renan Cristyan
26/10/201.9Adicionada conclusãoRenan Cristyan
← GOFS EstruturaisExtras →
  • Introdução
  • Metodologia
  • Padrões
    • Versão 1.0
    • Creator
    • Coesão
    • Especialista
    • Polimorfismo
    • Controller
    • Indirection
  • Conclusão
  • Referências
  • Autor(es)

Tennis Cup Limited