Anúncio
Anúncio

Mais conteúdo relacionado

Similar a Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks (20)

Anúncio

Mais de Adriano Teixeira de Souza(20)

Último(20)

Anúncio

Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks

  1. Prof. Adriano Teixeira de Souza Biblioteca de Classes e Frameworks
  2. “Reusar” software não é simples  Maioria dos esforços resultam apenas reutilização de pequenos componentes  Principais vantagens do uso de frameworks ◦ Aumento do reuso ◦ Diminuição do tempo para produção de família de aplicações  Framework provê reutilização de ◦ Design ◦ Código  Reuso em larga escala Prof. Adriano Teixeira de Souza
  3. A primeira geração de OO situou-se sobre bibliotecas de classes para empacotar objetos para reutilização.  Uma abordagem mais promissora é usar um framework de objetos.  Frameworks são bibliotecas de classes pré- montadas que são empacotadas para provê funcões específicas. Frameworks tornará mais fácil montar aplicações com objetos. Prof. Adriano Teixeira de Souza
  4. Bibliotecas ◦ Conjunto de classes relacionadas  Funcionalidades de propósito geral ◦ Classes não relacionadas a um domínio de aplicação específica  Em contrapartida às classes de um framework  Diferença ◦ Grau de reutilização ◦ Impacto na arquitetura da aplicação  Classe de uma biblioteca ◦ Reutilizada sozinha  Classe de um framework ◦ Reutilizada juntamente com as outras em uma instanciação Prof. Adriano Teixeira de Souza
  5. Biblioteca Framework  Classes instanciadas pelo cliente  Customização com subclasse ou  Cliente chama funções composição  Não tem fluxo de controle pré-  Chama funções da “aplicação” definido  Controla o fluxo de execução  Não tem interação pré-definida  Define interação entre objetos  Não tem comportamento default  Provê comportamento default Prof. Adriano Teixeira de Souza
  6. “Um framework é um conjunto de classes que constituem um design abstrato para soluções de uma família de problemas.” Johnson e Foote (1988)  “Um framework é um conjunto de objetos que colaboram com o objetivo de cumprir um conjunto de responsabilidades para uma aplicação ou um domínio de um subsistema.” Johnson (1991)  “Uma arquitetura desenvolvida com o objetivo de se obter a máxima reutilização, representada como um conjunto de classes abstratas e concretas, com grande potencial de especialização.” Mattsson (1996)
  7. Reusável ◦ Propósito final ◦ Para ser reusável, deve primeiro ser usável  Bem documentado  Fácil de usar  Extensível ◦ Framework contém funcionalidade abstrata (sem implementação) que deve ser completada  Seguro ◦ Desenvolvedor de aplicações não pode destruir o framework  Eficiente ◦ Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência
  8. Um framework é uma estrutura de classes interrelacionadas, que corresponde a uma implementação incompleta para um conjunto de aplicações de um domínio.  Esta estrutura de classes deve ser adaptada para a geração de aplicações específicas.  A abordagem de frameworks orientados a objetos produz uma descrição de um domínio para ser reutilizada.  Um framework é um esqueleto de implementação de uma aplicação ou de um subsistema de aplicação, em um domínio de problema particular. Prof. Adriano Teixeira de Souza
  9. Frameworks não são simplesmente coleções de classes. Ao contrário, são caracterizados com rica funcionalidade e interconexões entre classes de objetos, que provêem uma infraestrutura para o desenvolvedor.  Uma classe abstrata é um projeto para um único objeto. Um framework é o projeto de um conjunto de objetos que colaboram para executar um conjunto de responsabilidades. Prof. Adriano Teixeira de Souza
  10. Um framework é uitilizado através de configuração ou conexão de classes concretas e derivação de novas classes concretas a partir das classes abstratas do framework.  ... não apenas classes, mas a forma como as instâncias das classes colaboram ... Prof. Adriano Teixeira de Souza
  11. A diferença fundamental entre um framework e a reutilização de classes de uma biblioteca. ◦ No caso de biblioteca de classes são usados artefatos de software isolados, cabendo ao desenvolvedor estabelecer sua interligação ◦ No caso do framework, é procedida a reutilização de um conjunto de classes interrelacionadas. Prof. Adriano Teixeira de Souza
  12. Aplicação desenvolvida totalmente.  Aplicação desenvolvida reutilizando classes de biblioteca.  Aplicação desenvolvida reutilizando um framework. Prof. Adriano Teixeira de Souza
  13. Os frameworks fornecem infraestrutura de projeto disponibilizada ao desenvolvedor da aplicação, que reduz a quantidade de código a ser desenvolvida, testada e depurada.  As interconexões preestabelecidas definem a arquitetura da aplicação, liberando o desenvolvedor desta responsabilidade.  O código escrito pelo desenvolvedor visa estender ou particularizar o comportamento do framework. Prof. Adriano Teixeira de Souza
  14. Um papel do framework é fornecer o fluxo do controle da aplicação. Assim, em tempo de execução as instâncias das classes desenvolvidas esperam ser chamadas pelas instâncias das classes do framework. Prof. Adriano Teixeira de Souza
  15. Um framework se destina a gerar diferentes aplicações para um domínio. Precisa, então, conter uma descrição dos conceitos deste domínio.  As classes abstratas de um framework são os repositórios dos conceitos gerais do domínio de aplicação. Prof. Adriano Teixeira de Souza
  16. No contexto de um framework, um método de uma classe abstrata pode ser deixado propositalmente incompleto para que sua definição seja acabada na geração de uma aplicação.  Apenas os atributos a serem utilizados por todas as aplicações de um domínio são incluídos em classes abstratas. Prof. Adriano Teixeira de Souza
  17. Os frameworks invertem a ótica de reuso das classes, da abordagem bottom-up para a abordagem top-down: ◦ O desenvolvimento inicia com o entendimento do sistema contido no projeto do framework, e segue no detalhamento das particularidades da aplicação específica, o que é definido pelo usuário do framework.  Assim, a implementação de uma aplicação a partir do framework é feita pela adaptação de sua estrutura de classes, fazendo com que esta inclua as particularidades da aplicação. Prof. Adriano Teixeira de Souza
  18. Com o framework pronto, benefícios ◦ Redução de custos ◦ Redução de time-to-market  Motivos ◦ Maximização de re-uso (análise, design, código, testes)  Reutilização de design feito por outros pode transferir conhecimento e experiência para o usuário do framework ◦ Desenvolvedores adicionam valor em vez de reinventar a roda ◦ Menos manutenção  Fatoração de aspectos comuns a várias aplicações  Uso de herança permite corrigir todas as aplicações com a troca de uma classe-mãe  Cuidado com o "Fragile Base Class Problem” onde troca da classe-mãe quebra as filhas ◦ Melhora do código (menos defeitos) devido ao uso em várias aplicações Prof. Adriano Teixeira de Souza
  19. Outras vantagens ◦ Diminuição de linhas de código na aplicação ◦ Melhor consistência e compatibilidade entre aplicações ◦ Conhecimento sobre o domínio da aplicação é mantido dentro da organização ◦ Alavancagem do conhecimento de especialistas  Framework oferece uma forma de empacotar o conhecimento de especialistas sobre domínios de problemas  Assim, não se perde o conhecimento com a saída de especialistas e o conhecimento pode ser usado/estudado sem a presença do especialista  Resultado: criação de patrimônio estratégico da empresa (Strategic Asset Building) Prof. Adriano Teixeira de Souza
  20. Construir um framework é complexo ◦ Re-uso não vem sozinho: deve ser planejado ◦ É mais complexo e demora mais fazer uma aplicação tendo que construir um framework em vez de fazer a aplicação do zero  Documentação é essencial para o usuário (desenvolvedor) poder utilizar o framework  Dificuldade para manter compatibilidade com versões anteriores ◦ Frameworks se tornam mais maduros com o passar do tempo e as aplicações devem evoluir em paralelo  Flexibilidade e generalização do framework podem trabalhar contra sua eficiência em algumas aplicações Prof. Adriano Teixeira de Souza
  21. Benefícios são realizados em longo prazo ◦ Quem pode pensar em longo prazo quando se está competindo "On Internet time"?  Poucas empresas  Uma empresa aeroespacial demorou anos para fazer frameworks e começou a ter retorno na quarta missão  Precisa-se modificar o processo de desenvolvimento e criar novos incentivos Prof. Adriano Teixeira de Souza
  22. Existem, literalmente, milhares de frameworks disponíveis para as diversas linguagens de programação existentes. Diante desta imensidão de “oferta”, é importante optar por um que atenda a suas necessidades e que seja consoante a seu método e estilo de trabalho. Inicialmente, pode parecer que usar um framework é pior do que fazer uma “programação pura”. Entretanto, tenha certeza: vale a pena dedicar seu tempo nisso! As vantagens vindouras de ter um projeto bem estruturado e rodando numa plataforma segura e estável compensam. Prof. Adriano Teixeira de Souza
  23. .NET Microsoft .NET (conhecido por .NET Framework - em inglês: dotNet) é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado para .NET, pode ser executado em qualquer dispositivo que possua um framework de tal plataforma. A plataforma .NET é executada sobre uma Common Language Runtime - CLR (Ambiente de Execução Independente de Linguagem) interagindo com um Conjunto de Bibliotecas Unificadas (framework). Esta CLR é capaz de executar, atualmente, mais de 20 diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem. Prof. Adriano Teixeira de Souza
  24. Java ◦ Struts (J2EE) - um dos frameworks mais usados em ambientes corporativos para construção de aplicações web. Usa o modelo MVC e caracterizado por uma camada de controle com uso de J2EE e XML. ◦ JavaServer Faces (J2EE) - baseado em tecnologia de servlets e JSP, pode ser usado como uma opção ao Struts. ◦ Spring - framework baseado em orientação a aspectos. Possibilidade de uso em conjuntos com outros frameworks MVC, como o Struts e JSF. ◦ Hibernate (Persistência de Dados) - conhecido framework de persistência de dados, que usa conceitos de banco de dados, além do mapeamento objeto- relacional (classes Java para tabelas de databases). Prof. Adriano Teixeira de Souza
  25. Java ◦ JUnit (testes) - talvez o mais usado framework Java, incluído em IDEs free ou comerciais. Para testes unitários em geral. ◦ Log4J (log) - amplamente usado e útli para geração de logs. ◦ Jakarta commons-log (log) - semelhante ao Log4J, sob o selo da Jakarta. ◦ Ant (build e deploy) - framework também amplamente divulgado da Jakarta para automatização de processos de construção, além de testes e distribuição. ◦ Jasper Report / iReport (geradores de relatório) - framework para geração de modo dinâmico de relatórios. Compatível com formatos xml, pdf e html. Prof. Adriano Teixeira de Souza
  26. PHP ◦ CakePHP – Um dos Frameworks de PHP mais utilizado. É um framework de desenvolvimento rápido para PHP que fornece uma arquitetura extensível para desenvolvimento, manutenção, e distribuição de aplicações. Usando design patterns conhecidos como MVC e ORM com convenção sobre o paradigma da configuração, reduz o custo do desenvolvimento e ajuda os desenvolvedores a escreverem menos código. ◦ Symfony - Destina-se a acelerar a criação e manutenção de aplicações web, e para substituir as tarefas repetitivas de codificação. É fácil de instalar em qualquer configuração e é compatível com quase todos os sistemas de banco de dados. Prof. Adriano Teixeira de Souza
  27. PHP ◦ Zend – É um dos frameworks PHP mais utilizados. É baseado na simplicidade, nas melhores praticas orientadas a objeto, licenciamento corporativo amigável, e uma base de código ágil rigorosamente testada. Zend Framework é focado na construção de mais seguras, confiáveis e modernas aplicações de serviços web, e APIs de fornecedores líderes como Google, Amazon, Yahoo, Flickr. ◦ Zoop - É estável, escalável e portátil. O Zoop é projetado para ser rápido, eficiente e limpo. É facilmente extensível e você optar por incluir apenas a funcionalidade que você usa. Prof. Adriano Teixeira de Souza
  28. PHP Prof. Adriano Teixeira de Souza
  29. Python - Mais populares Frameworks de pilha completa ◦ Django - Framework para perfeccionistas, traz facilidades para construir melhores aplicativos Web mais rapidamente e com menos código. Ele encoraja o desenvolvimento rápido e limpo, com um design prático. ◦ Pylons – Framework leve que enfatiza a flexibilidade e o desenvolvimento rápido. Recentemente foi colocado em estado de manutenção com o lançamento do Pyramid, o seu sucessor. ◦ TurboGears – Combina SQLAlchemy(Model), Genshi(View), Pylons(Controller), Repoze e Tosca Widgets. Oferece um desenvolvimento rápido, com modelos de design amigáveis, um poderoso e flexível mapeamento relacionado a objetos (ORM). Prof. Adriano Teixeira de Souza
  30. Python ◦ web2py – De fácil uso, com tudo em um pacote sem dependências adicionais. Não tem arquivos de configuração, não requer instalação e pode ser rodado de uma unidade USB. Usa Python para MVC. ◦ Zope – Conhecido como o avô dos Frameworks de Python para Web, ele tem crescido em uma família de frameworks ao longo dos anos. A primeira versão foi lançada em 1999. ◦ Outros Frameworks de pilha completa  CubicWeb, Enamel, GAE framework, Glashammer, Karringell, Nagare, notmm, Porcupine, QP, SkunkWeb, Spyce, Tipfy, Tornado, WebCore, web.py, Webware, Werkzeug, WHIFF, XPRESS. ◦ Frameworks básicos  AppWsgi, Bobo, Bottle, CherryPy, circuits.web, Python Paste, PyWebLib, WebStack. Albatross, Aquarium, Divmod Nevow, Flask, JOTWeb2, Python Servlet Engine, Pyramid, Repoze.bfg, Quixote, Spiked. Prof. Adriano Teixeira de Souza
  31. Ruby ◦ Ruby on Rails – Mais conhecido framework da linguagem ruby para desenvolvimento Web. É um projeto de código aberto e as aplicações criadas utilizando o framework Rails são desenvolvidas com base no padrão de projeto MVC. Ruby on Rails foi uma extração de um projeto de David Heinemeier Hansson, o gerenciador de projetos Basecamp. Foi lançado a público pela primeira vez em julho de 2004. O Rails é um "meta-framework", uma vez que é uma junção de cinco frameworks: Active Record, Action Pack, Action Mailer, Active Support e Action Webservices. ◦ Padrino - O Padrino é um framework Ruby construído baseado no Sinatra. O Sinatra é uma DSL para agilizar a criação de aplicações web simples. Padrino foi desenvolvido para tornar mais fácil e divertido o código de aplicações web mais avançadas. São muitas as funcionalidades adicionais que o Padrino traz em relação ao Sinatra, como os helpers, geradores, mailer, seção administrativa, login, etc. Prof. Adriano Teixeira de Souza
  32. Ruby ◦ Cramp - Este é um framework web assíncrono orientado à eventos, baseado na biblioteca EventMachine. Nas palavras do próprio autor do framework (Pratik Naik), o Cramp não serve para a maioria das aplicações web que vemos por aí. O Cramp foi desenvolvido para fazer I/O disparado por eventos com maior segurança e desempenho – ideal para situações onde é necessário gerenciar uma grande quantidade de conexões abertas (APIs de streaming, por exemplo). ◦ Rango - O Rango é um framework web baseado em Rack, inspirado no Django. Leve e customizável, seu objetivo é ser mais robusto que Sinatra, porém menor que Rails e Merb. Para isso, foi feito de forma modular, permitindo que o desenvolvedor escolha seus componentes. ◦ Merb - Esse é um dos frameworks mais famosos para Ruby, e seu diferencial está na flexibilidade. O Merb permite que você escolha “monte” o framework, escolhendo o seu ORM, sua biblioteca de JavaScript e a linguagem dos templates através de plugins. Oferece uma série de funcionalidades, como ferramenta de testes e correio, monitor de exceções, e geradores. Baseado no padrão MVC. Prof. Adriano Teixeira de Souza
Anúncio