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.