Assoc. Prof. Zoltán Porkoláb, Ph.D.
Department of Programming Languages and Compilers
Faculty of Informatics
Eötvös Loránd University
ELTE IK

News
Actual
Earlier

Lectures
Prog. Languages 1
Advanced C++
Generative Prog. (Ph.D.)
Software Metrics (Ph.D.)
Bolyai Math-Info seminar

GAMF
Dept. of Informatics
MIN1G2
MIN1J1

Research
Generative programming
Publications

Projects
Student thesis
Co-operative education
Simpeer
OO Metrics on .NET
IKKK

Contact
Contact
Lesson schedule
Curriculum Vitae

Links
Links
cadesign
Thesis

Sorry, the english version is unavailable at this time!



Kedves Hallgatók!

Az alábbiakban néhány olyan érdekes kutatási témát találtok, amelyeket én is elég érdekesnek találok ahhoz, hogy a témavezetésüket elvállaljam :-).

Az egyes témákon belül lehetnek átfedések és kidolgozottságuk is eltérő lehet, attól függően, hogy nagyprogram (Np), szakdolgozat (Sz), diplomamunka (D) vagy TDK (D) készül. A konkrét dolgozatok célkitűzései mindig személyreszabottak.




1. Alternatív template könyvtárak
A generatív programozás új, feltörekvő programozási paradigma. Alkalmazása nem helyettesíti, hanem kiegészíti az objektum-orientált elveket. A generatív programozás egyes ágai: a generikus programozás, az aspektus-orientált programozás, a szándékalapú (intentional) programozás, és más, nyelvfüggetlen eszközök, melyek helyenként már túlléptek a kísérleti stádiumon. Ugyanakkor kifejező erejüket, erősségüket, gyengéjüket még nem ismerjük eléggé, ezért további kutatásokat igényelnek.

Ahhoz, hogy e kutatások sikeresek legyenek, hasznos, ha több, hasonló elven készült alkalmazás, könyvtár áll rendelkezésre, melyeket elemezhetünk, összehasonlíthatunk.




1.1. MetaSTL - STL-szerű template metaprogram könyvtár (D, Sz, Np)
A Loki ma már széleskörűen elfogadott template metakönyvtár, az STL pedig elterjedt futási idejű template könyvtár. Sajnos, a Loki használata idegen az STL programozó számára. Jó lenne a Loki funkcionalitását az STL-re némiképpen hasonló szintaxissal lehessen használni. Pl. jó lenne a Typelist-et konténerként kezelni és egyfajta fordítási idejű find, find_if, for_each, stb... algoritmust alkalmazni rá.

Ilyen törekvések vezettek a boost::mpl kidolgozásához is. Vizsgálja meg a boost::mpl-t ebből a szempontból.




