Diplomová práce v oboru Softwarové inženýrství.
Cílem práce je využít poznatky a prototypové nástroje z našich výzkumnů o způsobech implementace DbC v Javě, vyrobit obecnou strojově zpracovávatelnou reprezentaci DbC konstrukcí, implementovat analyzátory pro vybrané nejvíce používané způsoby popisu DbC implicitní i explicitní (JML, Guava, ...) a případně knihovnu pro porovnání konkrétních DbC konstruktů. Ověřit funkčnost na datech používaných v rámci výzkumů.
lang:en Analysis of semantic contracts in Java technologies
Zásady pro vypracování:
1. Seznamte se s konceptem kontraktu softwarových modulů, zejména přístupem Design by Contract (DbC), a prostudujte způsoby popisu DbC kontraktu v Java technologiích.
2. Navrhněte model pro reprezentaci DbC konstrukcí, nezávislý na zdrojovém způsobu popisu, vhodný pro jejich analýzu a další zpracování.
3. Navrhněte a implementujte nástroj (knihovnu či aplikační rámec), který umožní získání dat podle tohoto modelu ze zdrojové či přeložené formy Java programu, vytvoření jejich externí reprezentace, případně porovnání DbC konstrukcí. Nástroj bude schopen zpracovat alespoň dva způsoby popisu DbC konstrukcí a bude dovolovat snadné rozšíření pro další způsoby.
4. S využitím nástroje vytvořte jednoduchou uživatelskou aplikaci pro načtení a zobrazení dat modelu.
5. Důkladně ověřte správnou funkcionalitu nástroje a získané výsledky vyhodnoťte.
Doporučená literatura:
B. Meyer, “Applying ’design by contract’,” Computer, vol. 25, no. 10, pp. 40–51, Oct 1992. [Online]. Available: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=161279
Dietrich, J., Pearce, D.J., Jezek, K. and Brada, P. Contracts in the Wild: A Study of Java Programs. In LIPIcs-Leibniz International Proceedings in Informatics (Vol. 74), ECOOP 2017. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. 2017
Rezervace tématu:
1. Václav Mareš - přiděleno
2. Jiří Láska
Téma vypsal: Doc. Ing. Přemysl Brada, MSc., Ph.D. (UC 354)
Vypsáno pro akademický rok 2017/2018 dne: 2017-03-29
Zadáno komu: Václav Mareš (dokončeno: 2018-06-30)