vývoj softvéru na nezelenej l ú ke
DESCRIPTION
Vývoj softvéru na NEzelenej l ú ke. Jozef Matula [email protected]. 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/1.jpg)
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]
![Page 2: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/2.jpg)
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“.
![Page 3: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/3.jpg)
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...
![Page 4: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/4.jpg)
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...
![Page 5: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/5.jpg)
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“.
![Page 6: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/6.jpg)
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
![Page 7: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/7.jpg)
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
![Page 8: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/8.jpg)
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.
![Page 9: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/9.jpg)
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ú...
![Page 10: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/10.jpg)
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”
![Page 11: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/11.jpg)
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.
![Page 12: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/12.jpg)
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...
![Page 13: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/13.jpg)
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.
![Page 14: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/14.jpg)
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!
![Page 15: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/15.jpg)
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...
![Page 16: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/16.jpg)
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.
![Page 17: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/17.jpg)
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
![Page 18: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/18.jpg)
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.
![Page 19: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/19.jpg)
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
![Page 20: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/20.jpg)
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
![Page 21: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/21.jpg)
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
![Page 22: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/22.jpg)
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.
![Page 23: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/23.jpg)
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 ...
![Page 24: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/24.jpg)
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.
![Page 25: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/25.jpg)
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
![Page 26: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/26.jpg)
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)
![Page 27: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/27.jpg)
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.
![Page 28: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/28.jpg)
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).
![Page 29: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/29.jpg)
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.
![Page 30: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/30.jpg)
Moderné informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko
https://ogcie.iblsoft.com/FlexiWeather/https://ogcie.iblsoft.com/FlexiWeather/demo/demo/
![Page 31: Vývoj softvéru na NEzelenej l ú ke](https://reader035.vdocuments.pub/reader035/viewer/2022062301/568140a4550346895dac5f59/html5/thumbnails/31.jpg)
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??