reklama

Umíme to s Delphi: 163. díl – komponentní technologie, úplný úvod

V dnešním článku otevřeme téma, které je vysoce aktuální a na které mě ve svých emailech často upozorňujete. Otevřeme bránu do světa komponentních technologií. Komponentní technologie nám umožňují výrazným způsobem změnit svůj pohled na vývoj softwaru a přinášejí nám zase nové možnosti. Dnešní článek nabízí úplný úvod do problematiky: čekejte seznámení se světem komponent, popis jejich koncepce a filozofie a také srovnání komponent s tradičními způsoby vývoje aplikací.

Vítejte u dalšího pokračování našeho seriálu o programování v Delphi. Před týdnem jsme vytvořením ukázkové aplikace dokončili rozsáhlé téma – problematiku datových proudů, streamů. Dnes se pustíme do tématu ještě rozsáhlejšího, který si však zaslouží příslušnou pozornost díky své atraktivitě a současnému rozvoji.

Jedná se o tzv. komponentové technologie. Někteří z vás se s tímto pojmem jistě už setkali, pro jiné se jedná o úplnou novinku. V každém případě však jde o oblast, která v poslední době požívá stále větší a větší pozornost. Jde totiž o jeden z možných způsobů, jak se vyrovnat s rostoucí komplexností softwarových aplikací, s rostoucími požadavky zákazníků a také s dynamikou neustále se měnícího okolního světa, který staví softwarové vývojáře před nelehký úkol - udržovat aplikace stejně flexibilní jako vše ostatní, co se nám mění dnes a denně před očima.

Vzhledem k tomu, že existuje několik konkrétních komponentních technologií, které sice souhrnně požívají název komponentní, avšak v detailech a především v konkrétních implementacích se velmi silně liší, je nutné zvolit určité zástupce, kterými se budeme zabývat. Ostatní technologie potom budeme buď ignorovat úplně a nebo jim věnujeme jen krátkou zmínku. Nelze jinak, svět komponent je příliš rozsáhlý a navíc v seriálu věnovanému primárně Delphi nemá příliš smysl rozebírat třeba javovské technologie.

Protože oblast komponentních technologií je opravdu mimořádně rozsáhlá, a nemáme jednoduše šanci prozkoumat ji celou na poměrně přizpůsobivém, přesto však určitým způsobem omezeném rozsahu stránek Živě.cz, pojďme si hned na samotný úvod říci, které aspekty komponent společně objevíme a které naopak ponecháme příslušnějším a informovanějším zdrojům.

  • V dnešním a možná v následujícím článku bych chtěl stručně vytvořit jakýsi úvod do komponentních technologií. Mohl by být užitečný především pro ty, kteří se s komponentami dosud nesetkali, nebo jejichž poznatky z této oblasti jsou spíše kusé.
  • V následujících dvou nebo třech článcích se podrobně podíváme na jednu z nejvýznamnějších komponentních technologií – na produkt Microsoftu COM/COM+. Tato volba je poměrně přirozenou – technologie COM je sice spjata s Windows, nicméně ničím jiným se v naše seriálu ani nezabýváme; nad COM je postavena celá řada běžných aplikací (aniž to o nich vůbec víme) a s COM lze nejsnáze experimentovat bez nutnosti instalovat jakékoliv další produkty třetích stran.
  • Protože i když to tak někdy už ani nevypadá, je tento seriál stále zaměřen na Delphi :-), budeme se posléze nějakou dobu věnovat implementačním otázkám a ukážeme si, jak v Delphi vytvářet COM aplikace. Implementujeme společně také několik ukázkových projektů.
  • Jakkoliv nám COM demonstruje celou řadu důležitých a obecných konceptů, není technologií jedinou. Z toho důvodu bychom následující jeden nebo dva články věnovali technologii CORBA, která je velmi uznávanou především pro její platformovou a implementační nezávislost, takže její vynechání by jistě řadu lidí pobouřilo.
  • No a pokud ještě i v této době bude náš seriál někdo číst, jistě nezapomeneme ani na ukázkovou implementaci CORBA projektů v Delphi.

Tolik na samotný úvod. Nyní tedy víte, co se seriálem v následující době zamýšlím. Pokud máte k uvedenému schématu jakýkoliv komentář, nebo pokud byste v dílech o komponentách rádi viděli něco, co jsem dosud nezmínil, neváhejte se prosím ozvat do diskuse a nebo mi přímo napiště na tradiční adresu vkadlec@post.cz.

Nyní již však pojďme bez váhání na věc: co jsou to komponentní technologie a proč je kolem nich vytvořen takový rozruch?

Komponentní technologie: co to je?

Začněme moudrými myšlenkami těch, kteří komponentám zasvětili svou profesionální kariéru.

Motto:

