You are on page 1of 63

Desenvolvimento

Baseado em Componentes
Centro de Inform-ca - Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br

Bibliograa recomendada
C.R.U.I.S.E - Component Reuse in SoEware Engineering. 1. ed. Recife: C.E.S.A.R e-books, 2007
hPp://cruise.cesar.org.br/ Chapters 2 & 3

[if977] Engenharia de SoEware - SI - CIn - UFPE

Evangelizao
Como assim reuso? O que reuso? Quem faz reuso? Voc fez/faz/pensa em fazer? Como? Quando? Onde? Por que?

[if977] Engenharia de SoEware - SI - CIn - UFPE

Warm up
O que so componentes para voc?
Tipos/Categorias Quando Posi-vos Nega-vos

[if977] Engenharia de SoEware - SI - CIn - UFPE

INTRODUO A DBC

[if977] Engenharia de SoEware - SI - CIn - UFPE

[if977] Engenharia de SoEware - SI - CIn - UFPE

Desenvolvimento Baseado em Componentes


Viso clssica
SoEware = blocos monol-cos Partes inter-relacionadas Mundo integral

DBC

Pedaos de blocos Reduo Complexidade Tempo de desenvolvimento Mundo distribudo


[if977] Engenharia de SoEware - SI - CIn - UFPE 7

DBC :: Contextualizao
Componentes so unidades de
Abstrao
No consegue resolver um problema? Abstraia um nvel acima

Anlise
Diviso em partes menores facilita o entedimento/anlise.

Disputa
Diferentes fornecedores de componentes VS falha no sistema

Gerenciamento de Congurao Deployment Manuteno


[if977] Engenharia de SoEware - SI - CIn - UFPE 8

Mercado vs Tecnologia
Desenvolvimento de Componentes
No simples Viso de domnio Uso de abstraes Informaes
Documentao Informaes de teste Help

Retorno de Inves-mento
Desenvolvimento em casa
Tempo de entrega Manutenabilidade Flexibilidade

imperfect technology in a working market is sustainable; Perfect technology without any market will vanish
Szyperski, 2002, pp. 18 9 [if977] Engenharia de SoEware - SI - CIn - UFPE

Denies
Same-nger (1997)
Reusable soEware components are self-contained, clearly iden-able ar-facts that describe and/or perform specic func-ons and have clear interfaces, appropriate documenta-on and a dened reuse status

Heineman (2001)

A soEware component is a soEware element that conforms to a component model and can be independently deployed and composed without modica-on according to a component standard

Szyperski (2002)

A soEware component is a unit of composi-on with contractually specied interfaces and explicit context dependencies only. A soEware component can be deployed independently and is subject to composi-on by third par-es

[if977] Engenharia de SoEware - SI - CIn - UFPE

10

Denio de Szyperski
uma unidade de implantao independente
Com dependncias explcitas de contexto

uma unidade de composio


Interfaces especicadas contratualmente Documentao

No possui estado externo observvel


No se dis-ngue de cpias de si mesmo No pode ser instanciado como objeto
[if977] Engenharia de SoEware - SI - CIn - UFPE 11

Atributos de Componentes
Interao de Componentes
Alta coeso Baixo acoplamento (mtricas mdulo avanado)

Distribuio
Componentes so distribudos logicamente e algumas vezes separados sicamente Aumento do poder computacional, exibilidade [diferentes equipes, diferentes fornecedores]
[if977] Engenharia de SoEware - SI - CIn - UFPE 12

Atributos de Componentes
Adaptao
Customizao Modicao

Qualidade
Tolerncia a falhas Componentes distribudos Testes e cer-cao de componentes (mdulo avanado)
[if977] Engenharia de SoEware - SI - CIn - UFPE 13

E o que um Objeto?

[if977] Engenharia de SoEware - SI - CIn - UFPE

14

Aspectos de um Componente

[if977] Engenharia de SoEware - SI - CIn - UFPE

15

Componentes vs Objetos
Componentes
Unidade de implantao independente Composio por terceiros No possui estado externo (observvel)

