You are on page 1of 12

1

Uma anlise dos conceitos e definies do reuso de componentes na


reduo de custos no processo de desenvolvimento de software
Paulo Henrique Ribeiro de Oliveira (UNINOVE) paulohen@gmail.com
Renato Jos Sassi (UNINOVE) sassi@uninove.br



Resumo: A crescente busca por tcnicas e padres de desenvolvimento que reutilizem
bibliotecas de funes, refletindo em melhorias no desenvolvimento de software visando
ganho de qualidade e reduo de custo rdua e incessante. Tais condies so
fundamentais no sucesso do negcio de empresas ligadas tecnologia da informao. O
reuso um princpio essencial na rea de Engenharia de Software para garantir a reduo
de esforos e custos no processo de desenvolvimento de software. Neste contexto, o reuso de
componentes no processo de desenvolvimento de software pode exercer um papel importante
na concretizao desses objetivos. Componentes possuem diversas caractersticas, possuem
detalhes importantes que devem ser considerados durante sua concepo e podem ser
originados partir de necessidades e fontes de dados diferenciadas. O objetivo deste
trabalho foi analisar conceitos e definies do reuso de componentes na reduo de custos no
processo de desenvolvimento de software.O trabalho permitiu a imerso ao assunto sobre
reutilizao de componentes de software e o conhecimento das tcnicas associadas a esta
prtica.
Palavras-chave: Classificao de Componentes; Frameworks; Engenharia de Software;
Reuso de Componentes; Processo de Desenvolvimento de Software.
1. Introduo
O termo reuso ou componentizao no algo novo no desenvolvimento de software.
O primeiro relato ocorreu em 1968 durante uma conferncia de Engenharia de Software nos
Estados Unidos. Nesta ocasio McIlory (1968) apresentou uma proposta de produzir software
reutilizvel e propiciar aos desenvolvedores a possibilidade de escolher os componentes que
querem utilizar segundo as suas necessidades.
Conceitos como sub-rotinas, funes e macros comearam a surgir na dcada de 60. A
utilizao de mainframes nas grandes corporaes exigia um aumento cada vez maior da
necessidade de se otimizar o desenvolvimento de software e com isso o reuso passou a ganhar
maior importncia. Surgiram as bibliotecas de funes e de sub-rotinas, o cdigo objeto
(resultado da compilao de programas) passou a ser reusado por programas diferentes. Ao
longo da dcada de 70, as interfaces entre programas eram as chamadas de funes e sub-
rotinas.
No incio dos anos 80, acontece uma revoluo com o surgimento do conceito OO, de
Orientao a Objetos. Para Sommerville (2006) o reuso ganhou fora com os conceitos de


2
classes e objetos reusveis, onde disseminou-se a importncia do desacoplamento entre
objetos atravs do conceito de interfaces.
Para Moraes e Prado (2002) o reuso de componentes considerado uma abordagem
para o domnio da cardiologia. Para Andrade e Macdo (2005), o desenvolvimento baseado
em reuso de componentes uma tcnica promissora no desenvolvimento de sistemas
industrias, pois atende aos requisitos de distribuio, flexibilidade, escalabilidade,
interoperabilidade e reusabilidade.
A evoluo representou um profundo impacto sobre a Engenharia de Software, pois a
mudana de paradigmas do conceito de programao orientada a objetos para o conceito de
programao orientada a componentes de software facilita a implementao de um projeto e a
instalao da aplicao atravs da sua decomposio em um conjunto de elementos
executveis que podem ser independentemente projetados, construdos, executados, testados,
agrupados e mantidos.
A reutilizao (componentizao) caracteriza-se pela utilizao de produtos de
software em uma situao diferente daquela para qual, estes produtos foram originalmente
construdos. Neste contexto, a Engenharia de Software atua na aplicao de abordagens ao
desenvolvimento de software, buscando a melhora da qualidade e o aumento da produtividade
(KLABUNDE, 2000).
A reutilizao permite obter ganhos considerveis pois os componentes de software
reutilizados no tiveram de ser desenvolvidos (SOMMERVILLE, 2006).
O componente uma entidade executvel independente. O cdigo-fonte no est
disponvel, de modo que o componente no compilado com outros componentes do sistema.
Os componentes publicam suas interfaces e todas as interaes so feitas por elas. A interface
de um componente expressa em termos de operaes parametrizadas e seu estado interno
nunca exposto (SOMMERVILLE, 2006).
Para Silva e Werner (1996) a reutilizao a chave para o paradigma do grande
aumento da produtividade e qualidade no desenvolvimento de software em larga escala,
possibilitando o rpido desenvolvimento de sistemas complexos.
Ao se utilizar de tcnicas de reuso, deve-se considerar duas categorias bsicas baseada
nas definies fornecidas por McConnell (1996) e Schmidt e Huston (2002):
Reuso oportunstico;
Reuso planejado (tambm chamado reuso sistmico).
O reuso oportunstico usado quando o desenvolvedor identifica pontos em comum
com o sistema que ser desenvolvido. O custo e prazo do projeto so reduzidos quando o
desenvolvedor copia parte do sistema existente para o novo sistema. De acordo com Ezran
(2002) est tcnica conhecida como Cut and Paste.
Esta categoria de reuso acontece na maioria das empresas em maior ou menor escala,
podendo gerar pequenos ganhos. normalmente implantado de forma individual e sem
maiores formalidades, como documentao, por exemplo.
Ainda segundo Ezran (2002) a maioria das empresas que faz o reuso oportunstico


