Specifikace softwarového projektu AlgoVize
Název projektu: Soubor nástrojů pro vizualizaci algoritmů
Vedoucí: Doc. Dr. Luděk Kučera, DrSc.
katedra aplikované matematiky
ludek@kam.ms.mff.cuni.cz
Účastníci projektu: Petr Nevařil (nevap0bm)

Jan Neuvirth (neuvj0am)

Kamil Nezval (nezvk0am)

Marek Mateják (matem0am)
Popis projektu:

Cílem projektu je vytvořit soubor nástrojů pro vizualizaci algoritmů. Studenti měli možnost seznámit se se systémem, pro který budou nástroje vytvářeny, v rámci prednášky DMI026 Algoritmy v 3. semestu oboru Informatika, kde jsou používány applety pro animaci a vizualizaci algoritmů. Cílem projektu není tvorba nových appletů nebo úpravy a modifikace appletů existujících, ale vytvoření nástrojů pro podporu jejich vytváření, jak se v průběhu let ozřejmila a ustálila potřeba standardních softwarových komponent.

U většiny nástrojů se bude jednat o grafický objekt popsaný v jazyce Java, který je uživatelsky modifikovatelný (např. rozměry, volba a rozmístění ovládacích prvků jako jsou knoflíky, plátna, volitelná pole, implementované služby a interface apod.), který po konečné úpravě vzhledu a funkce grafického zobrazení automaticky vytvoří dokumentační soubory a současně kód v jazyce Java, který implementuje vytvořený objekt. Tímto způsobem se usnadní programování tak, aby jej mohli provádět i pedagogové s malou znalostí nebo bez znalosti programovacích jazyků i z jiných oborů než informatika.

Konkrétně se jedná o moduly pro ovládací panel animace (se vzhledem a rozmístěním prvků měnícím se v průběhu animace), panel ukazující průběh výpočtu v pseudokódu pro daný algoritmus a univerzální zobrazovací pole pro 2D a 3D animace grafových algoritmů. Kromě toho je potřeba specializovaných modulů pro vizualizaci standardních matematických a informatických objektů (posloupnosti, stromy, kombinační a sekvenční obvody) s dostatečnou variabilitou.

Program spadá do navrhovaného rozvojového programu MŠMT "Algovize".

Platforma: Projekt bude napsán v jazyku Java, což mu do určité míry zaručuje přenositelnost na různé platformy.
Architektura:

Architektura projektu

Obr. Architektura projektu

Object Manager

Spravuje grafické objekty, které se zobrazují ve scéně. Rovněž ukládá a načítá projekt do/z XML souboru.

    GrObject

    Grafický objekt (např. základní grafická primitiva v podobě kruhu, úsečky, polygonu,…). Kromě množství základních grafických objektů je uživateli poskytnut silný nástroj v podobě grafických konektorů, jimiž lze vytvářet složitější struktury.

    GrSet

    Množina grafických objektů.

    Property

    Základní kámen projektu. Všechny grafické objekty jsou složeny z několika vlastností (typicky vlastnosti označující pozici, barvu, jméno, …) Změna těchto vlastností pak přímo ovlivňuje vzhled a chování grafického objektu.

Name Manager

Přiděluje všem grafickým objektům unikátní jméno, uživatel toto jméno může měnit, popř. nastavovat defaultní.

Selection Manager

Spravuje uživatelem vybrané grafické objekty. Poskytuje tak prostředek přímé manipulace s grafickými objekty.

Connector Manager

Spravuje grafické konektory použité ve scéně.

    GrConnector

    Pomocí těchto grafických konektorů může uživatel vytvářet složitější grafické struktury, popř. mezi nimi vytvářet logické vztahy.

Frame Manager

Rozděluje scénu do klíčových snímků. Uživatel si v těchto klíčových okamžicích upravuje grafické objekty. Mezi snímky je pak automaticky vytvořen hladký přechod pomocí interpolátorů.

AnimationManager

Spravuje animační vlastnosti, jenž se dynamicky vytvářejí ve scéně. Pomocí těchto vlastností je vytvořena výsledná animace.

    AnimationProperty

    Animační vlastnost, která dovoluje animovat grafický objekt (resp. jeho vlastnosti) v čase přes klíčové okamžiky

Historie změn:

18.02.2005:

    Projekt Algovize zahájen. Vznikají dvě zcela odlišné architektury: 1. Plug-inová architektura 2. "flashová" univerzálně použitelná architektura

07.04.2005:
    Na žádost vedoucího je vybrána druhá zatím méně propracovaná architektura projektu.

18.04.2005:

    Přepracování základní koncepce "flashové" architektury (popis objektů a jejich vlastností, interfaců,…)

28.04.2005:

    Návrh uživatelského gui, podrobný popis architektury na úrovni objektů a interfaců, koncept animací a spojování grafických objektů.

16.05.2005:

    Manipulace s vlastnostmi grafických objektů, manipulace s s grafickými objekty, generování množin grafických objektů, diskuze o použití javascriptu

21.06.2005:

    Ukládání projektu a zpětná rekonstrukce grafických objektů, jejich vlastností, framů a animačních vlastností. (XML)

28.06.2005:

    Předvedení doposud naimplementované funkčnosti vedoucímu projektu. Vedoucí je s průběhem prací spokojen.

30.06.2005:

    Vzniká rozsáhlá automaticky generovatelná programátorská dokumentace

07.07.2005:

    Diskuze nad problémy s GrConnectory (nutnost ukládat do framů, zpětná rekonstrukce z XML), sepsání specifikace a architektury projektu, plnění termínů