Você está na página 1de 3

AUMENTANDO A PRODUTIVIDADE NA ENGENHARIA DE SOFTWARE

BASEADA EM COMPONENTES
Marcelo Nogueira

Resumo: O reuso, no contexto da engenharia de software, para padronizar e gerenciar os processos de desenvolvimento
nem é uma idéia velha, nem nova. Os desenvolvedores têm de software.
usado idéias, abstrações e processos desde os primeiros dias
da computação, mas as primeiras abordagens ao reuso eram Segundo Rezende [5], pode-se resumir que a anticrise é a
as da prática corrente. Hoje, sistemas complexos e de alta união e trabalho conjunto e harmonioso de três elementos:
qualidade precisam ser desenvolvidos em períodos de tempo Empresa (Alta Administração), Cliente e/ou usuário e a
muito curtos. Isso implica na utilização de componentes. unidade de informática (Desenvolvedores de soluções).

Palavras-chave: Reuso,Componentes, Engenharia de QUALIDADE DE SOFTWARE


Software.
Atingir um alto nível de qualidade de produto ou serviço é o
INTRODUÇÃO objetivo da maioria das organizações. Atualmente não é mais
aceitável entregar produtos com baixa qualidade e reparar os
A engenharia de software baseada em componentes problemas e as deficiências depois que os produtos foram
(component-based software engineering, CBSE) é um entregues ao cliente. [6]
processo que enfatiza o projeto e a construção de sistemas
baseados em computador usando “componentes” de software Abordagens importantes como as normas ISO 9000 e a ISO /
reusáveis. [3] IEC 12207, o modelo CMM (Capability Maturity Model) e o
SPICE (Software Process Improvement and Capability
ENGENHARIA DE SOFTWARE dEtermination) sugerem que melhorando o processo de
software, podemos melhorar a qualidade dos produtos.
Engenharia de Software é a metodologia de desenvolvimento
e manutenção de sistemas modulares, com as seguintes ENGENHARIA DE SOFTWARE BASEADA EM
características [5]:
COMPONENTES
• Adequação aos requisitos funcionais do negócio do
cliente e seus respectivos procedimentos pertinentes; A CBSE, superficialmente parece bastante semelhante à
• Efetivação de padrões de qualidade e produtividade em engenharia de software convencional ou orientada a objetos.
suas atividades e produtos; O processo começa quando uma equipe de software
• Fundamentação na tecnologia da informação disponível, estabelece os requisitos para um sistema a ser construído
viável e oportuna; usando técnicas de coleta de requisitos convencionais. Um
• Planejamento e gestão de atividades, recursos, custos e projeto arquitetural é estabelecido, mas ao invés de passar
datas. imediatamente a tarefas de projeto mais detalhadas, a equipe
examina os requisitos para determinar que subconjunto é
Como conclusão, pode-se relatar que engenharia de software mais adequado à composição, do que à construção. Isto é, a
é um conjunto de práticas para desenvolvimento de soluções equipe formula as seguintes questões para cada requisito do
de software, ou seja, roteiro que pode utilizar diversas sistema: [2]
técnicas. • Componentes comerciais prontos para uso (commercial
off-the-shelf, COTS) estão disponíveis para implementar
OBJETIVOS DA ENGENHARIA DE SOFTWARE o requisito?
• Componentes reusáveis, internamente desenvolvidos,
De um modo geral, considera-se que os objetivos primários
estão disponíveis para implementar o requisito?
da Engenharia de Software são o aprimoramento da
qualidade dos produtos de software e o aumento da
• As interfaces dos componentes disponíveis são
produtividade dos engenheiros de software, além do
compatíveis com a arquitetura do sistema a ser
atendimento aos requisitos de eficácia e eficiência, ou seja,
construído?
efetividade [1].
A equipe tenta modificar ou remover os requisitos do sistema
Com base nos objetivos da Engenharia de Software, fica
que não podem ser implementados com COTS ou com
evidente a necessidade da adoção de um modelo sistêmico
componentes próprios. Se os requisitos não puderem ser
mudados ou descartados, os métodos convencionais ou de através de interfaces documentadas, que podem ser
orientação a objetos de engenharia de software são aplicados descobertas durante a execução.
para desenvolver aqueles componentes novos, que precisam • Componente de software – uma unidade com
ser trabalhados pela engenharia para satisfazer os requisitos. dependências de contexto apenas explícita e
Mas para aqueles requisitos que podem ser atendidos com contratualmente especificadas.
componentes disponíveis, um conjunto diferente de • Componente de negócio – implementação, em software,
atividades de engenharia de software começa: [2] de um conceito de negócio ou processo de negócio
• Qualificação de componentes: Os requisitos e a “autônomo”.
arquitetura do sistema definem os componentes que
serão necessários. Os componentes reusáveis (seja Além dessas descrições, os componentes de software podem
COTS ou próprios) normalmente são identificados pelas também ser caracterizados com base no seu uso, no processo
características de suas interfaces. Isto é, os serviços CBSE. Além de componentes COTS, o processo CBSE
fornecidos e os meios pelos quais os consumidores tem produz: [2]
acesso a esses serviços são descritos como parte da • Componentes qualificados – avaliados por engenheiros
interface do componente. Mas a interface não fornece de software para garantir que não apenas a
um panorama completo do grau em que o componente funcionalidade, mas também o desempenho, a
vai satisfazer a arquitetura e os requisitos. O engenheiro confiabilidade, a usabilidade e outros fatores de
de software precisa usar um processo de exploração e qualidade satisfazem os requisitos do sistema ou do
análise para adequar cada componente. produto a ser construído.
• Adaptação de componente: A arquitetura do software • Componentes adaptados – adaptados para modificar
representa padrões de projeto que são compostos de características não requeridas ou indesejáveis (também
componentes (unidades de funcionalidade), conexões e chamado mascarar ou empacotar).
coordenação. De fato, a arquitetura define as regras de • Componentes montados – integrados no estilo
projeto para todos os componentes, identificando os arquitetural e interconectados com uma infra-estrutura
modos de conexão e coordenação. Em alguns casos, os adequada para permitir que os componentes sejam
componentes reusáveis existentes podem estar em coordenados e geridos efetivamente.
desacordo com as regras de projeto da arquitetura. Esses • Componentes atualizados – para substituir o software
componentes devem ser adaptados para satisfazer às existente à medida que novas versões de componentes se
necessidades da arquitetura ou descartados e substituídos tornam disponíveis.
por outros componentes, mais adequados.
• Composição de componentes: O estilo arquitetural Como a CBSE é uma disciplina em evolução, é improvável
desempenha novamente um papel importante no modo que uma definição unificadora surja a curto prazo.
pelo qual os componentes de software são integrados
para formar um sistema em funcionamento. O PROCESSO CBSE
Identificando os mecanismos de conexão e de
coordenação ( ex.: propriedades do projeto em tempo de O processo CBSE deve ser caracterizado de um modo que
execução), a arquitetura determina a composição do não identifique apenas candidatos a componente, mas
produto final. também qualifique a interface de cada componente, adapte
• Atualização de componentes: Quando são componentes para remover discordâncias arquiteturais,
implementados sistemas com componentes COTS, a monte componentes num estilo arquitetural selecionado e
atualização é complicada pela necessidade de terceiros atualize os componentes, à medida que os requisitos do
(a empresa que desenvolveu o componente reusável sistema se modifiquem. [2]
pode não estar à disposição da empresa de engenharia de
software). O modelo de processo para a engenharia de software baseada
em componentes enfatiza caminhos paralelos, nos quais a
O termo componente foi usado repetidamente, no entanto, engenharia de domínio ocorre simultaneamente com o
uma descrição definitiva do termo é imprecisa. Existem as desenvolvimento baseado em componentes. A engenharia de
seguintes possibilidades: [2] domínio realiza o trabalho necessário para estabelecer um
conjunto de componentes de software que podem ser
• Componente – uma parte não-trivial de um sistema, reusados pelo engenheiro de software. Esses componentes
praticamente independente é substituível, que preenche são então transportados através da “fronteira” que separa a
uma função clara no contexto de uma arquitetura bem engenharia de domínio do desenvolvimento baseado em
definida. componentes.
• Componente de software em execução – um pacote
ENGENHARIA DE DOMÍNIO
dinamicamente constituído de um ou mais programas,
geridos como uma unidade, ao qual se tem acesso O objetivo da engenharia de domínio é identificar, construir,
catalogar e disseminar um conjunto de componentes de

