vývoj softvéru na nezelenej l ú ke

31
né informačné technológie, 15. decembra 2009, FMFI UK, Bratislava, Slovensko Vývoj softvéru Vývoj softvéru na na NEzelenej l NEzelenej l ú ú ke ke Jozef Matula [email protected] Jozef Matula [email protected]

Upload: marsha

Post on 09-Jan-2016

30 views

Category:

Documents


3 download

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 Presentation

TRANSCRIPT

Page 1: 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]

Page 2: Vývoj softvéru na NEzelenej  l ú ke

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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??