Objetos
Unidade de instanciao e tem um iden-cador nico Possui estado externo Encapsula seu estado e comportamento
[if977] Engenharia de SoEware - SI - CIn - UFPE 16

Componentes vs Objetos
Componentes
Black-box
JAVA API Uso baseado nas interfaces Acesso ao cdigo fonte Adaptaes e Modicaes

White-box

Objetos

En-dades que encapsulam estado e comportamento e possuem um iden-cador nico Comportamento e estruturas denidos por classes que:
Implementam Tipos Abstratos de Dados Provem abstraes do comportamento dos objetos Provem implementaes concretas do comportamento dos objetos Permite a criao de objetos instncias de classes
[if977] Engenharia de SoEware - SI - CIn - UFPE

17

Componentes e Objetos :: Similaridades


Os modelos de componentes so baseados no paradigma orientado a objetos Os componentes denem o comportamento e a criao dos objetos Ambos disponibilizam suas funcionalidades atravs de descries de comportamento abstratas - interfaces
[if977] Engenharia de SoEware - SI - CIn - UFPE 18

Componentes e Objetos :: Diferenas


Implementao de componentes geralmente oculta e algumas vezes disponvel Componentes podem ser implementados em diferentes modos: classes nicas, diversas classes ou procedimentos no orientado a objetos Componentes so desenvolvidos segundo um modelo de componentes bem denido
[if977] Engenharia de SoEware - SI - CIn - UFPE 19

O Que um Componente?

[if977] Engenharia de SoEware - SI - CIn - UFPE

20

Taxonomia (Heineman)
GUI
Mais comum, baixa complexidade. Reso deste -po de componente pode aumentar a produ-vidade em at 40%.

Servios
Mdia complexidade. Reso deste -po de componente pode aumentar a produ-vidade em at 150%.

Domnio
Alta complexidade por pertencer a todo o domnio em questo. Reso deste -po de componente pode aumentar a produ-vidade em at 1000%.

[if977] Engenharia de SoEware - SI - CIn - UFPE

21

Taxonomia
Sami-nger

[if977] Engenharia de SoEware - SI - CIn - UFPE

22

INTERFACES E CONTRATOS

[if977] Engenharia de SoEware - SI - CIn - UFPE

23

Interfaces
Ponto de Acesso
Especica um conjunto de operaes que podem ser invocadas por clientes

Funciona como contrato entre os componentes e os seus clientes Providas


Os componentes possuem os detalhes de implementao de todas as operaes denidas pela interface Os componentes solicitam uma interao denida pela interface e esperam que outros componentes implementem as operaes
[if977] Engenharia de SoEware - SI - CIn - UFPE 24

Requeridas

Contratos
Contratos denem:
O que o cliente precisa saber para u-lizar as interfaces O que o provedor tem que implementar de modo a atender os servios denidos pela interface Denio de Pr x Ps condies

[if977] Engenharia de SoEware - SI - CIn - UFPE

25

Interfaces vs Especicao de Componentes


Interface
Representa o uso do contrato Prov uma lista de operaes Dene um modelo especco informao lgica subjacente interface Especica a forma como as operaes afetam, ou "conam" no modelo de informaes Descreve apenas os efeitos locais

Componente
Representa a realizao dos contratos Fornece uma lista de interfaces suportadas Dene a unidade de tempo de execuo Dene as relaes entre os modelos de infromao de diferentes interfaces Especica como as operaes devem ser implementadas em termos de u-lizao de outras interfaces
26

[if977] Engenharia de SoEware - SI - CIn - UFPE

MODELOS DE COMPONENTES

[if977] Engenharia de SoEware - SI - CIn - UFPE

27

Modelos de Componentes
Modelos de Componentes denem um conjunto de padres para implementao de componentes, interoperabilidade, customizao, composio, evoluo e implantao
Enterprise JavaBeans (EJB) CORBA Component Model (CCM) MicrosoE .NET OSGi

Implementao de um modelo de componentes - dedicado conjunto de elementos de soEware executveis, necessrios para suportar a execuo dos componentes segundo um modelo de compoentes bem denido
Servidores de Aplicao
Exemplos: JBoss, Web4J, Frameworks (Struts & Hibernate)
[if977] Engenharia de SoEware - SI - CIn - UFPE 28