3
apenas duplica cdigo, num esquema caso a caso. O componente, ou o pedao de software
reusado, compartilhado somente por um grupo pequeno de desenvolvedores e no pela
empresa ou departamento. Esta categoria utilizada de forma limitada a desenvolvedores
individuais ou equipes pequenas, no se estendendo as demais rea de negcio da empresa,
pois se trata de uma prtica individual.
Para Ezran (2002), a prtica piora o ciclo de desenvolvimento pois medida que os
cdigos copiados comeam a se proliferar e a se diferenciar do cdigo original o tempo de
desenvolvimento aumenta porque os desenvolvedores so forados a corrigir as mesmas
falhas diversas vezes e em locais diferentes. Segundo Schmidt e Huston (2002), a soluo
para as falhas encontradas no cdigo original deve ser replicada em todos os lugares onde o
cdigo foi copiado, o que nem sempre possvel pois o rastreamento do que seja o cdigo
copiado pode se perder.
De acordo com McConnell (1996) a adaptao de um sistema para atender a novos
requisitos, ao invs de copiar partes de um sistema existente tambm classificado como
reuso oportunstico. Ao utilizar a primeira abordagem (copiar partes do sistema existente)
necessrio compreender pequenas partes do sistema, enquanto que na segunda abordagem
(adaptar um sistema existente) necessrio um entendimento do sistema como um todo. Para
o mesmo desenvolvedor, ou no caso de dois sistemas similares, a escolha da adaptao ser a
mais indicada.
O reuso planejado ou reuso sistmico ocorre quando o reuso consiste no esforo
intencional e concentrado de se reutilizar componentes, arquiteturas de software, frameworks,
patterns, documentos e outros artefatos de software ao longo de uma linha de produtos ou, a
longo prazo, em todas as reas da empresa. Nesta abordagem a produtividade e qualidade do
software aumentam ao mesmo tempo em que o custo do ciclo de desenvolvimento diminui,
pois so eliminadas as etapas de re-design, re-codificao e re-teste de componentes comuns
(SCHMIDT e HUSTON, 2002).
Deve ser considerado o programa de reuso oficial a ser adotado pela empresa, e a
longo prazo a categoria de reuso capaz de trazer os maiores benefcios em termos de
reduo de custos e tempo de projeto. importante enfatizar que o reuso planejado ou
sistmico uma estratgia de longo prazo e os benefcios no sero percebidos no primeiro
projeto.
Desta forma, o objetivo deste trabalho foi analisar conceitos e definies do reuso de
componentes na reduo de custos no processo de desenvolvimento de software.
Alm da introduo, o trabalho apresenta a seo 2 sobre metodologia de pesquisa, a
seo 3 sobre a fundamentao terica, evoluo dos componentes, tcnicas de reuso e um
comparativo entre tecnologias de reuso, as vantagens e desvantagens da utilizao de tais
tecnologias e a seo 4 apresenta a concluso relacionada ao tema abordado.
2. Metodologia de Pesquisa
A metodologia de pesquisa adotada neste trabalho foi definida como bibliogrfica. A
pesquisa bibliogrfica elaborada a partir de material j publicado, constitudo
principalmente de livros, artigos de peridicos e atualmente com material disponibilizado na
Internet (GIL, 2002).


