Criando Frameworks
Conceitos, Estratégias e Dicas
Norton Guimarães
@nortoncg
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
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)
Existe alguma coisa assim?
Como posso começar?
Entender a diferença entre Biblioteca de
classe e Framework
Entender o Princípio de Hollywood
Diferenciar Hot spot de Frozen spot
Frozen-spot
Mas... Por que devo criar um framework?
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)
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)
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)
Desenhe a arquitetura do framework
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.
Defina a linguagem de programação
Suporte Orientação a
Objetos.
E a melhor linguagem?
Eu prefiro: C# ou Java.
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.
Defina as licenças de uso
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.
Disponibilize para uso
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.
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.
 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.
AGRADECIDO!!!
Prof. Me. Norton Guimarães - www.ifgoiano.edu.br
SCJA|MTA
e-mail: nortoncg@hotmail.com
Twitter: @nortoncg
Social: facebook.com/nortoncg
Skype: nortoncg
Slide: pt.slideshare.net/nortoncg1/

Criando Framework - Conceitos, Estratégias e Dicas

  • 1.
    Criando Frameworks Conceitos, Estratégiase Dicas Norton Guimarães @nortoncg
  • 2.
    Apresentação Prof. Me. NortonGuimarã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)
  • 4.
  • 5.
  • 6.
    Entender a diferençaentre Biblioteca de classe e Framework
  • 7.
  • 8.
    Diferenciar Hot spotde Frozen spot Frozen-spot
  • 9.
    Mas... Por quedevo criar um framework?
  • 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 decriaçã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 assimdefinir 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)
  • 13.
  • 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 linguagemde programação Suporte Orientação a Objetos. E a melhor linguagem? Eu prefiro: C# ou Java.
  • 16.
    Verifique se existemoutros 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.
  • 17.
  • 18.
    O seu softwareestá 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.
  • 19.
  • 20.
    Considerações finais  Desenvolverum 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.
  • 23.
    AGRADECIDO!!! Prof. Me. NortonGuimarães - www.ifgoiano.edu.br SCJA|MTA e-mail: nortoncg@hotmail.com Twitter: @nortoncg Social: facebook.com/nortoncg Skype: nortoncg Slide: pt.slideshare.net/nortoncg1/

Notas do Editor

  • #13 (Problema)(requisitos, designs, código, documentação)
  • #14 MVC, Modular, Plugin, Modelo em N camadas, Orientada a Serviço, entre outros.
  • #15 (UML)
  • #16 (C#, Java, Python, C++, e etc.);
  • #18 (Importante)
  • #24 Silney Lopes – Mundo TI Brasil