2
software que tem aplicabilidade a software existente e futuro, • Há duplicação da função do componente dentro do
num particular domínio de aplicação. A meta global é domínio?
estabelecer mecanismos que permitam aos engenheiros de • O componente é dependente de hardware?
software compartilhar esses componentes, reusá-los, durante • O hardware permanece imutável entre implementações?
o trabalho com sistemas novos e existentes. [2] [4] • As especialidades do hardware podem ser removidas
para outro componente?
A engenharia de domínio inclui três principais atividades: • O projeto é suficientemente otimizado para a
análise, construção e disseminação. Pode ser alegado que o implementação seguinte?
reuso vai desaparecer, não por eliminação, mas por • Podemos adicionar parâmetros a um componente não-
integração do contexto da prática de engenharia de software. reusável de modo que se torne reusável?
À medida que o reuso tem uma maior ênfase, alguns • O componente é reusável em várias implementações
acreditam que a engenharia de domínio vai se tornar tão
apenas com pequenas modificações?
importante quanto a engenharia de software durante a
• O reuso pela modificação é exeqüível?
próxima década.
• Um componente não-reusável pode ser decomposto para
O PROCESSO DE ANÁLISE DE DOMÍNIO produzir componentes reusáveis?
• Quão válida é a decomposição de componente para
Os passos do processo de análise de domínio no contexto da reuso?
engenharia de software orientada a objetos foram definidos CONCLUSÃO
como: [2] [3] [4]
1. Defina o domínio a ser investigado. É importante que os desenvolvedores de software
2. Categorize os itens extraídos do domínio. reconheçam que não é possível desenvolver sistemas com
3. Colete uma amostra representativa das aplicações do qualidade, cumprir prazos e custos e atender às expectativas
domínio. dos usuários sem ter um processo de desenvolvimento por
4. Analise cada aplicação da amostra. componentes definido, compreendido e utilizado por toda a
5. desenvolva um modelo de análise para os objetos. equipe.

