Software versus plynový sporák

Co je software? Na první pohled by se mohlo zdát, že software je výrobek jako každý jiný: jako plynový sporák, osobní automobil, walkman, počítač, postel, mobilní telefon. Pohled druhý však odhalí, že tato představa je velmi zkreslená. Software se odlišuje způsobem používání a tedy také procesem vývoje.
Možná jste si všimli, že v předchozím textu jsem používal výhradně pojem „software“ a důsledně se vyhýbal výrazům jako „program“, „produkt“ či „systém“. V tomto případě to ovšem není kritickým nedostatkem mé fantazie. Důvod je jiný – pojem „software“ totiž zahrnuje všechny zmíněné výrazy, proto jej lze používat zcela obecně. Každé z označení program, produkt, systém však znamená něco trochu jiného.

Program je „obyčejným“ softwarovým výrobkem, programovaným obvykle na zakázku a nebo splňujícím nějakou konkrétní požadovanou funkci. Můžeme používat program, který nějak manipuluje se soubory, vlastníme program pro převod textu z jednoho kódování do jiného, napsali jsme si program pro konverzi z formátu TeX do HTML. Program je zkrátka kýmsi vytvořen, může být prodán a v nejpříznivějším případě je i používán. Toť vše.

Produkt je již trochu „vyšší“ formou. V zásadě pro něj platí totéž, co pro program, ale liší se v několika bodech. Předně – v průběhu jeho vývoje byly uplatněny některé softwarově-inženýrské techniky, například byla zpracována podrobná analýza, po skončení vývoje produkt prošel důkladným testováním, apod. Softwarový proces by měl být minimálně na úrovni „opakovatelný“, tedy měl by být dostatečně zdokumentován a standardizován, tak, aby bylo možné jej v případě potřeby zopakovat – nebo alespoň rekonstruovat:) Produkt je prodáván zásadně s dokumentací, měl by obsahovat i nápovědu a možnost uživatelské podpory.

Systém (nemyslí se operační systém, ale prostě programový systém) je nevyšší formou softwaru. Kromě toho, že splňuje všechny parametry specifikované u produktu, má navíc jednu velmi podstatnou vlastnost: obsahuje nějakou formu interakce, komunikace s okolím. Může se jednat o kompatibilitu s jinými datovými formáty, může se jednat o rozhraní pro nejrůznější konverze, hodně sofistikované systémy mohou třeba přímo komunikovat s okolím prostřednictvím standardních (či privátních) protokolů. Samozřejmostí by měl být kvalitní softwarový proces včetně technik pro zajištění kvality (Quality Assurance).

Tolik tedy k označování různých druhů softwaru. Sami si nyní můžete zkusit „zaškatulkovat“ některé programy, produkty či systémy, které používáte. Máte-li chuť, můžete se s ostatními čtenáři podělit o výsledky svých průzkumů:)

Jak ale měřit kvalitu softwaru? Sporák můžete porovnat s jinými sporáky, ale program? Každý program je zaměřen na něco jiné a sleduje jiné cíle. Navíc software je (skoro:)) vždy vytvořen podle zákazníkova zadání. I zdánlivě špatný, zbytečný a nesmyslný program tedy může být velmi pozitivně hodnocen a denně využíván. A přesto by ve srovnání s jinými programy téže funkce pohořel. Pokud jej jeho uživatel pozitivně hodnotí, splnil svůj účel a můžeme jej považovat za kvalitní, i když veškerá objektivní měřítka hovoří o opaku. A stejně to platí naopak – skvělý program, který dělá něco jiného než má, bude zatracen i přes použití geniálního algoritmu.

Kvalitu software je tedy možné měřit jen ve vztahu k očekáváním, která na něj klade jeho uživatel. Nesmyslná je také věta „Petr minulý týden napsal mnohem lepší program než je systém od firmy X“. Nesmyslná je proto, že Petr napsal program, zatímco firma vyprodukovala systém. Petrův program možná dělá jednu funkci lépe než zmíněný systém, ale určitě nesplňuje všechny požadavky na komunikaci s okolím, na přenositelnost, kompatibilitu, apod.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,