Skip to content

Framework e Reutilização

Adrianne Alves edited this page Nov 23, 2018 · 18 revisions

Histórico de Revisão

Autores Data Versão Descrição
Mariana 19/11/2018 Criação do Documento e introdução 0.1
Adrianne Alves 20/11/2018 Complemento da introdução, adição dos frameworks utilizados e início da justificativa 0.2
Andrew Lucas 22/11/2018 Finalizando documento de Framework e Reutilização 0.3
Maria Luiza, Adrianne e Andrew 22/11/2018 Adicionando imagem do framework 0.4
Mariana Mendes e João Pedro Sconetto 22/11/2018 Algumas pequenas correções 0.5
Adrianne Alves 22/11/2018 Adicionando metodologia, sobre o ticketflix como framework e aspectos de reutilização 1.0

Índice Analítico

1. Introdução

Analisando as diversas funcionalidades presentes no Ticktetflix, foi possível mapeá-las como soluções para conjuntos de problemas comuns à construção de aplicações, no que diz respeito à informatização do setor de compras de ingressos online. Isso devido à natureza da aplicação como um web service de e-commerce adaptável para diferentes contextos. Nos tópicos seguintes, serão abordadas a justificativa para o tipo de Framework adotado, suas particularidades, níveis de reutilização, desenvolvimento e utilidades, mas além disso, serão explicitadas possíveis implementações de frameworks a partir da própria aplicação, além de aspectos gerais de reutilização presentes a partir do código desenvolvido.

2. Metodologia

Para a elaboração desse documento, foi realizado inicialmente a definição da introdução, pela Mariana. De maneira subsequente, abordou-se informações a respeito dos frameworks utilizados na produção da aplicação, dando foco principalmente ao Django. Então, em conjunto com o Andrew e a Maria Luiza foram relacionados os potenciais de uso da aplicação como framework, tal que culminou na elaboração de um diagrama de classes pontuando os frozenspots e os hotspots da aplicação. Por fim, definiu-se pontos passíveis de reutilização na aplicação.

3. Framework no TicketFlix

O framework é uma aplicação parcial, quase completa, que reúne a funcionalidade comum a várias aplicações, dessa maneira, é normal e esperado que as aplicações pertençam a um mesmo domínio de problema. Sua composição consiste em um conjunto de classes que juntas decompõe o problema e cumprem responsabilidades específicas do contexto. Entretanto, esse conjunto deve ser flexível/extensível, pois visa possibilitar a construção de diversas aplicações mas com esforço mínimo, de maneira que seja necessário apenas especificar o que for particular dessa solução.

É preciso considerar ainda que o princípio do framework parte da reutilização, assim, precisa ser bem documentado, de fácil utilização e funções abstratas a serem completadas. Além disso, é preciso que ele por si só garanta que o desenvolvedor não o corrompa ou desestruture o seu funcionamento, apresentando ao mesmo tempo completude para o problema/contexto que deseja oferecer suporte.

3.1 Frameworks utilizados

No que diz respeito à TicketFlix, como aplicação, foram utilizados basicamente dois frameworks: O Django, um framework de alto nível para python e o materialize, um framework para css responsivo. Um ponto importante a ser salientado é que o Django se comporta basicamente como um framework caixa cinza, em que é possível consumir partes de programação já prontas, como por exemplo, funções utilizadas para renderização de templates (black-box). Ao mesmo tempo, é possível consumir hots pots ou ponto mais flexíveis que permitem uma espécie de personalização para a sua aplicação, como por exemplo, o uso de view genéricas que são herdadas do django e alteradas de acordo com a necessidade (white-box). Alguns desses aspectos são explicitados na boa documentação disponibilizada.

Mas além dos frameworks utilizados no desenvolvimento do TicketFlix, é preciso atentar também com o potencial da aplicação para ser utilizado como um framework dentro do domínio de atrações e eventos. Como será tratado nos tópicos subsequentes.

3.1.1 Justificativa

