Table of Contents
20. Metody programování
Klasifikace metod a jejich příklady. Příklady podpůrných prostředků. Příklady jazyků a rysů v jazycích. Posuďte vliv metod a prostředků programování na efektivnost programátorské práce a kvalitu výsledného produktu.
Úloha
Předpoklady: Jste analytikem v projektu implementace stávajícího IS v novém, objektově orientovaném prostředí. Zadavatel je extrémně spokojen s obsahem stávajícího IS a požaduje, aby zůstal v nové implementaci naprosto nezměněn. Stávající systém byl velmi systematicky a velmi úspěšně vyvinut důsledně strukturovaným postupem a je podrobně strukturovaně dokumentován.
Zadání:
- Rozhodněte se, zda bude nutné znovu provádět konceptuální analýzu systému, nebo zda je možné použít strukturovanou specifikaci. Své rozhodnutí zdůvodněte.
- Bude možné se s tím vyrovnat nějak obecně (obecná pravidla vztahu mezi strukturovaným a objektově-orientovaným popisem)? Pokud ano, pokuste se uvést jejich příklad, pokud ne, odůvodněte.
Teorie
Drbal – Základy sotwarového inženýrství str. 23
Programování – prapůvodně nebyly žádné metody a psaní programu byla expertní záležitost jeho autora. Jak se zvyšovala požadovaná složitost, tento přístup byl neudržitelný a vyžadovalo to nové přístupy:
Modulární programování – princip rozdělení problému do jednodušších samostatných mentálně zvládnutelných celků. Není to samostatný princip – zahrnuje několik různých dalších metod:
Normované programování – zahrnovalo v podstatě souhrny větvení podle předchozích stavů uložených v proměnných (prostě zběsilé stromy IFů). Používalo se pro výpočty standardizovaných dávkových úloh. Dnes se příliš nevyužívá
Strukturované programování – má dobré rozpracovaný základ – prof. Dijkstra a Jackson. Program se skládá ze sekvencí, iterací a podmínek a je rozdělen do funkcí na různých úrovních abstrakce. Strukturované programování v sobě dobře inkorporuje vrstevnou architekturu a přináší možnost dobrého mentálního rozdělení problému. Bylo rozpracováno i metodicky – Jackson Structured Programming. Nevýhodou je, že programy jsou odvozené od struktury dat a jsou od dat oddělené. Proto se hodí pro zpracování jednoho druhu dat a jakákoliv změna předpokládá změnu celého systému. Problém je i se znovupoužitelností programového kódu, kterou strukturované programování nepředpokládá, většina programovacích jazyků to řeší nějak proprietálně v podobě knihoven (když knihovní funkce nevyhovuje, musí se celá přepsat). Strukturovaný program někde začíná, něco dělá a někde končí.
Objektově orientované programování přináší spojení kódu s daty – entity zastoupeny objektem a když po něm něco chceme, je nám jedno, jak to udělá. Dědičnost, zapouzdření, polymorfismus. Znovupoužitelnost kódu. Hodí se pro velké úlohy, protože podporuje modularitu řešení, je mu blízké i řízení událostmi. Funkce nemá jeden jasný vstup a výstup, ale objekt má mnoho různých metod. Nevýhodou je poměrně značná systémová režie proti ostatním metodám. Objekt má i vlastní paměť.
Inferenční programování – speciální metoda používaná v AI. Data jsou uložena v podobě tzv. objektů (ty ale nemají metody) a ta procházejí strukturou podmínek. Když nějaká podmínka platí, dojde k nějaké úpravě dat a procházejí se podmínky znovu od začátku. Když neplatí, program končí. Program je de facto daty řízen a má těžko predikovatelný výstup a chování. Hodí se pro specifické úlohy.
Extrémní programování – zvláštní metoda programování, kdy se prostě sbírají požadavky od zákazníků a píše kód, který je zároveň jedinou dokumentací. Kód musí být rovněž neustále testován. Předpokládá to prostředky na vysoké úrovni a chytrého programátora. Pro psaní velkých úloh v rozsáhlých týmech se to moc nehodí. Doporučovaný postup: dva vývojáři – jeden píše, druhý sleduje koncepci.
Podrobný popis strukturovaného 25 a objektového 27.
Použití jednotlivých metod a metodik záleží od charakteru a rozsahu práce, kterou děláme. Pro některé výpočetní úlohy, pro programování her, pro hromadné zpracování dat může být výhodný strukturovaný přístup. Pro většinu interaktivních aplikací se naopak silně vžil přístup objektový. Čím větší projekt, tím větší nárok na metodiku a metody analýzy a projektování.
Praxe
Konceptuální specifikace by měla být zcela nezávislá na jakékoliv technologii, která se na ni použije. Teoreticky by se tedy měla nechat použít. Spíš ta nižší fáze – technologická bude muset být přepracována.
Obecně vzato bych to předělal. Samozřejmě funkce v oblasti strukturovaného programování mají blízko k metodám, data mohou mít podobné členění, využití principu inverze (strukturované) – a spojení s daty. Spousta věcí, jako DFD, ERD diagramy dat, atd. můžou zůstat.
