Asistent software bazat pe cunoștințe - Knowledge Based Software Assistant

De cunoștințe bazat pe software Assistant (KBSA) a fost un program de cercetare finanțat de Forțele Aeriene ale Statelor Unite ale Americii . Scopul programului a fost de a aplica concepte de la inteligența artificială la problema proiectării și implementării software-ului de calculator . Software-ul ar fi descris de modele în limbaje de nivel foarte înalt (în esență echivalent cu logica de ordinul întâi ) și apoi regulile de transformare ar transforma specificația în cod eficient. Forța aeriană spera să poată genera software-ul pentru a controla sistemele de arme și alte sisteme de comandă și control folosind această metodă. Pe măsură ce software-ul devenea din ce în ce mai critic pentru sistemele de arme ale USAF, sa realizat că îmbunătățirea calității și productivității procesului de dezvoltare a software-ului ar putea avea beneficii semnificative pentru armată, precum și pentru tehnologia informației din alte mari industrii americane.

Istorie

La începutul anilor 1980, Forțele Aeriene ale Statelor Unite au realizat că au primit beneficii semnificative prin aplicarea tehnologiilor de inteligență artificială la rezolvarea problemelor experților, cum ar fi diagnosticarea defecțiunilor la aeronave. Forțele aeriene au comandat un grup de cercetători din comunitățile de inteligență artificială și metode formale să elaboreze un raport despre modul în care astfel de tehnologii ar putea fi utilizate pentru a ajuta la problema mai generală a dezvoltării de software.

Raportul a descris o viziune pentru o nouă abordare a dezvoltării de software. În loc să definească specificațiile cu diagrame și să le transforme manual în cod, așa cum a fost procesul curent, viziunea Asistentului software bazat pe cunoștințe (KBSA) a fost de a defini specificațiile în limbaje de nivel foarte înalt și apoi de a utiliza reguli de transformare pentru a rafina treptat specificația în cod eficient pe platforme eterogene.

Fiecare pas în proiectarea și rafinarea sistemului ar fi înregistrat ca parte a unui depozit integrat. În plus față de artefactele dezvoltării software-ului, procesele, diferitele definiții și transformări, ar fi, de asemenea, înregistrate într-un mod care ar putea fi analizate și, de asemenea, redate ulterior, după cum este necesar. Ideea a fost ca fiecare pas să fie o transformare care să ia în considerare diverse cerințe nefuncționale pentru sistemul implementat. De exemplu, cerințele pentru utilizarea limbajelor de programare specifice, cum ar fi Ada sau pentru întărirea codului pentru toleranță la erori critice în timp real.

Forțele aeriene au decis să finanțeze cercetări suplimentare cu privire la această viziune prin laboratorul lor de la Roma Air Development Center de la baza forțelor aeriene Griffiss din New York. Majoritatea cercetărilor timpurii au fost realizate la Institutul Kestrel din California de Nord (cu Universitatea Stanford ) și Institutul de Științe ale Informației (ISI) din California de Sud (cu USC și UCLA ). Institutul Kestrel s-a concentrat în primul rând pe transformarea corectă a modelelor logice în cod eficient. ISI s-a concentrat în primul rând pe partea frontală a procesului pe definirea specificațiilor care ar putea fi mapate la formalisme logice, dar au fost în formate intuitive și familiare pentru analiștii de sisteme. În plus, Raytheon a făcut un proiect pentru a investiga colectarea informală a cerințelor, iar Honeywell și Universitatea Harvard au lucrat asupra cadrelor de bază, integrării și coordonării activității.

Deși nu a fost finanțat în principal de programul KBSA, proiectul MIT Programmer's Apprentice a avut, de asemenea, multe dintre aceleași obiective și a folosit aceleași tehnici ca KBSA.

