Escolar Documentos
Profissional Documentos
Cultura Documentos
2
Resumo
3
Sumário
Agradecimentos......................................................................................................................... 2
Resumo ...................................................................................................................................... 3
Sumário...................................................................................................................................... 4
Capítulo 1 - Introdução............................................................................................................ 8
1.1 - MOTIVAÇÃO ................................................................................................................................................8
1.2– OBJETIVOS ...........................................................................................ERROR! BOOKMARK NOT DEFINED.
1.3 – DESCRIÇÃO ...............................................................................................................................................10
1.4 – METODOLOGIA UTILIZADA .................................................................ERROR! BOOKMARK NOT DEFINED.
1.5 – ORGANIZAÇÃO DO TRABALHO ..................................................................................................................12
Capítulo 2 - Reuso de Software ............................................................................................. 14
2.1 – INTRODUÇÃO ............................................................................................................................................14
2.2 - O QUE SE PODE REUSAR ...........................................................................................................................17
2.3- OPORTUNIDADES DE REUSO .......................................................................................................................20
2.4 - CLASSIFICAÇÃO DOS ATIVOS .....................................................................................................................22
2.5 - CARACTERÍSTICAS DE UM ATIVO REUSÁVEL .............................................................................................24
2.6 – FORMAS DE REUSO ...................................................................................................................................26
2.7 – IMPORTÂNCIA DO REUSO ..........................................................................................................................28
2.8 – SUCESSO E FALHAS NO REUSO..................................................................................................................30
2.9 – CONSIDERAÇÕES FINAIS ...........................................................................................................................32
Capítulo 03 - Tecnologias de Reuso ...................................................................................... 34
3.1 – TÉCNICAS ORIENTADAS A OBJETOS ..........................................................................................................34
3.2 – PADRÕES DE PROJETO ..............................................................................................................................36
3.3 - FRAMEWORKS DE APLICAÇÃO ....................................................................................................................39
3.3.1- Arquitetura CORBA...........................................................................................................................41
3.4 - DESENVOLVIMENTO BASEADO EM COMPONENTES ...............................................................................44
3.4.1 - Active X.............................................................................................................................................49
3.4.2 - JavaBeans.........................................................................................................................................51
3.4.3 - Enterprise JavaBeans (EJB) .............................................................................................................53
3.5 – VANTAGENS E DESVANTAGENS ................................................................................................................55
3.6 – CONSIDERAÇÕES FINAIS ...........................................................................................................................56
Capítulo 4 - Repositório: Reutilização de Componentes..................................................... 58
4.1 – INTRODUÇÃO ............................................................................................................................................58
4.2- CARACTERÍSTICAS DE UM REPOSITÓRIO .....................................................................................................61
4.3 – GERENCIAMENTO .....................................................................................................................................65
4.4 – MERCADO DE REPOSITÓRIOS ....................................................................................................................66
4.4.1- Repositórios na Internet.................................................................................................................66
4
4.4.2- Outros Repositórios .......................................................................................................................67
4.5 – CONSIDERAÇÕES FINAIS ...........................................................................................................................68
Capítulo 5 - Fundamentos da Tecnologia XML .................................................................. 70
5.1 – INTRODUÇÃO A XML ...............................................................................................................................70
5.2- DOCUMENTO XML ....................................................................................................................................71
5.2.1- Definição do Tipo de Documento ......................................................................................................75
5.3 – IMPORTÂNCIA DO XML ............................................................................................................................77
5.4 – CONSIDERAÇÕES FINAIS ...........................................................................................................................78
Capítulo 6 - ProReuso: Um Repositório de Componentes.................................................. 80
6.1 – MOTIVAÇÃO .............................................................................................................................................80
6.2 – DESCRIÇÃO E FUNCIONALIDADES .............................................................................................................81
6.3 - ARQUITETURA ...........................................................................................................................................83
6.4 – PROCESSOS ...............................................................................................................................................84
6.5 – CONSIDERAÇÕES FINAIS ...........................................................................................................................99
Capítulo 7 - Conclusões........................................................................................................ 100
Apêndice A - Modelagem do Sistema.................................................................................. 102
DEFINIÇÃO DE REQUISITOS ..............................................................................................................................102
MODELO DE CASOS DE USO .............................................................................................................................118
TELAS DO PROREUSO ......................................................................................................................................121
DIAGRAMA HIERÁRQUICO DE FUNÇÕES...........................................................................................................136
MODELO ENTIDADE-RELACIONAMENTO (MER)..............................................................................................138
DICIONÁRIO DE DADOS ....................................................................................................................................138
DEFINIÇÃO DE TIPO DE DOCUMENTO XML (DTD)… … … … … … … … … … … … … … … … … … … … … … ...139
Glossário ................................................................................................................................ 144
Referências Bibliográficas ................................................................................................... 146
5
Lista de Figuras
FIGURA 2.1- MODELO DE ATIVO.............................................................................................................................19
FIGURA 3.1 - ARQUITETURA CORBA.....................................................................................................................43
FIGURA 3.2 - ARQUITETURA DA TECNOLOGIA EJB.................................................................................................54
FIGURA 4.1 - UM MODELO DE REPOSITÓRIO ...........................................................................................................60
FIGURA 5.1 – EXEMPLO DE DOCUMENTO XML .....................................................................................................72
FIGURA 5.2 – EXEMPLO DE DECLARAÇÃO DE DTD INTERNA.................................................................................76
FIGURA 6.1 - ARQUITETURA DO PROREUSO ...........................................................................................................83
FIGURA 6.2 – PROCESSO DE APROVAÇÃO DE COMPONENTES .................................................................................91
FIGURA 6.3 – PROCESSO NOTIFICA SUPERIOR ........................................................................................................93
FIGURA 6.4 – PROCESSO SOLICITA COMENTÁRIO ...................................................................................................94
FIGURA 6.5 – PROCESSO VERIFICA QUALIDADE .....................................................................................................96
FIGURA 6.6 – PROCESSO VERIFICA DOCUMENTO ...................................................................................................97
FIGURA 6.7 - PROCESSO NOTIFICA APROVAÇÃO COM CORREÇÃO ..........................................................................98
FIGURA A.1 – TELA DE ABERTURA ......................................................................................................................121
FIGURA A.2 – TELA DE OPÇÕES ...........................................................................................................................122
FIGURA A.3 – FORMULÁRIO DE SUBMISSÃO DE COMPONENTES ...........................................................................123
FIGURA A.4 – FORMULÁRIO DE SUBMISSÃO DE DOCUMENTOS ............................................................................124
FIGURA A.5 – FORMULÁRIO DE ENTRADA DE CARACTERÍSTICAS DO ATIVO ........................................................125
FIGURA A.6 – TELA DE PROCESSOS......................................................................................................................126
FIGURA A.7 – TELA DE ACOMPANHAMENTO ........................................................................................................127
FIGURA A.8 – PASTA DO COMPONENTE................................................................................................................128
FIGURA A.9 – FORMULÁRIO DE PESQUISA ............................................................................................................129
FIGURA A.10 – TELA DE RESULTADO DE PESQUISA .............................................................................................130
FIGURA A.11 – TELA DE DETALHAMENTO ...........................................................................................................131
FIGURA A.12 – FORMULÁRIO DE INSERÇÃO DE COMENTÁRIOS ............................................................................132
FIGURA A.13 – FORMULÁRIO DE RE-SUBMISSÃO DE ATIVO .................................................................................133
FIGURA A.14 – FORMULÁRIO DE INSERÇÃO DE DOCUMENTO DE CORREÇÃO .......................................................134
FIGURA A.15 – TELA DO CATÁLOGO ....................................................................................................................135
6
Lista de Tabelas
7
Capítulo 1
Introdução
1.1 - Motivação
1.2 – Descrição
Este trabalho pode ser dividido logicamente em duas partes: uma parte trata da
fundamentação teórica do trabalho enquanto a segunda parte apresenta a proposta de um
repositório de componentes, sua arquitetura e principais características ligadas a sua
implementação.
A fundamentação teórica consiste em um estudo sobre a teoria do reuso de software,
destacando-se a importância de um repositório para a viabilização da prática do reuso. Com
essa pesquisa, adquire-se conhecimento do conceito de reuso de software, do que se pode
reusar, das implicações existentes no processo de reuso e principalmente, quais os benefícios
que essa prática pode promover a uma organização que inicia, seriamente, um processo
interno de reuso.
Define-se, nesse trabalho, que o reuso é uma prática sistemática de desenvolver novas
aplicações a partir de ativos de software pré-construídos que apresentam similaridades de
requisitos e/ou arquiteturas com o que está sendo desenvolvido [KRUEGER,1992]. Por se
tratar de uma prática sistemática requer disciplina e envolvimento de todos os membros da
empresa. Além disso, requer um processo de conscientização interno, para que todos
entendam o potencial de aumento de produtividade, qualidade dos produtos, economia em
relação aos custos e tempo de desenvolvimento que essa prática representa.
Na definição de reuso, é introduzida a palavra ativo de software e, portanto, vale
ressaltar que, no trabalho, discute-se a validade desse termo. Ativo de software foi definido
como aquilo que se pode reusar, que consiste em qualquer produto de software reusável, de
qualquer fase do desenvolvimento [EZRAN et al., 1999]. Essa escolha ocorreu pelo fato do
termo trazer com ele a idéia de valor e investimento para a empresa. Como essas idéias
correspondem ao conceito de software reusável que se deseja deixar claro nesse projeto, o
termo ativo está bem empregado.
Em relação ainda ao termo ativo, é importante esclarecer que na fase de
implementação do repositório esse termo foi substituído por componente de software. Essa
10
substituição não representa o esquecimento ou até contradição do que foi dito no parágrafo
anterior. Ela ocorreu pelo fato da empresa que motivou a construção desse repositório, Oracle
do Brasil, ter a intenção, inicial, de construir um repositório focado em componentes
executáveis e documentos relacionados a eles, tais como, manual de usuário, diagramas UML
[BOOCH et al., 1999], apresentações técnicas, etc., que atendesse principalmente a sua área
de desenvolvimento. Pode-se citar outro fator menos relevante, que consiste no fato do termo
componentes ser mais familiar para as pessoas, em geral, quando se refere a reuso de
software. Assim, apesar da substituição, ainda pode-se pensar em ativos de software sendo
armazenados no repositório.
Nesse trabalho, também é dissertado o valor agregado de um repositório de ativos ao
processo de reuso. Todavia, o sucesso na implantação de um repositório engloba decisões
importantes quanto às funcionalidades que serão implementadas. A pesquisa e a recuperação
de ativos são consideradas como as principais, apesar de não haver desconsideração de outras,
tais como, certificação de qualidade dos componentes, segurança, distribuição, etc..
Em virtude de entender a importância de um repositório, não se restringindo apenas ao
armazenamento de ativos, mas também de poder representar uma ferramenta de auxílio à
prática do reuso, foi implementado um repositório com características que possibilitam a
realização desse potencial.
O ProReuso é o resultado da parte de implementação do trabalho. Ele é um repositório
de componentes de software reusáveis, que consiste numa aplicação para web, disponibilizado
para funcionários da Oracle do Brasil, através da Intranet da empresa.
Com o ProReuso, o funcionário pode tanto alimentar o repositório com novos
componentes e/ou documentos relacionados a eles como localizar e recuperar outros já
disponibilizados. Para permitir a alimentação, o ProReuso disponibiliza as funcionalidades de
submissão de componentes e de documentos, que disponibiliza a entrada de características
dos mesmos para que possam ser armazenados dentro de uma organização definida.
A fim de implementar um processo de gerenciamento daquilo que está sendo
disponibilizado no repositório, é implementado no ProReuso um processo de aprovação de
componentes1, através de um workflow. Esse processo representa um crivo de gerentes de
projeto e especialistas de qualidade, pelo qual todo componente ou documento submetido ao
repositório deve passar. Tem-se, portanto, uma garantia de que aquilo que está disponibilizado
1
Nesse processo, o termo componente é usado também para se referir a documentos, com intuito de ter uma
11
já foi verificado e aprovado por especialistas.
Para a eficiência na pesquisa de ativos disponibilizada no ProReuso, utilizou-se os
recursos de estruturação textual oferecida pela tecnologia XML(eXtensible Markup
Language) [GRAHAM, 1999]. Cada ativo possui um documento XML associado, que é
alimentado durante a submissão, que armazena as informações do mesmo de forma
estruturada, correspondendo às características do ativo. A indexação desses documentos é
feita através de uma ferramenta (Oracle Intermedia) disponibilizada pelo banco de dados,
utilizando-se a estruturação feita segundo as facilidades fornecidas pelo XML.
Assim, considera-se essas duas últimas funcionalidades diferenciais importantes
disponibilizados no ProReuso. Dessa forma, acredita-se que o ProReuso representa um
exemplo de repositório que serve, de fato, como ferramenta auxiliar para a prática de reuso
dentro de uma organização.
13
Capítulo 2
Reuso de Software
2.1 – Introdução
A grande diferença entre esses dois tipos de organização está no grau de paciência
quanto à espera de resultados. As do primeiro tipo encaram o reuso como um investimento a
longo prazo, enquanto as do tipo 02 investem em esforços que venham trazer resultados em
seis meses ou menos. Certamente, empresas que encaram o reuso como um investimento a
longo prazo, que requer disciplina, têm mais chances de apresentar casos de sucesso, pois sua
prática é sistemática.
Quanto ao custo desse investimento, como geralmente é muito alto e o retorno não é
imediato, leva a supor que empresas sem recursos suficientes não podem praticar o reuso.
Todavia, existem muitos caminhos para a utilização do reuso de software. Segundo o
[ARANOW, 1994?], diretor do The Reuse Group, existem quatro modelos distintos de reuso;
com diferentes benefícios em potencial: reuso ad-hoc, reuso intra-projeto, reuso inter-projeto
15
e reuso organizacional. Ele alerta que as empresas devem ser realistas ao escolherem qual
deles podem ser executados.
Reuso Ad-hoc - Nesse modelo completamente descentralizado e circunstancial, o
reuso é encarado como um objetivo abstrato, mas sem nenhum planejamento, coordenação ou
suporte da organização como um todo. Para alcançá-lo é fácil, mas ele não gera diferenças
visíveis. Além disso, esse é o único nível que não requer um comprometimento financeiro
mais longo do que seis meses. Pode-se concluir, portanto, que esse modelo representa o reuso
não sistematizado citado no início dessa sessão.
Reuso Intra-Projeto - Aqui o reuso ocorre dentro dos projetos e é encorajado de
forma mais ativa pela organização, podendo até existir pessoal especializado para ajudar a
motivar, educar e assistir projetos que tenham iniciativas de reuso. O modelo exige um pouco
mais de esforço e com isso se pode obter projetos que representam casos isolados de sucesso
de reuso. Nas empresas tipo 02, mencionada anteriormente, esse modelo pode ter alguma
chance de ocorrer, particularmente, quando os ativos que estão sendo reusados tenham sido
produzidos fora do projeto.
Reuso Inter-Projeto – Nesse caso, o reuso é encorajado entre os projetos e tem um
suporte central para isso. Existem pessoas para coordenar e colocar os projetos juntos para
facilitar o reuso. Esse modelo exige ainda mais esforço e disciplina, mas em compensação os
benefícios não são restritos a projetos isoladamente.
Reuso Organizacional – Nesse modelo, os ativos reusáveis são vistos como ativos
corporativos. Uma organização que suporta esse modelo de reuso provê uma coordenação de
arquitetura e o gerenciamento de bibliotecas de ativos de software. Seu pessoal trabalha para
garantir que a biblioteca continue suportando as necessidades dos projetos da organização,
apresentando também um envolvimento total da empresa.
Muitas empresas, hoje em dia, não estão preparadas para alcançar o nível de
comprometimento exigidos pelos dois últimos modelos. No entanto, quando elas conseguem
chegar a esse ponto, podem alcançar todos os benefícios que as atraíram para começar a fazer
reuso de software no primeiro momento. Exemplos desses benefícios são: incorporação de
automatização, redução de tempo e custo de desenvolvimento, aumento na qualidade do
software, na produtividade, redução de erros, maior facilidade e menos gastos na manutenção,
dentre outros.
16
2.2 - O Que se Pode Reusar
1- Especificações
2- Requisitos de aplicações
3- Definições da fase de projeto
4- Descrições de domínio
5- Arquiteturas de software (incluindo as interfaces de componentes, interconexões
entre eles e plataforma de configuração)
6- Modelos de dados
7- Fragmentos de código de programas
17
8- Documentações
9- Experiências e competências
De fato, [EZRAN et al., 1999] sugerem um modelo que define a composição dos
ativos. Nele é demonstrado a importância de se empacotar os ativos anexando meta-
informações, que os descrevem, para que esses se tornem reusáveis. Dentre essas informações,
pode-se citar:
• informações quanto à classificação que facilitam uma rápida recuperação de ativos
necessários;
• descrição para facilitar a compreensão das funcionalidades do ativo;
• documentação para facilitar na compreensão de como usar o ativo e se necessário
como customizá-lo;
• informações quanto à qualidade e testes para facilitarem na avaliação e em testes
do ativo;
• informações sobre a origem do ativo para se obter informações de suporte ou
adicionais.
O modelo de ativo sugerido pode ser apresentado com um diagrama que usa a notação
UML dessa forma, como mostra a figura 2.1:
18
0..* 0..*
Ativo
Granularidade
1
1
Descrição
Corpo +Parte Reusável Artefatos do de Software
1..*
1 1
Informação Administrativa Informação de Ambiente Modelo de Análise Código-Fonte Código Executável Cenários de Teste
1 Informação de Qualidade
Nível de Reusabilidade
Palavra-Chave
Papel1
Papel2
1
Uso do Ativo
Histórico
Contexto
0..* Resultado
Como se pode ver na figura 2.1, o ativo é composto de duas partes: seu corpo
(constituindo de um ou mais produtos resultantes do processo de desenvolvimento) e sua
descrição (informações necessárias para o suporte do processo de reuso).
Além disso, existem dois possíveis tipos de relacionamento de um ativo com outros,
que são:
. Composição - ativos podem ser aninhados, ou seja, um ativo pode ser composto por
um ou mais ativos reusáveis. De fato, como já mencionado anteriormente, um ativo é
composto por um ou mais produtos de fases do ciclo de vida do software e esses produtos são
ativos reusáveis em potencial. Quem reusar esse ativo, tem a chance de escolher se reusará o
ativo como um todo (e consequentemente, todos os seus ativos componentes) ou apenas uma
parte componente.
19
. Dependência(uso) - um ativo pode utilizar funcionalidades de um ativo pré-
construído para executar as suas. Quem o reusa, pode escolher entre também reusar os ativos
relacionados ou fazer uma nova implementação para eles.
O modelo sugerido pode ser customizado de acordo com as necessidades da empresa e
como se pretende praticar o reuso nela. Uma customização desse modelo poderá ser visto
no capítulo 6 desse trabalho, onde se apresenta a implementação de um repositório.
Tabela 2.1
22
Tabela 2.2
Tabela 2.3
É importante ressaltar que essa classificação é subjetiva, pois um ativo vertical pode
ser transformado em horizontal caso o domínio, anteriormente definido, seja dividido em mais
de um. Isso ocorre porque domínios podem estar aninhados, ocorrendo a definição de
domínios mais precisos pertencentes a outros mais genéricos. Por exemplo, pode-se ter o
domínio de gerenciamento de performance de redes pertencente ao de gerenciamento de redes.
Outra classificação para ativos é quanto ao seu tamanho e granularidade. Como já
mencionado, eles podem estar aninhados, e com frequência estão. Porém, quem os está
reusando tem a liberdade de reusar o ativo como um todo ou suas partes individualmente.
Ativos que representam o todo são conhecidos como de granularidade grande, aqueles que
constituem partes são conhecidos como de granularidade pequena. Em ordem crescente de
granularidade, os ativos podem ser assim exemplificados:
• uma função ou um procedimento
23
• uma classe
• um grupo de classes, um pacote
• um subsistema, um framework ou um serviço
• uma aplicação ou um produto
Vale ressaltar que quanto maior a granularidade do ativo, mais cedo ele deve ser
considerado no processo de desenvolvimento da aplicação [EZRAN et al., 1999].
. Critérios Funcionais
Esses critérios cabem mais a ativos verticais. Aqui, apenas serão apresentadas
características funcionais gerais para qualquer ativo, pois esse tipo de ativo é
específico para cada domínio. Cada empresa deve definir critérios mais específicos de
acordo com o seu particular domínio.
- A função do ativo é acelerar ou simular, parcial ou totalmente, um processo
24
do negócio.
- O ativo provê serviços e consegue priorizar chamadas, agendar e gravar suas
execuções.
- O ativo deve se manter disponível para seus clientes e deve ser capaz de
executar atividades em paralelo.
- O ativo pode delegar serviços para ativos aninhados ou para outros ativos.
- O ativo deve estar de acordo com os padrões praticados no domínio da
aplicação.
- O ativo deve implementar o dilema entre ser muito específico(assim menos
reusáveis) e ser mais genérico (mais reusável).
. Critérios Técnicos
Esses critérios servem para facilitar que o ativo seja reusado e integrado. A
maioria desses critérios são mais aplicáveis a componentes que são desenvolvidos
usando tecnologias de componentização, como JavaBeans e ActiveX, que serão
melhor explicadas no capítulo seguinte.
- Interoperabilidade: Capacidade de se comunicar e integrar com outros ativos
numa aplicação, que podem ser implementados em linguagens diferentes e podem
estar rodando em máquinas diferentes com diferentes plataformas.
- Portabilidade: Capacidade de rodar em plataformas diferentes. [EZRAN et
al.1999] alerta para o fato de que ativos verticais não devem se conectar diretamente
com serviços de implementação, como interfaces gráficas ou banco de dados. Ele
aconselha a definição de interfaces lógicas para prover esses serviços e assim, garantir
a portabilidade e independência do software em relação ao computador que o serviço
está implementado.
- Separar a interface da implementação: como o ativo é usado ou reusado e
como ele é implementado devem ser coisas distintas, pois elas podem evoluir
separadamente.
25
- Auto-descritivo: componentes devem fornecer suas interfaces bem definidas,
que correspondem ao que podemos chamar de protocolo de uso, para que quem quiser
reusá-lo possa compreendê-lo sem que seja necessário recorrer aos artefatos de
software gerados no seu desenvolvimento, nem consultar suas interfaces e
propriedades profundamente.
Quando o ativo é reusado, pode-se classificar esse reuso quanto à necessidade ou não
de haver adaptações para se atender às requisições do sistema e nos casos em que se façam
necessárias essas adaptações, como elas foram feitas.
. Reuso Caixa Preta (black box reuse) - Quando os ativos são inseridos ao sistema
sem qualquer modificação.
. Reuso Caixa Branca (white box reuse) - Quando há necessidade de reengenharia, ou
seja, quando for necessário a modificação do corpo do ativo para se obter as propriedades
requeridas pelo sistema.
. Reuso Caixa Cinza ou Cinzento (grey box reuse) – Intermediário dos dois
anteriores, quando as alterações são feitas via configuração de parâmetros.
. Reuso Transparente (glass box reuse) – Em situações nas quais não se faz
necessário fazer alterações, mas para descobrir as propriedades do ativo é preciso olhar dentro
dele, pois a descrição disponível não traz informações adequadas dessas propriedades.
26
Além dessa classificação, é possível analisar as formas possíveis de reuso de uma ativo
de acordo com a forma que o mesmo se apresenta. Essa forma ainda influencia como o ativo
será implementado na nova aplicação. A Tabela 2.4 mostra as estratégias de implementação
de um ativo de acordo com a sua forma, no entanto não constituem todas as estratégias
possíveis. [EZRAN et al., 1999]
Tabela 2.4
Vale destacar que algumas dessas formas de ativo serão melhor explicadas no capítulo
seguinte.
27
2.7 – Importância do Reuso
Uma vez introduzida a idéia do que se trata reuso, o que são os ativos de software
reusáveis, quais as classificações possíveis e como identificá-los, faz-se necessário entender
quais os benefícios de se adotar a prática do reuso. Assim, com uma lista de benefícios que
será apresentada a seguir, pode-se perceber a importância dessa prática para as empresas
desenvolvedoras:
29
2.8 – Sucesso e Falhas no Reuso
Como já foi dito na seção anterior, coisas grandes e valiosas só são conseguidas com
grandes esforços. Mais do que tudo é necessário muita disciplina para não falhar ao iniciar um
processo de adesão ao reuso. As empresas precisam se conscientizar disso e colocar a teoria
em prática. Assim, torna-se essencial nesse momento a apresentação das falhas mais comuns
cometidas pelas empresas em suas tentativas, juntamente com soluções de sucesso.
Os aspectos que aqui serão apresentados têm como referência o resultado de um
trabalho realizado com algumas empresas européias que desenvolvem projetos industriais.
Esse trabalho consiste numa pesquisa baseada em reuso, realizada através de entrevistas
estruturadas com gerentes de projetos dessas empresas2.
Alguns fatores que podem ser considerados como determinantes de fracassos no
processo de reuso são:
- Não envolvimento e comprometimento por parte da alta gerência das empresas.
- Não introdução de processos de reuso, como análise de domínio3, qualificação e
classificação.
- Inalteração de processos diferentes do de reuso, como análise de requisitos, de
projeto .
- Nenhuma preocupação ou direcionamento para fatores humanos, como treinamento e
motivação para a prática do reuso.
- Entendimento da empresa que repositório ou tecnologia orientada a objetos tratados
isoladamente, sem ações complementares, significam reuso.
Para se evitar que essas falhas venham a acontecer, pode-se elaborar uma orientação,
no sentido de apresentar questões que devem ser consideradas quando a empresa está
2
Maiores detalhes sobre a pesquisa podem ser encontrada em [MOURIZIO et al., 2000].
3
Atividade que determina os requisitos comuns dentro de um domínio, com o propósito de identificar
oportunidades de reuso entre sistemas de um domínio. Ao final da atividade, é construído um modelo de
arquitetura de domínio representando as semelhanças e diferenças nos requisitos de um domínio.
30
iniciando seu programa de reuso. As empresas entrevistadas que obtiveram sucesso em seus
projetos estavam alertas para o que vai ser apresentado a seguir.
1. Potencial de Reuso
Avalie o potencial de reuso, o qual é maior quando as empresas desenvolvem
produtos de software similares que evoluem com o tempo e são mais ou menos
adaptados para cada cliente.
2. Capacidade de Reuso
Consiga um comprometimento da alta gerência para obter recursos necessários e
poder para:
• Mudar processos de desenvolvimento
• Adicionar processos de reuso
• Trabalhar fatores humanos
• Instalar um repositório
• Definir pessoas chaves para o reuso
A ordem em que esses itens aparecem não é importante, todos esses aspectos
devem ser executados. Se dois ou mais deles não forem direcionados, o fracasso é bem
provável de acontecer.
Segundo [MOURIZIO et al., 2000], os conceitos errados que muitas empresas
acreditam, como orientação a objeto sozinha provê reuso, instalação de um repositório
isolada sem nenhum mecanismo de controle de qualidade, gerenciamento de versão ou
divulgação interna provê reuso, tendem ao entendimento superficial da importância de
se endereçar todos os itens acima.
3. Implementação de Reuso
O endereçamento dos itens anterior geram outras escolhas de níveis mais baixos.
• Mudança nos processos de desenvolvimento: definição e análise de requisitos,
projeto de alto nível e teste requerem mudanças específicas para se levar em
conta a disponibilidade dos ativos. O gerenciamento de projeto também é
impactado, assim como aspectos de cronograma, custos e produtividade.
• Adição de processos de reuso: análise de domínio pode ou não ser usada para
direcionar a identificação de ativos reusáveis. Ativos podem ser menores ou
maiores, incluindo ou não projeto e requisitos. Podem ser produzidos e
mantidos por um grupo específico ou por projeto, antes de serem necessários
ou no momento que forem requisitados pela primeira vez.
31
• Trabalhar fatores humanos: uma ou mais técnicas podem ser usadas, como
treinamento, eventos de conscientização, grupos de discussões e notícias.
Premiações isoladas não são suficientes.
• Instalação de repositório: como será implementado, quais os processos que
serão usados, como qualidade e gerenciamento de configuração. Pode ser
usado uma ferramenta específica ou um add-on para implementar um sistema
de gerenciamento de configuração.
Por fim, vale ressaltar que a disponibilização de recursos na empresa, geralmente
relacionado ao seu tamanho, deve ser considerada com cuidado para se fazer escolhas que
possam ser sustentadas.
- Nome
Deve ser um nome significativo, que transmita a idéia daquilo a que se propõe o
padrão. Nomes de padrões se transformam em elementos do vocabulário dos
projetistas. Esses nomes permitem o uso de uma simples palavra ou pequena frase para
referenciar o padrão, conhecimento e estrutura que ele descreve. Às vezes, existe mais
de um nome sendo usado e reconhecido na literatura para um mesmo padrão. Quando
isso ocorre, é comum documentar esses sinônimos sob os títulos de Pseudônimos ou
Também Conhecido Como. Existem alguns autores que acrescentam uma
classificação ao nome do padrão.
- Problema
Uma declaração da situação problema descrevendo quais as suas intenções, ou
seja, seus objetivos em um dado contexto e sob determinadas condições.
- Contexto
36
São as pré-condições sob as quais o problema e sua solução são aplicáveis. Pode-
se entender como a configuração inicial do sistema, antes do padrão ser aplicado a ele.
- Aspectos Motivadores
Descrição de como as estruturas de classes e objetos no padrão conseguem
solucionar o problema. Descreve-se quais e como os aspectos tomados em
consideração na solução se interagem ou entram em conflito para alcançarem o
resultado esperado.
- Solução
Descrição dos elementos que compõem a solução desse problema de projeto,
juntamente com as suas responsabilidades, relacionamentos e colaborações. Consiste
em representações de regras estruturais e dinâmicas, que descrevem um guia de
instruções de como realizar o resultado desejado. Para representar essas regras são
anexados diagramas que identificam a estrutura do padrão, seus participante e suas
colaborações necessárias para que a solução do problema seja aplicada. Segundo
[APLLETON, 2000], não se deve esquecer, entretanto, a descrição do seu
comportamento dinâmico, pois isso geralmente é o que dá sentido à existência do
padrão.
- Exemplos
Exemplificação de uma ou mais aplicações do padrão, objetivando ilustrar um
contexto inicial específico, como o padrão é aplicado a esse contexto e como o
transforma, além do resultado(configuração final) alcançado. Esses exemplos ajudam
os leitores a compreenderem melhor o uso e a aplicabilidade do padrão.
- Consequências
Descrição das pós-condições e efeitos colaterais gerados depois da aplicação do
padrão, ou seja, o estado ou configuração do sistema no novo contexto alcançado.
Além disso, também devem ser descritos outros problemas ou padrões que podem
surgir com esse novo contexto. Portanto, deve-se incluir consequências boas e más,
representando pontos de decisão do tipo custo-benefício que são gerados. Essa
37
documentação ajuda na identificação dos próximos padrões que podem ser seguidos a
esse, pois o contexto atual pode ser o inicial de outro padrão.
- Justificativas
Justificação sobre a eficiência do padrão, porque ele funciona e resolve o
problema.
- Implementação
Descrição de técnicas para a implementação do padrão. Algumas vezes são
apresentados códigos-fontes, representando uma implementação concreta da solução.
- Padrões relacionados
Existem alguns padrões que se relacionam entre si. Pode-se citar aqueles que são
predecessores, cuja aplicação conduz a esse padrão; sucessores, cuja aplicação segue a
desse; alternativos, que apresentam soluções diferentes para o mesmo problema, mas
sob condições diferentes; por fim, co-depedentes que podem ser aplicados
simultaneamente a esse.
- Usos conhecidos
Descrevem aplicações concretas do padrão em sistemas já existentes. Isso
possibilita a validação do padrão, mostrando que trata-se de uma solução
comprovadamente eficiente para um problema recorrente.
38
Vale dizer que os padrões se aplicam em diferentes níveis de abstração e não apenas a
projeto. Existem ainda padrões de arquitetura e de implementação (idiomas). Um exemplo de
padrão de arquitetura será apresentado na próxima seção.
4
Middleware: denominação do software responsável pela comunicação e/ou interoperabilide de em um ambiente
computacional distribuído. Algumas formas de middleware são Monitores de Transações, como CICS;
Ferramentas de Trabalho em Grupo, como Lotus Notes; Middleware Orientado a Mensagens, como MQSeries;
41
O desenvolvimento de aplicações distribuídas tem aumentado a cada dia. Segundo
[MONTEZ ,1997], a importância de sistemas distribuídos também tem se tornado cada vez
maior devido, principalmente, a tendências organizacionais, tais como, downsizing, que
demandam o intercâmbio de informação dentro da própria organização e entre organizações
cooperantes.
Esses sistemas apresentam várias vantagens advindas da distribuição, tais como,
disponibilidade, desempenho e otimização de custos. No entanto, apresentam características
que precisam ser controlados, tais como, concorrência, afastamento, heterogeneidade,
assincronismo e mobilidade.
Para o controle dessas características, são impostas algumas condições de estrutura e
funcionamento das arquiteturas dos sistemas distribuídos. A característica de heterogeneidade,
por exemplo, impõe a necessidade de especificações abertas, com interfaces padronizadas e
públicas, levando ao desenvolvimento de middlewares abertos5. Esse tipo de sistemas permite
uma crescente interoperabilidade, escalabilidade e portabilidade, permitindo sistemas
diferentes conviverem juntos e software desenvolvido em uma plataforma poder executar em
outra com adaptações mínimas.
Com o objetivo de apresentar conceitos e especificações que tragam soluções para
lidar com essas características, vários modelos e arquiteturas distribuídas vêm sendo
desenvolvidas. A OMG, já citada na seção anterior, apresentou a arquitetura CORBA como
solução para o desenvolvimento de sistemas baseados em ambientes distribuídos
heterogêneos, de forma a aproveitar todos as vantagens da distribuição e ao mesmo tempo
tentar neutralizar os efeitos causados pelas características acima citadas, e com isso, alcançar
características de reusabilidade, portabilidade e interoperabilidade
A arquitetura CORBA especifica um middleware aberto composto de objetos
distribuídos. Esses objetos são empacotados como componentes binários que clientes remotos
podem acessar via invocação de métodos. De fato, os objetos são abstrações, sendo visíveis
através de seus métodos, que são definidos por uma interface. Invocações a essas operações
ocorrem através de referências ao objeto.
42
CORBA possui quatro elementos principais:
43
A interação de objetos clientes e servidores com o ORB é feita através de interfaces
dos objetos de aplicação, que são definidas usando a Linguagem de Definição de Interfaces da
OMG (IDL - Interface Definition Language). A interface IDL define os métodos e
parâmetros. É importante ressaltar que a IDL é apenas uma linguagem declarativa, ou seja, os
objetos podem ser implementados em qualquer linguagem de programação. Na verdade,
existe uma restrição para essas linguagens, pois deve ser uma para qual exista um
mapeamento dos conceitos da IDL. No entanto, isso não é um problema, pois já existe
mapeamento para as linguagens mais populares, tais como C, C++, Java, COBOL, Ada,
Smalltalk e Lisp.
A arquitetura CORBA possui outros elementos mais complexos, mas o detalhamento
da tecnolgia está fora do escopo desse trabalho, e assim, espera-se ter alcançado o objetivo de
se ilustrar um framework através de uma especificação que vem sendo amplamente usada por
várias organizações.
Modularidade do Componente
Um componente é modular, ou auto-contido, porque desempenha uma tarefa isolada
ou discreta ou um conjunto de tarefas relacionadas. Por exemplo, um componente que
44
representa um botão na tela pode gerenciar sua aparência e as condições de seus estados, tratar
interações de usuários e retornar resultados.
O isolamento de tarefas traz uma vantagem: condições de erros específicos podem ser
identificadas e tratadas mais facilmente dentro dos componentes. No momento da construção
da lógica geral das aplicações não é necessário se preocupar com identificação e tratamento de
erros, o que facilita a manutenção e extensão da aplicação.
Reusabilidade do Componente
Um componente é reusável porque desempenha tarefas genéricas e cuidadosamente
definidas, que podem ser aplicadas de formas similares entre aplicações. Ele é desenvolvido
com um objetivo específico, mas para qualquer aplicação que tenha esse objetivo. Voltando
ao exemplo do componente botão, ele se comporta do mesmo modo em qualquer aplicação
que ele for empregado. Por exemplo, um usuário pode clicá-lo para obter uma ação e o botão
responder executando a ação definida para ele no momento em que foi projetado.
Assim, ao se escrever um componente, deve-se ter o cuidado de projetá-lo procurando
atender a requisitos comuns de uma variedade de aplicações de um domínio específico. Isso
significa identificar comportamentos comuns dentre as aplicações. Esses comportamentos
serão expostos através de interfaces.
Segundo [KIRBY, 1999], existem algumas técnicas para se projetar um componente
que facilitam o reuso de uma determinada função dentro do próprio sistema, que são:
• Procure por comportamento comum que existe em mais de um lugar no sistema.
• Tente generalizar o comportamento tal que ele seja reusável.
• Planeje interfaces de fachada6 controladoras, que farão uso de componentes
generalizados.
No entanto, deve-se estar atento para não se construir soluções que são reusáveis, mas
que não significam nada. O projeto de uma solução que é reusável requer mantê-la o mais
simples possível. Se o componente for muito complicado, uma destas duas coisas vai
acontecer: ele vai se tornar inútil ou apenas uma parte dele será reusado, porque o componente
terá sido projetado para tratar muito mais coisas do que o consumidor realmente precisa.
6
Interface de fachada é um tipo de interface que passa controle para outra. Ela provê muitos dos seus serviços
consumindo serviços de outra interface. Sua especificação não indica para quem a consome que existe outra
interface sendo consumida.
45
Interface do Componente
Como mencionado anteriormente, uma aplicação se comunica com o componente
através de uma interface claramente definida. A interface define como o componente recebe
informações e qual resultado ele retorna. Quando um componente pré-existente é reusado, o
seu consumidor só precisa conhecer sua interface, e não, o seu funcionamento interno. Assim,
se a interface não for alterada, a implementação do componente pode ser mudada sem atingir
as aplicações que o usam.
A interface de um componente representa pontos de entrada sofisticados que oferecem
elementos de tempo de projeto e de execução. Elementos de projeto permitem que haja
customização de aspectos do componente quanto à aparência e comportamento durante o
desenvolvimento da aplicação. Os de execução habilitam a aplicação a interagir com o
componente, em resposta tanto a ações de iniciativa do usuário como certas condições pré-
determinadas da aplicação, configuradas em tempo de projeto [NETSCAPE, 1998].
Uma interface geralmente possui três elementos: suas propriedades, métodos e
eventos.
- Propriedades
São como variáveis na visão dos desenvolvedores de aplicação. Elas podem ter
seus valores setados e lidos como variáveis de funções, mas elas são mais poderosas
que variáveis por dois motivos [NETSCAPE, 1998]:
. Seus valores podem ser configurados em tempo de projeto: diferentes de
métodos que só estão disponíveis em tempo de execução, propriedades permitem
que componentes sejam customizados enquanto se constrói a aplicação.
. Propriedades podem esconder detalhes de implementação: através de
propriedades os desenvolvedores de componentes podem atachar efeitos
complexos para atribuições exteriormente simples. O que parece uma atribuição
a uma variável pode ser uma chamada para um método que implementa um
processamento elaborado.
- Métodos
Um método é um elemento de execução da interface. Eles operam sobre dados do
componente e são usados para que o componente desempenhe uma ação ou retorne um
valor ainda não armazenado nas suas propriedades. Métodos executam código, assim
só estão disponíveis em tempo de execução. Segundo [NETSCAPE, 1998], eles são
46
úteis porque:
. Encapsulam a funcionalidade de um componente no mesmo objeto em que os
dados residem.
. Podem esconder procedimentos complexos sob interfaces simples e consistentes.
Uma chamada a um método pode ser feita sem que se saiba como ele funciona.
. Permitem atualizar várias propriedades com uma simples chamada.
- Eventos
São métodos especiais que ligam um componente com uma aplicação que o está
usando. Eventos mandam informações ou requisições de uma instância do componente
para a aplicação.
Tratadores de eventos podem desempenhar dois tipos de ações, internas e externas.
As internas são as mesmas para todas as instâncias do componente, enquanto as
externas são diferentes por aplicação ou até mesmo por invocação dentro de uma
aplicação. Por exemplo, supondo que uma aplicação instancie dois botões. A ação
interna de cada botão em resposta ao evento onClick pode ser mostrá-lo,
momentaneamente, no seu estado de visitado antes de remostrá-lo no seu estado
normal. A ação externa desse evento para um dos botões pode ser a chamada a uma
rotina que submete os dados correntes, que estão num formulário, para um banco de
dados; para o outro pode ser fechar a aplicação.
47
Tabela 3.1
3.4.1 - Active X
50
3.4.2 - JavaBeans
JavaBeans consiste no modelo de componentes padrão desenvolvido para construção
de componentes em Java, que podem ser manipulados visualmente por uma ferramenta de
construção de aplicações [SUN 1997]. Um componente que adere à especificação JavaBeans
é conhecido como bean. Eles podem ser visuais (ex. botão com comportamento especial,
gráficos) ou não visuais(ex. timer), mas esses últimos ainda podem ser manipulados
visualmente, usando ferramentas de construção.
Interações com beans ocorrem em três níveis: propriedades, métodos e eventos.
Propriedades definem as características do bean e possibilitam a configuração de sua
aparência e comportamentos. Elas podem ser acessadas (lidas ou escritas) através de métodos
públicos do bean, visualmente em janelas apropriadas da ferramenta de desenvolvimento ou
recuperando o estado do bean tornado persistente.
Métodos são exportados e definem o que pode ser feito com o bean. São usados para
ler e escrever o valor de uma propriedade em particular. Eles podem ser invocados por outros
componentes. Por default, métodos públicos de um bean vão ser exportados, mas pode-se
escolher para exportar apenas um subconjunto de seus métodos públicos.
Eventos provêem um meio de componentes se comunicarem com outros sobre a
ocorrência de algo que os interessa.
Como se pode notar esses conceitos estão de acordo com os apresentados quando se
definiu os elementos de uma interface do componente.
Todo bean apresenta as seguintes características:
7
Applets são aplicações gráficas escritas em Java que rodam em um navegador.
51
dos componentes em tempo de execução. A identificação da estrutura é possível
através da adoção de padrões (convenções) para nomes de métodos e assinaturas.
Esse serviço é projetado para as ferramentas de desenvolvimento, que irão
funcionar como “introspector”. As ferramentas podem indagar o bean quanto as
suas propriedades e comportamento. A introspecção pode ser dividida em duas
partes, baixo nível (acesso completo à estrutura interna do bean) e alto nível
(acesso limitado à estrutura interna, geralmente apenas métodos e propriedades
públicas).
8
Esse termo será explicado mais adiante.
53
Os atributos de um bean desse tipo contém o estado da conversação, e assim,
esses componentes são transientes9. Quando ocorre alguma falha tanto no cliente
como no servidor, eles são destruídos.
- Beans de entidade: representam dados armazenados em um banco de
dados, juntamente com os métodos que agem sobre esses dados. Consistem em
componentes persistentes, pois são participantes de transações e existem
enquanto o dado permanecer no banco. Num contexto de banco de dados
relacional, para cada linha de uma tabela existe um bean associado. Falhas no
servidor são transparentes ao cliente.
Cliente: não precisa ser escrito em linguagem Java, pois a especificação EJB não
obriga nenhum protocolo de ligação de objetos remotos, permitindo que o servidor
suporte múltiplos protocolos como RMI, IIOP (CORBA) e DCOM. Já que o cliente
enxerga um bean como um objeto remoto, ele não necessita usar um protocolo
específico para se comunicar com os beans, que se encontram dentro de um container.
9
Componentes transientes são componentes não-persistentes.
54
O cliente se comunica com um bean através das interfaces home e remota, que serão
explicadas posteriormente.
Servidor EJB: consiste numa coleção de serviços que implementa detalhes de baixo
nível, como o gerenciamento de transações e de objetos distribuídos, invocações
distribuídas a métodos desses objetos, entre outros serviços de baixo nível do sistema.
Resumidamente, o servidor EJB gerencia os recursos necessários para suportar os
componentes EJB. Os provedores de servidores podem prover a implementação de um
container e também podem prover API para vendedores terceiros acoplar novos
containers EJB.
Container EJB: onde os componentes (beans) são armazenados e executados. Pode
existir mais de uma instância de um bean no container. É responsável pela criação e
destruição dessas instâncias. Oferece serviços para os componentes e a interação entre
ele e os componentes é feita através de um conjunto definido de interfaces. É
transparente para o cliente.
Interface Home: uma das interfaces que o container implementa quando um
componente é instalado nele. Define um contrato entre eles, que consiste em uma lista
de métodos para localização, criação, remoção de instâncias de beans e
questionamento de informações ou metadados a respeito do bean.
Interface Remota: outra interface implementada ao se instalar um componente.
Consiste numa lista de métodos de negócio de um bean disponibilizadas para o cliente.
O objeto EJB é quem implementa essa interface, e não o bean. O objeto EJB serve
como um proxy, interceptando as invocações a objetos remotos e chamando os
métodos apropriados na instância do bean [Roth, 1999].
Após descrito algumas das tecnologias de reuso existentes, vale ressaltar que não
existe uma melhor do que a outra. Cada uma delas apresenta suas vantagens e desvantagens, e
seu uso se tornará mais adequadas de acordo com o tipo e contexto de desenvolvimento da
aplicação, além do nível de conhecimento da equipe de desenvolvimento. Pode-se, assim,
apresentar um quadro comparativo entre elas, sugerido por [EZRAN et. al., 1999], mostrando
as vantagens e desvantagens de cada uma (Tabela 3.2).
55
Tabela 3.2
56
precisam ser customizados para atender às necessidades específicas do cliente. Mostrou-se
que frameworks representam o ponto de partida para a construção de aplicações,
possibilitando não mais se partir do zero. Como exemplo do que existe no mercado foi
apresentada a arquitetura CORBA.
Por último se apresentou a técnica de desenvolvimento baseado em componentes, que
representa a possibilidade de se construir sistemas a partir de componentes preexistentes. Para
usar esses componentes basta conhecer as interfaces que eles implementam. No entanto,
verificou-se que customizações só podem ser realizadas ao nível de aparência externa do
componente, nenhuma adaptação pode ser feita na sua implementação. Como exemplo dessa
técnica foram apresentadas as tecnologias ActiveX , JavaBeans e Enterprise JavaBeans.
Nesse capítulo, procurou-se esclarecer a possibilidade de ocorrer reuso em qualquer
fase do desenvolvimento. Além disso, percebeu-se que existem várias alternativas para
colocá-lo em prática, algumas mais simples, outras mais complexas. A escolha de qual
tecnologia está relacionada ao tipo de aplicação, contexto em que ela está sendo desenvolvida
e o nível da equipe de desenvolvimento.
No próximo capítulo, serão discutidos aspectos relacionados aos repositórios de
componentes. Um repositório de componente consiste de uma forma eficiente, quando bem
empregada, para se alcançar o reuso dentro de uma empresa.
57
Capítulo 4
Repositório: Reutilização de Componentes
4.1 – Introdução
59
Repos itório
C atálogo Ativo
O modelo da figura 4.1 indica que é um repositório é composto por uma coleção de
ativos juntamente com um catálogo que apresenta as descrições desses elementos. Cada um
desses ativos é formado por um corpo e uma descrição conforme apresentado anteriormente.
Adaptações desse modelo podem ser aplicadas de acordo com a necessidade
identificadas para cada situação.
As vantagens proporcionadas por um repositório num processo de reuso são
compartilhadas por todos os pesquisadores da área. Há, entretanto, uma divergência no modo
de utilização do repositório. O modo mais comum corresponde à formulação de parâmetros
para pesquisa que são submetidos ao repositório e, como consequência, obtém-se um conjunto
de ativos que satisfaçam tais parâmetros. Uma outra abordagem, adotada por [YE, 199? ],
defende não ser eficiente a formulação da pesquisa pelo usuário formule pesquisas. Para ele,
as intenções do usuário raramente são mapeadas em parâmetros adequados para uma pesquisa
eficiente. Com isso, propõe que, integrado ao ambiente de desenvolvimento, exista uma
ferramenta capaz de capturar informações desse ambiente e, após uma análise, sugerir alguns
componentes que se adequem ao que o usuário está fazendo.
Conforme mencionado anteriormente, o que se tem observado é que para se obter os
reais benefícios do reuso não basta apenas tomar conhecimento de suas vantagens. Ele deve
ser incentivado e, principalmente, praticado. A mesma observação pode ser aplicada para o
uso de um repositório. Para que o mesmo possa auxiliar no processo de reuso é de
60
fundamental importância o treinamento e a prática da sua utilização de modo a familiarizar os
usuários com as funcionalidades disponíveis e as características presentes para a pesquisa.
Isso torna possível a rápida localização dos ativos adequados e a consequente minimização
do tempo de desenvolvimento.
- Pesquisa textual: um repositório deve permitir que seus usuários façam pesquisas
61
mais específicas na descrição dos ativos. Como resultado da pesquisa serão obtidos um
ou mais ativos que satisfaçam as condições desejadas. Observados os resultados, pode-
se decidir por um maior detalhamento ou generalização dos critérios anteriores.
- Recuperação: após a identificação do ativo desejado, um repositório deve permitir
que seus usuários recuperem esse ativo para que possam posteriormente utilizá-lo num
processo de reuso.
- Organização e pesquisa: como visto anteriormente, a funcionalidade de
exploração de catálogos não é suficiente à medida que a quantidade de ativos
disponíveis aumenta. Além disso, a pesquisa textual, muitas vezes, demanda muito
tempo. Devido a esses fatores, alguns repositórios podem adotar novas formas de
organizar as características dos ativos de modo a permitir que a pesquisa no repositório
seja baseada em outros critérios. Dentre os possíveis tipos de organização [EZRAN et
al., 1999] destaca:
1. Palavras-Chave: cada um dos ativos é descrito por um conjunto de
palavras-chave que poderão ser utilizados como critérios de pesquisa.
2. Classificação por facetas: essa classificação permite que sejam
atribuídos aos diversos ativos um conjunto de facetas (atributos) às quais
poderão ser associados diversos valores. Assim, a pesquisa no
repositório poderá ser feita a partir do relacionamento “faceta=valor”.
Por exemplo, pode-se definir para um determinado ativo a faceta
“linguagem de programação” e a ela ser atribuída, durante uma pesquisa,
valores como “Java”, “C++” ou outros. Vale ressaltar que as facetas
também podem ser definidas em forma hierárquica. Assim, conforme
exemplifica [EZRAN et al., 1999], a faceta “linguagem de programação”
pode receber valores como “procedural” ou “orientada a objetos” e, por
sua vez, a faceta “procedural” valores como “Pascal” ou “C”. Como
numa estrutura hierárquica, a pesquisa é feita percorrendo-se toda essa
estrutura. Ao se procurar no repositório por “linguagem de
programação=procedural”, obtém-se o conjunto de ativos que
apresentam, além do atributo “linguagem de programação”, a faceta
“procedural” independentemente do valor a ela atribuído.
3. Thesaurus: um thesaurus é uma organização de diversos sinônimos para
um conjunto de palavras. Ele muitas vezes é utilizado em áreas
62
específicas onde existe um vocabulário bastante especializado. No
contexto do repositório, pode-se observar que determinados ativos estão
relacionados a outros através de uma associação de similaridade ou
identidade. Nesses casos, um thesaurus torna-se bastante útil para a
pesquisa à medida em que permite localizar sinônimos, ou seja, ativos
similares àqueles identificados.
- Histórico: é importante para o gerenciamento de um repositório que ele possa
armazenar informações de uso, modificações, criação e exclusão de cada um dos
ativos disponíveis. Essas informações devem montar uma base histórica que facilitará
a análise e a reutilização dos mesmos. O histórico de uso é particularmente importante,
já que possibilita aos usuários de um determinado ativo analisar diversas informações
sobre a sua utilização tais como, contexto de uso, falhas, práticas de sucesso, dentre
outras . Essas informações muitas vezes servirão como base para se optar pela
reutilização de quaisquer dos ativos. Com isso, muitos autores consideram de extrema
importância que seja difundido pela empresa a cultura de se incluir observações de uso
quando da reutilização de um ativo.
- Mensuração: um repositório pode coletar estatísticas que facilitem o seu
gerenciamento. Algumas das principais estatísticas que podem ser adotadas são:
frequência de acesso ao repositório, quantidade de ativos disponíveis, taxa de
recuperação, porcentagem de pesquisas bem-sucedidas, frequência com que um
determinado ativo é analisado ou modificado, dentre outras.
- Controle de acesso: um repositório pode adotar uma política de segurança para
que determinadas funcionalidades só estejam acessíveis a pessoas autorizadas. Por
exemplo, pode-se definir para uma empresa específica uma política de segurança onde
a pesquisa textual esteja disponível para todos os funcionários, mas a recuperação de
ativos esteja disponível apenas aos funcionários da área de desenvolvimento.
- Gerenciamento de versões: um repositório pode conter várias versões de um
mesmo ativo e, sendo assim, é recomendável que haja algum mecanismo para
controlar essas versões e estabelecer o relacionamento entre elas.
- Controle de modificações: é recomendável que sejam providas algumas
funcionalidades para se fazer o gerenciamento de modificações dos ativos num
repositório. Essas funcionalidades incluem procedimentos para solicitação de
alterações, discussões e permissão para as mesmas. É de extrema importância para a
63
manutenção da consistência de uma repositório que quaisquer intenções de modificar
os ativos sejam comunicadas àquele responsável pela sua administração para que o
mesmo, juntamente com outros responsáveis, possam analisar as alterações solicitadas
e manter a coerência entre os diversos ativos de software.
- Notificação de mudanças: é possível que a qualquer momento um ativo seja
modificado ou, até mesmo, que o próprio repositório sofra algumas alterações em suas
principais funcionalidades. Sendo assim, um repositório pode prover funções que
notifiquem os seus usuários das modificações recentemente ocorridas tais como,
inserção ou exclusão de ativos, alterações em documentos, disponibilização de novas
funcionalidades, novas políticas de segurança, entre outras.
4.3 – Gerenciamento
Como a Internet tornou-se nos últimos tempos o maior e mais eficiente meio para o
compartilhamento de informações, é esperado que torne-se também uma grande fonte de
reuso para as organizações e desenvolvedores em geral. É possível encontrar por toda a rede
diversos repositórios, sendo a grande maioria deles repositório de componentes de software. A
seguir serão apresentados, juntamente com suas principais características, alguns repositórios
encontrados de domínio público.
10
As características e funcionalidades dos produtos apresentados foram obtidas através das suas páginas
67
Information Model (OIM). Para a troca de informações entre vários repositórios o formato
adotado pela empresa foi o formato XML Assim, para a comunicação entre eles, todas as
informações presentes na descrição de um ativo, que estão de acordo com o padrão OIM, são
inseridos em elementos pré-definidos de um documento XML. O repositório oferece ainda
funcionalidades como controle de versões, controle dos relacionamento entre ativos e controle
de acesso aos mesmos. Outros tipos de informações sobre o produto podem ser encontradas
em http://msdn.microsoft.com/repository/ .
Unisys Universal Repository - O repositório produzido pela Unisys, também
conhecido como UREP, é um sistema de informação para definir, integrar e gerenciar
metadados e informações de negócio [UREP, 2000]. As principais funcionalidades oferecidas
pelo repositório são: controle de versões, definição e gerenciamento de metadados, suporte a
padrões como UML e ActiveX, interoperabilidade com outras ferramentas e disponibilização
de serviços para navegadores de Internet (browsers). Maiores informações podem ser obtidas
em http://www.unisys.com/marketplace/urep.
Component CapitolTM 11 - O Component CapitolTM é um repositório desenvolvido pela
Objects Components Corporation (OCC) para o armazenamento de componentes
implementados em linguagens orientada a objetos tais como, Java, C++, Eiffeil e SmallTalk.
Equipes que necessitam diminuir o tempo de desenvolvimento e aumentar a qualidade de suas
aplicações podem pesquisar nesse repositório para encontrar componentes que se adequem às
suas necessidades [CC, 1999]. As funcionalidades disponíveis são: pesquisa e inserção de
componentes, exploração dos seus catálogos e exploração de catálogos de vendedores,
categorias, plataformas e tecnologias. Outras informações podem ser obtidas em
http://www.object-components.com/ComponentCapitol/
69
Capítulo 5
Fundamentos da Tecnologia XML
Como foi visto anteriormente, na seção 4.4.2 , XML é uma tecnologia que vem sendo
usada como suporte a repositórios no que tange à comunicação entre eles. Em vista de
facilidades fornecidas por essa tecnologia, ela também foi utilizada na implementação do
ProReuso, um repositório de componentes que será descrito com detalhes no capítulo 6.
Assim, neste capítulo, serão apresentadas as principais características da tecnologia, deixando
para o próximo capítulo uma melhor detalhamento de como a XML foi utilizada neste projeto.
12
Esse paradigma permite tratar cada unidade de informação como um objeto (ou entidade) ao qual pode-se
atribuir características específicas, o que possibilita maior poder de estruturação da informação.
70
duas foram concebidas para armazenar e transmitir dados, porém XML traz mais efetividade
na transmissão dos dados por prover maior flexibilidade.
A grande diferença entre HTML e XML refere-se ao fato de que as marcas(tags) na
XML podem ser criadas pelo desenvolvedor para melhor qualificar as informações do texto.
Além disso, a HTML fica restrita ao formato de apresentação do dado, enquanto a XML no
que ele significa.
Houve uma tentativa da HTML trazer essas novas funcionalidades, que passaram a ser
exigidas pelas organizações à medida que a utilização da Web expandiu-se, através de
extensões. Porém, essas extensões começaram a transformar uma linguagem que
originalmente era simples em algo complexo. Além disso, percebeu-se que o conjunto fixo de
tags era a grande limitação da HTML e que uma nova linguagem precisava surgir. Essa
necessidade ficou ainda mais clara ao se desejar processar informações distribuídas em
aplicações distribuídas de negócio; o conjunto de tags oferecido pela HTML não era
suficiente, por exemplo, para descrever uma requisição de compra.
Assim, em fevereiro de 1998 a W3C (World Wide Web Consortium) publicou a versão
1.0 da Recomendação XML.
71
Figura 5.1 – Exemplo de Documento XML
13
DTD significa document type definition. Apesar de se referir a uma definição, palavra feminina, nesse
trabalho, será usado o artigo masculino junto a DTD, pois a idéia de que essa definição, de certa forma, está
contida num arquivo é mais facilmente assimilada. Será visto mais adiante que ela pode, inclusive, estar no
72
A segunda linha do prolog refere-se à declaração de tipo de documento. Declara-se,
nesse momento, qual tipo de documento que a instância está usando. No exemplo, é
informado que o documento corresponde a uma mensagem, cuja estrutura (Mensagem,
Importante, De, Para, Corpo) está definida no arquivo mensagem.dtd. Como essa estrutura é
definida será mostrado mais adiante.
A instância do documento é simplesmente o conteúdo propriamente dito, que
corresponde a informações estruturadas. A estruturação é feita através das marcações ou tags,
que podem ser de seis tipos: elementos, referências a entidades, comentários, instruções de
processamento, seções marcadas e declarações de tipo de documento.
Antes de iniciar o detalhamento desses tipos, vale dizer que todos os nomes dados a
essas marcações devem começar por letras ou um de alguns possíveis caracteres de pontuação,
exceto “.”, seguidos de letras, dígitos, hífens, underscores, dois pontos ou ponto final.
Espaços em branco e caracteres especiais, portanto, não são permitidos.
Elementos
Cada bloco de texto num documento XML deve ser descrito por um elemento
para se identificar a natureza(função) do seu conteúdo. O conteúdo de um elemento
pode ser caracteres, outros elementos ou ambos. É possível existir elementos vazios,
ou seja, que não possuem conteúdo, usados geralmente para marcar uma localização
particular no documento.
Elementos com conteúdo são delimitados por duas tags, a de início <nome
do_tipo_de_elemento> e de fim </nome_do_tipo_de_elemento>. Na figura 5.1, pode-
se observar o elemento “corpo”. Um processador XML irá acusar erro caso uma dessas
tags não seja fornecida. Além disso, se a caixa estiver diferente, também será acusado
ausência de tag, pois XML é sensível ao caso.
Elementos vazios possuem uma sintaxe diferente. Eles não apresentam a tag de
fim e são indicados da seguinte forma: <nome_do_tipo_de_elemento/>. No exemplo
dado, <importante/> corresponde a um elemento vazio.
Atributos
Além de conteúdo, elementos podem ter atributos. Eles são uma forma de
Referências a Entidades
Entidades são usadas para representar caracteres reservados da linguagem
XML, como ‘<’,´>´, ´&´, dentro do conteúdo do documento. Também são usadas para
fazer referência a texto repetitivos dentro do documento (entidades internas) e para
incluir conteúdo de unidades físicas, como arquivos e recursos acessados via URL
(entidades externas).
Comentários
Comentários são informações a respeito do documento ou de suas tags que são
ignoradas pelos processadores. Em documentos XML, comentários podem conter
qualquer dado, exceto a string --, pois eles são inseridos começando com <!-- e
terminando com -->. Comentários não são passados para as aplicações pelo
processador XML.
Seções CDATA
Consiste de uma forma mais simples de indicar ao processador para ignorar
caracteres de tags, reservados na linguagem. Úteis, por exemplo, quando se quer
inserir códigos-fonte, que frequentemente possuem caracteres como ‘<’e ‘&’.
Entre o início da seção, <![CDATA[ e o seu final, ]]>, todos os dados são
passados para as aplicações, sem qualquer interpretação. A única string que não pode
ocorrer numa seção CDATA é ]]>.
Instruções de Processamento
Essas instruções representam uma forma de prover informações para uma
aplicação. Como comentários, elas não fazem parte do texto do documento, mas
diferentemente deles, devem ser passadas para uma aplicação pelo processador XML.
74
Elas têm a seguinte forma: <? Nome_da_instrução?>. Esse nome identifica a
instrução para as aplicações e essas só processam instruções que ela reconhece, as
outras são ignoradas.
Instruções que começam com xml são reservadas para a padronização XML.
No exemplo, a declaração da XML representa uma instrução desse tipo.
A declaração de tipo de documento será comentada na próxima seção.
<?xml version=“1.0”standalone=“yes”?>
<!DOCTYPE Mensagem[
<!ELEMENT Mensagem (Importante, De, Para, Corpo)>
<!ELEMENT Importante EMPTY>
<!ELEMENT De (#PCDATA)>
<!ATTLIST De e-mail CDATA #REQUIRED>
<!ELEMENT Para (#PCDATA)>
<!ATTLIST Para e-mail CDATA #REQUIRED>
<!ELEMENT Corpo (#PCDATA)>
]>
<Mensagem>
<Importante/>
<De Email=”cholanda@br.oracle.com”> Caroline Holanda </De>
75
<Para Email=”casouza@br.oracle.com”> Clarissa Angélica de Souza
</Para>
<Corpo> Esse é um mail de teste .
Obrigada
</Corpo>
</Mensagem>
Figura 5.2 – Exemplo de Declaração de DTD Interna
76
Atributos podem ser do tipo string (indicado por CDATA) ou lista de enumeração, que
é uma lista de valores pré-definidos, onde o valor do atributo pode ser apenas um deles. A
lista é declarada dessa forma (valor1 | valor2 | valor3).
As definições para valor default podem ser:
#REQUIRED – um valor deve ser dado para esse atributo em todos os elementos do
tipo declarado; não há valor default.
#IMPLIED – um valor pode ser dado para esse atributo nos elementos do tipo
declarado; não há valor default.
“attr-value” – o valor default é o fornecido entre as aspas.
#FIXED “attr-value” – todo elemento terá o valor fornecido entre aspas para esse
atributo e não poderá haver alteração.
Após essa explicação sobre linguagem XML, passa-se a ressaltar as característica que
trazem vantagens ao utilizá-la. De certa forma, a apresentação dessas vantagens reflete, em
muitos itens, uma comparação com a linguagem HTML.
XML, como o próprio nome diz, é uma linguagem extensível, assim traz flexibilidade
na criação dos documentos e permite trazer maior significado para as informações contidas no
texto.
A linguagem XML permite separar o conteúdo do documento do seu formato, e assim,
permite que haja tratamento diferenciado dos dados. O mesmo documento pode ser
apresentado de forma diferente, de acordo com o conhecimento, interesse e necessidade do
77
seu público alvo. Isso não ocorre no HTML, que representa apenas a apresentação dos dados.
Rigorosamente, a linguagem XML é uma maneira textual de representar a estrutura
inserida nos dados. Por causa dessa estruturação, pode-se realizar pesquisas mais acuradas no
ambiente Web.
Para finalizar, por atender à flexibilidade exigida nas aplicações de negócio atuais,
como comércio eletrônico e aplicações business-to-business, XML tem se tornado um padrão
universal para a troca eletrônica de dados.
Nesse capítulo foi apresentada a tecnologia XML. Mostrou-se que se trata de uma
linguagem de tags, assim como o HTML, mas que traz muita flexibilidade na criação dos
documentos.
Isso se dá devido ao fato da linguagem XML permitir que o autor de um documento
crie seu próprio conjunto de tags, para melhor representar os dados contidos no documento.
Apresentou-se os possíveis tipos de tags na linguagem, que são elementos, referências a
entidades, comentários, instruções de processamento, seções marcadas e declaração de tipo de
documento.
Salientou-se, ainda, que para ser validado, um documento XML precisa se referir a um
DTD (Document Type Definition). O DTD representa uma gramática para uma classe de
documentos, onde são definidas regras de sintaxe para os elementos do documento e seus
atributos, declaração de entidades e de notações.
Finalmente, são apontandas as vantagens em utilizar a linguagem XML nas aplicações.
Como exemplo, pode-se citar a flexibilidade na criação dos documentos, tratamento
diferenciado para os dados e pesquisas mais acuradas no ambiente Web, devido à estruturação
textual permitida pela linguagem.
O próximo capítulo apresenta um repositório de componentes, com o intuito de
mostrar a aplicação de um dos aspectos que viabiliza o reuso nas organizações. O capítulo
pretende, ainda, demonstrar quais decisões foram tomadas para permitir que esse repositório
se transformasse numa verdadeira ferramenta para o processo de reuso de uma empresa. Uma
das decisões foi a disponibilização de uma pesquisa feita em documentos XML para facilitar
na localização e recuperação dos ativos.
78
79
Capítulo 6
ProReuso: Um Repositório de Componentes
6.1 – Motivação
81
Cada documento submetido deve estar relacionado a um componente e cada
componente possui uma página no site com uma referência a todos os seus documentos. Nessa
página é também possível visualizar as características de todos os ativos bem como os
comentários que forem inseridos pelos usuários a respeito do componente em questão. Após a
submissão uma referência para o ativo já é inserida na página correspondente com uma
observação indicando que o mesmo ainda não foi aprovado.
Cada ativo apresenta um conjunto de características que são agrupadas num
documento XML. Esse documento servirá como base para a rotina de pesquisa e recuperação
de ativos do ProReuso. As características definidas para os ativos estão especificadas no XML
que encontra-se no apêndice B.
Para a pesquisa o usuário pode especificar em quais campos do documento XML ele
deseja que ela seja efetuada. Assim, o usuário pode eliminar informações desnecessárias e
mais facilmente localizar os ativos desejados.
O ProReuso pode ser acessado por usuários públicos (dentro da intranet) ou por
usuários cadastrados através do fornecimento de login e senha. Sendo assim, o sistema oferece
um controle de segurança da seguinte forma: Apenas os usuários cadastrados podem submeter
componentes e documentos, visualizá-los e recuperá-los. Os usuários públicos podem fazer
pesquisas, mas não podem recuperar os ativos encontrados. A eles só é permitido o acesso a
documentos informativos tais como readme, white papers e manuais do usuário.
O repositório disponibiliza, ainda, um catálogo com todos os componentes
disponíveis. Essa catálogo traz a descrição dos mesmos e uma referência à sua página para os
usuários cadastrados.
Por fim, através do ProReuso, é possível compartilhar experiências através da inserção
de comentários. Um usuário que já tenha utilizado um componente pode inserir dados
relevantes sobre sua experiência com o mesmo e esses dados estarão disponíveis a todos os
outros usuários para que eles sigam as suas recomendações.
As principais funcionalidades disponíveis aos usuários do ProReuso são:
• Submissão de Componentes e Documentos – responsável por iniciar o processo de
aprovação de ativos. Na submissão, o usuário fornece as principais características
do componente ou do documento as quais irão compor o documento XML.
• Acompanhamento de Processos – possibilita a um usuário acompanhar
graficamente todos os processos por ele iniciados. O usuário pode a qualquer
momento identificar em que ponto do processo se encontra o ativo submetido.
82
• Pesquisa – permite a procura pelos componentes e documentos que compõe o
repositório. Essa pesquisa pode ser contextualizada, ou seja, é permitido ao usuário
que identifique em quais campos do documento XML ele deseja que a pesquisa seja
feita.
• Exploração do Catálogo – mostra ao usuário todos os componentes que fazem parte
do repositório juntamente com suas descrições.
• Inserção de Comentários – permite que uma pessoa que já tenha utilizado um
componente ou um documento insira comentários sobre aquele ativo de modo a
compartilhar experiências.
6.3 - Arquitetura
83
Como se pode observar, o ProReuso corresponde a uma instância de banco que é
acessada por estações clientes através de um listener de interface para web. Toda a sua lógica
está armazenada no banco na forma de procedimentos PL/SQL, que geram páginas HTML
para serem visualizadas através de um navegador nas estações clientes. O acesso a esses
procedimentos é feito através de um servidor web representado por um listener HTTP
agrupado a um gateway PL/SQL
Os elementos presentes nessa arquitetura são:
Oracle WebDB [WEBDB, 2000] - Ferramenta utilizada para o desenvolvimento de
aplicações para a Internet. Disponibiliza aos desenvolvedores funções como monitoração de
aplicações e controle de acesso. Encontra-se armazenada no banco de dados e todas a suas
funcionalidades são representadas por pacotes PL/SQL.
Oracle WorkFlow [WF, 2000] - Ferramenta utilizada para a definição e automação de
processos. Assim como o WebDB, encontra-se completamente armazenada no banco. É
composta por um mecanismo gerenciador que controla a execução do processo e por um
sistema de notificação responsável pelo envio de mensagens e pelo processamento de suas
respostas.
Oracle Intermedia [INTER, 2000]- Ferramenta utilizada para a pesquisa de
documentos armazenadas no banco.
Listener e PL/SQL gateway [WEBDB, 2000]- Esses elementos fazem parte do
WebDB e atuam como a camada intermediária entre o protocolo HTTP utilizado pelo
navegador e o protocolo NET8 utilizado pelo banco. Isso permite que links no site sejam
requisições de procedimentos PL/SQL.
6.4 – Processos
14
No contexto desse processo, a palavra componente estará representando tanto um componente como um
84
padrões pré-definidos.
Processo principal. Apresenta em nível mais alto todos os passos definidos para a
aprovação de um componente. O processo se inicia quando o requisitante submete um
componente no repositório. Os passos do processo são:
87
Alteracao
Finalizar
Fim (Rejeitado) Verifica Documento Notifica Aprovacao Fim (Rejeitado)
<Default> com Correcao
Rejeitado
Ultimo Aprovado
<Default>
Fim (Aprovado)
Aprovado com Menores correcoes
Aprovado
Rejeitado
93
Processo Solicita Comentário
Cobranca de
Comentario
Ausente
Presente
Inic io Pedido de Inc lusao Verifica Comentario Fim
de Comentario
94
Processo Verifica Qualidade
95
Fim (Aprovado) Notificacao de
Aprovacao do Grupo
de Qualidade
Rejeitado
Fim (Aprovado com
Maiores Correcoes)
96
Processo Verifica Documento
Fim
Presente
Ausente
Sim
97
98
Processo Notifica Aprovação com Correção
Finalizar
Fim (A lte ra c a o )
A p r o v a d o c o m M e n o res c o rre c o e s
Fin a lizar
N o tific a c a o d e
Aprovacao com
M e n o res Corre c o e s
do GQ
99
6.5 – Considerações Finais
100
Capítulo 7
Conclusões
102
Apêndice A
Modelagem do Sistema
Definição de Requisitos
103
Atores
Cada um dos casos de uso será descrito através de uma tabela que contém as seguintes
informações:
1. Caso de Uso - Nome do caso de uso.
2. Descrição – breve descrição do caso de uso.
3. Pré-condições – Especificam as condições que devem ser válidas para o caso de
uso ser realizado.
4. Pós-condições – Especificam o estado do sistema depois da realização do caso de
uso.
5. Atores Primários – Representam os atores que disparam o caso de uso.
6. Atores Secundários – Especificam os atores que colaboram para a realização do
caso de uso.
7. Cenário Principal – Especificam os passos necessários para a realização do caso de
uso (fluxo principal).
8. Extensões – Passos que podem ocorrer na realização do caso de uso sob
determinada condição.
104
9. Inclusões – Passos necessários para a realização deste caso de uso e que são
comuns a outros casos de uso.
10. Cenários Secundários – Especificam os fluxos secundários para a realização do
caso de uso.
Tabela A.1
105
No passo 6, caso as informações não estejam válidas, o sistema irá
comunicar ao requisitante qual o campo inválido e irá reapresentar o
formulário para que ele possa validá-lo e solicitar uma nova inclusão.
106
Tabela A.2
107
Tabela A.3
108
Tabela A.4
109
Tabela A.5
Cenários
Secundários
110
Tabela A.6
111
Tabela A.7
112
Tabela A.8
Cenários
Secundários
113
Tabela A.9
Cenários
Secundários
114
Tabela A.10
Cenários
Secundários
115
Tabela A.11
Cenários
Secundários
116
Tabela A.12
117
Tabela A.13
Cenários
Secundários
118
Modelo de Casos de Uso
Pacote Processo
Requisitante
<<include>> <<include>>
Re-submeter Ativo
Submeter Ativo
<<include>>
Validar Entrada de Dados
Inserir Correções
<<extend>>
Avaliar Ativo
Avaliador
Analisador de
Qualidade
119
Pacote Pesquisa
Pesquisar Ativo
Listar Comentários
Pesquisador
Consultar Catálogo
120
Pacote Uso de Componente
Inserir Comentários
Usuário de Ativos
Recuperar Ativo
121
Telas do ProReuso
1. Tela de Abertura
122
2. Tela de Opções
O usuário acessa essa tela após ter se logado no site. A partir desse momento, ele
poderá acessar as funcionalidades disponibilizadas antes de se logar e todas as outras
implementadas no ProReuso.
Nessa tela, o usuário, através do menu principal, tem as opções de submeter um
componente ou um documento ao repositório , acompanhar um processo de submissão
iniciado por ele, procurar por ativos disponibilizados no repositório ou inserir comentários
sobre algum componente disponibilizado que ele tenha usado.
123
3. Formulário de Submissão de Componentes
O usuário tem acesso a esse formulário quando ele seleciona a opção “Submeter
Componentes” no menu principal da tela de opções. Nesse formulário, o usuário deverá entrar
com as características básicas do componente que deseja submeter, que são: nome, versão,
tipo (que pode ser: Javabeans, Enterprise Javabeans ou Package), arquivo (componente em
si) e descrição do componente.
Ao submeter o componente, será iniciado um processo de aprovação do mesmo. Caso
o componente seja aprovado, esse será publicado no site e ficará disponível para os usuários
do ProReuso.
124
4. Formulário de Submissão de Documentos
O usuário tem acesso a esse formulário quando ele seleciona a opção “Submeter
Documentos” no menu principal da tela de opções. Nesse formulário, o usuário deverá entrar
com as características básicas do documento, que deve ser associado a um componente já
armazenado no ProReuso e que o usuário deseja submeter. Essas características são: nome,
versão, tipo (que pode ser: diagramas de classe, de sequência, de estados, casos de uso,
interface do usuário, manual do usuário, javadocs, apresentação técnica, white paper ou
outros), nome do componente associado, arquivo (documento em si) e descrição do
documento.
Ao submeter o documento, será iniciado um processo de aprovação do mesmo. Caso o
documento seja aprovado, esse será publicado na área reservada do site para o componente ao
qual ele é associado (pasta do componente) e ficará disponível para os usuários do ProReuso.
125
5. Formulário de Entrada de Características do Ativo
126
6. Tela de Processos
127
7. Tela de Acompanhamento
Essa tela é acessada quando o usuário seleciona um processo na lista oferecida na tela
de processos para monitorar. Nessa tela, o usuário toma conhecimento em que passo do
processo de aprovação se encontra o ativo submetido por ele.
128
8. Pasta de um Componente
Cada componente armazenado no ProReuso tem uma pasta onde podem ser acessados
o próprio componente, as suas características, os documentos associados a ele e comentários
feitos por outros usuários que já tenham reusado esse componente em seus projetos.
129
9. Formulário de Pesquisa
O usuário tem acesso a esse formulário quando seleciona a opção Pesquisar. Nela, o
usuário poderá pesquisar em campos específicos, que correspondem a características do ativo,
ou em todos os campos. No caso da pesquisa ser realizada em campos específicos, a procura
será feita buscando ativos que possuem todas as características solicitadas.
130
10. Tela de Resultado de Pesquisa
131
11. Tela de Detalhamento
132
12. Formulário de Inserção de Comentários
133
13. Formulário de Re-submissão de Ativo
O usuário tem acesso a esse formulário quando recebe uma notificação do processo de
aprovação, informando que determinado avaliador aprovou o componente com correções e
caso queira alterar o componente ou documento, poderá fazê-lo o re-submetendo nesse
formulário. O usuário fornecerá um novo arquivo com as alterações indicadas.
134
14. Formulário de Inserção de Documento de Correção
135
16. Tela do Catálogo
Essa tela é acessada quando o usuário visita o link ‘Catálogo’ na barra de navegação
do site. Nela são apresentados todos os componentes armazenados no ProReuso com a
descrição de cada um deles. A partir dela, o usuário poderá acessar a pasta de cada
componente.
136
Diagrama Hierárquico de Funções
137
138
Modelo Entidade-Relacionamento (MER)
ASSET FILE
# NAME
o MIME_TYPE
o DOC_SIZE
* CREATOR
o CONTENT
CONTENT corresponde
# ID
* NAME
* ITEMTYPE
o CORNERID compõe
* TYPE
o TOPICID possui
o TITLE
o AUTHOR ASSET
o DESCRIPTION # ID
o KEYWORDS corresponde o NAME é composto TYPES
o FILENAME o VERSION # ID
* ACTIVE é representado * NAME
o DOC_ID
* CREATEDATE o CMP_ID o IS_DOC
o EXPIREDATE corresponde
o XML
* SEQ
o CONTEXT_URL
classifica
é é é analisado
representa
representa
DOCUMENT
# ID está associado COMPONENT
o CMP_ID # ID
possui o IMAGE
USER
# NAME
* DISPLAY_NAME
o NOTIFICATION_PREFERENCE
o LANGUAGE
o EMAIL_ADDRESS
participa o EXPIRATION_DATE analisa
Dicionário de Dados
139
140
141
142
143
Definição de Tipo de Documento XML (DTD)
<!DOCTYPE ATIVO [
<!ELEMENT NOME (#PCDATA)>
<!ELEMENT VERSAO (#PCDATA)>
<!ELEMENT TIPO (#PCDATA)>
<!ELEMENT COMPONENTE_ASSOCIADO (#PCDATA)>
<!ELEMENT PALAVRAS_CHAVE (#PCDATA)>
<!ELEMENT DESCRICAO (#PCDATA)>
<!ELEMENT AUTORES (#PCDATA)>
<!ELEMENT DATA_CRIACAO (#PCDATA)>
<!ELEMENT AREA_DOMINIO ()>
<!ELEMENT SUGESTOES_USO (#PCDATA)>
<!ELEMENT PRE_REQUISITOS (#PCDATA)>
<!ELEMENT SERVICOS_OFERECIDOS (#PCDATA)>
]>
144
Glossário
Processo – série de etapas específicas que devem ser executadas para a realização de um
determinado objetivo. A ordem e a natureza das etapas se alteram de acordo com as
condições.
Status de aprovação – Resultado de avaliação de componentes fornecido por um avaliador. O
resultado pode ser de quatro tipos: Aprovado, Aprovado com Maiores Correções, Aprovado
com Menores Correções e Rejeitado.
146
Referências Bibliográficas
[ARANOW 1994?] ARANOW, Eric. Software Reuse: Because the Waters are Rising.
Disponível na Internet.
Error! Bookmark not defined., [1994?]
[BASILI et al., 1996] BASILI, Victor R., et al.. How Reuse Influences Productivity in
Object-Oriented Systems. In: Communication of the ACM No 10,
outubro de 1996. v. 39.
[EZRAN et al. 1999] EZRAN, Michel, et al.. Practical Software Reuse: The Essencial
guide.[s.l : s.n],1999.185 p
[FAVARO et al. 1998] FAVARO, John M., et al.. Value Based Software Reuse
Investment. In: Annals of Software Engeneering, 1998. v.5, p.5-52
[GRAHAM 1999] GRAHAM, Ian, QUIN Liam XML Specification Guide [s.l]:
Willey Computer Publishing,1999. 431p.
[GRISS 1998] GRISS, Martin L..What next, now that we solved all reuse
problems? Disponível na Internet.
Error! Bookmark not defined., 1998
[KWON et al. 1997] [KWON,Oh Cheon, et al.. Integration of Reuse Process and
Maintenance Process within a Software Configuration
Manegement Environment . Disponível na Internet.
Error! Bookmark not defined., 1997
[LEUNEN 2000] LEUNEN, Hans Van. Embedded Component Object Model put in
Perspective. Disponível na Internet.
Error! Bookmark not defined., 2000
148
[MSR 2000] MICROSOFT CORPORATION. Microsoft Repository. Disponível
na Internet.
Error! Bookmark not defined., 2000
[MOURIZIO et al., 2000] MOURIZIO, Morisio, et al.. Success and Failure in Software
Reuse, 25p, 2000. Trabalho não publicado.
[SEACORD et al. 1998] SEACORD, Robert, et al.. Agora: A Search Engine for Software
Components. Disponível na Internet.
Error! Bookmark not defined., 1998
[SOUZA 1999] SOUZA, Clarissa de. Use Case and Class Documentation
Templates.1999 WhitePaper
149
[TRUMP 1997] TRUMP, Daniel. Using the WWW and the Internet to Support
Corporate Reuse. Disponível na Internet.
Error! Bookmark not defined., 1997
[BOOCH et al. 1999] BOOCH, Grady, et al.. The Unified Modeling Language User
Guide. 1.ed.Massachetts: Addison-Wesley, 1999.512p
150