30.12.2012 Views

geração (semi)automática de metadados - Universidad Autónoma ...

geração (semi)automática de metadados - Universidad Autónoma ...

geração (semi)automática de metadados - Universidad Autónoma ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ISBN: 978–972–8924–45-4 © 2007 IADIS<br />

2. DESENVOLVIMENTO BASEADO EM COMPONENTES - DBC<br />

O DBC surgiu como uma nova perspectiva para o <strong>de</strong>senvolvimento <strong>de</strong> software, com o objetivo <strong>de</strong> “quebrar”<br />

os blocos monolíticos em componentes interoperáveis, reduzindo a complexida<strong>de</strong> do <strong>de</strong>senvolvimento, assim<br />

como o custo, através da reutilização <strong>de</strong>sses componentes que, em princípio, seriam a<strong>de</strong>quados para serem<br />

utilizados em outras aplicações. O DBC tem seu foco em técnicas e práticas usadas para construir sistemas <strong>de</strong><br />

software a partir <strong>de</strong> componentes previamente existentes, sejam comprados <strong>de</strong> terceiros ou implementados<br />

pelos próprios <strong>de</strong>senvolvedores do sistema. Componentes <strong>de</strong> software são blocos <strong>de</strong> construção para a<br />

estrutura <strong>de</strong> um sistema, compostos por entida<strong>de</strong>s lógicas como classes, funções e enumerações, sendo o<br />

encapsulamento das informações o princípio básico para a construção do seu núcleo. Um componente possui<br />

interfaces contratualmente especificadas que provê acesso a seus serviços e informações. Os componentes em<br />

geral funcionam como caixa preta, escon<strong>de</strong>ndo os <strong>de</strong>talhes <strong>de</strong> implementação dos usuários, os quais precisam<br />

apenas conhecer as funções disponíveis em suas interfaces para a utilização do componente [Preiss,2002].O<br />

foco da engenharia <strong>de</strong> software que era especificação e construção <strong>de</strong> sistemas, muda para i<strong>de</strong>ntificação,<br />

qualificação, adaptação, integração e atualização <strong>de</strong> componentes <strong>de</strong> software. Para que aconteça a<br />

construção <strong>de</strong> sistemas <strong>de</strong> software pela composição <strong>de</strong> componentes, é necessário que existam componentes<br />

reutilizáveis <strong>de</strong> qualida<strong>de</strong> e confiáveis nos repositórios e bibliotecas <strong>de</strong> componentes. As características<br />

particulares no DBC indicam a necessida<strong>de</strong> <strong>de</strong> alterações no ciclo <strong>de</strong> vida <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> software <strong>de</strong><br />

modo a incorporar ativida<strong>de</strong>s próprias <strong>de</strong>sta abordagem, consi<strong>de</strong>rando duas perspectivas: <strong>de</strong>senvolvimento <strong>de</strong><br />

componentes e <strong>de</strong>senvolvimento com componentes, as quais são <strong>de</strong>scritas sucintamente a seguir: A primeira<br />

perspectiva, engloba as ativida<strong>de</strong>s envolvidas na concepção e implementação <strong>de</strong> um componente, existindo a<br />

preocupação em gerar a documentação necessária para que o componente possa ser posteriormente<br />

reutilizado. As ativida<strong>de</strong>s relacionadas ao <strong>de</strong>senvolvimento <strong>de</strong> componentes envolvem ativida<strong>de</strong>s <strong>de</strong><br />

especificação e implementação do componente, on<strong>de</strong> métodos/técnicas/processos po<strong>de</strong>m ser empregadas<br />

para ajudar na qualida<strong>de</strong> do processo <strong>de</strong> <strong>de</strong>senvolvimento. A segunda perspectiva, consi<strong>de</strong>ra a existência <strong>de</strong><br />

componentes e relaciona as ativida<strong>de</strong>s necessárias para o <strong>de</strong>senvolvimento <strong>de</strong> software pela composição<br />