În etapele ulterioare ale programului KBSA (începând din 1991) cercetătorii au dezvoltat prototipuri care au fost utilizate pe probleme de dezvoltare software la scară medie sau mare. De asemenea, în aceste etape ulterioare accentul s-a mutat de la o abordare KBSA pură la întrebări mai generale despre modul de utilizare a tehnologiei bazate pe cunoaștere pentru a completa și a spori instrumentele de inginerie software asistată de computer (CASE) existente și viitoare . În aceste etape ulterioare a existat o interacțiune semnificativă între comunitatea KBSA și comunitățile orientate obiect și de inginerie software. De exemplu, conceptele și cercetătorii KBSA au jucat un rol important în mega-programarea și programele de inginerie software centrate pe utilizator sponsorizate de Defense Advanced Research Projects Agency (DARPA). În aceste etape ulterioare, programul și-a schimbat numele în Inginerie software bazată pe cunoaștere (KBSE). Schimbarea numelui a reflectat diferitele obiective de cercetare, nu mai este de a crea un instrument complet nou care să acopere întregul ciclu de viață al software-ului, ci de a transforma treptat tehnologia bazată pe cunoaștere în instrumentele existente. Companii precum Andersen Consulting (unul dintre cei mai mari integratori de sistem și la acea vreme furnizor al propriului instrument CASE) au jucat un rol major în program în aceste etape ulterioare.

Concepte cheie

Reguli de transformare

Regulile de transformare utilizate de KBSA au fost diferite de regulile tradiționale pentru sistemele expert. Regulile de transformare s-au asortat mai degrabă cu limbajele de specificare și implementare decât cu faptele din lume. A fost posibil să se specifice transformări folosind modele, metacaractere și recursive atât pe partea dreaptă, cât și pe partea stângă a unei reguli. Expresia mâinii stângi ar specifica modele în baza de cunoștințe existente de căutat. Expresia mâinii drepte ar putea specifica un nou model pentru a transforma partea stângă în. De exemplu, transformați un tip de date teoretice set în cod folosind o bibliotecă de seturi Ada.

Scopul inițial pentru regulile de transformare a fost de a rafina o specificație logică de nivel înalt într-un cod bine conceput pentru o anumită platformă hardware și software. Acest lucru a fost inspirat de lucrările timpurii asupra testării teoremelor și programării automate. Cu toate acestea, cercetătorii de la Institutul de Științe ale Informației (ISI) au dezvoltat conceptul de transformări ale evoluției . În loc să transforme o specificație în cod, o transformare a evoluției a fost menită să automatizeze diferite modificări stereotipe la nivelul specificațiilor, de exemplu, dezvoltarea unei noi superclase prin extragerea diferitelor capacități dintr-o clasă existentă care poate fi partajată mai general. Transformările evoluției au fost dezvoltate aproximativ în același timp cu apariția comunității de tipare software și cele două grupuri au împărtășit concepte și tehnologie. Transformările evoluției au fost în esență ceea ce este cunoscut sub numele de refactoring în comunitatea de tipare software orientate obiect.

Depozit bazat pe cunoștințe

Un concept cheie al KBSA a fost acela că toate artefactele: cerințe, specificații, transformări, modele, cod, modele de proces etc. au fost reprezentate ca obiecte într-un depozit bazat pe cunoștințe . Raportul original KBSA descrie ceea ce a fost numit Limbaj cu spectru larg. Cerința era pentru un cadru de reprezentare a cunoștințelor care să poată susține întregul ciclu de viață : cerințe, specificații și cod, precum și procesul software în sine. Reprezentarea de bază pentru baza de cunoștințe a fost menită să utilizeze același cadru, deși diferite straturi ar putea fi adăugate pentru a susține prezentări și implementări specifice.

Aceste cadre de cunoștințe de bază timpurii au fost dezvoltate în principal de ISI și Kestrel bazându -se pe partea de sus a Lisp și mașini Lisp medii. Mediul Kestrel a fost în cele din urmă transformat într-un produs comercial numit Refine, care a fost dezvoltat și susținut de o companie spin-off de la Kestrel numită Reasoning Systems Incorporated.

Limbajul și mediul de rafinare s-au dovedit, de asemenea, aplicabile problemei ingineriei inverse a software-ului: luarea unui cod moștenit, care este esențial pentru afacere, dar care nu are documentație adecvată și utilizarea instrumentelor pentru a-l analiza și a-l transforma într-o formă mai ușor de întreținut. Odată cu îngrijorarea din ce în ce mai mare a problemei Y2K, ingineria inversă a fost o preocupare majoră de afaceri pentru multe mari corporații din SUA și a fost un domeniu de interes pentru cercetarea KBSA în anii '90.

