České vysoké učení technické v Praze Fakulta elektrotechnická
X36SCP Srovnání vývojových prostředí pro Javu Jiří Holý (holyj3), Ladislav Vitásek (vitasl1) 2007-2008
Obsah České vysoké učení technické v Praze.................................................................................................1 X36SCP................................................................................................................................................1 Srovnání vývojových prostředí pro Javu..............................................................................................1 Zadání:..................................................................................................................................................3 Popis:...............................................................................................................................................3 Účastníci...............................................................................................................................................4 Profil požadovaných účastníků testu...............................................................................................4 Testovaní participanti.......................................................................................................................4 Testování...............................................................................................................................................5 Testovací prostředí...........................................................................................................................5 Scénář testu......................................................................................................................................6 Úpravy zadání..................................................................................................................................7 Vlastní test.......................................................................................................................................7 Post-test dotazník.............................................................................................................................7 Vyhodnocení výsledků..........................................................................................................................8 NetBeans..........................................................................................................................................8 Eclipse..............................................................................................................................................8 IntelliJ Idea......................................................................................................................................8 Přílohy..................................................................................................................................................9 Pre-test dotazník:.............................................................................................................................9 Post-test dotazník...........................................................................................................................10
-2-
Zadání: Cílem je srovnat různá integrovaná vývojová prostředí (IDE). 1. sestavte skupinu Java vývojářů (2-5 let zkušenosti) 2. vytvořte a řiďte Java projekt pomocí NetBeans a Eclipse 3. určete množinu nejlepších vlastností obou nástrojů 4. popište nevýhody obou nástrojů 5. vytvořte zprávu, která zhodnotí jednoduchost použití obou editorů
Popis: Jako způsob byl zvolen usability-test. Zadání jsme také obohatili o IntelliJ IDEA IDE. Co chceme hlavně zjistit: •
jak dobře se uživatel orientuje v logické struktuře nabídek, schopnost najít zadané funkce
•
použiti klávesnice, myši a klávesových zkratek
•
schopnost IDE uživateli pomáhat při činnostech
•
zda uživatel použije nabízené funkce, které a v jakém pořadí
Jaké operace by měl test pokrývat: 1. Vytvoření nového projektu (ze souborové repozitory) a) Checkout projektu b) Spustit projekt 2. Provést typické vývojové aktivity - simple code generation - refactoring: rename, move to package - search/replace/format code - debugging - refactoring: extracting interfaces, inner classes, variables
Účastníci Profil požadovaných účastníků testu Vzhledem k zadání a využití aplikace je cílová skupina uživatelů poměrně úzká - zaměřena na odborníky pro vývoj v Javě. Pro test jsme počítali s alespoň 6 účastníky (2 pro každé prostředí), kteří by splňovali následující kritéria: •
Znalost angličtiny na pokročilé úrovni
•
Pracovní zkušenost s vývojem v Javě po dobu minimálně 2 let
•
Zkušenost s jedním běžně používaným version control systémem (CVS, Subversion)
•
Velmi dobrou znalost alespoň jednoho vývojového IDE (Netbeans, IntelliJ IDEA, Eclipse), tj. používání klávesových zkratek, obecný přehled možností podporovaných funkcí IDE
Taková skupina by nám poskytla dostatečné možnosti při porovnávání často používaných funkcí IDE.
Testovaní participanti Účastníky testu jsme vybrali pomocí dotazníku (screeneru); jedinými kritérii pro výběr byla alespoň mírně pokročilá znalost anglického jazyka a práce s Javou po dobu minimálně dvou let. Vybráni byli 3 vysokoškolští studenti, kteří zároveň pracují a 2 vývojáři z praxe. Každý z participantů si zvolil prostředí, které mu nejvíce vyhovovalo. Jednotlivé účastníky jsme identifikovali pouze číslem, tuto identifikaci jsme zachovali i v ostatních dotaznících. Participant Testované IDE id
Programuje (let)
Programuje v Javě (let)
Považuje se za zkušeného vývojáře
Denně pracuje v IDE (hodin)
5
3
ano
8 a více
1
IntelliJ IDEA
2
NetBeans
6,5
3
částečně
7-9
3
NetBeans
6
4
částečně
8
4
Eclipse
12
3
ne
3
5
NetBeans
3
3
ano
3
Tabulka 1: Výtah z výsledku pre-testu
Testování Testovací prostředí Testování jsme prováděli v Usability laboratoři Katedry počítačů v areálu ČVUT na Karlově náměstí. Usability laboratoř je tvořena dvěma místnostmi, z nichž první slouží jako pozorovatelna. Dochází zde k pozorování a záznamu dění, prostřednictvím dvou kamer umístěných v rozích testovací místnosti. Záznam z kamer lze nahrát přímo na DVD nebo pomocí programu Camtasia Studio uložit na disk pro pozdější zpracování.
Ilustrace 1: Plánek Usability laoratoře
Pomocí vzdálené plochy jsme zaznamenávali dění na monitoru účastníka testu společně se zvukovým záznamem. Celé testování jsme prováděli vždy ve dvojici; jeden z dvojice byl přítomen v testovací místnosti jako moderátor – staral se o správný průběh testu, zadával účastníkům úlohy a případně pomáhal. Druhý z dvojice byl přítomen v místnosti pro pozorovatele, kde se staral o záznam testu a již v průběhu vytvářel „log“ důležitých událostí. Hardware: • • •
Intel Core 2 – CPU 4300 (1.8 GHz) 2 GB RAM nVidia Geforce 7950 GX2 (512 MB)
Software: • Operační systém - Windows XP – service pack 2 • Java Developement Kit 1.6_03 • Eclipse IDE for Java EE Developers, Europa fall2 • NetBeans IDE 6.0 • IntelliJ IDEA 7.0
Scénář testu Pro samotný test jsme zvolili několik úloh, které pokrývají časté úkony spojené s programováním v Javě. Upravovaný program je jednoduchá desktopová aplikace. Jedná se o tyto úkoly: I. Založení a spuštění nového projektu z jednoho z následujících umístění • •
http://svn.wordrider.net/svn/timejuggler jmeno a heslo je wordrider cvs pserver:doksyska.klfree.net:/root jmeno a heslo scp, projekt timejuggler
Název projektu je timejuggler. Knihovny jsou uloženy v adresáři lib, cílové JDK je 1.6. Hlavní třída pro spuštění se jmenuje cz.cvut.felk.timejuggler.core.MainApp II. Workout 1) vytvořit metody toString(), equals a hashcode() (na všech třídních proměnných) cz.cvut.felk.timejuggler.entity.CalendarEvent cz.cvut.felk.timejuggler.swing.components.calendar.CalendarGridEvent 2) cz.cvut.felk.timejuggler.core.domain.DateInterval přesunout do cz.cvut.felk.timejuggler.dao a přejmenovat na Period. 3) cz.cvut.felk.timejuggler.core.application.ProxyHelper -> vyextrahovat HttpAuthenticateProxy a přesunout do nové package cz.cvut.felk.timejuggler.core.security 4) Vyextrahovat properties třídní konstanty z cz.cvut.felk.timejuggler.core.AppPrefs do samostatné třídy a cz.cvut.felk.timejuggler.core.UserProp 5) AppPrefs -> přejmenovat field DEFAULT_PROPERTIES na PROPERTIES_FILE_NAME 6) Extrahování interface z třídy CalendarGridEventFactory jako ICalendarGridEventFactory a umístit interface do stejného package 7) Nahradit všechny deprecated volání - MainPanelManager a CalendarGrid - getHours atd. za nové. Pozn.: nové použítí metod je např. Calendar.set(Calendar.HOUR_OF_DAY, int hours) 8) V třídě CalendarGrid jsou špatně vykreslovány jednotlivé komponenty zobrazující dílčí události. Najít a opravit chybu. Řešení: Kód je upraven tak, aby se všechny vizuální komponenty odkazovaly na jedinou instanci
DateIntervalu (což je špatně). Řešením je tedy upravit třídu CalendarGrid řádka 154 - měl by být vytvářen nový DateInterval, jinak všechny CalendarEventy sdílejí stejný interval (resp. jeho instanci a vykreslují se tak ve stejném míste kalendáře). Před testováním samotných účastníků jsme test provedli na sobě, abychom se ujistili, že je vše řádně připraveno a že úlohy na sebe logicky navazují.
Úpravy zadání Po provedení předběžného testování byly provedeny změny v zadání. Úkol č.8 byl z testu úplně vynechán kvůli své složitosti, protože by kladl příliš velké nároky na čas i schopnosti participantů. V případě NetBeans byl projekt upraven tak, aby IDE šlo spustit i bez nastavení resource-pattern, kde jsme se obávali, že nikdo toto nastavení nenajde. Dále se změny lišily v případě různých participantů, převážně z časových důvodů.
Vlastní test Před započetím testu jsme účastníky informovali, že průběh testu bude nahráván. Pro jejich uklidnění a snížení nervozity jsme jim vysvětlili, že cílem testování nejsou oni, ale samotná aplikace. Během každého z testů byl pořízen „log“, který je součástí příloh. Každý z testů trval přibližně 30 minut.
Post-test dotazník Participant id, známkování jako ve škole (1-nejlepší, 5-nejhorší)
1
2
3
4
5
Vyhovuje vám rozložení ovládacích prvků
1
2
2
2
3
Je ovládání programu snadné na pochopení
1
2
2
2
4
Podařilo se vám najít požadované funkce
3
4
3
3
3
Jak se vám líbí vzhled prostředí
1
3
2
1
4
Je pro vás ovládání prostředí intuitivní
2
3
2
2
4
Tabulka 2: Výtah z výsledku post-test dotazníku
Vyhodnocení výsledků Obecně lze říci, že participanti využívali průvodce. Při práci s kódem pak content assist a pro složitější operace vždy kontextové menu editoru. Žádné z testovaných prostředí v defaultním nastavení neumožňuje generování těla metody toString.
NetBeans •
Problém v první části testu – checkout projektu, jeho nastavení a spuštění. Checkout proběhl v pořádku, ale pouze se stáhly kódy a při spuštění průvodce je spouštěn standardní průvodce pro tvorbu nového projektu - je zde absolutní neprovázanost s checkoutem. Proto participanti správně stáhli zdrojové kódy, ale poté pouze zakládali prázdné nové projekty. Ze všech tří testovaných prostředí trvalo načtení a konfigurace projektu nejdéle.
•
Pouze jedna z testovaných osob nalezla pomůcku pro splnění úkolu č. 1 - konkrétně pro generování těla metod equals a hashCode.
•
Nikdo nenalezl funkci, která by umožnila splnění úkolu č. 4. NetBeans neumožňují přesun metod/proměnných mezi třídami, v kontextovém menu se položka „Move“ váže k třídě, přestože položka „Rename“ se týká objektu označeného kurzorem.
•
U funkce pro refactoring "Move Inner to outer level" postrádá participant volbu cílového package a je tak nucen použít ještě jednu funkci Move pro přesun třídy do jiného package.
•
Jednomu z participantů se zdá IDE pomalé
Eclipse Z průběhu testu jsme zjistili nedostatečné zkušenosti a schopnosti testera, vyvození výsledků tak není možné.
IntelliJ IDEA
Přílohy
Pre-test dotazník 1. V jakém odvětví pracujete? 2. Jak dlouho programujete? 3. Pracujete na částečný nebo plný úvazek, nebo jste student? 4. Jak dlouho používáte Javu? 5. Považujete se za zkušeného vývojáře (ano, ne, částečně)? 6. Jaké IDE používáte? Jak dlouho? Můžete, prosím, rozepsat také historii a popřípadě co vás vedlo ke změnám IDE? 7. Používáte nějaké přídavné pluginy v IDE? Můžete to prosím více rozepsat? 8. Kolik času denně trávíte v IDE?
Post-test dotazník Známkování jako ve škole (1 - nejlepší, 5-nejhorší) •
Vyhovuje vám rozložení ovládacích prvků? …
•
Je ovládání programu snadné na pochopení? …
•
Podařilo se vám najít požadované funkce? …
•
Jak se vám líbí vzhled prostředí? …
•
Je pro vás ovládání prostředí intuitivní? ...