Nástroje pro vývoj a monitorování software

O předmětu

Předpoklady

Termín

Náplň přednášky

Náplň cvičení

Hodnocení

Harmonogram přednášky

Harmonogram cvičení

Shrnutí ankety

O předmětu

Cílem předmětu je

  • seznámit se s často řešenými problémy při vývoji softwaru, se kterými nám mohou pomoci již hotové nástroje
  • naučit se pracovat s nejpoužívanějšími z těchto nástrojů

To se může hodit

  • při práci na týmovém softwarovém projektu na MFF, typická situace zatím je, že se studenti seznamují s těmito nástroji (zejména systémem pro správu verzí) až při práci na projektu, což nutně snižuje efektivitu jejich práce, a na což si po skončení projektu také stěžují
  • pro zapojení se do vývoje open-source projektů - během magisterského studia k tomu je ojedinělá příležitost a je to velmi efektivní způsob, jak se naučit programovat, nemluvě o výhodách při hledání uplatnění po dokončení studia
  • přímo pro praxi - nástroje se používají i při vývoji komerčního software, některé povinně (např. správa verzí, sledování chyb, testování) - tam předběžná znalost usnadní život, jiné mohou jednotlivcům pomoci zvýšit efektivitu práce (automatické hledání chyb)

Výběr probíraných nástrojů je zaměřen na open-source projekty a open-source systémy. Tyto převládají v akademické sféře a jsou i silně zastoupeny i ve větších firmách zabývajících se vývojem software.

Předpoklady

Předmět je navržen pro studenty prvního ročníku navazujícího magisterského studia. Může být zajímavý i pro mladší studenty, kteří mají zkušenosti v těchto oblastech

  • základní znalost UNIXu (Linuxu), je potřeba na cvičení
  • psaní shellových skriptů pro UNIX/Linux, je potřeba na cvičení
  • základní znalost jazyka C nebo C++, vhodná znalost jazyka Java
  • základní programátorské zkušenosti

Termín

V zimním semestru 2011/2012 se přednášky konají v posluchárně S8 v pondělí od 12:20 do 13:50. Cvičení se konají ve dvou paralelkách - ve čtvrtek od 10:40 v UNIXové laboratoři SU1 a ve čtvrtek od 12:20 v UNIXové laboratoři SU2.

Náplň přednášky

Přednáška bude členěna podle problémů, které nástroje řeší. Vždy se zaměří na analýzu konkrétního problému, základní přístupy k jeho řešení, přehled nástrojů a pak konkrétně na vybrané nejpoužívanější nástroje. Výklad nepůjde do úplných detailů (nebude to multimediální verze referenční příručky).

Náplň cvičení

Cvičení tematicky navazuje na přednášku, je tedy členěno až na výjimky dle stejných okruhů probíraných problémů. Cílem cvičení je získat a současně prokázat jednak detailnější znalost alespoň jednoho probíraného nástroje a druhak základní praktické zkušenosti s použitím typického nástroje řešícího daný problém.

K dosažení prvního cíle slouží kratší referáty 1-2 studentů v první části cvičení, popisující praktické detaily či pokročilé funkce daného nástroje nad rámec přednášky s důrazem na živou demonstraci použití, a dále technická podpora referujících studentů kolegům při řešení úlohy na daném cvičení.

K dosažení druhého cíle slouží úloha na základní praktické použití daného nástroje, zadaná a řešená ve zbytku cvičení, případně dokončená doma (osobní účast na cvičení je však nutná).

Hodnocení

Hodnotit se bude bodovým systémem, přičemž body lze získat za následující:

  • Referát (1-5 bodů)
  • Podpora kolegů na cvičení (1 bod)
  • Účast na cvičení a dokončení úlohy (1 bod, tedy až 9 bodů ze všech cvičení)

K udělení zápočtu a možnosti splnit předmět je nutné přednést referát a současně získat alespoň 4 body z úloh.

Známku z předmětu lze přitom získat přímo za body z cvičení:

Známka Počet bodů
1 14 a více
2 12-13
3 10-11

Zkouška je doplňková možnost, jak získat chybějící body ze cvičení ke zlepšení známky. Zkouška bude probíhat formou řešení praktické úlohy podobné těm ze cvičení, přičemž přidělený nástroj bude vybrán dle nesplněných úloh na cvičení. Náročnost úlohy bude odpovídat počtu požadovaných bodů, maximálně lze takto získat 3 body.

Harmonogram přednášky

Téma Datum Přednášející
Organizační informace, Revision Control 3. října 2011 Peter Libič
Revision Control - Subversion 10. října 2011 Peter Libič
Revision Control - DVCS (git) 17. října 2011 Peter Libič
Software Building I: Background; Make, Ant 24. října 2011 Tomáš Pop
Software Building II: Advanced Make, Autotools, Maven, Ivy, SCons 31. října 2011 Tomáš Pop
Software Testing 7. listopadu 2011 Peter Libič
Software Deployment 14. listopadu 2011 Peter Libič
Runtime Monitoring, Profiling, Performance Analysis 21. listopadu 2011 Peter Libič
Debugging and other means of bug hunting 28. listopadu 2011 Peter Libič
Documentation, Code Indexing, Bug Tracking 5. prosince 2011 Peter Libič
Virtualization and Other Tricks 12. prosince 2011 Peter Libič
(?)MS Team Server/... 19. prosince 2011 (?)Petr Lasák
(Přednáška se nekoná - Vánoční prázdniny) 2. ledna 2012 -
9. ledna 2012 ?

Harmonogram cvičení

Téma (a tedy termín) referátu je nutno domluvit do 17. října 2011. Připomínám, že slajdy a případné ukázky (alespoň draft) je nutné poslat e-mailem alespoň 2 dny předem. Za nedodržení tohoto termínu hrozí odečtení bodů za referát.

Č.Téma (nástroj, úloha)DatumReferáty (od 10:40)Referáty (od 12:20)
Organizační informace, přidělení témat 6. října 2011
(Cvičení se nekoná) 13. října 2011
1 git 20. října 2011 P. Herrmann (demo) O. Kupka (tbz2), M. Vašut
2 Subversion 27. října 2011 O. Petřík P. Hlísta (demo), D. Holubyev
3 Make + Autotools 3. listopadu 2011 J. Kotrč (demo), V. Babka (slides1_demo, slides2) M. Všetička (Make) (demo), M. Baron (Autotools) (demo)
4 Ant 10. listopadu 2011 D. Škoda (example) J. Michelfeit (example)
(Státní svátek) 17. listopadu 2011
5 Maven 24. listopadu 2011 D. Rychnovský (demo), M. Hošala (demo) M. Petruľák
6 jUnit+jMock 1. prosince 2011 Š. Poljak (examples) T. Soukup (junit_ex, jmock_ex)
7 Profiling (gprof) 8. prosince 2011 M. Vachna
8 Debugging (gdb) 15. prosince 2011 M. Jiřička (examples) J. Michalko
(Cvičení se nekoná) 22. prosince 2011
9 Valgrind (memcheck) 5. ledna 2012 T. Helešic (examples) M. Macháček
10 Dokumentování (doxygen) 12. ledna 2012 V. Babka (Slides from T. Hubik) J. Daniel (samples)

Shrnutí ankety k úlohám

Na následujících grafech (boxplots v R, tedy medián a mezikvartilové rozpětí) jsou shrnuty výsledky z ankety, týkající se úloh ze cvičení, za roky 2010/2011 a 2011/2012:

Komentáře ke grafům:

  • V roce 2010 byly první dvě úlohy na SVN a Mercurial (v tomto pořadí). V roce 2011 to bylo Git a SVN. Git se zdál náročnější a zabral víc času než Mercurial, což může být způsobeno jak nástrojem samotným, tak mírně odlišným zadáním, a také tím, že to bylo první cvičení (bez předchozího SVN). Na výsledky SVN ale neměla změna pořadí (a tedy zkušenost s Gitem z předchozího cvičení) příliš velký vliv.
  • Ant a Maven se zdály v roce 2011 o něco lehčí, což zřejmě souvisí s větší předchozí zkušeností, na čas řešení to nemělo příliš vliv.
  • Většina zbylých úloh zabrala více času (a často byly také vnímané jako náročnější), i přes srovnatelné předchozí zkušenosti s nástrojem. Zadání úloh se přitom měnilo jen minimálně a spíše šlo o posílení srozumitelnosti zadání. Zřejmě je zde vidět trend posilování zkušeností s Javou na úkor C/C++ a Unixu obecně.
  • Výjimkou je jUnit + jMock, zejména co se týče času řešení úlohy.

Modified on 2012-02-01