O documento discute conceitos e estratégias para criação de frameworks. Ele explica que frameworks são sistemas incompletos que podem ser adaptados para reduzir esforços de desenvolvimento e define características como classes cooperantes e hotspots/frozen spots. O documento fornece dicas como entender bibliotecas versus frameworks, aplicar o Princípio de Hollywood e diferenciar componentes. Ele também discute motivações para criação de frameworks e apresenta uma proposta de metodologia em sete passos.
2. Apresentação
Prof. Me. Norton Guimarães - www.ifgoiano.edu.br
SCJA|MTA
MTAC – www.facebook.com/MTACBrazil
Override IT community – www.override.net.br
GoJava – www.gojava.org
3. Mas... O que é um framework?
É um sistema incompleto;
Pode ser adaptado;
Reduz o esforço no desenvolvimento;
Projeto de software reutilizável;
Conjunto de classes cooperantes;
Quanto a orientação:
Orientada a objetos;
Componentes.
Quanto ao aspecto:
frozen spots;
hot spots.
(Fayad)
10. Minha recente experiência
Sabença
Sabença - Um arcabouço computacional para aprendizagem semi-automatizada de
ontologias a partir de textos (Dissertação de Mestrado - INF/UFG)
11. Minha proposta de criação de um
framework?
1 – Defina o domínio da aplicação;
2 – Escolha a arquitetura do framework;
3 – Projete suas classes;
4 – Defina a linguagem de programação
5 – Verifique se existem outros frameworks que auxiliem em pequenas tarefas
(Reuso);
6 – Defina as licenças de uso (Recomendação)
7 – Registre seu software (Recomendação)
8 – Disponibilize para uso (Recomendação)
12. Mas... como assim definir o domínio?
O termo domínio, no contexto da engenharia de software, é utilizado para denotar
ou agrupar um conjunto de sistemas ou de áreas funcionais, dentro dos sistemas,
que exibem funcionalidades similares.
A engenharia de domínio, abrange as seguintes áreas:
Definição do âmbito (definição do domínio)
Análise do domínio
Desenvolvimento da arquitetura do domínio
Construção dos componentes
(LARMAN)
14. Projete suas classes
Basicamente, o Projeto Orientado a Objetos.
Definição das Classes Abstratas
Definição das Interfaces
Definição dos Padrões de Projeto
Definir as associações entre as classes.
15. Defina a linguagem de programação
Suporte Orientação a
Objetos.
E a melhor linguagem?
Eu prefiro: C# ou Java.
16. Verifique se existem outros frameworks
que auxiliem em pequenas tarefas
Existem diversos frameworks prontos.
Não devemos reinventar a roda
Efetivamos o Reuso de Software
Uma boa pesquisa ajuda.
Reduz tempo de desenvolvimento.
18. O seu software está protegido?
A legislação brasileira equipara os programas de computadores às obras literárias.
Natureza jurídica de um direito autoral.
O registro no INPI possui reconhecimento internacional.
Garante a exploração exclusiva por 50 anos.
20. Considerações finais
Desenvolver um Framework é um trabalho árduo.
Requer conhecimentos avançados de programação, arquitetura de software e
padrões de projetos.
Definição adequada do domínio.
Reutilizar outros softwares causa dependência da aplicação.
Procure utilizar injeção de dependência.
Boas práticas de programação.
Paciência e determinação é fundamental para o sucesso.
Registre seus softwares, mostre para o mundo que você existe.
21. Referências
AREVALO, G. B. Object oriented architectural description of frameworks, 2000. Tese
(Doutorado em Ciência e Tecnologia da Informação e de Matemática) – École des
Mines de Nantes, Nantes, França. Disponível em:
<http://www.emn.fr/zinfo/emoose/alumni/>. Acesso em: 18 out. 2014.
AZEVEDO, Ricardo. O seu software está protegido? Disponível em:
http://imasters.com.br/infra/seguranca/o-seu-software-esta-protegido/. Acesso
em: 01 de dez. 2015.
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML 2. Elsevier Brasil,
Rio de Janeiro, RJ, Brasil, 2 edition, 2008.
FAYAD, M. E.; SCHMIDT, D. C.; JOHNSON, R. E. Implementing Application
Frameworks: Object-oriented Frameworks at Work. John Wiley & Sons, Inc., New
York, NY, USA, 1999.
22. GAMMA, E.; JOHNSON, R.; HELM, R.; VLISSIDES, J. Padrões de Projetos: Soluções
Reutilizáveis. Bookman, Porto Alegre, RS, Brasil, 2006.
GUIMARÃES, Norton C.. SABENÇA – um arcabouço computacional baseado na
aprendizagem de ontologias a partir de textos, 2015. Dissertação (Mestrado em
Ciência da Computação) – Instituto de Informática, Universidade Federal de Goiás,
Goiânia. Disponível em: <https://repositorio.bc.ufg.br/tede/handle/tede/4712>.
Acesso em: 01 dez. 2015.
LARMAN, C. Utilizando UML e Padrões: uma introdução à análise e ao projeto
orientados a objetos e ao Processo Unificado. Bookman, Porto Alegre, RS, Brasil, 2
edition, 2004.