A existat o interacțiune semnificativă între comunitățile KBSA și limbajul Frame și comunitățile orientate obiect . Primele baze de cunoștințe KBSA au fost implementate în limbaje bazate pe obiecte, mai degrabă decât orientate pe obiecte . Obiectele au fost reprezentate ca clase și sub-clase, dar nu a fost posibilă definirea metodelor pe obiecte. În versiunile ulterioare ale KBSA, cum ar fi Andersen Consulting Concept Demo, limbajul specificațiilor a fost extins pentru a susține transmiterea mesajelor.

Asistent inteligent

KBSA a adoptat o abordare diferită de sistemele tradiționale de experți atunci când a venit vorba despre modul de rezolvare a problemelor și de lucru cu utilizatorii. În abordarea tradițională a sistemului expert, utilizatorul răspunde la o serie de întrebări interactive, iar sistemul oferă o soluție. Abordarea KBSA a lăsat utilizatorul în control. În cazul în care, ca sistem expert, a încercat, într-o anumită măsură, să înlocuiască și să elimine necesitatea expertului, abordarea asistentului inteligent din KBSA a încercat să reinventeze procesul cu tehnologia. Acest lucru a dus la o serie de inovații la nivelul interfeței cu utilizatorul.

Un exemplu de colaborare între comunitatea orientată obiect și KBSA a fost arhitectura utilizată pentru interfețele utilizator KBSA. Sistemele KBSA au folosit o interfață cu utilizatorul model-view-controller (MVC). Aceasta a fost o idee încorporată din mediile Smalltalk. Arhitectura MVC a fost deosebit de potrivită pentru interfața cu utilizatorul KBSA. Mediile KBSA au prezentat mai multe vederi eterogene ale bazei de cunoștințe. Ar putea fi util să privim un model emergent din punctul de vedere al entităților și al relațiilor, al interacțiunilor dintre obiecte, ierarhii de clase, flux de date și multe alte viziuni posibile. Arhitectura MVC a facilitat acest lucru. Cu arhitectura MVC, modelul de bază a fost întotdeauna baza de cunoștințe, care a fost o descriere meta-model a specificațiilor și a limbajelor de implementare. Când un analist a făcut unele modificări printr-o anumită diagramă (de exemplu, a adăugat o clasă la ierarhia de clase), această modificare a fost făcută la nivelul modelului de bază și diferitele vizualizări ale modelului au fost toate actualizate automat.

Unul dintre avantajele utilizării unei transformări a fost că multe aspecte ale specificației și implementării ar putea fi modificate simultan. Pentru prototipurile la scară mică, diagramele rezultate au fost suficient de simple încât algoritmii de bază de dispunere, combinate cu dependența de utilizatori pentru curățarea diagramelor, au fost suficiente. Cu toate acestea, atunci când o transformare poate redesena radical modele cu zeci sau chiar sute de noduri și leagă actualizarea constantă a diferitelor vizualizări devine o sarcină în sine. Cercetătorii de la Andersen Consulting au încorporat lucrări de la Universitatea din Illinois privind teoria graficelor pentru a actualiza automat diferitele vizualizări asociate bazei de cunoștințe și pentru a genera grafice care au o intersecție minimă a legăturilor și, de asemenea, iau în considerare constrângerile de aspect specifice domeniului și utilizatorului.

Un alt concept utilizat pentru a oferi asistență inteligentă a fost generarea automată de text. Cercetările timpurii de la ISI au investigat fezabilitatea extragerii specificațiilor formale din documente text informale în limbaj natural. Ei au stabilit că abordarea nu era viabilă. Limbajul natural este pur și simplu prea ambiguu pentru a servi ca un format bun pentru definirea unui sistem. Cu toate acestea, generarea limbajului natural a fost considerată fezabilă ca o modalitate de a genera descrieri textuale care ar putea fi citite de manageri și personalul non-tehnic. Acest lucru a fost deosebit de atrăgător pentru forțele aeriene, deoarece, prin lege, au solicitat tuturor contractanților să genereze diverse rapoarte care să descrie sistemul din diferite puncte de vedere. Cercetătorii de la ISI și ulterior Cogentext și Andersen Consulting au demonstrat viabilitatea abordării prin utilizarea propriei tehnologii pentru a genera documentația cerută de contractele lor de forță aeriană.

Referințe