Performance Awareness in Agile Software Development
Výkon softwaru jako faktor při agilních metodách vývoje
dizertační práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/104405Identifikátory
SIS: 108475
Kolekce
- Kvalifikační práce [11196]
Autor
Vedoucí práce
Oponent práce
Rabiser, Rick
Koziolek, Anne
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
11. 6. 2018
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Prospěl/a
Klíčová slova (česky)
vyhodnocování výkonnosti, agilní metody vývoje softwaru, testování výkonu, softwarová dokumentace, automatizované testování softwaruKlíčová slova (anglicky)
performance evaluation, agile software development, performance testing, software documentation, automated software testingZa agilní metody vývoje softwaru jsou obecně považovány přístupy, kdy jsou programy často sestavovány, testovány a nasazovány. Výsledkem je tak kratší vývojový cyklus. Přístupy typu DevOps pak dovádí tuto koncepci do extrému, kdy jsou setřeny rozdíly mezi vývojovým a produkčním prostředím a nasazený software průběžně aktualizují. V tomto kontextu se tato práce zaměřuje na nalezení míst, kde by jednotliví účastníci měli mít větší povědomí o výkonu vyvíjeného softwaru. Práce nabízí přístupy a nástroje jak toto povědomí zvýšit; hlavním cílem je vytvářet lepší (rychlejší) software v kratším čase. Zlepšení je dosaženo pomocí testování, dokumentace a sledování výkonu během všech fází vývoje software. V této práci ukážeme (1) nástroje pro psaní testů výkonu pro jednotlivé komponenty (např. knihovny). Tyto testy zachycují a kodifikují předpoklady o výkonu a převádí je do spustitelných entit, které zjednodušují automatizaci a opakovatelnost. Pro vyhodnocení testů výkonu jsme (2) navrhli nové metody které dokáží automaticky nalézt regrese. Tyto metody jsou navrženy tak, aby braly v úvahu variabilitu dat pocházejících z měření výkonu softwaru a dokázaly odlišit skutečné regrese od šumu. Testy výkonnosti pak také (3) zužitkujeme pro vytvoření aktuální a přesné API dokumentace výkonu, která vývojářům usnadní psaní...
Broadly, agile software development is an approach where code is frequently built, tested and shipped, leading to short release cycles. Extreme version is the DevOps approach where the development, testing and deployment pipelines are merged and software is continuously tested and updated. In this context our work focuses on identifying spots where the participants should be more aware of the performance and offers approaches and tools to improve their awareness with the ultimate goal of producing better software in shorter time. In general, the awareness is raised by testing, documenting, and monitoring the performance in all phases of the development cycle. In this thesis we (1) show a framework for writing performance tests for individual components (e.g. libraries). The tests capture and codify assumptions about the performance into runnable artifacts that simplify repeatability and automation. For evaluation of the performance tests we (2) propose new methods, which can automatically detect performance regressions. These methods are designed with inherent variation of performance data in mind and are able to filter it out in order to detect true regressions. Then we (3) reuse the performance tests to provide the developers with accurate and up-to-date performance API documentation that steer them...