Elementos
Heterogeneidade de componentes demanda padres
Padres para Interfaces Nomeao Meta-dados Interoperabilidade Customizao Composio Suporte a Evoluo Empacotamento e Implantao Descrio Especicao de comportamento dos componentes e de suas propriedades Nomes globais nicos para interfaces e componentes Informaes sobre os componentes, as interfaces e seus relacionamentos Comunicao e intercmbio de dados entre componentes de diferentes fornecedores, implementados em diferentes linguagens Interfaces e ferramentas para customizar componentes Interfaces e regras para combinar componentes a m de criar grandes estruturas Regras e servios para subs-tuir componentes ou interfaces por novas verses Empacotamento da Implementao e recursos necessrios para instalar e congurar um componente
[if977] Engenharia de SoEware - SI - CIn - UFPE

29

OSGi - Open Services Gateway Initiative


Execu-on Environment
Ambiente padronizado para aplicaes chamadas de bundles J2SE, CDC (JSR 232: Mobile Opera-onal Management), CLDC, MIDP hPp://www.osgi.org

Modules

Pol-cas de carregamento de classes Classes privadas para mdulos, bem como links controlados entre mdulos

Life Cycle

Estados para os bundles - installed, started, stopped, updated and uninstalled

Service Registry

Prov cooperao entre os bundles Compar-lhamento de objetos entre bundles

[if977] Engenharia de SoEware - SI - CIn - UFPE

30

Containers Open Source para OSGi


Equinox
Implementao de referncia para o OSGi R4. Previamente instalada no corao do Eclipse. Tutorial: hPp://aneeshkumarkb.blogspot.com/

Apache Felix

Implementao open source da Apache SoEware Founda-on. Ainda no est completamente compavel com OSGi R4

knopersh

Implementao open source para OSGi R3 and OSGi R4

Informaes interessantes - Hello, OSGi, Part 1: Bundles for beginners


hPp://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html? page=1
[if977] Engenharia de SoEware - SI - CIn - UFPE 31

MTODOS DE DBC

[if977] Engenharia de SoEware - SI - CIn - UFPE

32

UML Components
UML Components
Bem focado na especicao de componentes Simples (baseado em estereZpos) Uso de UML e estrutura RUP Workow
Denio de requisitos Especicao de componentes
Iden-cao Interao Especicao

Adequao Codicao Testes


[if977] Engenharia de SoEware - SI - CIn - UFPE 33

UML Components
Esteretipos
<<type>>. Usado para representar uma classe no modelo de negcios de um componente em nvel de especificao. <<datatype>>. Possui a mesma representao de Type, mas usado para classes que utilizam persistncia. <<interface type>>. Representa uma interface em nvel de especificao. <<comp spec>>. Usado para indicar uma especificao de um componente. <<offers>>. Liga uma especificao de um componente sua interface. <<core>>. O core subentende um type sem ocorrncia de dependncias.

[if977] Engenharia de SoEware - SI - CIn - UFPE

34

UML Components

[if977] Engenharia de SoEware - SI - CIn - UFPE

35

UML Components
Entradas: Modelo de casos de uso Modelo conceitual do negcio

Sadas Arquitetura Especificao de componentes

[if977] Engenharia de SoEware - SI - CIn - UFPE

36

UML Components
Exemplo para estudo de caso
Um sistema de reserva para hotis que permita que a reserva seja feita para qualquer hotel da cadeia. O sistema deve oferecer quartos alterna-vos se o hotel desejado es-ver lotado. Cada hotel tem um administrador de reservas responsvel por controlar as reservas. O tempo para conseguir realizar uma reserva por telefone ou mesmo pessoalmente , em mdia, trs minutos. Para acelerar o processo, detalhes sobre clientes an-gos sero armazenados e estaro disponveis.

[if977] Engenharia de SoEware - SI - CIn - UFPE

37

Workow de Requisitos

[if977] Engenharia de SoEware - SI - CIn - UFPE

38

Fase 1 IndeZcao de componentes