4
A realizao da pesquisa bibliogrfica foi embasada em consultas a fontes
bibliogrficas e de referencial terico: artigos, livros, teses, dissertaes, websites com
contedos sobre classificao de componentes, processo de desenvolvimento de software
baseado em componentes, reuso de componentes, tecnologias de reuso de componentes,
reduo de custos baseado em reuso de componentes e frameworks.
Foram consultadas as seguintes bases de dados: Scielo, IEEExplore, Base de Teses
da Universidade de So Paulo e de congressos da rea da Engenharia de Produo como o
Encontro Nacional de Engenharia de Produo (ENEGEP) e o Simpsio de Engenharia de
Produo (SIMPEP).
3. Fundamentao terica
3.1 Componentes reutilizveis
Sobre componentes, importante considerar que as interfaces devem ser claramente
definidas. Interface uma abstrao do comportamento de um componente que consiste de
um subconjunto de interaes deste componente, associado a um conjunto de restries que
descreve quando elas podem ocorrer.
Para Guimaraes (2004), a habilidade para integrar e armazenar componentes e
partir desta integrao, disponibilizar estes componentes depende fundamentalmente da noo
de interface do componente. Bosch (1997) complementa que interfaces so definidas
principalmente como uma coleo de pontos de acesso a servios, ou Service Access Points,
cada uma contendo uma especificao semntica. Um componente no est sozinho em um
ambiente e o seu propsito proporcionar algum servio para tal ambiente.
Para atingir o reuso de componentes, a independncia do componente em si em
relao a tecnologia considerada importante. Assim, pode-se afirmar que o componente
composto de duas camadas, interface e implementao. No caso do reuso, importante
ressaltar que existem dois ciclos de vida distintos, um para cada camada: o ciclo de vida da
interface e o ciclo de vida da implementao. De acordo com Bosch (1997), o ciclo de vida da
interface maior que o ciclo de vida da implementao, pois as interfaces existem enquanto
houver implementaes disponveis para o seu componente associado, ou seja, a interface
continua existindo enquanto uma acaba e substituda por outra utilizando tecnologia
diferente.
Os componentes podem ser classificados em dois tipos distintos (EZRAN, 2002):
Componentes verticais;
Componentes horizontais.
Os componentes verticais so especficos a um domnio de aplicao, valiosos pois
englobam as regras de negcio embutidas nas aplicaes da empresa e com isso representam
o know-how da empresa e sua vantagem competitiva frente concorrncia. Classificam-se
como exemplos de componentes verticais: bibliotecas C++ para instrumentos mdicos; design
e cdigo para mdulo de gerenciamento de clientes; algoritmo de clculo para
geoprocessamento; modelo de objetos no domnio de um sistema de trafego areo; framework
para aplicaes de telemetria.
Os componentes horizontais so genricos, mais fceis de serem identificados e


5
reusados, pois so independentes do domnio da aplicao. A arquitetura da aplicao deve
ser compatvel com o modelo arquitetural do componente e isso pode ser classificado como
uma grande restrio. Exemplos de componentes horizontais: componentes de GUI
Graphical User Interface (tabelas, botes, campos de texto); estruturas de dados e algoritmos
bsicos (como ordenao, por exemplo); bibliotecas de acesso a bancos de dados e de
comunicao de redes; servios de trace e logs para depurao de programas; frameworks de
gerenciamento de falhas.
importante observar que a classificao de componentes pode ser subjetiva. Para um
componente que pode ser considerado vertical dentro de um domnio de aplicao, e esse
domnio dividido em subdomnios, o componente pode ser compartilhado entre esses
domnios, tornando-se ento um componente horizontal. Isso ocorre tambm porque os
domnios podem ser aninhados, isto , pode-se definir domnios muito especficos (por
exemplo, gerenciamento de desempenho de redes) que pertenam a domnios mais genricos
(gerenciamento de redes por exemplo). Para evitar essa ambiguidade na classificao do
componente, os domnios de aplicao devem ser definidos da forma mais precisa possvel,
evitando escolhas equivocadas no projeto de software em geral.
3.1.1 Evoluo dos componentes
A evoluo do desenvolvimento de componentes foi descrita pela Oracle Corporation
e estabelece uma relao entre o nvel de abstrao dos componentes com o seu potencial de
reuso, de forma a evidenciar o aumento da produtividade do desenvolvedor com a aplicao
do reuso (BELLUR, 1997). Essa evoluo apresentada na Figura 1.

