Vývoj softvéru na NEzelenej lúke Jozef Matula [email protected] Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko.
Download ReportTranscript Vývoj softvéru na NEzelenej lúke Jozef Matula [email protected] Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko.
Vývoj softvéru na NEzelenej lúke Jozef Matula [email protected] Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Predvianočná rozprávka o tom – S čím sme sa popasovali pri vývoji softvéru v našej firme. – Ako sme sa vrátili k „nízkym“ formám programovania vo vyšších programovacích jazykoch. – A trochu o „bohatých sieťových aplikáciách“. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Všetko je jednoduché ak začíname... VÝVOJ NA ZELENEJ LÚKE Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko SW projekty na zelenej lúke • • • • • Projekt sa začne - vyberie sa riešenie. Riešenie sa implementuje. Projekt sa odovzdá a akceptuje. Prémie a projektové ocenenia! Kto zažil „Waterfall“ vývojový process, mal životné šťastie... Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Vývoj na NEzelenej lúke • Vývoj projektu trvá roky. • Prirodzene dochádza k poznaniu, že okolnosti sa zmenili: – fundamentálne nové požiadavky, – na niečo sa nemyslelo, – pôvodná implementácia už nemá požadovaný výkon, – zmenili sa technologické štandardy! • V podstate hovoríme o „krabicovom softvéri“ resp. COTS (commercial off-the shelf), ktorý so sebou vždy nesie isté „historické dedičstvo“. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Softvérové dedičstvo u nás • Projekt 11 rokov, 2 MLOC Prvý kód vC 1970 Najstarší zdrojový súbor vo Fortrane 1992 32000 riadkov fyziky vo Fotran-e Prvý zdrojový súbor v XSLT 2000 2006 2009 Prvý zdrojový súbor v Python-e Prvý zdrojový súbor Flex/Action Script 1998 Prvý zdrojový súbor v C++ Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Softvérový vývoj u nás Web služby XML / XSLT 3D vizualizácie GIS formáty Paralelné výpočty Rastrové výstupy Vizualizácie v reálnom čase Automatické spracovanie na pozadí Rasterizácia Spracovanie vektorových dát Interaktívne používateľské nástroje (Qt) Správa množstva heterogénnych dát Meteorologické formáty Dekódovanie formátov Bitovo orientované formáty Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Transformácie Algoritmy • Od bitových formátov až po Web služby Čo sme vždy chceli • Nech je kód efektívny - algoritmicky - kde to má zmysel - a vždy technicky. • Nech je kód platformovo nezávislý (32bit vs. 64bit, Big vs. Little Endian, zarovnanie dát) • Využiť celý potenciál jazyka: – C++ - šablóny, parciálne špecializácie, výnimky, – Python - dynamické objekty, funkcionálne prvky (lambda funkcie). • Skĺbiť toto všetko aby vznikol elegantný kód i dizajn. • Myslieť vždy dopredu a teda netvoriť softvér len na jeho prvotný účel. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Všetko má svoje za a proti a sú... VECI KTORÉ SA NEHOVORIA Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Problémy, s ktorými sme sa stretli • Version control systém nezaručuje, že sa dá projekt skompilovať (rôzne kompilátory, rôzne prostredia). • Podpora rôznych cieľových platforiem/OS - je zábava pokiaľ ich je menej ako 2 • Čím viac zdrojových súborov má projekt, tým viac: – čo by čakal každý: • Rastie čas kompilácie – čo by nečakal úplne každý: • Zväčšuje sa pomer času linkovania. • Vzniká výrazný rozdiel medzi rôznymi kompilátormi. • Viac a viac sa naráža na to, že sa celý projekt nedá spustiť len tak cez „F5“ alebo „make && ./run.sh” Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Priebežná integrácia (Continous integration) • V podstate je to nekonečný cyklus zložený z: – kompilácie, – (ideálne) automatických testov, – (ideálne) rôznych analýz kódu. • Buzzword - „Integrácia“: – Nočné kompilácie – Kompilácie vyvolané zmenou kódu. • Doby kompilácie ovplyvňujú značne tento cyklus. • Existuje množstvo projektov, ktoré túto problematiku dnes riešia, ale každý z nich ma nejaké muchy. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Priebežná integrácia vo svete C++ • Kameňom úrazu je podpora rôznych cieľových platforiem: – znásobuje celkovú časovú náročnosť - krát počet podporovaných platforiem, – vyžaduje mať rôzne kompilátory pre rôzny platformy. • Prístupy: – mať osobitný počítač pre každú platformu, – použiť tzv. cross-kompilátory. • Vedľajší dôsledok: – ak chceme podporovať rôzne platformy, ako potom spúšťať testy? Continous deployment... Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Platformová nezávislosť • Existujú len teoreticky platformovo nezávislé jazyky. • Keď zoberieme Javu ako asi najlepšieho kandidáta, tento kód: class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } } na mobilnom telefóne nebude fungovať tak ako má. • Platformová nezávislosť závisí na knižniciach. • Vždy existuje problém s Endianmi u externých dát. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Cross-kompilácia • Umožňuje kompilovať kód pre „takmer“ ľubovoľnú platformu (CPU) na ľubovoľnej dostupnej platforme (hlavne vďaka GCC, čiastočne aj v MS Visual C++). Príklad: na i686, Linux PC => kód pre SPARC64, Solaris • Netreba však zabudnúť: – kompiluje sa nielen pre cieľové CPU ale aj konkrétnu distribúciu a verziu OS! – kompilovaný kód sa nedá „lokálne“ spustiť - v praxi množstvo knižníc tento koncept priamo nepodporuje. • Dá sa kompilovať aj pre nedostupné platformy! Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Ako na to alebo... ČO S TÝM TEDA ROBÍME Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Návrat ku skriptom • Skriptovanie sa považuje často za menejcenné programovanie. • Pôvodne Unix-ová organizácia kódu nás priviedla ku 100-kám dynamickým knižníc + 10 rozsiahlych aplikácií a 10-kam pomocných programov. • Pritom vždy existovali nejaké skripty (Bash, Perl, AWK) a preto sme chceli zjednotiť používaný jazyk: – Inštalačné skripty, upgrade procedúry, – Drobné pomocné nastroje. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Skriptovacie jazyky - všeobecne • Módne versus moderné. • Prepojenia na existujúce API (binding) je riešené dynamickými knižnicami, ktoré sa zavádzajú do pamäti v prípade potreby. • Prenášajú kompiláciu a linkovanie do času spustenia aplikácie avšak vďaka jednoduchému rozhraniu je tento časť veľmi malý. • V praxi umožňujú: – Prototypovanie a rapídny vývoj – Vytvorenie rozšírujúcich modulov používateľmi – Unit testovanie bez kompilácie Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Skriptovacie jazyky - Ale pozor! • Výkon kódu môže byť rádovo 100 krát horší (napr. Python), preto treba dômyselne voliť, kde bude hranica medzi skriptom a skutočným kódom. • Vytvorenie rozhrania (binding) nie je triviálne, tento kód sa často generuje a pôvodné rozhranie sa takmer zduplikuje. • Zmeny v dizajne kódu môžu mať nečakané dôsledky. • ... a preto „Každý riadok kódu“ musí byť otestovaný (obzvlášť v jazykoch s dynamickým typovým systémom). • ... a preto v rozsiahlejších aplikáciách narastá problém s ich udržiavateľnosťou. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Prečo práve Python • Nebolo nám všetko jedno (JavaScript, Ruby, Python, Perl, Lua, vlastný jazyk!), nakoniec pragmatická voľba padla na Python. Za Proti Možnosť komfortného Štandarná knižnica je len tenká vrstva nad C naviazania na C++ knižnicami, naviac bez jednotného dizajnu. vrátane podpory pre OOP Prepojenie na Qt UI knižnicu Syntaktická nečistota spôsobená vývojom jazyka a posunom v paradigmách (mix procedurálnych, objektových a funkcionálnych aspektov) Veľká používateľská komunita a rozsiahla základná knižnica Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Prepojenie na C++ cez Boost Python struct World { void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; #include <boost/python.hpp> using namespace boost::python; BOOST_PYTHON_MODULE(hellomod) { class_<World>("World") .def("set", &World::set) .def("greet", &World::greet) ; } >>> import hellomod >>> planet = hello.World() >>> planet.set('Hello World!') >>> planet.greet() 'Hello World!' Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Python Modul hellomod Prepojenie na C++ cez SIP • Binding na knižnicu Qt a KDE je vytvorený cez SIP struct World { void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; %Module hellomod 0 class World { %TypeHeaderCode #include <world.h> %End public: World(); void set(std::string msg); std::string greet(); }; SIP C++ Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Python Modul Čo nám Python priniesol a prináša • Počas vývoja: – tvorbu jednoduchých aplikácii bez potreby linkovania. – vytváranie regresných unit-testov bez potreby ich kompilácie a linkovania. • Počas inštalácie a po inštalácii: – možnosť prispôsobenia aplikácie u zákazníka bez potreby meniť „skutočný“ kód, – možnosť pre zákazníka vyvinúť si vlastné aplikácie s použitím dostupnej funkcionality - výhoda voči konkurencii . • Spomalenie kompilácie kvôli Python modulom. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko A jedného dňa sa nás spýtali zákazníci ... A NEDALO BY SA TO VŠETKO SPRAVIŤ CEZ WEB? Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko ...a my sme zosmutneli... • Všetko sa dá spraviť! • Avšak máme aplikáciu, ktorá: – Je rozsiahla a náročná na 2D grafiku – Je výrazne interaktívna (okamžitá odozva) • Interaktívny “Web 2.0” vytyčuje 2 implemetačné cesty: – W3C - JavaScript/AJAX - interaktívny obsah – RIA - Adobe Flash&Flex, MS Silverlight, JavaFX ešte viac interaktívny obsah. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Čo je Java Script a GWT • (ďalej JS) De-facto jediný skriptovací jazyk pre dynamický HTML (počuli ste niekedy o VB Scripte? ) • Nočná mora každého Web programátora. • GWT = Google Web Toolkit je dôkaz, že pri použití JS pre rozsiahlejšiu aplikáciu sa nemusíte zblázniť: – Píšete objektový kód v Java-e – GWT podľa dostupnosti Java-y v prehliadači buď spustí Java applet „host-mode“ alebo preloží všetko do JS podporované službami AJAX. • Brilantné príklady využitia: – Google Mail, Google Wave Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Adobe Flex • Flex je knižnica pre tvorbu používateľského rozhrania (dialógy, tlačítka) pre Flash, pričom štýlovanie je možné cez CSS. • Programovací jazyk je Action Script 3.0 (kvázi Java Script mixovaný s XML!), tento sa prekladá do pseudokódu Flash VM. • Flex je orientovaný na spracovanie dát (hlavne XML) z web služieb. • Tam kde zlyhávali Java Applet-y vyhráva Flex. • Adobe Air je odvodená technológia pre tvorbu skutočných aplikácií (bežiacich mimo prehliadača) Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko MS Silverlight a Java FX • Snaha firiem Microsoft a Java dobehnúť Adobe • „Základom“ všetkého sú komponenty, ktoré sa animovane presúvajú a zväčšujú... • Každý z nich vyžaduje špeciálne rozšírenie prehliadača. • Výhodou je však možnosť písania kódu v „známom“ jazyku (C#, Java) • Vďaka aplikáciám pre šírenie videa cez Internet ako napr. YouTube, má Adobe jednoznačnú prevahu. • Pozor, rýchly vývoj v tejto oblasti spôsobuje, že nik nevie, ktorá technológia tu bude o 3 roky. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko JavaScript & GWT verzus RIA* • Zvoľte si JavaScript/AJAX/GWT keď: – máte možnosť meniť/tvoriť web služby – aby Vaša aplikácie bežala „úplne“ všade, ale pozor s čistým JS to nie je také ľahké. • Zvoľte si RIA keď: – chcete vizuálne vyvíjať aplikáciu s „pekným“ výsledkom, – chcete ľahko krokovať Váš kód, – chcete extenzívne používať grafiku (efekty,animácie). Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Prečo sme si vybrali Flex? • Ľahký vývoj - kvalitné IDE prostredie - komerčné, no ponúka debugger a časový i pamäťový profiler. • Bezproblémový beh na rôznych prehliadačoch (Linux, Windows). A tak sme aj my opäť na zelenej lúke. Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko https://ogcie.iblsoft.com/FlexiWeather/demo/ Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Ďakujem za pozornosť! Šťastné a veselé Vianoce! Otázky? Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko