A BETA programozási nyelv

A Mjolner fejlesztői környezet



Tulajdonképpen egyetlen társaság foglalkozik igazán (vagyis jelentős mértékben) a BETA nyelvvel kapcsolatos termékek készítésével, a Mjølner Informatics. Ez a társaság egy összetett fejlesztői rendszert alkotott, melyet Mjølner BETA Systemnek nevezett el.

Érdekesség: az egyes komponensek nevei (pl. Valhalla) a skandináv mitológiából erednek. Például a Mjølner név a legerősebb isten, Thor varázserejű kalapácsát azonosítja, amely a tökéletes eszköz szimbóluma, sohasem vall kudarcot, és mindig a megoldandó feladatnak megfelelő nagyságúvá alakul.

A Mjølner fejlesztői környezet a következő komponenseket tartalmazza: egy forrásböngészőt és -editort, egy forrás szintű debuggert, egy interfész-editort és egy osztály-diagramm szerkesztőt (CASE tool).

Forrásböngésző (Ymer) és forráseditor (Sif)

A Sif egy általános grammatika alapú editor, ami különösen hasznos a BETA programok böngészésére és editálására. A modularitás a BETA-ban a fragment-rendszerrel van biztosítva, mellyel a fragmentek egyetlen BETA programmá alakíthatóak.

A Sif számos alapkomponenst tartalmaz: egy forrásböngészőt (Ymer), egy fragment-csoport editort és egy fragment form editort. A Sif integrálva van a BETA fordítóval, mely a szemantikus hibák megtalálásához és javításához kiváló támogatást nyújt.


Forrásböngésző és -editor

A Sif a következő funkciókkal rendelkezik:

Forrásböngésző

A forrásböngésző lehetővé teszi, hogy projekteket kezeljünk. Egy projekt lehet fájlok gyűjteménye, egy fájlkönyvtár, vagy egy BETA program függőségi gráfjának a része. A fragment-struktúra kapcsolatai - mint az ORIGIN vagy az INCLUDE - könnyen követhetőek.

Fragment-csoport editor

A fragment-csoport editor egy magas szintű editor, mellyel a BETA programok függőségi gráfját lehet manipulálni, például létrehozni vagy törölni teljes fragment formokat a fragment-csoportban, és létrehozni vagy módosítani olyan fragmentek közötti kapcsolatokat, mint az ORIGIN és az INCLUDE.

Fragment Form Editor

A fragment form editor egy strukturális editor, mely a fragment formokon belül működik. A struktúra-szerkesztés egy nagyon hatékony technika a szintaktikai hibáktól mentes program szerkesztéshez. A fragment form szinten is biztosít a Sif hasznos böngészési lehetőségeket, melyek a BETA programok szintaktikai és szemantikai struktúráján alapulnak.

Struktúraszerkesztő

A struktúraszerkesztés alapötlete, hogy a programok inkább a logikai struktúrájuk szerint legyenek kezelve, mintsem szöveges elemekként. Ennek a megközelítésnek az az előnye, hogy csak logikailag összefüggő részek illeszthetők be vagy törölhetők, és ezáltal mindig megtarthatók a nyelv szintaktikai szabályai.

A strukturális szerkesztés olyan applikáció-orientált nyelvek esetén is nagyon hasznos, melyeket a végfelhasználóknak szántak, mivel az alkalmi felhasználóknak és a kezdőknek sok problémája lehet a konkrét szintaxissal. Egy strukturálisan szerkesztett programot nem szükséges elemezni, ezzel idő takarítható meg a fejlesztésben.

Szöveges szerkesztés

A strukturális szerkesztés nagyon hatékony a magasabb szintű szerkesztések esetén, például a program átfogó struktúrájának készítésekor, vagy nagy kódok átmozgatásakor. A részletesebb szinten a szövegszerkesztési módszer sokkal hasznosabb, ezért a programozók természetesen szabadon választhatnak a strukturális és a szöveges szerkesztés között. A program minden részlete szerkeszthető szövegesen.

Bővülési elemzés

Minden program a szerkesztés közben elemzés alatt áll. Csak a szerkesztett rész elemződik.

Alkalmazkodó bővülési nyomtatás

A szerkesztő tartalmaz egy hozzáadott nyomtatási algoritmust, mely mindig úgy jeleníti meg a programot, hogy az kitöltse a képernyőt, vagy a papírt.

Absztrakt megjelenítés és böngészés

A szerkesztő képes a programot minden szinten megjeleníteni. A program legmagasabb szintjén a felhasználó áttekintést kap az osztályokról és eljárásokról. Lehetséges az osztályokon és eljárásokon való böngészés úgy, hogy egyre több és több információt kapjunk. A program különböző szinteken való kinyomtatása a dokumentáció egy jó alapja lehet.