FIGURA 1 - Evoluo dos componentes. Fonte: Bellur (1997).
Pela Figura 1 pode-se observar que a possibilidade de reuso maior conforme a
tecnologia utilizada e o seu nvel de abstrao. Esta abstrao reflete a evoluo dos
componentes conforme o desenvolvimento de novas tecnologias, partindo desde o cdigo
puro at a programao visual atravs das linguagens de alto nvel. Quanto maior o nvel de
abstrao (devido ao uso de frameworks, por exemplo) a produtividade do desenvolvedor
aumenta devido ao aumento do potencial de reuso. Pela figura pode-se verificar que o
potencial de reuso de um framework maior que o potencial de reuso de um objeto.
Quanto a utilizao e documentao do componente, segundo Kotula (1998) o usurio
deve compreender as caractersticas, funes e comportamento do componente. Essas
informaes devem estar disponveis na documentao do componente.


6
Ainda segundo Kotula (1998), ao projetar e implementar componentes o
desenvolvedor necessita utilizar diagramas de cenrios e uma sequncia de casos de uso.
Essas informaes devem ser repassadas ao usurio do componente, pois sem tais
informaes no se compreende o propsito do componente (relacionado a criao e
utilizao) e o usurio poder utilizar o componente incorretamente ocasionando falhas. Em
um cenrio no ideal o usurio descartar o componente e ficar insatisfeito.
3.2 Tecnologias de reuso
Diversas tcnicas tm sido desenvolvidas e propostas para atingir o objetivo de
maximizar o reuso de componentes bsicos, de produtos de design, de arquiteturas e at
mesmo de aproveitar a experincia dos desenvolvedores na soluo de problemas em
contextos especficos. As tecnologias de reutilizao procuram disponibilizar componentes
que possam ser facilmente conectados para elaborar novos sistemas. Entretanto, no se pode
selecionar componentes para seleo com outros e implementao em outros sistemas. O
inter-relacionamento de componentes de reuso um dos maiores desafios a serem resolvidos
pela Engenharia de Software nos dias atuais. Diversas questes podem ser consideradas com a
interao abstrata, desempenho e a flexibilidade e variedade de cobertura desses
componentes.
Muitas vezes as tcnicas se sobrepem umas s outras e, individualmente, suportam
apenas uma ou algumas fases do ciclo de desenvolvimento de software.
Na sequncia abordou-se as tcnicas para prtica de reuso de componentes como
orientao a objeto (OO), design partners e application frameworks.
- Orientao a Objeto (OO)
As tcnicas orientadas a objeto (OOT) provm mtodos e mecanismos para a
estruturao de modelos e programao de cdigo correspondente aos objetos (conceitos)
encontrados no domnio do problema. OOT uma tcnica que influencia positivamente o
reuso, mas no garante que o reuso ser alcanado. H muitas razes (organizacionais,
culturais e polticas) que determinam porque um excelente componente de software pode
correr o risco de nunca ser reusado. Comparado com a programao estruturada tradicional, as
tcnicas OO tm a vantagem de possibilitar o desenvolvimento de sistemas altamente
modulares, usando os princpios de abstrao de dados e encapsulamento de informaes. A
aplicao deixa de ser vista como uma nica funo complexa que necessita ser decomposta
em sub-rotinas, seguindo uma abordagem top-down. Ao invs disso, o desenvolvedor
identifica os principais objetos no domnio da aplicao, suas responsabilidades e
relacionamentos e desenvolve a aplicao tendo em vista quais objetos poderiam ser reusados,
transformando esses objetos em componentes reusveis.
Sobre as tcnicas de OO, este artigo se restringe a implementao de componentes
(OOP). De acordo com Ezran (2002) a base do OOP o conceito de objetos como unidades
de programa que encapsulam dados e algoritmos. Esse conceito distingue a programao
orientada a objetos do paradigma da programao puramente estruturada, onde o cdigo que
acessa e modifica uma dada informao fica confinado a um nico ponto dentro do programa,
e no espalhado de forma descontrolada por todo o programa. Objetos com propriedades e
funes similares so agrupados em classes.


