arquitetura de software e frameworks
TRANSCRIPT
![Page 1: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/1.jpg)
Frameworks Frameworks orientados aorientados a
objetosobjetos
Por Sergio Crespo
![Page 2: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/2.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
O que é um Framework??? “Um framework é um conjunto de classes que constitui
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 3: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/3.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Particularização 1Particularização 2
Particularização n...
hotspot
Kernel
Framework
![Page 4: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/4.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
hotspothotspot
Framework
![Page 5: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/5.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Framework hotspots
![Page 6: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/6.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Input_Data
GetData(…)SetData(…)
Sort_Data
Sort_Proc(…)Show_Vect(…)
Sort_Proc--Bolha--Quick-sort--etc...
hotspot
![Page 7: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/7.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Framework vs outras abordagens Design pattern orientado a objeto. Linguagem de pattern. Biblioteca de classes. Uma aplicação orientada a objetos.
![Page 8: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/8.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Design Pattern orientado a objeto
Design patterns são mais abstratos do que um framework.
Design patterns possuem uma arquitetura menor do que um framework. Um framework pode conter vários Patterns, no entanto o oposto não se aplica.
Frameworks são mais especializados do que patterns. Frameworks estão sempre relacionados a um domíno de aplicação, enquanto patterns são mais genéricos e podem ser aplicados em vários domínios de aplicação.
[Mattsson - 1996]
![Page 9: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/9.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Linguagem de pattern
Descreve como fazer um design, enquanto um framework é o próprio design.
Complementam frameworks desde que ensinem aos projetistas como utilizá-lo e a descrever porque ele foi projetado desta maneira.
[Mattsson - 1996]
![Page 10: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/10.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Biblioteca de classes São um conjunto de classes relacionadas que tem
funcionalidades de propósitos gerais Suas classes não são relacionadas a um domínio
de aplicação específica, como no caso de classes de um framework.
A diferença é o grau de reutilização e o seu impacto na arquitetura da aplicação.
Uma classe da uma biblioteca é reutilizada sozinha, enquanto uma classe de um framework é reutilizada juntamente com as outras em uma instanciação.
[Mattsson - 1996]
![Page 11: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/11.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Uma aplicação orientada a objeto Descreve a execução um programa que atende a
todos os requisitos de uma especificação. Um framework captura as funcionalidades de
diversas aplicações no domínio, mas não é executável, já que não cobre o comportamento de uma aplicação específica.
[Mattsson - 1996]
![Page 12: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/12.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Análise Design Aplicação
Análise dodomínio
Frameworkdesign Aplicação 1
Aplicação 2
Aplicação n
................
Desenvolvimento tradicional orientado a objetos
Desenvolvimento de aplicações baseado em frameworksO processo de desenvolvimento de um framework é mais difícil e trabalhoso, já que estudase agora soluções para um conjunto de problemas de um determinado domínio. Na análise do domínio, observase as caracteristicas comuns das diversas aplicações.Desenvolvese o framework e as diversas aplicações serão feitas a partir da instanciação do framework.
processo de desenvolvimento
Frameworks
![Page 13: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/13.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Caracterização quanto ao Uso Um framework
orientado a objetos pode ser usado de duas formas:
Derivando se as classes do framework. ( architecture-driven ou inheritance-focused ou white box )
Combinado classes existentes. ( data-driven ou composition-focused ou black box ).
![Page 14: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/14.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Diretrizes de desenvolvimentoExiste um pequeno número de diretrizes para o desenvolvimento de
framework.
Uma das mais importantes que se deve ter em mente quando se está desenvolvendo um framework é como criar a interação entre o framework e o seu usuário, de maneira que a sua instanciação seja feita sem muito esforço.
O foco deverá estar em como o usuário interaje com o framework. Quando o usuário for desenvolver uma aplicação instanciando o framework, é necessário determinar quais os passos que serão realizados pelo framework e quais serão realizados pelo usuário.
![Page 15: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/15.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Diretrizes de desenvolvimento É importante identificar quais as classes e operações
do framework que o usuário terá que utilizar. A quantidade de código escrita deverá ser reduzida a um mínimo, e isto é possível pelos seguintes motivos:
Implementações concretas do framework que poderão ser utilizadas sem nenhuma modificação.
O número de classes que devem ser derivadas devem ser reduzidas ao menor número possível.
![Page 16: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/16.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Como instanciar um framework
Formas de se instanciar um framework.
Conectando componentes já existentes reutiliza a interface do framework reutiliza regras para a conexão dos componentes
Criando novas sub-classes concretas as sub-classes são bem acopladas a super-classe é necessário ter um maior conhecimento das classes
abstratas
![Page 17: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/17.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks
Como Utilizar
X
Utilização X X X
Manutenção X X X
Propósito do Framework
Aplicações de Exemplo
Decisão de Uso
Público X Documentação
Documentação de Frameworks
![Page 18: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/18.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Frameworks - exemplos
ET++ UniDraw HotDraw
![Page 19: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/19.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ET++ Framework
ET++: A Portable Application Framework
André WeinandErich Gamma
ET++ is a portable application framework, used to make platform-independent GUI-based application programs, at The University of Illinois at Urbana-Champaign.
![Page 20: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/20.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ET++ Framework - Arquitetura
![Page 21: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/21.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ET++ Framework – exemplo1
![Page 22: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/22.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ET++ Framework – exemplo2
![Page 23: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/23.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ET++ Framework – exemplo3
![Page 24: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/24.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Unidraw Framework
Unidraw: a framework for building domainspecific graphical editors
John Vlissides / IBM
Unidraw é um framework C++ para a criação de editores gráficos customizáveis que usa a bliblioteca IterViews.
http://www.vectaport.com/pub/doc/unidraw.ps
![Page 25: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/25.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
O que é o UnidrawO que é o Unidraw
Unidraw é um framework para a criação de editores gráficos orientados a objetos para domínios como desenho técnico e artístico, composição de músicas e design de circuitos eletrônicos.
A arquitetura Unidraw simplifica a construção desses editores provendo níveis de abstrações que são comuns aos vários domínios.
![Page 26: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/26.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Objetivos básicos do Unidraw
O uso do framework Unidraw busca alcançar os três pontos básicos a seguir : Dá suporte a uma variedade de editores de objetos gráficos
para vários domínios; Diminui significativamente o tempo para desenvolver um
editor específico comparado com uma implementação especialista (voltada especificamente para um determinado domínio);
Pode ser usado para criar editores standalone com performance e utilidade comparáveis àqueles desenvolvidos especificamente.
![Page 27: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/27.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Abstrações do Unidraw
Unidraw define quatro abstrações básicas : Componentes (components) : encapsulam a aparência e
a semântica dos objetos de um domínio; Ferramentas (tools) : provêm a manipulação direta dos
componentes; Comandos (commands) : definem as operações dos
componentes e objetos; Representação externa (external representation) : define
como será o arquivo de saída gerado pelo editor.
![Page 28: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/28.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
UniDraw Framework
![Page 29: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/29.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Unidraw – exemplo 1
![Page 30: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/30.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Unidraw – exemplo 2
![Page 31: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/31.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
Unidraw – exemplo 3
![Page 32: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/32.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
HotDraw Framework
![Page 33: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/33.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
HotDraw Framework
HotDraw is a two-dimensional graphics framework for structured drawing editors that is written in VisualWorks Smalltalk. It has been used to create many different editors from CASE tools to a HyperCard clone. You can easily create new figures and special manipulation tools for your drawings. Unlike many other drawing editors, HotDraw drawings can be animated.
http://st-www.cs.uiuc.edu/users/brant/HotDraw/
![Page 34: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/34.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
HotDraw Framework
![Page 35: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/35.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
HotPaint - HotDraw
The HotPaint program is a simple painting program. This program shows how to create new figures, as well as, how to create new tools.
![Page 36: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/36.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
DrawingInspector - Hotdraw
The DrawingInspector program is a visual inspector for Smalltalk. Objects in Smalltalk are represented by figures, and references between objects are represented by directed lines.
![Page 37: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/37.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
MovingDrawing - HotDraw
The MovingDrawing program is a simple animated program. You can draw rectangles. The rectangles move closer to each other until they come together in some central location. This program can be useful to learn how to animate drawings.
![Page 38: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/38.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
NetworkEditor - HotDraw
The NetworkEditor program uses animation to solve the nbody problem. You specify the nodes and the weights between the nodes in the bottom part of the window, and the top part displays the nodes. The editor also allows you to move the nodes if they reach a stable but unoptimal positioning.
![Page 39: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/39.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
ObjectWorld - HotDraw
The ObjectWorld program can be used for teaching some Smalltalk basics. You can draw figures in the bottom of the window, and animate them by entering Smalltalk commands in the top part of the window.
![Page 40: Arquitetura de software e Frameworks](https://reader033.vdocuments.site/reader033/viewer/2022052600/5572a958d8b42a051d8b4e31/html5/thumbnails/40.jpg)
© 2010 © 2010 Prof. D.Sc. Sérgio Crespo email:[email protected]. D.Sc. Sérgio Crespo email:[email protected]
PERTChart - HotDraw
The PERTChart program allows you to create and edit PERT charts. You can create new PERT figures and specify their name and start date. Their ending date will be automatically computed.