1.2. GTL - Graphical Template Library (D, Sz, Np)
Az általunk korábban kisérleti jelleggel létrehozott GTL újragondolása, kiterjesztése, elsősorban az STL mintájára. Még több alakzat, még több algoritmus. Iterátorok, iterátor-kategóriák (esetleg felhasználható a smart iterátorok témája (lásd: 1.6). Egyéb STL eszközök: Functorok, Binderek, Adaptorok. Összetett objektumok. Ideális esetben a végtermék egy teljes grafikus rajzolóprogram, amely a GTL könyvtár szolgáltatásaira épül.

A grafikus célú generikus könyvtárak közt emlegetik a CGAL könyvtárat. Vizsgálja meg a CGAL felépítését.




1.3. MMTL - Multimedia Template Library (D, Sz, Np)
A multimédia eszközök template könyvtára STL mintára. Egyik dimenzióban a "konténerek" fájlformátumokat reprezentálnak, másik dimenzióban a rajtuk végezhető műveletek vannak. Speciális feladat a stream-ekre optimalizált "konténerek" kifejlesztése. valószínűleg speciális iterátorokat is ki kell kísérletezni. A feladat része néhány kliens program létrehozása, esetleg valamilyen kisebb multimédia alkalmazás kifejlesztése.



1.4. Q - STL-szerű burkoló írása a QT fölé (D, Sz, Np)
A GTL-ben alulról felfelé építkezve hozunk létre egy Generikus könyvtárat, itt viszont egy meglévő és széleskörűen használt könyvtár fölé szervezünk generikus burkoló felületet. A cél az, hogy a QT funkcionalitásának megfelelő könyvtárhoz jussunk, egy egyszerűbb, és/vagy könnyebben kiterjeszthető interfész bevezetésével.



1.5. PTL - Pattern Template Library (D, Sz, Np)
Design Pattern könyvtár megvalósítása metaprogramozási eszközökkel. Pl. Singleton<T> megvalósítja a T típust ellenőrző singletont. Fordítási idejű garanciák biztosítása a pattern típusparamétereivel kapcsolatban (lásd 2.2. és 2.5.). Figyeljünk arra, hogy a pattern-eket esetenként egymást követően alkalmazzuk. Keressünk lehetőséget arra, hogy támogassuk az ilyen kompozíciókat. Mindehhez érdemes megvizsgálni a már létező OOP és AOP elvű könyvtárakat.



1.6. Smart iterátorok (D, Sz)
A generikus programozás egyik legfontosabb komponense az iterátor, amely összekapcsolja a konténereket és az általános célú algoritmusokat. Mégis, talán az iterátorokról tudjuk a legkevesebbet. Az iterátor koncepció vizsgálata és lehetségzes továbbfejlesztések kijelölése. Például iterátorok egyesítése, lazy evaluation, stb. Gyakorlati példák definiálása, ahol a smart iterátorok használata leegyszerűsíti vagy általánosabbá teszi a kódot.

A smart iterátorok témakörében érdemes az első C++ workshop anyagát és a view template library-t megvizsgálni.




1.7. Regular Expression Templates
Az expression template egy fordítási idejű optimalizációs eljárás, eredetileg mátrix-számítások felgyorsítására (Todd Veldhuizen). Cél egy hasonló elvű könyvtár megalkotása reguláris kifejezésekhez, sztringek mintaillesztéséhez.



1.8. Egyéb generikus könyvtárak specifikációja és kifejlesztése (D, Sz, Np)
Lásd még 9.




2. Statikus típusellenőrzés
A modern programozási nyelvek a típus fogalmán keresztül fogalmaznak meg számos szabályt, korlátozást, és végeznek el ellenőrzéseket, melyekkel a futási idejű programot biztonságosabbá teszik. A típusok absztrakt leírására több elmélet és eszköz is létezik. Úgy tűnik, az elméleti lehetőségek széleskörűbbek, mint amit a mai programozási nyelvek a gyakorlatban lehetővé tesznek. E rés felderítése és áthidalása javíthatja a jelenlegi nyelvek kifejezőerejét és példát mutathat új nyelvek tervezésekor.



2.1. Statikus típusellenőrzés elmélete
A típusok és típusrendszerek matematikai leírása Luca Cardelli és Ken Bruce könyve és cikkek alapján. Egyáltalán mit lehet ellenőrizni? Kapcsolódó téma: Objekum Orientált Calculus (Csörnyei tanár úr). Hipotézis: létre lehet hozni a fordítási idejű ellenőrzések hierarchiáját (a Chomsky hierarchia allegóriája). Vannak egyszerűbb ellenőrzések, melyek fordítási időben végbemennek, bonyolultabbak, melyekhez metaprogramokat kell írni, és olyanok, melyeket csak többszöri fordítási lépéssel lehet ellenőrizni. Az elméleti lehetőségek és a nyelvek ebbéli "erősségének" összehasonlítása (pl. a Turing-teljes C++ template-ek erős eszközt adnak).



2.2. Statikus típusellenőrzés megvalósítása C++ nyelven (D)
Statikus típusellenőrzés eddigi eredményei. További megvalósítások standard C++ eszközökkel. Feladat további ellenőrzési szempontok definiálása (has_virtual, default_constructible, ...) és megvalósításuk lehetőségei. Ellenőrzések, melyekhez nem elég a standard C++: compiler hack, többszöri compiler indítás, stb...



2.3. Compiler hack (D, Sz, Np)
Egy vagy több C++ fordítóprogram módosítása más módon megvalósíthatatlan típus ill. koncepció ellenőrzések elvégzésére (lásd 2.2), vagy a metaprogram garanciák ellenőrzésére/támogatására (lásd 4.1.), esetleg együtt a 3.2.-vel. Lehetséges célpontok: g++, VC++, stb.



2.4. Statikus típusellenőrzés a programnyelvekben. (D)
Különböző magasszintű programozási nyelvek összehasonlítása a statikus típusellenőrzés szempontjából. Minimálisan szükséges nyelvek: C++, Java, ADA, Eiffel, funkcionális nyelvek (Clean, Haskell, Lisp valamelyike). Példák.



2.5. Patternek szemantikai helyessége (D, Sz)
Vizsgáljuk meg az egyes patternek helyességének feltételeit (típusmegszorítások, elő és utófeltételek, stb), és dolgozzunk ki apparátust ezek formális megadására. Szóba jöhet pl. a Fóthi Ákos féle eszközrendszer használata is. Keressünk mechanizmust arra, hogy egy X pattern utófeltételéből bebizonyítsuk Y pattern előfeltételét. Hozzunk létre eszközt a feltételek számítógépes reprezentálására (XML és/vagy C++ metaprogram) és az automatikus bizonyításra (lásd 1.5.).



2.6. Az STL helyességvizsgálata (D)
A C++ STL library gyakran használt és jól ismert eszköz. Részleteiben azonban a C++ standard nem túl könnyen használható definíciókat ad rá. Például nehezen eldönthető kérdés, hogy egy multimap megtartja-e a beszúrási sorrendet az azonos kulcsú elemek között. Az ilyen kétértelműségek feloldására hasznos lenne az STL adatszerkezetek és algoritmusok precíz definícióját megadni (pl. elő és utófeltételek segítségével). További cél lehet STL-t használó C++ programok (automatikus) helyességbizonyítása. David Musser STL-Lint nevű eszközének vizsgálata, esetleg bővítése. (Musser és doktoranduszai által kidolgozott módszer az STL elemeinek specifikálására és helyességvizsgálatára)




3. Program/Metaprogram-fejlesztést segítő eszközök, elsősorban debugger
Bár metaprogramok alkalmazása ma már nem szokatlan, a metaprogramok írása még eléggé kezdetleges állapotban van. Gyakorlatilag minden egyes új könyvtár létrehozása hack-elés, amelyet nem támogatnak fejlesztőeszközök. Olyan eszközök kifejlesztése, amelyek támogatják metaprogramok írását, tesztelését, debuggolását elsődleges fontosságú lenne.

A hagyományos objektum-orientált programok esetében is vannak új módszerek a fejlesztés, tesztelés gyorsítására, pl. az un. mock objektumok.




3.1. Debug standard eszközökkel (D)
Csak standard nyelvi eszközök felhasználása: metaprogramok, melyek pl. log-ot írnak a példányosuló osztályokról, assert-ek (ilyenek léteznek a Loki-ban és a Boost-ban is, de ki kéne terjeszteni őket meta-ellenőrzésekre, pl: _nem példányosul_ az X osztály), print-ek (melyek fordítási időben működnek, lásd a klasszikus prímgeneráló metaprogram).

Ötlet: esetleg a "Curiously recurring template pattern" használata:

class MyClass: public DebugMixin<MyClass> { ... }; Ilyenkor az osztály önmagát adja paraméterül a Debugger osztálynak, ezzel MyClass-t vizsgáló kódot hozva létre, amelyből végül örököl.




3.2. Compiler hack (D, Sz, Np)
A cím magáért beszél. A 3.1. vagy annál bővebb funkcionalitás megvalósítása a 2.3. eszközeivel.

Eddig felmerült módszerek: - Sablon példányosításakor üzenet kiírása - Sablon példányosításakor új template típus (pl. DEBUG<>) létrehozása, ennek paramétereként pl. egy TYPELIST-ben átadhatók típusinformációk a példányosításról: egy listában a formális paraméterek, másikban pedig a megfelelő "értékek"

- Valamilyen már meglevő típus módosítása a programban sablon példányosításakor, pl. egy típus beszúrása típuslistába.

Hasznos lenne még a példányosításkor keletkező hibaüzenetek megjelenítése valamilyen könnyebben olvasható formában.




3.3. Metaprogramok szintaxisának javítása (D)
A sablonmágia szintaxisa nemcsak nehezen olvasható, de jelentősen különbözik is a C++ "hagyományos" eszközeitől, ezért a többség idegenkedik a használatától. A könnyebb érthetőség kedvéért célszerű egy egyszerűbb szintaxis kifejlesztése, pl. előfordító makrók, esetleg valamilyen korlátozott funkcionális nyelv formájában, ami lehetőség szerint minél jobban hasonlít a C++ nyelv többi eleméhez, de legalábbis könnyen olvasható és kezelhető.



3.4. Fejlesztési esettanulmány (D)
Adott egy nem működő metaprogram, pl. Unruch prím-kiíró metaprogramja. Hogyan lehet "kijavítani"? Ötletek, szükséges eszközök, bevethető módszerek naplószerű feljegyzése.



3.5. Mock objektumok megvalósítása C++ nyelven
A mock objektumok a tesztelést segítő proxy osztályok példányai. Segítségükkel úgy válik tesztelhetővé egy osztály, hogy nem kell a teljes környezetét, az összes kooperáló osztályt megvalósítani. Mock objektumok megvalósítása elsősorban reflection-nel történik, ami C++ nyelven nem támogatott. Jelenlegi implementációk Java és .Net platformon elérhetőek (www.jmock.org és www.nmock.org).




4.1. Metaprogram algoritmusok garanciái (D)
Az STL garanciákat ad az egyes műveletek futási idejű bonyolultságára. A cél hasonló feltételrendszer kidolgozása a metaprogram "műveletek" esetére. Pl. a példányosuló osztályok O(n) számúak, stb... Egy érdekes részfeladat a jelenlegi fordítók vizsgálata (Veldhuizen csinált ilyet.) (Lásd még 2.3.)



4.2. Metaprogram adatszerkezetek vizsgálata (D)
A futási idejű adatszerkezetek különböző kategóriákra oszthatók, (pl. az STL beszél szekvenciális és asszociatív konténerekről). Vizsgáljuk meg ebből a szempontból a metaprogram adatszerkezeteket. Pl. a Typelist lineáris, a Veldhuizen által az expression template-ekhez használt adatszerkezet fa-struktúra. Vannak-e asszociatív meta-konténerek? Milyen garanciákat lehet adni?




5. Metrika
A szoftver bonyolultsági mértékek rendkívül fontosak a mai szoftvertechnológiában. Egy jó metrika már a tervezési és korai fejlesztési időszakban előrejelzéseket adhat arról, hol vannak a rendszer kritikus pontjai (akár a fejlesztés, akár a tesztelés vagy a későbbi karbantartás szempontjából).

A hagyományos mértékek azonban lényegében használhatatlanok az obejktum-orientált, de különösen több paradigma együttes használatakor, pl. generikus vagy aspektus-orientált programok esetében. Ezért van szükség paradigma-független mértékek kidolgozására, alkalamzására, ellenőrzésére. Ilyen mérték az AV gráf, melynek további kiterjesztése, továbbfejlesztése, és validálása izgalmas feladat.




5.1. Az AV-metrika kiterjesztése kivételkezelésre
Az AV gráf kiterjesztése kivételkezelésre. A kivételkezelés ma már a programok szerves része: nem strukturált vezérlésátadás, amit általában a kód bonyolultságának csökkentésére használunk. Mérhető, kimutatható-e ez a csökkenés? Melyek a helyes kivételkezelési stratégiák?



5.2. Az AV-metrika kiterjesztése generic-ekre ill. template-ekre
Az egyik, engem leginkább érdeklő feladat. Az AV gráf értelmes kiterjesztése a Java-stílusú generic-ekre és a C++ stílusú template-ekre. Nem csak definiálni kell a mértéket, hanem mérésekkel igazolni is kell e definíció helyességét.



5.3. Az AV-metrika Eclipse plugin-je (Np, Sz, D)
Az egyik legnépszerűbb ingyenes fejlesztési környezet az eclipse, melyhez bárki könnyen írhat további kiterjesztéseket, un. plugin-okat. Az AV metrika megvalósításra került eclipse plugin-ként, de ez még továbbfejleszthető, részben használhatóságának fokozásával, részben a metrika újabb kiterjesztéseinek implementálásával.



5.4. Aspektus orientált programok bonyolultságának vizsgálata (D)
A divatos AOP programozás hívei azt hírdetik, hogy az aspektusokkal a program szervezése áttekinthetőbb, karbantarthatóbb, azaz egyszerűbb. Ez hihető is, a legtöbb esetben, de még jobb lenne, ha mérésekkel is alá tudnánk támasztani ezt az állítást. Erre egy módszer lenne pl. AOP és OOP módszertanokkal megvalósított (már létező) patternek bonyolultságának összehasonlítása.

Brazil PhD-sek (www.cin.ufpe.br/spg) OO programokat refaktorizálnak AOP programokra és (Java) generikus programokra. Érdemes lenne megmérni, hogy a refaktorizáció hogyan befolyásolja a komplexitást.

Együttműködés lehetséges Awais Rashid-dal.




5.5. AV metrika .Net platformon (Np, Sz, D)
Program, amely egy lefordított .NET-es programot visszafejt (CIL - kb. Java virtuális bytekód) és bonyolultságot számol a forráskódjára. Másik megoldás, hogy magának a .Net byte-kódnak mérjük közvetlenül a bonyolultságát.



5.6. Kurrens bonyolultsági mértékek validálása emberkísérletekkel
Kérdezz.




6. Aspektus Orientált Programozás C++ -ban.
Esetleges együttműködés Szamcsival és Awais Rashiddal.



6.1. C++ alapú AOP eszközök vizsgálata (D)
AspectC++, stb



6.2. Aspektus orientált programozás megvalósítása C++ nyelven (D, Sz)
AOP megvalósítása jelenleg standard C++ eszközökkel. !!! Az ECOOP 2004 MPOOL Workshop-on egy indiai srác (Musser doktorandusza) által előadott megvalósítás ötletének vizsgálata, esetleg javítása.




7. A moduláris programfejlesztés eszközei
Cross-cutting concerns, class families, collaboration, aspects



7.1. A CSet metakönyvtár alkalmazhatóságának vizsgálata (D, Sz)
Több életszerű klienskód létrehozása a kidolgozott könyvtárhoz, módosítási és bővítési javaslatok a könyvtárral kapcsolatban. Például a A C++ standard I/O rendszer (sőt, a teljes szabványos könyvtár) vizsgálata a croscutting concern-ek szerint. (fstream és ifstream között pl. nincsen subtype reláció). A szabvány követelményeinek és az egyes könyvtári megvalósítások áttekintése. Az input/output rendszer átírása CSet alapon.



7.2. A CSet alternatív implementációi (D, Sz)
Virtuális öröklődéssel, MDSC-vel, AspectJ-vel, HyperJ-vel, Aspect C++ -al ill. Composition Filterrel. Ezen megoldások összehasonlítása egymással és a CSet megoldással.



7.3. Chevron-shape öröklés elméleti vizsgálata (D)
A chevron-shape öröklés elméleti leírása, összehasonlítása más OO konstrukciókkal, pl. strukturális öröklés. Javaslat a programozási nyelvek esetleges kibővítésére, hogy támogassák az elmélet által megkövetelt igényeket.



7.4. A CSet könyvtár további javításai (D, Sz)
Konstans ptr, ref, lista duplikációk javítása, esetleges további hibák és hiányosságok orvoslása. Módszer felhasználói kód hozzáadására a komponensekből összerakott osztályhoz.



7.5. Call by declaration (D, Sz)
Paraméterezhető mixinek (felhasznált adattagok, függvények megadása) megvalósítása C++ nyelven. lásd Erik Ernst cikke



7.6. Reverse Inheritance
Közbülső osztály beszúrása az öröklődési hierarchiába.





8. Nyelvek típusosságának és egyéb eszközeinek speciális használata
Kutatások során kitalált, hasznosnak tűnő új elméletek, módszerek implementálása nyelvi bővítések nélkül, meglevő eszközökkel.



8.1. Ownership domain (D)
Objektumok tulajdonosának típusbiztos specifikációja, megvalósítás sablonokkal a Java-s megoldáshoz hasonlóan. Implementáció egyéb lehetőségei C++ nyelven.

Együttműködés Alex Potaninnal.




8.2. Kétszintű programozási módszertan (D)
A kétszintű nyelvtanok mintájára egy speciális programozási módszertan, nyelv és fejlesztőeszköz kidolgozása.

Az egyik szint egy alacsonyszintű, kb. Fortran, C (olvasható assembly :) lehetőségeivel rendelkező, párhuzamosságot és funktorokat alapszinten támogató nyelv. Lehetőség szerint egy új, erre a célra kitalált, hatékony, egyszerű, tiszta és típusbiztos nyelv kidolgozása.

A másik szint a metaprogramokhoz hasonlóan a fordító "átprogramozását" teszi lehetővé, kb. egy interpreter vagy VM fordítási idejű változataként. Lehetővé válik új típusok, műveletek létrehozása, meglevők módosítása. AOP, generikus programozás, stb ezáltal speciális alesetként, természetesen kezelhető, egy új (általában Java kiterjesztésként elképzelt :) elmélet is jó eséllyel megvalósíthatóva válik ilyen metaprogramként.

Esettanulmány készítése a támogatandó eszközökről, igények felmérése. Nyelvek és fordítóprogramok prototípusának elkészítése.

Együttműködés Zólyomi Istvánnal.




8.3. Hatékonysági kritériumok specifikálása ( pl. O(n) )
pl. sort( O<2>(), container)




9. A Boost könyvtár
A Boost programkönyvtár eddigi eszközeinek felmérése, új alkalmazási területek kutatása, a könyvtár bővítésének esetleges irányainak meghatározása.



9.1. MPL (D)
A Boost Metaprogramming Library vizsgálata: alkalmazások, esetleges bővítések. Szükség esetén hasonló funkcionalitású, de (legalább kissé) más elveken alapuló könyvtár fejlesztése.



9.2. A gráf könyvtár (D)
A Boost STL-szerű gráf könyvtárának vizsgálata



9.3. Boost tesztkörnyezet kialakítása (D)
A boost::regression_test vizsgálata, használatának ismertetése, tesztkörnyezet kialakítása saját fejlesztések céljából.



9.4. Template introspection és concept checking (D)
A jelenlegi boost::concept_check könyvtár refaktorizálása a Zólyomi-Porkoláb cikk tervei szerint. Utánanézni Terje Slettbo munkájának. Az új introspection könyvtár átgondolása, esetleges bővítései után a boost::type_traits segítségével implementálni a boost::concept_check egy javított változatát.



9.5. Funkcionális nyelvek kötése C++ -hoz (D)
A jelenlegi funkcionális nyelvekhez létező binding-ok és a boost::binding könyvtár vizsgálata alapján (vagy segítségével) Clean nyelvű binding kifejlesztése. További érdekes nyelvek lehetnek: Lisp, Haskell, ML.



9.6. Cache könyvtár (D)
Elévülő adatok hatékony tárolása, kezelése. Ötlet: megvalósítás wrapper/adapterként, együttműködés a szabványos konténerekkel.



9.7. Egyéb boost esélyes könyvtárak kidolgozása/tesztelése-javítása

Javítás, átszervezés: 1. Jeff Garland Date-Time könyvtára 2. Arne Adams, Detlef serialization könyvtárai

Új könyvtárak: 1. Socket 2. XML 3. Thread 4. RDB (Obj-Relational mapping, együttműködés: cache, serialization) 5. GUI




10.1. Az OO és a Generatív programozás hatékonysági összehasonlítása (D, Sz)
Feladattípusok keresése, ahol az egyik paradigma jobb megközelítést ad. Konkrét mérések néhány klasszikus program esetén: faktoriális, prímszámok, gráf-algoritmus (pl. a Prim vagy Kruskal algoritmus általános megoldással, STL-lel (push_back() vs. reserve()), és template metaprogramming-al. Hasonló módon történhet pl. a string-keresések optimalizálása (adott string keresése, adott méretű string keresése, expression template-ek használata, stb.)



10.2. Többszintű modellezés (D)
Modellek közti transzformáció hasznossága, pl. többszörös öröklődés transzformálása egyszeres öröklődéssé (lásd ECOOP 2004 MASPEGHI workshop). Modelltranszformációs nyelv vagy könyvtár kidolgozása, amely a modell változásakor csak a változások szerint generál újra. Kapcsolat az MDA-val (Modell Driven Architecture), Stickel Gábor? Frohner-Porkoláb-Varga cikk



10.3. Elosztott adatbázisok egyes problémái (D, Sz)
Elosztott adatbázisok esetén (pl. CORBA) gyakran használunk OO konstrukciókat. Előfordulhat azonban, hogy az öröklődési hierarchia különböző szintjein definiált attribútumok más szervereken helyezkednek el. A jelenlegi rendszerek ezt nem támogatják. Meg kell vizsgálni egyrészt az ilyen típusú fejlesztés támogatását, másrészt a futás optimalizálását (a narrow függvény más szerverre irányít át). Lásd 10.6.



10.4. Független komponensek összekapcsolása (D, Sz)
A jelenlegi komponensek előre elkészített konnektorokon keresztül kapcsolódnak egymáshoz. Sok esetben azonban hasznos lehet a konnektorok utólagos generálása, miután tudjuk, milyen konténereket akarunk összekapcsolni. Lehetséges megoldások: AOP (AspectJ és AspectC++), esetleg trait-ek használata.



10.5. Feature-oriented programming formális definíciója
??? Coplien szerint valami szlovák arc szép eredményeket ért el az ügyben.



10.6. IDL generikus bővítése
Corba IDL típussal való paraméterezhetőségének megvalósítása. Pár évvel ezelőtt az OOPSLA konferencián már elhangzott cikk a témában, de azóta nem lett belőle semmi.



10.7. Expression probléma
még végiggondolandó