Iden-car interfaces e operaes do sistema
Modelos de casos de uso u-lizado para descoberta de operaes Formalizaao do modelo conceitual do negcio

[if977] Engenharia de SoEware - SI - CIn - UFPE

39

IdenZcar Casos de Uso

[if977] Engenharia de SoEware - SI - CIn - UFPE

40

[if977] Engenharia de SoEware - SI - CIn - UFPE

41

[if977] Engenharia de SoEware - SI - CIn - UFPE

42

IdenZcao de componentes

[if977] Engenharia de SoEware - SI - CIn - UFPE

43

IdenZcar as interfaces e operaes do sistema

[if977] Engenharia de SoEware - SI - CIn - UFPE

44

Fase 1 IndenZcao de componentes


Iden-car interfaces de negcio
Abstraes da informao manipulada pelo sistema Renamento do modelo conceitual gerando o modelo de -pos de negcio
No h cadeia de hotis

Simplificao

No d suporte a operaes de pagamentos e contas


[if977] Engenharia de SoEware - SI - CIn - UFPE 45

Fase 1 IndenZcao de componentes


Iden-car interfaces de negcio
Diagrama inicial de -pos de negcio

[if977] Engenharia de SoEware - SI - CIn - UFPE

46

Fase 1 IndenZcao de componentes


Iden-car interfaces de negcio
A par-r do Diagrama inicial de -pos de negcio, fazemos a idenZcao dos Zpos <<core>>

[if977] Engenharia de SoEware - SI - CIn - UFPE

47

Fase 1 IndenZcao de componentes


Iden-car interfaces de negcio
Iden-cados os -pos <<core>>, criamos a especicao inicial de interfaces

[if977] Engenharia de SoEware - SI - CIn - UFPE

48

Fase 1 IndenZcao de componentes


Especicar arquitetura de componentes
Uma vez que as interfaces foram iden-cadas e inicialmente especicadas, montamos a arquitetura de componentes.

[if977] Engenharia de SoEware - SI - CIn - UFPE

49

Fase 2 Interao de componentes


Obje-vo: renar especicao inicial de interfaces para obter assinaturas das operaes Passos
Desenvolver modelos de interao para cada operao do sistema
Diagramas de sequncia

Descobrir operaes das interfaces do sistema e suas assinaturas Renar responsabilidades


Assinaturas dos mtodos Atores atuantes nos diagramas de sequncia Regras de negcio que impem restries
[if977] Engenharia de SoEware - SI - CIn - UFPE 50

Denir restries necessrias

Fase 3 Especicao de componentes


Obje-vo: obter a especicao completa dos componentes e suas interfaces bem como os contratos de uso e realizao. Passos
Especicar o modelo de informao da interface
A par-r das assinaturas das operaes da fase 2

Denir pr e ps-condies
Restries aplicadas s operaes

Montar especicao do componente


Viso geral do diagrama de componentes
[if977] Engenharia de SoEware - SI - CIn - UFPE 51

Fase 3 Especicao de componentes


Modelo de informao da interfaces

[if977] Engenharia de SoEware - SI - CIn - UFPE

52

Fase 3 Especicao de componentes


Diagrama de especicao de componentes (renamentos poderiam ter sido aplicados de acordo com a descoberta de operaes durante a fase de interao de componentes)

[if977] Engenharia de SoEware - SI - CIn - UFPE

53

Detalhes da Especicao dos Componentes

[if977] Engenharia de SoEware - SI - CIn - UFPE

54

Diagramas UML vs UML Components

[if977] Engenharia de SoEware - SI - CIn - UFPE

55

Sumarizando

[if977] Engenharia de SoEware - SI - CIn - UFPE

56

Pontos importantes
Perceber a HORA e POSSIBILIDADE de criar um componente.
Quantas aplicaes produzidas no mesmo domnio? Quanto de cdigo vem sendo reusado entre essas aplicaes? Qual o nvel de customizao do cdigo de uma aplicao para outra? Cdigo apresenta estabilidade suciente?

Ok, isso pode ser um componente.