Have you ever wanted to change your application or add new features after it has shipped? Would you like to develop your application incrementally instead of completely rewriting it every two years? Would you like to make your application more customizable? More flexible? More dynamic?Would you like to speed the development of your application? Do you need to develop distributed applications? Would you like to write distributed applications the same way you write nondistributed applications?
-- Dale Rogerson: Inside COM, page xvii

Ne že bych si troufal stát se překladatelem, pokud však někteří z vás angličtinou nevládnou, pokusím se o volný překlad: Už jste někdy chtěli změnit vytvořenou aplikaci nebo přidat nové funkce poté, co byla poslána zákazníkům? Chtěli byste vytvářet aplikace inkrementálně namísto kompletního předělávání každé dva roky? Chtěli byste vytvářet přizpůsobitelnější aplikace? Flexibilnější aplikace? Dynamičtější aplikace? Chtěli byste zrychlit vývoj svých aplikací? Potřebujete vyvíjet distribuované aplikace? Chtěli byste psát distribuované aplikace stejným způsobem, jakým vytváříte ty nedistribuované?

Je zřejmé, že snad úplně každý odpoví kladně přinejmenším na jednu z výše uvedených otázek. A právě jedna jediná kladná odpověď je podle autora citátu Dala Rogersona, mimochodem autora několika významných publikací ze světa komponent, předpokladem pro to, abyste se komponentami začali zabývat i vy.

Pojďme se podívat na několik definicí, které jsou uvedeny v literatuře zabývající se komponentami.

Softwarová komponenta je definována jako softwarový element, který odpovídá komponentovému modelu, může být nezávisle šířen a může se skládat s ostatními komponentami podle definovaného kompozičního standardu bez jakýchkoliv změn. (B. Council, T. Heineman – Component Based Software Engineering, Addison – Wesley, 2001)

Komponentový model definuje specifické interakce mezi komponentami a kompoziční standardy. Implementace komponentového modelu je specializovaná množina spustitelných softwarových elementů vyžadovaná k podpoře spouštění komponent odpovídajících tomuto modelu. (B. Council, T. Heineman – Component Based Software Engineering, Addison – Wesley, 2001)

Zdá se vám to srozumitelné? Pravděpodobně ne. Tak ale hovoří definice. Pojďme si je raději vysvětlit. Podívejme se přitom třeba o světa průmyslové výroby. Drtivá většina průmyslových odvětví je připravena využívat mechanismus „montování výrobků z předem připravených, hotových součástek“. Tento přístup má celou řadu výhod a asi nemá smysl je příliš podrobně rozebírat: používání předem připravených dílů šetří čas, náklady, usnadňuje montáž a podporuje standardizaci a vzájemnou kompatibilitu. Efektivita, variabilita, nahraditelnost a opravitelnost – to jsou nejdůležitější výhody montování výrobků z předpřipravených součástek. Nikoho by asi nenapadlo kupovat novou kuchyňskou linku kvůli utrženému madlu u dveří jedné skříňky.

Položme si tedy jednoduchou otázku: proč bychom tuto koncepci nepřenesli do světa vývoje softwaru? Proč bychom kromě aut, kol, praček, televizí a nábytku neskládali z předem připravených součástek také softwarové aplikace? Můžeme tak využít všech výhod, na které přišli „nepočítačoví“ inženýři již před hezkou řádkou let.

Potíž ale je, že skládání softwaru z předpřipravených částí (nazvěme je třeba softwarové komponenty) není tak jednoduché, jak bys se mohlo na první pohled zdát. Softwarové komponenty spolu potřebují aktivně a velmi intenzivně komunikovat. Tato komunikace musí být navíc založena na jednoznačných, striktních a široce uznávaných standardech, protože v opačném případě se hned na začátku zřekneme většiny výhod, kterých jsme právě chtěli dosáhnout.

Objevují se proto technologie, které tyto standardy definují. Souhrnně jim říkáme komponentní technologie

Pohled do historie