A dokumentáció és a kommentek integrálása

A felhasználó meghatározhatja, hogy a kommentek megjelenjenek-e vagy sem. Azt is meghatározhatja, hogy a kommentek a program részeként, vagy különálló ablakban jelenjenek meg. Egy szépen nyomtatott program csak az osztályok és eljárások interfész részét és a hozzájuk tartozó kommenteket tartalmazza. Ez lehetővé teszi egy interfész-specifikáció kinyerését a programkódból.

Hypertext lehetőségek

A szerkesztő tartalmaz hypertext lehetőségeket is. A kommentek kezelése egy példa a program- és szövegrészek közötti hypertext kapcsolatra. Egy másik fajtája a hypertext-kapcsolatnak, amikor egy nevet a programban összekapcsolunk a hozzá tartozó névdeklarációval. Ez a szemantikai kapcsolat nagyon hasznos, amikor nagy programokkal dolgozunk. A fragment-csoport szinten egyéb példák az ORIGIN és az INCLUDE kapcsolatok, melyek összekapcsolják a SLOT-okat a hozzájuk tartozó fragment formmal, és viszont.

Metaprogramozási rendszer

A szerkesztőbe egy metaprogramozási rendszert is beépítettek. A felhasználónak lehetősége van a saját metaprogramozási eszközeivel dolgozni, mely egyszerűen integrálható a szerkesztővel. Ezt a bővíthetőséget a rugalmas kommunikációs modell és az editor objektumorientált implementációs nyelve - a BETA - biztosítja.

Grammatika-alapok

A szerkesztő grammatika-alapú, ami azt jelenti, hogy bármely nyelv támogatására képes, mely egy környezetfüggetlen nyelvtannal van megadva. Minden fent említett lehetőség (a szemantikai kapcsolatok kivételével) támogatott az ilyen nyelvekre.

Forrásszintű debugger (Valhalla)

A Valhalla egy forrás-szintű debugger a Mjølner rendszerben, mely egy objektumorientált környezetet biztosít a BETA programok debuggolásához. A Valhallával lehetséges a program futásának ellenőrzése, az objektumok vizsgálata futásidőben és a BETA kód nyomkövetése.

A felhasználói felület két részre osztott: a forrásböngészőre és a Valhalla Universe-re. A forrásböngésző lehetővé teszi a debuggolt alkalmazás forráskódjának böngészését, a Valhalla Universe pedig a futásidejű objektumok megtekintését teszi lehetővé az alkalmazás futása alatt.

A program futása ellenőrizhető például töréspontok elhelyezésével és egyszerű léptetéssel a BETA forráskód szintjén. A futásidejű hibákat úgy adja vissza a Valhalla, hogy megmutatja a vétkező objektumot vagy kódot. Innen a hiba forrása egyszerűen megtalálható.

A Mjølner Debugger használatakor lehetséges:


Egy töréspont

A töréspontok és az aktuális végrehajtási pont a forrásböngészőben látható.

Megjelölt pontok (Trace points)

Az alkalmazás nyomonkövetésének egyszerűbbé tétele céljából a Valhalla lehetővé teszi megjelölt pontok létrehozását. A "trace point" a forráskód egy pontja egy hozzáadott szöveggel. Minden alkalommal, amikor a végrehajtás eléri ezt a pontot, ez a szöveg kiíródik a standard outputra.

Töréspontok

Az objektumok végrehajtás alatti állapotának vizsgálatához a Valhalla töréspontokat biztosít. A töréspont a forráskód egy pontja. Amikor a futtatás eléri a töréspontot, az ellenőrzés visszakerül a Valhallához, így lehetővé téve az adott állapotban a végrehajtás állapotának, a futás idejű objektumoknak a vizsgálatát stb..

Végrehajtás-ellenőrzés

A Valhallával ellenőrizhető a BETA program futása. Elindítható és megállítható a futás, beállíthatóak megjelölt pontok és töréspontok, léptethető a futás gépikódú szinten, BETA utasítás szinten, átugorva az eljárás hívásokat stb.

Futási idejű vizsgálat

A Valhalla a futó alkalmazása futási idejű struktúrájának vizsgálatához kiterjesztett vizsgálati lehetőséget biztosít. Megvizsgálható az objektumok állapota és a futásidejű stack.

Interfész-editor (Frigg)

A Frigg a Mjølner rendszer interfész-editora, ami gyors prototípus-készítést biztosít a rendszertervezőknek és fejlesztőknek.