Que funcionalidades devem ser providas? Documentao adequada ou somente os prprios desenvolvedores conseguem usar? Qual o benecio deste componente? Reu-lizar o componente mais dicil do que codicar a funcionalidade novamente? Qual o esforo gasto para criao/manuteno do componente em relao ao tempo economizado com o reso do mesmo?

[if977] Engenharia de SoEware - SI - CIn - UFPE

57

Aplicao prZca

1) Standard adaptable screen. 2) Standard adaptable screen with acZve context menu. 3) Standard form with CustomTextField and CustomCheckBox components appended. 4) Popup with a visual eect applied to the background screen. 5) Message screen with a scroll bar. 6, 7 and 8) Examples of standard MIDP screens.
[if977] Engenharia de SoEware - SI - CIn - UFPE 58

Futuro do DBC
Alguns pesquisadores acreditam numa evoluo natural dos Servios? paradigmas, como representado:
Aspectos? Linhas de Produto? Desenv. Baseado em Componentes Orientao a Objetos Linguagens Imperativas Linguagens Baixo Nvel
[if977] Engenharia de SoEware - SI - CIn - UFPE 59

Referncias
[Same-nger, 1997] Same-nger, J. "SoEware Engineering with Reusable Components", Springer- Verlag, 1997, pp.275. [DSouza and Wills, 1998] DSouza, D. F. and Wills, A. C. "Objects, Components and Frameworks with UML: The Catalysis Approach", Addison-Wesley, 1998, pp. 816. [Bachmann et al., 2000] Bachmann, F., Bass, L., Buhman, C., Buhman, C., Comella-Dorda, S., Long, F., Robert, J., Seacord, R. and Wallnau, K. "Volume II: Technical Concepts of Component-Based SoEware Engineering", SoEware Engineering Ins-tute (SEI), Technical Report, May, 2000, pp. 65. [Cheesman and Daniels, 2000] Cheesman, J. and Daniels, J. "UML Component A Simple Process for Specifying Component-Based SoEware, Addison-Wesley, 2000, pp. 208. [Council and Heineman, 2001] Councill, B. and Heineman, G. T. "Deni-on of a SoEware Component and its Elements", in G. T. Heineman, W. T. Councill, Component-Based SoEware Engineering, Addison-Wesley, 2001, pp. 818. [Heineman and Councill, 2001] Heineman, G. T. and Councill, B. "Component-Based SoEware Engineering", Addison-Wesley, 2001, pp. 818. [Williams, 2001] Williams, J. "The Business Case for Components" in G. T. Heineman, W. T. Councill, Component-Based SoEware Engineering, Addison-Wesley, 2001, pp. 818. [Weinreich, 2001] Weinreich, R. and Same-nger, J. "Component Models and Component Services: Concepts and Principles" in G. T. Heineman, W. T. Councill, Component-Based SoEware Engineering, Addison-Wesley, 2001, pp. 818. [Szyperski, 2002] Szyperski, C. "Component SoEware: Beyond Object-Oriented Programming", Addison-Wesley, 2002, pp. 588.

[if977] Engenharia de SoEware - SI - CIn - UFPE

60

Referncias
[PECOS, 2005] Pervasive Component Systems - PECOS Project. Disponvel em hPp://www.pecos- project.org/, Junho 2005. [Almeida et al., 2005] E. S. Almeida, A. Alvaro, D. Lucredio, V. C. Garcia, S. R. L. Meira, A Survey on SoEware Reuse Processes, IEEE Interna-onal Conference on Informa-on Reuse and Integra-on (IRI), Las Vegas, Nevada, USA, 2005. [Traas & Hillegersberg, 2000] Traas, V.; Hillegersberg, J. V. The soEware component market on the internet current status and condi-ons for growth. In: ACM SIGSOFT SoEware Engineering Notes, Vol. 25 No. 1, January, 2000. [Neighbors, 1980] J. M. Neighbors, SoEware Construc-on Using Components, PhD Thesis, University of California, Irvine, Department of Informa-on and Computer Science, USA, April, 1980, pp.217. [Simos et al., 1996] M. Simos, D. Creps, C. Klingler, L. Levine, D. Allemang, Organiza-on Domain Modeling (ODM) Guidebook, Version 2.0, Technical Report, June, 1996, pp. 509. [Jacobson et al., 1997] I. Jacobson, M. L. Griss, P. Jonsson, Making the Reuse Business Work, IEEE Computer, Vol. 30, No. 10, October, 1997, pp. 36-42. [Kang et al., 1998] K. C. Kang, S. Kim, J. Lee, K. Kim, E. Shin, M. Huh, FORM: A Feature-Oriented Reuse Method with domain-specic reference architectures, Annals of SoEware Engineering Notes, Vol. 05, No. 00, Janeiro, 1998, pp. 143-168. [Villela, 2000] R. M. M. B. Villela, Search and Recovery of Components in SoEware Reuse Environments (in portuguese), Ph.D. Thesis, Federal University of Rio de Janeiro, December, 2000, pp. 264.

