Software Engineering
Programování je umění - tak to alespoň tvrdí mnozí, kteří se programováním zabývají. Přitom mají v mnohém pravdu, programování skutečně může být uměním - dokud jsou vytvářené programy takového rozsahu, že je bez problémů zvládne napsat jediný člověk, v dostatečně krátkém čase, a navíc za takovým účelem, kdy "krása a elegance" je ceněna více než funkčnost a hlavně spolehlivost celého programu. Jde vlastně o takové programování, které by bylo možno s jistou mírou nadsázky označit jako "programování v malém".
Ale jak to potom vypadá s "programováním ve velkém"? Jak dopadají velké softwarové projekty, na kterých musí spolupracovat celé týmy programátorů a dalších odborníků a na jejichž výsledku pak mnohdy bytostně závisí normální fungování nejrůznějších úřadů, nemocnic, letišť, továren a kdoví čeho ještě? Dopadají většinou naprosto stejně jako mnohé projekty srovnatelného rozsahu v různých průmyslových odvětvích - například ve stavebnictví, strojírenství, zemědělství apod. Tedy končí později, než předpoklád al původní plán, stojí více, než na kolik zněl původní rozpočet, a mnohdy ani příliš nesplňují představy toho, kdo jejich vypracování zadal. Dokonce jsou známy i takové softwarové projekty velkého rozsahu, které musely být ještě v průběhu svého řešení zcela zrušeny; již proinvestované prostředky pak bylo třeba jednoduše odepsat. Ve světle skutečného postupu realizačních prací se totiž ukázalo, že původní odhady složitosti, pracnosti a náročnosti těchto projektů (včetně finanční náročnosti) jsou zpracovány "špatně" ne o nějaká malá procenta či desítky procent, ale o celé tisíce procent!
Jak se ale takových situací vyvarovat? Jak zajistit, aby i "programování ve velkém" dopadalo dobře, aby výsledky splňovaly představy zákazníka i dodavatele a měly dostatečnou kvalitu?
Mnozí významní lidé kolem počítačů si poměrně brzy uvědomili, že cesta vede jedině přes utužení disciplíny neboli přes zavedení určitého řádu a přes aplikaci systematických metod a postupů do toho, co bylo až do té doby chápáno spíše jako umělecká záležitost, stojící na individuálních schopnostech jedinců - zvláště pak, jde-li o softwarové projekty většího kalibru. Tento tlak vyšel poněkud překvapivě z akademických kruhů, koncem šedesátých a počátkem sedmdesátých let, a souvisel jistě i s tím, že práv ě v té době se objevovaly takové prostředky a metodologie, které většímu dodržování disciplíny v programování vycházely účinně vstříc (viz minulý příspěvek na téma "Strukturované programování").
Myšlenka, na které bylo navrhované řešení postaveno, je velmi jednoduchá - nechť se i při řešení velkých softwarových projektů důsledně uplatňují takové postupy a metody, které se v jiných oblastech průmyslu úspěšně používají pro řešení projektů srovnatelného či ještě většího rozsahu. Dovedeno téměř ad absurdum: udělejme z "programování ve velkém" průmyslovou výrobu, a používejme pak obdobné nástroje a postupy, jaké se používají tam. Samozřejmě se vším, co k tomu patří - od důkladné analýzy potřeb zad avatele přes projekční fáze, organizační a řídicí postupy při vlastní realizaci, pro důslednou kontrolu kvality, testování, školení uživatelů, řízený přechod na používání nového systému, podporu při provozu atd.
Jde tedy vlastně o důslednou aplikaci vědeckých poznatků, znalostí, postupů a zásad při programování ve velkém a o ústup od nesystematického přístupu ve stylu "programování je umění". Jde tedy o aplikaci toho, čemu se v angličtině obvykle říká dosti široce "engineering" a co se pak, aplikováno na tvorbu programových celků, označuje jako software engineering (neboli softwarové inženýrství).