7
A utilizao de OOP suporta o reuso na forma de bibliotecas de classes, as quais
englobam tcnicas de encapsulamento, herana e polimorfismo. O desenvolvedor constri a
aplicao atravs do reuso de classes, que pode ocorrer de duas formas:
Construindo-se classes novas utilizando objetos de classes j existentes (na biblioteca de
classes);
Derivando-se novas classes, especializando as j existentes.
A orientao a objetos no nem necessria nem suficiente para a prtica do reuso e
tambm no garante um bom nvel de reuso. Para Ezran (2002) a principal deficincia das
bibliotecas de classes que elas no suportam reuso planejado de design e arquitetura.
- Design patterns
Segundo Gamma et al. (1994) design patterns so uma tentativa de superar as
limitaes do simples reuso de cdigo adotado pela abordagem das bibliotecas de classes
atravs da nfase na importncia do reuso de design. Essa tcnica apareceu no mundo
orientado a objetos como uma tcnica para documentar solues de design.
A descrio de um design pattern apresenta o contexto de uma aplicao, um
problema de design que ocorre naquele contexto e uma soluo para o problema (geralmente
comprovada por experincia que a soluo seja eficaz). Para Ezran (2002) a descrio de um
design pattern inclui vantagens, exemplos, casos a ser aplicado, tcnicas de implementao
(ou a prpria implementao do pattern) para uma determinada linguagem. O desenvolvedor
seleciona o design pattern que mais aplicvel ao problema em questo e reusa a soluo
correspondente.
Quanto as vantagens, para Ezran (2002) a vantagem dos patterns facilitar a
comunicao entre diversos desenvolvedores. Cada pattern possui um nome nico, que passa
a fazer parte do vocabulrio dos desenvolvedores, permitindo que a descrio de problemas
complexos e solues para esses problemas sejam referenciados atravs de uma nica palavra.
No que diz respeito as desvantagens, implementao de um design pattern no
fornecida junto a sua documentao e o mesmo pattern pode ser implementado de formas
diferentes em diferentes partes da aplicao, por desenvolvedores diferentes.
- Application frameworks
Segundo Klabunde (2000) um framework um conjunto integrado de artefatos de
software reusveis e extensveis para um domnio especfico da aplicao e que podem ser
especializados para atender a uma aplicao em particular. Os frameworks so antigos,
datando do final da dcada de 80, mas apenas recentemente vm sendo amplamente
empregados devido sua integrao com os design patterns.
Para Ezran (2002), os frameworks orientados a objetos so uma tentativa de se
combinar reuso de cdigo (bibliotecas de classes) com reuso de design (design patterns). De
acordo com Silva (2000) a utilizao direta de trechos de cdigo j desenvolvidos (bibliotecas
de cdigos) com o reaproveitamento da concepes de arquitetura de um artefato de software
no precisam necessariamente acontecer na mesma implementao.
Em comparao com as demais tcnicas de reuso, os frameworks de aplicaes
consistem de cdigo e design reusvel. Isso significa que aplicaes que so construdas


