Performance Awareness in Agile Software Development
Výkon softwaru jako faktor při agilních metodách vývoje
dissertation thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/104405Identifiers
Study Information System: 108475
Collections
- Kvalifikační práce [11196]
Author
Advisor
Referee
Rabiser, Rick
Koziolek, Anne
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software Systems
Department
Department of Distributed and Dependable Systems
Date of defense
11. 6. 2018
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Pass
Keywords (Czech)
vyhodnocování výkonnosti, agilní metody vývoje softwaru, testování výkonu, softwarová dokumentace, automatizované testování softwaruKeywords (English)
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...