paradigmas de linguagens de programação - biblioteca de classes e frameworks

32
Prof. Adriano Teixeira de Souza Biblioteca de Classes e Frameworks

Upload: adriano-teixeira-de-souza

Post on 28-Jun-2015

2.101 views

Category:

Technology


2 download

TRANSCRIPT

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

Prof. Adriano Teixeira de Souza

Biblioteca de Classes e Frameworks

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

“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

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

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

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

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

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

Classes instanciadas pelo cliente

Cliente chama funções

Não tem fluxo de controle pré-definido

Não tem interação pré-definida

Não tem comportamento default

Customização com subclasse ou composição

Chama funções da “aplicação”

Controla o fluxo de execução

Define interação entre objetos

Provê comportamento default

Biblioteca Framework

Prof. Adriano Teixeira de Souza

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

“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)

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

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

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

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

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

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

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

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

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

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

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

Aplicação desenvolvida totalmente.

Aplicação desenvolvida reutilizando classes de biblioteca.

Aplicação desenvolvida reutilizando um framework.

Prof. Adriano Teixeira de Souza

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.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

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

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

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

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

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

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

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

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

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

PHP

Prof. Adriano Teixeira de Souza

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

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

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

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

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

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

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

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