[if977] Engenharia de SoEware - SI - CIn - UFPE

61

Referncias
[Kang et al., 1990] K. C. Kang, S. G. Cohen, J. A. Hess, W. E. Novak, A. S. Peterson, Feature-Oriented Domain Analysis (FODA) Feasibility Study, SoEware Engineering Ins-tute (SEI), Technical Report, November, 1990, pp. 161. [Clements & Northrop, 2001] P. Clements, L. Northrop, SoEware Product Lines: Prac-ces and PaPerns, Addison-Wesley, 2001, pp. 608. [Pase & Pree, 2000] A. Pase, W. Pree, Two Novel Concepts for Systema-c Product Line Development, SoEware Product Line Conference (SPLC), Denver, Colorado, USA, August, 2000, pp. 249-270. [Rombach, 2000] D. Rombach, Fraunhofer: The German Model for Applied Research and Technology Transfer, 22nd Interna-onal Conference on SoEware Engineering [ICSE], Limerick, Ireland, May, 2000, pp. 25-34. [Batory & OMalley, 1992] D. Batory, S. OMalley, The Design and Implementa-on of Hierarchical SoEware Systems with Reusable Components, ACM TOSEM, October, 1992. [Batory et al., 2000] D. S. Batory, R. Cardone, Y. Smaragdakis, Object- oriented frameworks and product lines, SoEware Product Line Conference (SPLC), Denver, Colorado, USA, August, 2000, pp. 227-248.
[if977] Engenharia de SoEware - SI - CIn - UFPE 62

Referncias
[Bayer et al., 1999] J. Bayer, O. Flege, P. Knauber, R. Laqua, D. Muthig, K. Schmid, T. Widen, J. DeBaud, PuLSE: A Methodology to Develop SoEware Product Lines, Symposium on SoEware Reusability (SSR), Los Angeles, USA, May, 1999, pp. 122-131. [Weiss & Lai, 1999] D. M. Weiss, C. T. R. Lai, SoEware Product-Line Engineering: A Family-Based SoEware Development Process, Addison-Wesley, 1999, pp. 426. [Atkinson et al., 2000] C. Atkinson, J. Bayer, D. Muthig, Component-Based Product Line Development: The KobrA Approach, First SoEware Product Line Conference [SPLC], Kluwer Interna-onal Series in SoEware Engineering and Computer Science, Denver, Colorado, USA, August, 2000, pp.19. [America et al., 2000] P. America, H. Obbink, R. V. Ommering, F. V. D. Linden, CoPAM: A Component-Oriented Plaorm Architec-ng Method Family for Product Family Engineering, First SoEware Product Line Conference (SPLC), Kluwer Interna-onal Series in SoEware Engineering and Computer Science, Denver, Colorado, USA, August, 2000, pp. 15. [Kang et al., 2002] K. C. Kang, J. Lee, P. Donohoe, Feature-Oriented Product Line Engineering, IEEE SoEware, Vol. 19, No. 04, July/August, 2002, pp.58-65. [Gomaa, 2005] H. Gomaa, Designing SoEware Product Lines with UML: From Use Cases to PaPern-Based SoEware Architectures, Addison-Wesley, 2005, pp. 701.

[if977] Engenharia de SoEware - SI - CIn - UFPE

63

You might also like