• No results found

Objectivos e Contribui¸c˜ oes

Tendo como ponto de partida a importˆancia da fase de design no desenvolvimento de software e a necessidade de t´ecnicas que permitam a um sistema a reutiliza¸c˜ao de designs, o objectivo principal deste trabalho ´e o desenvolvimento de um sistema capaz de reutilizar designs. Este sistema dever´a ter duas caracter´ısticas centrais: armazenar e gerir um reposit´orio centralizado de designs de software, e fornecer aos designers mecanismos capazes de reutilizar estes designs de uma forma racional.

O REBUILDER tem uma arquitectura cliente-servidor, que se adequa bem a um ambiente distribu´ıdo como o de uma empresa de software. Isto vai de encontro `a primeira caracter´ıstica considerada necess´aria no armazenamento centralizado, en-quanto que a parte cliente do REBUILDER, que consiste numa ferramenta CASE que utiliza UML, permite fornecer aos designers meios para a reutiliza¸c˜ao racional dos designs dispon´ıveis. Esta ferramenta funciona como um editor de UML normal com funcionalidades extra que permitem ao utilizador reutilizar designs.

Com base nos objectivos iniciais e com o decorrer do trabalho, novos assuntos e sub-objectivos foram aparecendo. Os objectivos e contribui¸c˜oes consideradas centrais a este trabalho s˜ao descritas seguidamente, enquadradas segundo as t´ecnicas que foram aplicadas:

• O objectivo principal ´e a integra¸c˜ao da vertente ICASE com a vertente de gest˜ao de conhecimento de design de software. Aqui a contribui¸c˜ao deste trabalho ´e a arquitectura cliente/servidor desenvolvida, bem como a forma como se dividem

Resumo Alargado em Portuguˆes

e interagem os v´arios m´odulos.

• A representa¸c˜ao de casos ´e um dos pontos essenciais para o bom funcionamento dum sistema de RBC. Neste ponto opt´amos por uma representa¸c˜ao de casos centrada no utilizador, ou seja, o sistema utiliza a ’linguagem’ do designer de software (o UML) em vez de ser o oposto. Neste aspecto julgamos que este ´e um aspecto inovador deste trabalho.

• A indexa¸c˜ao e a recolha de casos s˜ao dois factores importantes para a perfor-mance de um sistema de RBC. Um dos objectivos deste trabalho ´e o desen-volvimento de um esquema de indexa¸c˜ao e recolha flex´ıvel e eficiente em termos de complexidade temporal. Neste ponto foram conseguidas duas contribui¸c˜oes importantes. Um esquema de indexa¸c˜ao baseado no WordNet em que n˜ao s´o os casos s˜ao indexados, mas tamb´em os objectos dos casos, o que permite uma maior flexibilidade de recolha de casos. Outra contribui¸c˜ao s˜ao os algoritmos de recolha e as m´etricas de semelhan¸ca desenvolvidas.

• De forma a sugerir ao designer v´arios designs alternativos e ajudar na ex-plora¸c˜ao dos espa¸cos de design, a reutiliza¸c˜ao de casos foi abordada neste trabalho de uma forma alargada, tentando explorar diversos mecanismos de adapta¸c˜ao. O resultado foi o desenvolvimento de trˆes formas diferentes de adap-tar diagramas de casos antigos a um novo problema:

– Adapta¸c˜ao de diagramas de classe atrav´es de racioc´ınio anal´ogico. Existem v´arias contribui¸c˜oes neste ponto, nomeadamente a forma como o WordNet

´e utilizado para selecionar os objectos candidatos a mapeamento, a forma como os mapeamentos s˜ao efectudados e o trabalho de experimenta¸c˜ao desenvolvido sobre o estudo do design criativo.

– Outro tipo de adapta¸c˜ao desenvolvido, que utiliza v´arios casos para solu-cionar um problema e que foi por n´os designado por composi¸c˜ao de designs.

– A utiliza¸c˜ao de padr˜oes de design de software10 para a modifica¸c˜ao e evolu¸c˜ao de designs. Esta contribui¸c˜ao ´e uma das que entendemos como mais originais pois ´e a primeira abordagem que automatiza todo o pro-cesso de aplica¸c˜ao de padr˜oes de design, desde a escolha do padr˜ao at´e `a

10Software Design Patterns em Inglˆes.

aplica¸c˜ao do padr˜ao escolhido.

• A fase de verifica¸c˜ao permite a filtragem de erros e incoerˆencias que resul-tam da fase de adapta¸c˜ao. Sendo um dos principais objectivos deste trabalho a modeliza¸c˜ao do ciclo de RBC completo, a integra¸c˜ao desta fase no modelo desenvolvido ´e essencial. Este aspecto foi abordado com base em casos de ver-ifica¸c˜ao que representam conhecimento sobre o dom´ınio e que v˜ao servir para identificarem erros em diagramas. Estes casos s˜ao utilizados tamb´em para fazer corre¸c˜oes em diagramas. Para al´em dos casos de verfica¸c˜ao, outra contribui¸c˜ao deste trabalho ´e o modo como cada designer tem a sua base de casos de ver-ifica¸c˜ao espec´ıfica, o que permite a personaliza¸c˜ao deste mecanismo. Outro aspecto inovador ´e a utiliza¸c˜ao do WordNet para fazer verifica¸c˜ao.

• Um sistema de RBC pode tirar vantagem da fase de reten¸c˜ao para adquirir mais conhecimento, nomeadamente novos casos, podendo assim melhorar a sua performance. A implementa¸c˜ao de um m´odulo de aprendizagem ´e um dos ob-jectivos deste trabalho, bem como os aspectos de manuten¸c˜ao da base de casos que lhe est˜ao associados. Neste dom´ınio este trabalho adapta v´arias estrat´egias de manuten¸c˜ao de casos para trabalharem com uma representa¸c˜ao de casos baseada em grafos.

• Um dos objectivos principais deste trabalho ´e o de melhorar a interac¸c˜ao entre o designer e o sistema CASE, o que ´e feito atrav´es da utiliza¸c˜ao de processamento de linguagem natural. A utiliza¸c˜ao de linguagem natural no REBUILDER est´a limitada `a representa¸c˜ao de casos e em espec´ıfico `a atribui¸c˜ao de nomes aos objectos de software. Um dos problemas que ´e abordado neste trabalho ´e o de tentar compreender qual o conceito associado a um determinado objecto com base no nome deste, designada por desambigua¸c˜ao de palavras11. Neste campo, para al´em de desenvolvermos dois m´etodos de desambigua¸c˜ao foi feito um estudo alargado comparando v´arios m´etodos descritos na literatura.

A sec¸c˜ao seguinte descreve o REBUILDER e os seus v´arios m´odulos.

11Em Inglˆes word sense disambiguation.

Resumo Alargado em Portuguˆes

Figure 2: A arquitectura do REBUILDER.

REBUILDER

Esta sec¸c˜ao descreve o modelo desenvolvido no ˆambito deste trabalho e que ´e levado `a pr´atica atrav´es do REBUILDER. Come¸camos por descrever a arquitectura do sistema e mostrar como ´e que os diversos m´odulos interagem entre si. Seguidamente passamos a descrever cada um dos m´odulos do sistema (ver figura 2):

• Editor de UML.

• Base de conhecimento.

• Gestor da base de conhecimento.

• Motor de RBC.