É importante notar que a análise de domínio é aplicável a O nível de complexidade da sua implementação pode ser
qualquer paradigma de engenharia de software e pode ser dimensionada de acordo com o porte do sistema,
aplicada tanto para o desenvolvimento convencional quanto viabilizando para as pequenas organizações desenvolvedoras
para o orientado a objetos. de software. Possibilita então ser um dos fatores críticos para
o sucesso no desenvolvimento de software.
A expansão do segundo passo da análise de domínio, sugere
uma abordagem de oito passos para a identificação e REFERÊNCIAS BIBLIOGRÁFICAS
categorização de componentes reusáveis: [2]
1. Selecione funções ou objetos específicos [1] MAFFEO, BRUNO, Engenharia de Software e Especificação de
2. Abstraia funções ou objetos. Sistemas, Rio de Janeiro, Ed. Campus, 1992.
3. Defina uma taxonomia. [2] FILHO, WILSON DE PÁDUA PAULA, Engenharia de Software, Rio
4. Identifique as características comuns de Janeiro, Ed. LTC, 2003.
5. Identifique as relações específicas
6. Abstraia as relações [3] PETERS, JAMES F. et al. Engenharia de Software,Rio de Janeiro, Ed.
Campus,2001.
7. Crie um modelo funcional
8. Defina uma linguagem de domínio [4] PRESSMAN, ROGER S., Engenharia de Software, Rio de Janeiro, Ed.
McGraw-Hill, 2002.
Uma linguagem de domínio permite a especificação e
[5] REZENDE, DENIS ALCIDES, Engenharia de Software e Sistemas de
posterior construção de aplicações dentro do domínio. Informações, Rio de Janeiro, Ed. Brasport, 1999.

Apesar de os passos mencionados fornecerem um modelo [6] SOMMERVILLE, IAN, Engenharia de Software, São Paulo, Ed.
útil para a análise de domínio, não fornecem diretrizes para Pearson Education, 2003.
decidir que componentes de software são candidatos a reuso.
Abaixo um conjunto de questões pragmáticas como guia para
identificar componentes de software reusáveis: [2]
• A funcionalidade do componente é necessária em
implementações futuras?
• Quão comum é a função do componente dentro do
domínio?

Você também pode gostar