Desenv. Baseado em Padres de Proj. e Frameworks Prof. Jemerson Fernando Maia Toledo - Pr - 02/2014 Introduo Um dos principais objetivos da Engenharia de Software o reuso. Aumenta qualidade; Reduz esforos de desenvolvimento; Reusar software no simples Maioria dos esforos resultam apenas a reutilizao de pequenos componentes
2 Introduo Em frameworks a reutilizao o foco principal. Possibilita que uma famlia de produtos seja gerada a partir de uma nica estrutura que captura os conceitos mais gerais da famlia de aplicaes (Pinto, 2000). 3 Introduo Principais vantagens do uso de frameworks Aumento do reuso Diminuio do tempo para produo de famlia de aplicaes Framework prov reutilizao de Design Cdigo Reuso em larga escala 4 Definies Um framework um conjunto de classes que constituem um design abstrato para solues de uma famlia 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 aplicao ou um domnio de um subsistema. Johnson (1991) 5 Definies Uma arquitetura desenvolvida com o objetivo de se obter a mxima reutilizao, representada como um conjunto de classes abstratas e concretas, com grande potencial de especializao. Mattsson (1996) 6 O que so Frameworks afinal Frameworks so projetados com a inteno de facilitar o desenvolvimento de software; uma tcnica da Orientao a Objetos, voltada para a reutilizao e se beneficia de: abstrao, polimorfismo e herana. Um framework descreve a arquitetura de um sistema orientado a objetos. 7 O que so Frameworks afinal Ele pode ser vislumbrado como o esqueleto de uma aplicao que pode ser customizado pelo programador. Com frameworks no se busca apenas reutilizar simples componentes de software, mas subsistemas, aumentando assim o grau de reutilizao. 8 Objetivos de um Framework Elevar produtividade; Reduzir despesas; Reutilizao de cdigo; Reutilizao da anlise; Reduzir erros (bugs); Desenvolvimento em larga escala Conjuntos de aplicaes mais homogneas 9 Caractersticas Reusvel Propsito final Para ser reusvel, deve primeiro ser usvel Bem documentado Fcil de usar Extensvel Framework contm funcionalidade abstrata (sem implementao) que deve ser completada 10 Caractersticas Seguro Desenvolvedor de aplicaes no pode destruir o framework Eficiente Devido a seu uso em muitas situaes, algumas das quais podero necessitar de eficincia 11 Caractersticas Inversion-of-Control (IoC) Princpio de Hollywood: Dont call us, we call you Framework define o controle de fluxo Inverso do controle de fluxo, comparativamente s bibliotecas de classes Framework comanda a resposta do sistema aos eventos externos Invocando operaes definidas pelo programador 12 Caractersticas Inversion-of-Control (IoC) 13 Caractersticas Inversion-of-Control (IoC) 14 Biblioteca de Classes
Snot Foo Bar Framework
Snot Foo <<abstract>> Bar Ciente usa usa CienteBar CienteFoo Propriedades Ncleo do framework Conjunto de classes que juntas colaboram para implementar uma arquitetura de famlia de sistemas Pontos de extenso Na forma de classes abstratas ou interfaces Controle de Fluxo da Aplicao Fluxo definido pelo comportamento das classes que representam o seu ncleo Classes responsveis por invocar classes que estendem os pontos de extenso 15 Propriedades 16 Ncleo Pontos de Extenso Propriedades Hot Spots Pontos de Flexibilizao Partes passveis de customizao e extenso Expressam aspectos do domnio do framework que no podem ser antecipados Descobertos na anlise do domnio Posteriormente instanciados por especialistas no domnio da aplicao 17 Propriedades Frozen Spots Partes fixas (ncleo) Partes de cdigo j implementadas Chamam um ou mais hot spots definidos em cada instncia 18 Abstrao Frameworks no so executveis Servem para produzir uma aplicao completa e executvel Instanciando o framework implementando cdigo especfico aplicao para cada hot spot 19 Abstrao 20 Tcnicas de Customizao Extenso de classes abstratas Implementao de interfaces Configurao/Composio de classes existentes Parametrizao 21 Tcnicas de Customizao 22 Customizao por Herana: Implementao dos Mtodos Abstratos Tcnicas de Customizao 23 Classificao (escopo) Frameworks da Infra-estrutura de Sistema Do suporte ao desenvolvimento das infra- estruturas de sistemas como Comunicaes Interfaces com usurio Compiladores Frameworks de Integrao com Middleware Padres e classes que do suporte comunicao de componentes e a troca de informao 24 Classificao (escopo) Frameworks de Aplicaes Corporativas Suportam o desenvolvimento de tipos especficos de aplicao como telecomunicaes ou sistemas financeiros Relacionados com Famlia de Programas 25 Classificao (tcnica de extenso ) Alm da classificao por escopo, so classificados quanto a tcnica de extenso dos hot spots : Frameworks caixa branca, ou white box; Frameworks caixa preta, ou black box; Frameworks caixa cinza, ou gray box; 26 Frameworks caixa branca White Box Fortemente ligado s caractersticas das linguagens OO Herana e Classes Abstratas Instanciao atravs da criao de novas classes Utilizao de herana e de implementao de mtodos Requer bom entendimento do framework para criar uma instncia Padres de projeto tipicamente usados Template Method e Abstract Factory 27 Frameworks caixa preta Black Box Instanciados a partir de scripts ou de algum tipo de configurao XML Wizard Grfico Fundamenta-se no mecanismo de composio No requer entendimento de detalhes internos para produzir uma instncia O Black Box utiliza o padro Strategy onde o instanciador passa um objeto que definir o funcionamento do framework. 28 29 Frameworks caixa preta e caixa branca Frameworks caixa cinza A grande maioria dos frameworks no so nem White Box, nem Black Box, mas Gray Box, uma mistura de ambos. Normalmente um framework inicia como White Box por causa dos custos menores e ento com sua evoluo envolve-se com Black Box. Frameworks Gray Box possuem as caractersticas conjuntas dos frameworks caixa branca e preta, de forma a tentar evitar as desvantagens dos dois.
30 Frameworks caixa cinza Tipo varia de acordo com a abordagem utilizada para a implementao dos Hot Spots 31 Por Herana Por Composio Gray-Box White-Box Black-Box Frameworks X Aplicaes Orientado a Objetos 32 Aplicao orientada a objetos: um programa completo executvel. no geram famlias de frameworks Framework: aplicaes incompletas no executveis. geram famlias de aplicaes Frameworks X Biblioteca de Classes 33 Bibliotecas Conjunto de classes relacionadas Funcionalidades de propsito geral Classes no relacionadas a um domnio de aplicao especfica Em contrapartida s classes de um framework Diferena Grau de reutilizao Impacto na arquitetura da aplicao Classe de uma biblioteca Reutilizada sozinha Classe de um framework Reutilizada juntamente com as outras em uma instanciao
Frameworks X Biblioteca de Classes 34 Classes instanciadas pelo cliente Cliente chama funes No tem fluxo de controle pr-definido No tem interao pr-definida No tem comportamento default Customizao com subclasse ou composio Chama funes da aplicao Controla o fluxo de execuo Define interao entre objetos Prov comportamento default Frameworks X Padres de Projetos Aparentemente, ambos consistem de classes, interfaces e colaboraes prontas Diferenas Design patterns mais abstratos do que frameworks Framework inclui cdigo, design pattern no (apenas exemplo do uso de pattern) Devido presena de cdigo, framework pode ser estudado a nvel de cdigo, executado, e reusado diretamente Design patterns elementos arquiteturais menores do que frameworks Framework tpico contm vrios design patterns mas o contrrio nunca ocorre Exemplo: Design patterns so frequentemente usados para documentar frameworks Design patterns menos especializados do que frameworks Frameworks sempre tm um domnio de aplicao particular enquanto design patterns no ditam uma arquitetura de aplicao particular
35 Frameworks X Padres de Projetos 36 Documentao de Frameworks Documentao do framework indispensvel; Tarefas mais importantes e essenciais principalmente para frameworks de aplicao; A falta dessa documentao pode aumentar a curva de aprendizado; Necessria para toda a vida do framework; a ferramenta principal para os desenvolvedores entenderem o framework; 37 Desenvolvimento de Framework Desenvolvimento tradicional orientado a objetos Anlise da Aplicao Design Aplicao Desenvolvimento de aplicaes baseado em frameworks Anlise do Domnio Design do Framework Aplicao 1 Aplicao 2 Aplicao n ... 38 Processo de desenvolvimento de um framework O processo de desenvolvimento utilizando framework consiste em desenvolver o framework (projetista); Responsvel pela estrutura bsica Determina pontos de extenso desenvolver uma aplicao com esse framework (desenvolvedor) ; Satisfaz pontos de extenso Instncia o framework realizar manuteno ao framework (manetedor) ; Redefinir e acrescentar novas funcionalidades 39 Processo de desenvolvimento Caso Geral Anlise do Domnio do Problema Testar o Framework desenvolvendo Aplicao Desenvolvimento do Framework 1. Usar 2. Erros e Experincia 3. Atividade de manuteno usando a experincia 40 Processo de desenvolvimento Baseado na Experincia Desenvolvimento da Aplicao Desenvolvimento do Framework 1. Elementos em Comum 2. Experincia Inicio do desenvolvimento de n aplicaes 1. Re-desenvolver as n aplicaes usando o Framework 2. Desenvolver as aplicaes n+1,n+2, ... usando o Framework Atividade de manuteno usando a experincia 41 Processo de desenvolvimento Baseado na Anlise de Domnio Anlise do Domnio Desenvolvimento da Aplicao Desenvolvimento do Framework 1. Identificar abstraes e elementos em comum 2. Usar 3. Experincia 4. Atividade de manuteno usando a experincia 42 43 Exemplo 1 - Agenda Servio de agenda eletrnica para a WWW Servio possui com as seguintes facilidades: cadastro do usurio registro em eventos da agenda tarefas, compromissos, aniversrios e programas de TV (disponibilizados futuramente). eventos registrados podem possuir alarmes para lembrar ao usurio da sua ocorrncia alarmes meios de comunicao Hotspots Canais de comunicao Tipos de eventos Exemplo 1 - Agenda Hot Spots 44 Exemplo 1 - Agenda 45 Vantagens Com o framework pronto, benefcios Reduo de custos Reduo de time-to-market Motivos Maximizao de re-uso (anlise, design, cdigo, testes) Reutilizao de design feito por outros pode transferir conhecimento e experincia para o usurio do framework
46 Vantagens Desenvolvedores adicionam valor em vez de reinventar a roda Menos manuteno Fatorao de aspectos comuns a vrias aplicaes Melhora do cdigo (menos defeitos) devido ao uso em vrias aplicaes 47 Vantagens Outras vantagens Diminuio de linhas de cdigo na aplicao Melhor consistncia e compatibilidade entre aplicaes Conhecimento sobre o domnio da aplicao mantido dentro da organizao 48 Desvantagens Construir um framework complexo Re-uso no vem sozinho: deve ser planejado mais complexo e demora mais fazer uma aplicao tendo que construir um framework em vez de fazer a aplicao do zero Documentao essencial para o usurio (desenvolvedor) poder utilizar o framework 49 Desvantagens Dificuldade para manter compatibilidade com verses anteriores Frameworks se tornam mais maduros com o passar do tempo e as aplicaes devem evoluir em paralelo Flexibilidade e generalizao do framework podem trabalhar contra sua eficincia em algumas aplicaes 50 Concluso Os frameworks so ferramentas de desenvolvimento que visam a reduo de custos, tempo e outros recursos em um projeto. Mesmo tendo tantas vantagens o apoio utilizao de framework no unnime. A utilizao dessa ferramenta pode ser muito til como tambm pode ser um empecilho por outro lado. 51 Atividade Criar uma aplicao que realize trs operaes: Some dois valores inteiros Calcule a rea de uma circunferncia: PI(3,1416) * Raio Calcule o juros simples mensal: juros = capital * % juros/ms * tempo
Dever apresentar informaes da operao (descrio), solicitar para o usurio informar os valores e apresentar o resultado. 52