8
baseadas no framework nunca so planejadas a partir do incio, pois o design do framework
usado como ponto de partida para o design da aplicao.
Para Ezran (2002), a construo de um framework reusvel nem sempre fcil, pois
requer um entendimento profundo do domnio da aplicao para o qual o framework
proposto em termos de entidades e relacionamentos que podem ser definidos e reusados.
Quanto mais detalhados os artefatos de software, mais especficas as suas interaes
se tornam e mais difcil se torna atingir os requisitos de futuras aplicaes de forma a alcanar
a reusabilidade. A flexibilidade nos padres de interao entre os componentes obrigatria
para garantir a reusabilidade do framework. Por isso os frameworks so geralmente
construdos baseados em mltiplos design patterns.
O framework deve abranger todos os conceitos gerais de um domnio de aplicao,
deixando apenas aspectos particulares para serem definidos nas aplicaes especficas. No
caso ideal, na gerao de aplicaes, o usurio do framework no precisa criar classes que no
sejam subclasses de classes abstratas do framework. Para Silva (2000) o framework ter
conseguido de fato ser uma generalizao do domnio modelado se isso for alcanado.
3.2.1 Frameworks mais conhecidos
Quanto aos frameworks mais conhecidos podemos destacar o COM, COM+, .NET e
EJB, frameworks estes apresentados neste trabalho.
O Component Object Model (COM) uma plataforma da Microsoft para
componentes. Essa plataforma viabiliza comunicao entre processos e criao dinmica de
objetos em diferentes linguagens. A sigla COM muitas vezes usada como sinnimo para um
grupo de tecnologias, dentre elas: Object Linking and Embedding (OLE), OLE Automation,
ActiveX, COM+ e DCOM. Apesar de introduzido em 1993 no desenvolvimento dos produtos,
a Microsoft no divulgou sua biblioteca at 1997.
COM uma tecnologia independente de linguagem de programao para o
desenvolvimento dos seus componentes. Dessa forma, eles podem ser utilizados em
ambientes diferentes dos quais foram criados. uma pr-condio do Component Object
Model que o desenvolvedor fornea uma interface bem definida e separada da implementao,
permitindo a reutilizao dos objetos sem o conhecimento de sua implementao.
Apesar de ter sido considerado portvel a vrias plataformas, COM muito utilizado
nos sistemas operacionais da Microsoft Windows. Este framework, apesar de muito utilizado,
tem sido substitudo, ou pelo menos estendido, pela plataforma Microsoft .NET, suportando
ento Web Services atravs da Windows Communication Foundation (WCF).
COM+ o nome da tecnologia baseada nos servios e funcionalidades da COM e sua
primeira verso foi lanada no Windows 2000. COM+ acrescentou COM componentes para
suportar as funcionalidades da Microsoft Transaction Server (MTS).
Dentre os benefcios da utilizao grupos de componentes COM+, destacou-se: escopo
de configurao comum para componentes COM, incluindo limites de segurana e filas;
armazenamento de atributos do componente no fornecido pelo desenvolvedor de
componentes (por exemplo, transaes e sincronizao); bibliotecas de ligao dinmica de
componentes (DLLs) carregados em processos (DllHost.exe) sob demanda; gerenciado


9
processos de servidores para hospedar os componentes; criao e gesto de threads usadas
pelos componentes.
Essa tecnologia tambm encapsula algumas atividades de baixo nvel, como
manuteno do pool de conexes, finalizao de conexes, controle transacional e
distribuio e controle de submisses. Veja o exemplo na Figura 2.

FIGURA 2 - Evoluo do modelo COM. Fonte: Microsoft.
Pode-se observar na Figura 2 a evoluo do conceito relacionado ao COM. Para
aproveitar os servios de aplicativos COM+, o ambiente associado impe exigncias
especficas aos componentes criados para COM e DCOM, reutilizando as funcionalidades dos
conceitos antecessores.
Para fornecer aos desenvolvedores suporte a transaes distribudas e melhor
gerenciamento de memria e processamento, assim como para posicionar o Windows como
uma alternativa a outros sistemas operacionais corporativos, a Microsoft introduziu a
tecnologia Microsoft Transaction Server no Windows NT Service Pack 4. No Windows 2000,
tal extenso significativa COM foi incorporada ao sistema operacional e renomeada COM+.
Na mesma poca a DCOM foi reconsiderada como uma entidade separada.
A plataforma COM, assim como o COM+ foi praticamente descontinuada e vem
sendo substituda pela Microsoft .NET, focando seu marketing exclusivamente a essa nova
plataforma. A COM era geralmente usada para interoperar cdigos complexos e de grande
desempenho com interfaces ao usurio em Visual Basic ou ASP (Active Server Page). Para
algumas extenses a COM agora foi depreciada em favor da .NET j que a .NET fornece
ferramentas de desenvolvimento rpido similares ao Visual Basic tanto para Windows Forms
quanto para Web Forms com Just-in-Time(JIT), o cdigo de alto desempenho pode ser
implementado em C# ou VB.NET.
Apesar disso, a COM permanece como uma tecnologia vivel com importante base de
sistema legado. Por exemplo, o Software Development Kit (SDK), popular renderizador do
DirectX 3D, baseado em COM. A COM tambm trabalha com o controle de scripts de
aplicaes como o Office ou o Internet Explorer, pois fornece uma interface para chamar
mtodos de objetos COM de um script ao invs de necessitar o conhecimento de uma API em
tempo de compilao. Vrios servios fornecidos pela COM+ ainda so importantes em
aplicaes .NET corporativas, tais como transaes e filas de componentes.