<strong>de</strong>stes. Desta forma, é importante para esta perspectiva que já existam componentes <strong>de</strong> software<br />

implementados e que estejam disponíveis para serem selecionados e reutilizados na composição dos sistemas.<br />

As ativida<strong>de</strong>s essenciais para o <strong>de</strong>senvolvimento com componentes, são: 1) encontrar componentes com<br />

potencial para serem usados no <strong>de</strong>senvolvimento da aplicação; 2) selecionar componentes que atendam aos<br />

requisitos <strong>de</strong> uma aplicação específica; 3) realizar adaptações; 4) realizar a composição dos componentes, e;<br />

5) atualizar os componentes. As cinco ativida<strong>de</strong>s apresentadas <strong>de</strong>screvem possíveis etapas no<br />

<strong>de</strong>senvolvimento <strong>de</strong> software com componentes. Entretanto, não existe uma or<strong>de</strong>m para sua realização ou<br />

mesmo a obrigação <strong>de</strong> sua realização. As etapas necessárias, bem como a importância e o esforço<br />

empregados em cada uma correspon<strong>de</strong>m a uma <strong>de</strong>cisão relacionada ao processo <strong>de</strong> <strong>de</strong>senvolvimento com<br />

componentes específico a uma aplicação. Quando a maior parte dos aspectos funcionais <strong>de</strong>sta disciplina<br />

começam a estar bem <strong>de</strong>finidos, a atenção da comunida<strong>de</strong> científica começa a focar nos aspectos extrafuncionais<br />

e <strong>de</strong> qualida<strong>de</strong>, como um passo para uma verda<strong>de</strong>ira engenharia. Por um lado, os requisitos extrafuncionais<br />

– por sua natureza global – po<strong>de</strong>m afetar varias partes do sistema, e por isso terão priorida<strong>de</strong> se<br />

entrarem em conflito com os requisitos funcionais. Além disso, uma cuidadosa análise dos atributos <strong>de</strong><br />

qualida<strong>de</strong> po<strong>de</strong> melhorar o processo <strong>de</strong> discriminação dos componentes candidatos que cumprirem o núcleo<br />

<strong>de</strong> requisitos funcionais. Por exemplo, se dois componentes implementarem a mesma funcionalida<strong>de</strong>, seus<br />

atributos extra-funcionais po<strong>de</strong>m ser o critério <strong>de</strong>cisivo no processo <strong>de</strong> seleção [Bertoa,2002a].<br />

2.1 Caracterização <strong>de</strong> Componente <strong>de</strong> Software<br />

Foi consi<strong>de</strong>rado no contexto <strong>de</strong>ste trabalho, como <strong>de</strong>finição <strong>de</strong> Componentes <strong>de</strong> Software: “São artefatos<br />

autocontidos, claramente i<strong>de</strong>ntificáveis, que <strong>de</strong>screvem ou realizam uma função específica e têm interfaces<br />

claras em conformida<strong>de</strong> com um dado mo<strong>de</strong>lo <strong>de</strong> arquitetura <strong>de</strong> software, documentação apropriada e um<br />

grau <strong>de</strong> reutilização <strong>de</strong>finido”. Para um melhor entendimento, Sametinger [Sametinger,1997] realiza uma<br />

discussão mais aprofundada dos termos citados na <strong>de</strong>finição: a) Autocontido: característica <strong>de</strong> componentes<br />

que po<strong>de</strong>m ser reusáveis sem a necessida<strong>de</strong> <strong>de</strong> incluir/<strong>de</strong>pen<strong>de</strong>r <strong>de</strong> outros componentes (caso exista alguma<br />

<strong>de</strong>pendência, todo o conjunto <strong>de</strong>ve ser visto como o componente reutilizável); b) I<strong>de</strong>ntificação: componentes<br />

<strong>de</strong>vem ser facilmente i<strong>de</strong>ntificados, ou seja, <strong>de</strong>vem estar reunidos em um único local (repositório); c)<br />

224

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!