A Frigg egy grafikus szerkesztőt szolgáltat, ami kapcsolatban van a strukturális szerkesztővel, így biztosítva egy prototípus-környezet létrehozását. A grafikus szerkesztő lehetővé teszi, hogy a felhasználó létrehozza a felhasználói felületet közvetlen szerkesztéssel, míg a szükséges kód automatikusan generálódik.


A grafikus GUI szerkesztő

A generált kód kiegészíthető és átalakítható a struktúra-szerkesztővel, és az átalakítás a fejlesztés teljes tartama alatt végbemegy, mert a grafikus szerkesztő képes a kód nyomkövetésére annak ellenére, hogy az megváltozott a struktúra-szerkesztőben (bővülő visszafelé haladó tervezés). A fejlesztő váltogathat a felhasználói felületen végzett munka és az alapfunkciók kódolása között.

A Frigg szerkesztő integrációja teljesíti a Mjølner rendszer egységes program-reprezentációjának használatát: absztrakt szintaxisfák (ASTs abstract syntax trees). Az ATSs manipulációja a metaprogramozási rendszeren keresztül történik. Ezért minden szerkesztő, ami ugyanazon az AST-n dolgozik, értesül a változásokról, így a szerkesztők képesek megőrizni a konzisztenciát.

A Frigg arra használja a fragment-rendszert, hogy:

  1. hozzáférést adjon a Lidskjalv UI környezethez;
  2. létrehozza a felhasználói felületet, mely megfelelően szétválasztott a program-modell moduljaitól;
  3. szétválasztja az interfész részt az implementációs résztől, így biztosítva a felhasználói felület teljes újrafordítás nélküli fejlesztését.

A Frigg által generált kód a GUIenv osztályok specializációja

Osztálydiagram-szerkesztő (Freja) - CASE tool

A Freja a Mjølner rendszer osztálydiagram-szerkesztő eszköze, mely az általános modell-nyelv fejlesztést támogatja a BETA implementációs nyelvvel. A Sif-fel együtt a Freja zavartalan átmenetet biztosít a tervezési diagramok és az implementációs kód között.


Osztálydiagram-szerkesztő

Az osztálydiagram-szerkesztő eszköz a következőket szolgáltatja:

Diagram-szerkesztő

Tervezési diagramok (osztálydiagramok) hozhatóak létre és módosíthatóak.

Automatikus kódgenerálás

A kódvázak automatikusan generálódnak a diagramok alapján.

Visszafelé haladó tervezés

A tervezési diagramok automatikusan generálódnak a programkód alapján.

A tervezési leírások és a programkód egyidejűleg szerkeszthetőek

A tervezési leírások és a hozzájuk tartozó programkód egyidejűleg nézhetőek és szerkeszthetőek, például a tervezési diagramok változtatása változást eredményez a programkódban, és viszont.

Oda-vissza tervezés

Ha például az osztálydiagram-szerkesztő eszközön kívül attribútumokat, műveleteket vagy teljes osztályokat változtatunk, akkor a diagram automatikusan frissül, a következő betöltéskor.

A Freját és a Sifet kétféle értelemben is szorosan integrálták.

Először is a Freja és a Sif a fejlesztés alatt álló program általános reprezentációján osztoznak. A strukturális szerkesztés technikája kényelmes reprezentációt nyújt, nevezetesen az AST-t (abstract syntax tree). Az AST jól nyomtatható szövegesen a Sif-ben és grafikusan a Freja-ban.

Másodszor, kommunikálnak az AST-n végzett módosításokról. A Sif a szöveges, a Freja a grafikus reprezentáción keresztül manipulálja az AST-t. Ha valamelyik szerkesztő módosítja az AST-t, akkor a másik erről értesül, és a szükséges frissítések végrehajtódnak. Mivel a grafikus UML szintaxis csak a BETA program átfogó struktúráját tükrözi, sok módosítás a szöveges reprezentációban nincs hatással a grafikai reprezentációra. Viszont majdnem minden módosítás a tervezési diagramon - a diagram kinézetének módosításán kívül - azt eredményezi, hogy a szöveges reprezentáció aktualizálódik.

Nem szükséges minden reprezentációnak ugyanabban az időben láthatónak lennie. A fejlesztés kezdetén a felhasználó talán jobban szeretné csak a diagramokat látni, a szöveges reprezentáció csak később válik fontossá. Mivel a diagramok és a program az AST megjelenési formái, mindig újra reprodukálhatóak.

A támogatott platformok: Windows NT/95/98/2000/XP, Linux, SPARC - Solaris 2.7, 2.8, 2.9, Power Macintosh - MacOS 8 vagy 9 (MacOS 10.3.4. - GUI könyvtárak és eszközök nélkül).