Abychom dostali určitý náhled na to, z čeho a proč vlastně komponentní technologie vznikly, podívejme se na stručný výlet do historie. Jak se vyvíjely přístupy k vývoji aplikací?

  • První aplikace byly vytvářeny monoliticky. Co to znamená? Monolitická aplikace je vytvořena jedním zdrojovým textem, který implementuje jediný algoritmus. Tento algoritmus může být i velmi složitý, protože je zodpovědný v podstatě za všechno, co po aplikaci žádáme. Programový kód využívá příkazů skoku (např. goto), není dobře čitelný a velmi špatně se udržuje. Po jeho kompilaci vznikne jeden výsledný spustitelný programový soubor.
  • Logickým krokem k odstranění některých nevýhod monolitického přístupu bylo zavedení procedur a funkcí a s ním související nástup strukturovaného programování. Podprogramy umožnily „rozsekat“ aplikaci na menší součásti, dovolily redukovat složitost algoritmu a způsobily zpřehlednění zdrojového kódu.
  • Další fáze je realizována objektovým programováním. Objekty znamenají další krok k vzájemnému oddělení jednotlivých problémů a k izolované implementaci jednotlivých bloků. Objektový přístup navíc umožňuje vytvářet znovupoužitelné knihovny objektů: stále však platí, že výsledná aplikace je vytvořena (=objekty a knihovny jsou použity) ještě před závěrečnou kompilací výsledné aplikace.
  • První mezikrok ke skutečným komponentám tak znamenají DLL (dynamicky linkované) knihovny. Jak už napovídá jejich samotný název, tyto knihovny jsou k aplikaci připojovány až za jejího běhu, což dává programátorům možnost změnit chování aplikace beze změny jejího zdrojového kódu a bez nutnosti provádět opětovnou kompilaci. Stačí přepsat DLL knihovnu nebo použít úplně novou, k aplikaci se pak tato knihovna (která reprezentuje jiné chování nebo nové funkce) připojí až za jejího běhu. DLL knihovny však ještě nepovažujeme za zástupce komponentních technologií, protože stále nesplňují některé požadavky (především v oblasti identifikace a vícenásobného použití).
  • Skutečné „rozsekání“ aplikací do součástek je tak realizováno až s nástupem komponentních technologií. Komponentní program si můžete nejsnáze představit jako program objektový, jednotlivé komponenty pak představují součástky, z nichž se nakonec celá aplikace smontuje. V důsledku tohoto přístupu tak mohou vzniknout programátoři specializující se na psaní určitých komponent, mohou vzniknout také trhy nabízející jednotlivé komponenty atd. Cílem celého komponentního hnutí je přeměnit koncepci „vytváření aplikací“ na „skládání aplikací“, bez ohledu na to, zda si jednotlivé součástky vyrobíme sami (spíše ne) a nebo zda alespoň ty nejdůležitější a nejkomplikovanější koupíme od někoho úplně jiného (spíše ano). V obou případech získáme možnost relativně jednoduše spravovat, modifikovat, přizpůsobovat a opravovat aplikaci pouhou záměnou/výměnou/aktualizací jediné součástky, nejsme nuceni zkoumat celý širý zdrojový kód.

Hned v tomto okamžiku je však nutné jedním dechem dodat, že popsané ideály jsou často pouze v rovině teorií: realita není tak růžová a praxe nefunguje tak snadno. Komponenty jsou sice nezávislé, ale najít takovou, která dělá to, co chceme, vyhovuje rozhraním, které požadujeme, disponuje podporou, kterou potřebujeme a jejíž výrobce je navíc ochoten a schopen realizovat modifikace, po kterých toužíme, je více než složité. To však na obecné koncepci komponentních technologií nic nemění.

Závěrem

Dnes jsme otevřeli svět komponent, komponentních technologií a sestavování softwaru z předem připravených součástek. Tento svět je krásný, ale velmi rozsáhlý, proto nám ještě nějakou dobu potrvá, než jím dokážeme alespoň trochu rozumně projít, nevynechat nic důležitého a přitom přinést jen stravitelné množství informací. Za týden budeme v této procházce pokračovat.

Témata článku: Software, Programování, You, Like, Your, More, Wanted, Motto

4 komentáře

Nejnovější komentáře

  • Adam 18. 9. 2005 12:40:03
    Zkus se zeptat na http://forum.builder.cz/list.php?18
  • tc 18. 9. 2005 3:10:25
    Velmi se omlouvam, ze sem pisu dotaz, jenz je zcela out of topic, ale...
  • net-ray, net-ray 16. 9. 2005 10:02:22
    Jenom bych dodal, ze sluvko "incremetally" v onom anglickem mottu...
reklama
Určitě si přečtěte

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

5.  12.  2016 | Jakub Čížek | 102

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

** Zmizí klasické vyhledávače ** Budeme programovat buňky ** Kvantové počítače překonají šifry

6.  12.  2016 | Jakub Čížek | 36

11 tipů na dobrý stolní počítač: od základu po herní mašiny

11 tipů na dobrý stolní počítač: od základu po herní mašiny

** Postavte si stolní počítač! Máme pro vás 11 vzorových sestav s rozpisem komponent ** Většina tipů cílí na hráče, věnujeme se ale i základnímu PC a počítačům na střih videa ** Nadělte si nový počítač třeba pod stromeček

5.  12.  2016 | Adam Kahánek | 74

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

** V notebooku s cenou nad 20 tisíc nesmí chybět kvalitní displej a rychlé úložiště ** Za dalších deset tisíc můžete dostat navíc styl nebo výkonnější komponenty ** Vybírat můžete z různých velikostí i konstrukcí

8.  12.  2016 | Stanislav Janů | 82


reklama