Download - Vývoj softvéru na NEzelenej l ú ke
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Vývoj softvéruVývoj softvéru na naNEzelenej lNEzelenej lúúkeke
Jozef Matula [email protected] Matula [email protected]
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Predvianočná rozprávka o tomPredvianoč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ÝVOJ NA ZELENEJ LÚKEVÝVOJ NA ZELENEJ LÚKEVšetko je jednoduché ak začíname...
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
SW projekty na zelenej lúkeSW 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 NVývoj na NEEzelenej lúkezelenej 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ásSoftvérové dedičstvo u nás
• Projekt 11 rokov, 2 MLOC
1970 2000
32000 riadkov
fyziky vo Fotran-e
32000 riadkov
fyziky vo Fotran-e
Najstarší zdrojový súbor vo Fortrane
Najstarší zdrojový súbor vo Fortrane
1992
Prvý kódv C
Prvý kódv C
1998
Prvý zdrojový súbor v C++
Prvý zdrojový súbor v C++
2006
Prvý zdrojový súbor
v Python
-e
Prvý zdrojový súbor
v Python
-e
2009
Prvý zdrojový
súbor Flex/Action Script
Prvý zdrojový
súbor Flex/Action Script
Prvý zdrojový súbor v XSLT
Prvý zdrojový súbor v XSLT
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Softvérový vývoj u násSoftvérový vývoj u nás
• Od bitových formátov až po Web služby
Bitovo orientované
formáty
Bitovo orientované
formáty
Meteorologické formáty
Meteorologické formáty
XML / XSLTXML / XSLT
GIS formátyGIS formáty
Dekódovanie formátov
Dekódovanie formátov
Interaktívne používateľské nástroje (Qt)
Interaktívne používateľské nástroje (Qt)
Web službyWeb služby
3D vizualizácie3D vizualizácie
RasterizáciaRasterizácia
Spracovanie vektorových dát
Spracovanie vektorových dát
Vizualizácie v reálnom časeVizualizácie v reálnom čase
Tra
nsfo
rmácie
Alg
ori
tmy Rastrové výstupyRastrové výstupy
Automatické spracovanie na
pozadí
Automatické spracovanie na
pozadí
Paralelné výpočtyParalelné výpočty
Správa množstva heterogénnych
dát
Správa množstva heterogénnych
dát
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Čo sme vždy chceliČ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
VECI KTORÉ SA NEHOVORIAVECI KTORÉ SA NEHOVORIAVšetko má svoje za a proti a sú...
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Problémy, s ktorými sme sa stretliProblé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 Priebežná integrácia (Continous integration)(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 vPriebežná integrácia vo sveteo svete C 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ť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áciaCross-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
ČO S TÝM TEDA ROBÍMEČO S TÝM TEDA ROBÍMEAko na to alebo...
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Návrat ku skriptomNá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šeobecneSkriptovacie 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 pozorSkriptovacie 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 PythonPreč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 naviazania na C++ vrátane podpory pre OOP
Štandarná knižnica je len tenká vrstva nad C knižnicami, naviac bez jednotného dizajnu.
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 naPrepojenie na CC++ ++ cez Boost Pythoncez Boost Pythonstruct 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!'
PythonModulhellomod
PythonModulhellomod
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Prepojenie Prepojenie na na CC++ cez SIP++ cez SIP
• Binding na knižnicu Qt a KDE je vytvorený cez SIPstruct 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();};
C++C++
PythonMod
ul
PythonMod
ul
SIP
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Čo nám Python priniesolČo nám Python priniesol a a prinášaprináš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 NEDALO BY SA TO VŠETKO A NEDALO BY SA TO VŠETKO SPRAVIŤ CEZ WEB?SPRAVIŤ CEZ WEB?
A jedného dňa sa nás spýtali zákazníci ...
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
...a my sme zosmutneli......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 Čo je Java Script a GWT 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 FlexAdobe 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 FXMS 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*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?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/https://ogcie.iblsoft.com/FlexiWeather/demo/demo/
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
Ďakujem za pozornosťĎakujem za pozornosť!!Šťastné a veselé Vianoce!Šťastné a veselé Vianoce!
OtázkyOtázky??
Ďakujem za pozornosťĎakujem za pozornosť!!Šťastné a veselé Vianoce!Šťastné a veselé Vianoce!
OtázkyOtázky??