10
Os EJBs so conhecidos por serem o ncleo da plataforma J2EE (Java 2 Plataform
Enterprise Edition) justamente por sustentarem de uma maneira robusta e simples o
desenvolvimento de aplicaes de grande porte, provendo um modelo distribudo de
componentes de negcio e provedores de servios dentro do continer da aplicao.
Em EJB, os beans so considerados remotos; ento, mesmo na implementao de um
bean descrito como local, deve-se fazer uma busca pela implementao da interface e ento
pode-se utilizar suas funcionalidades. O responsvel por achar, instanciar e retornar a
implementao da interface o continer onde executa-se a aplicao. Caso o continer no
ache ou apresente falha nesse processo, uma exceo ser lanada pela aplicao e o uso do
componente ficar inviabilizado.
Quanto aos frameworks citados, pode-se verificar o comparativo na Tabela 1:
TABELA 1 Comparativo entre frameworks.
Critrio COM, COM+ e .NET EJB
Interoperabilidade No. Suportado praticamente apenas
no Windows (poucos fabricantes,
alm da Microsoft, o suportam)
Sim. Suportado por inmeras
ferramentas e plataformas, e
compatvel com CORBA e
ActiveX.
Portabilidade No. Somente Windows. Sim. (Qualquer plataforma).
Separao entre
interface e
implementao
Sim. Atravs da IDL (Interface
Definition Language)
Sim. Conceito de interfaces
nativo na linguagem Java.
Composio Sim. Sim.
Autodescrio Sim. As interfaces so declaradas no
Registry (banco de dados do
Windows)
Sim. Possui um mecanismo de
introspeco, sem a
necessidade de um repositrio
de interface.
Transparncia de
localizao
Sim. Atravs da tecnologia DCOM
(Distributed Component Object
Model)
Sim. Atravs das tecnologias
RMI (Remote Method
Invocation), CORBA e
DCOM.
Segurana No. Usa assinaturas digitais, mas o
controle aos recursos locais frgil.
Sim. A execuo feita
usando-se o conceito de
sandbox (caixa de areia) que
protege os recursos locais.
Plug and play No. Sim. Nativo da linguagem EJB.
Fonte: Autor.
3.2.2 Comparativo entre tcnicas de reuso
TABELA 2 Tecnologias: vantagens e desvantagens.
Tecnologia Vantagem Desvantagem
Orientao a
Objeto (OO)
Promove a modularidade e
encapsulamento de informaes.
Exige grande esforo de
modelagem.
Design patterns Facilita a descoberta de solues de Precisa ser implementado a


11
design e prov padres para o
processo de desenvolvimento de
software.
partir do incio.
Application
frameworks
Aplicaes semi-completas
disponveis para domnios
especficos, bastando serem
customizadas.
Reuso de modelo de objetos e
arquitetura.
Requer grande experincia e
conhecimento profundo do
design do framework.
Fonte: Autor.
Para Silva (2000) a reutilizao de componentes de software em larga escala um dos
argumentos a favor da abordagem de orientao a objetos. Em muitos casos, porm, constitui
uma perspectiva frustrada, pois a reutilizao no caracterstica inerente da orientao a
objetos, mas obtida a partir do uso de tcnicas que produzam software reutilizvel.
Para Tracz (1995) especificaes rigorosas para o desenvolvimento de componentes
so recomendadas. Tcnicas de orientao a objetos e linguagens de modelagem auxiliam na
documentao dos componentes como, por exemplo, os diagramas de estados utilizando-se a
notao da UML (Unified Modeling Language) e as documentaes das pr e ps-condies
que possam ocorrer durante a utilizao do componente.
4. Concluso
Este artigo apresentou conceitos, caractersticas, classificao e a evoluo de reuso de
componentes de software, permitido a imerso ao assunto sobre reutilizao de componentes
de software e o conhecimento das tcnicas associadas a esta prtica.
As caractersticas apresentadas neste artigo, como categorias, classificao e
tecnologias para componentes reutilizveis permitem a formao de um conceito tcnico
sobre as tcnicas de reuso. Tais conceitos so complexos e podem influenciar na deciso de
qual abordagem seguir ao utilizar componentes reutilizveis.
A fundamentao terica deste trabalho refora que a escolha de reuso oportunstico,
que a princpio pode apresentar ganhos significativos em produtividade pode ser desastrosa
com o passar do tempo.
A opo por reuso de componentes no indica, inicialmente, ganho de produtividade,
qualidade e reduo de custo no processo de desenvolvimento de software. Toda equipe,
operacional, gerencial e estratgico devem estar comprometidos para a implementao da
tcnica. A opo por tcnicas de reuso categorizada como sistmico representa vantagem em
relao ao reuso oportunstico, pois concentra a utilizao de bibliotecas e diversas tcnicas,
muitas delas conhecidas no mercado formal de desenvolvimento de sistemas.
Tcnicas de reuso baseadas em orientao a objeto e framework so muito bem
recebidas em empresas que buscam melhorar seu desempenho no desenvolvimento de
software, estendendo a vida til e funcionalidade oferecidas pelos componentes. Este artigo
abre espao para continuao da pesquisa relacionada ao reuso de componentes, frameworks,
processos de levantamento de requisitos para componentes, sejam eles embarcados ou no,
documentao de componentes e outros assuntos relatados.


12
5. Referncias
ANDRADE, S., MACDO, R. A component-based real-time architecture for distributed supervision and
control applications. 10th IEEE Conference on Emerging Technologies and Factory Automation. Catania, Italia,
2005.
BELLUR, U. The Role of Components & Standards in Software Reuse. Oracle Corporation, Workshop on
Compositional Software Architectures, 1997. Disponvel em:
<http://www.objs.com/workshops/ws9801/papers/paper012.pdf>. Acessado em: 01 mar 2014.
BOSCH, J., SZYPERSKI, C., WECK, W. Summary of the Second International Workshop on Component-
Oriented Programming (WCOP'97). Disponvel em:
<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.8974&rep=rep1&type=pdf>. Acessado em: 21 de
fev de 2014.
EZRAN, M., Morisio, M.; Tully, C. Practical Software Reuse. Springer Verlag, 2002.
GAMMA, E., HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns: Elements of Reusable Object-
Oriented Software. Addison Wesley, 1994.
GIL, A. C. Como Elaborar Projetos de Pesquisa. 4. ed. So Paulo: ATLAS, 2002.
GUIMARES, Eliane G. Um Modelo de Componentes para Aplicaes Telemticas e ubquas. Tese de
Doutorado. Faculdade de Engenharia Eltrica e de Computao. Unicamp, 2004.
KLABUNDE, Charles C. Tratando Frameworks como Componentes. Curso de Ps-Graduao em Cincia da
Computao - UFRGS, 2000.
KOTULA, J. S. Using patterns to create component documentation. IEEE Software, March/April 1998.
MCILROY, M. D. Nato software engineering conference report. Garmisch, 1968. p. 7985.
MCCONNELL, S. Rapid Development: Taming Wild Software Schedules. Microsoft Press. 1996.
MICROSOFT. Microsoft COM (Component Object Model). Disponvel em:
<http://www.microsoft.com/com/default.mspx>. Acesso em: 21 fev. 2014.
MICROSOFT. Microsoft COM+ (COM+ Application Overview). Disponvel em:
<http://msdn.microsoft.com/en-us/library/windows/desktop/ms683512(v=vs.85).aspx >. Acesso em: 26 fev.
2014.
Moraes, J. L. C., Prado, A. F. I WIM - Framework de Cardiologia baseado em Componentes. XV SBES-2001.
Rio de Janeiro, Brasil, 2001.
Moraes, J. L. C., Prado, A. F. Framework de Componentes do Domnio de Cardiologia. II - JIISIC/2002 -
Sesso Tcnica(4), Artigo n1, Salvador Brasil, 2002.
MORAES, J. L. C., PRADO, A. F. Reutilizao de Componentes do Framework do Domnio de Cardiologia
(FrameCardio). II WIM-2002 - Sesso Tcnica(4), Artigo n3, Salvador Brasil, 2002.
SILVA, M. F., WERNER, C. M. L. Packaging Reusable Components Using Patterns and Hypermedia. 4th
International Conference on Software Reuse (ICSR '96). Disponvel em:
<http://csdl.computer.org/comp/proceedings/icsr/1996/7301/00/73010146abs.htm>. Acessado em: 22 de fev de
2014.
SCHMIDT, D. C., HUSTON, S. D. C++ Network Programming. Vol. 2: Systematic Reuse with ACE and
Frameworks, Addison Wesley, 2002.
SOMMERVILLE, I. Engenharia de software. 8. ed. Pearson, 2006.
TRACZ, W. Confessions of a Used Program Salesman. Addison-Wesley, 1995.
TRACZ, W. Software Reuse - Trick or Treat? Disponvel em:
<http://gamzac.blogspot.com.br/2005/01/software-reuse-trick-or-treat.html>. Acessado em: 01 mar 2014.

You might also like