Um aspecto interessante a ser observado diz respeito ao fato de que o próprio framework selecionado proporciona uma solução dentro do domínio de desenvolvimento com a linguagem python e essas soluções são fundamentadas em boas práticas, como por exemplo os GRASPs baixo acoplamento e alta coesão, por trás das suas várias camadas, o que traz abertura maior à qualidade do código a ser produzido.

A escolha do Django, de maneira geral, baseou-se no fato de que boa parte da equipe já possuía alguma experiência com este framework, e que para os que nunca haviam usado, dois dos membros do projeto, o Django apresenta uma baixa curva de aprendizagem. Além disso, ele possui uma ótima documentação e uma comunidade muito ativa, o que facilita o processo de aprendizagem.

3.1.1.1 Reutilização

Uma aplicação Django é apenas um pacote Python que é especificamente destinado para uso em um projeto Django. Esse pacote pode usar convenções comuns do Django, tais como ter submódulos models, tests, urls, e views. Assim quando desejar utilizar um módulo existente, basta importa-lo, diminuindo a duplicidade do código, e facilitando o desenvolvimento, pois é possível importar módulos de outros projetos.

3.2 Possíveis implementações

Essa sessão se destina a abordagem das possíveis implementações de frameworks com o software produzido, assim, primeiramente foi realizada uma análise por Adrianne, Andrew e Maria Luiza, de modo que foi observado o seguinte comportamento:

O TicketFlix possui um grande potencial de reutilização para construção de sistemas que envolvam em seu contexto carrinho, compra, pagamento, espetáculo, sessão e ingresso, ou seja, vendas de ingressos. Isso porque, com o uso dos padrões de projeto e práticas GRASP utilizadas, tornou-se possível extensões, como por exemplo, adição de novos tipos de espetáculo, pagamento e produtos de maneira facilitada. Assim, têm-se a possibilidade de transformar o software em um framework caixa cinza, possuindo pontos flexíveis e programação pronta para ser consumida.

Tendo em vista as definições realizadas, houve um esforço por parte dos membros relatados anteriormente em construir um diagrama de classes com uma representação explícita dos pontos frozenspot e hotspot. O diagrama produzido, encontra-se abaixo.

Framework Ampliar a imagem

Na figura, procurou-se delimitar a fronteira da aplicação que representa o potencial framework a ser disponibilizado. Nele, os pontos azuis são classificados como pontos flexíveis da aplicação, os frozenspots, e os pontos vermelhos aqueles que seriam apenas consumidos por aplicações externas. De verde, são representadas as classes que não pertencem necessariamente ao framework.

O ponto chave dessa imagem é acordar a aplicação dos conceitos de framework dentro do próprio projeto elaborado, demonstrando, espera-se, que os conceitos foram compreendidos o suficiente para serem aplicados.

4. Reutilização na TicketFlix

Esse tópico tem como objetivo abordar os pontos de reutilização da aplicação, trazendo muito do que foi conseguido por meio da modelagem da ferramenta, expressa principalmente por meio do diagrama de classes elaborado. Pensando nisso, recorre-se inicialmente aos módulos constantes na aplicação. Nesse aspecto, cada módulo da aplicação foi dividida em apps do Django, dessa maneira, caso seja necessário reutilizar um desses módulos, basta importá-lo.

Além disso, caso seja em outro projeto é preciso apenas fazer a cópia da pasta do app para a pasta do atual projeto. É importante salientar ainda que como cada app é uma aplicação isolada, ele irá funcionar da mesma forma em qualquer projeto em que seja acoplado. Um exemplo disso é que, caso alguém queira utilizar o módulo de pagamento do ticketflix, basta copiar o app de pagamento e adaptar as formas de pagamento para o seu contexto.

Outro ponto importante a ser explicitado, diz respeito à extensibilidade de partes principais do software, como por exemplo, tipos de espetáculos, tipos de pagamento e tipos de produto o que ressalta a sua característica principal de ser uma aplicação genérica para a venda de ingressos de espetáculos.

5. Referências

  • [1] SERRANO, Milene. Arquitetura e Desenho de Software - Aula 24. 2018. 87 slides. Material apresentado na disciplina de Arquitetura e Desenho de Software no curso de Engenharia de Software da UnB, FGA.
Clone this wiki locally