5. Princ¡py modul rnej vìstavby softv‚ru ---------------------------------------- Pri popise metodol¢gie çtrukt£rovanej analìzy a n vrhu sme hovorili iba o logickom a fyzickom n vrhu sp“sobu realiz cie jednotlivìch syst‚movìch funkci¡ (primit¡vnych procesov). Pred prechodom k etape implement cie je potrebn‚ specifikovaœ, akìm sp“sobom bud£ jednotliv‚ çpecifik cie sp“sobu realiz cie funkci¡ zoskupovan‚ do programovìch modulov. Vìstup f zy fyzick‚ho n vrhu mus¡ obsahovaœ popis i tohoto aspektu. Pri znaŸnom zjednoduçen¡, abstrahuj£c od ohraniŸen¡ prekladaŸov a hardv‚rovìch platforiem, je teoreticky mo§n‚ umiestniœ k¢d realizuj£ci vçetky syst‚mov‚ funkcie do jedin‚ho celku. V tomto pr¡pade vçak £dr§ba a prev dzka tak‚hoto syst‚mu sa st va nezvl dnute–n  i pre jeho tvorcu. Mo§nìm rieçen¡m je rozŸlenenie do menç¡ch celkov - modulov, ktor‚ s£ z h–adiska tvorby, testovania a £dr§by zvl dnute–nejçie. Modul rny pr¡stup k tvorbe softv‚rovìch syst‚mov pon£ka vìhody flexibility syst‚mu. Praktick‚ uplatnenie tohoto pr¡stupu vçak z vis¡ od defin¡cie pojmu modul a çpecifik cie pravidiel dekompoz¡cie do modulov, resp. zoskupovania element rnych funkŸnìch celkov do modulov. Modul je mo§n‚ definovaœ napr. nasledovne: modul je lexik lne s£visl  postupnosœ programovìch konçtrukci¡ s presne definovanìm rozhran¡m na okolie a oznaŸen  spoloŸnìm menom (identifik torom) RozŸlenenie element rnych funkŸnìch celkov do modulov syst‚mu predstavuje d“le§itì moment, ktorì m“§e podstatnìm sp“sobom ovplyvniœ vlastnosti cel‚ho syst‚mu, ako napr. zlo§itosœ testovania a zlo§itosœ £dr§by. Pre "spr vnu" dekompoz¡ciu syst‚mu do modulov bolo definovanìch nieko–ko krit‚ri¡: - koh‚zia (cohesion) definuje stupeå interakcie v r mci modulu. Spr vna dekompoz¡cia syst‚mu by mala maximalizovaœ koh‚ziu modulov. - zviazanosœ (coupling) definuje stupeå medzimodul rnych interakci¡. Spr vna dekompoz¡cia syst‚mu by mala minimalizovaœ medzimodul rne vzœahy. Pri n vrhu dekompoz¡cie syst‚mu na moduly (tzn. n vrhu architekt£ry syst‚mu) je §iad£ce dosahovaœ maxim lnu koh‚ziu a minim lnu medzimodul rnu previazanosœ. Takìto n vrh je mo§n‚ docieliœ predch dzaj£cou funkŸnou analìzou pomocou DFD a n slednou transform ciou funkŸn‚ho modelu syst‚mu do jeho architekt£ry. TransformaŸn  analìza je jednou z techn¡k pre prevod funkŸn‚ho modelu na architektonickì n vrh. Pred bli§ç¡m popisom krit‚ri¡ Ÿlenenia na moduly je vhodn‚ ozrejmiœ rozdiel medzi funkciou modulu, logikou modulu a kontextom modulu. Funkcia modulu reprezentuje t£ Ÿasœ syst‚movìch funkci¡, ktor‚ s£ realizovan‚ danìm modulom. Funkciou modulu M m“§e byœ napr. vìpoŸet druhej odmocniny Ÿ¡sla. Logika modulu definuje sp“sob, akìm je funkcia modulu dosahovan . Pre modul M vìpoŸtu druhej odmocniny reprezentuje jeho logika met¢du, ktor  sa na vìpoŸet druhej odmocniny pou§¡va, napr. Newtonova met¢da. Kontext modulu definuje çpecifick‚ pou§itie modulu. V konkr‚tnom pr¡pade sa modul M m“§e vyu§¡vaœ na vìpoŸet diskriminantu v syst‚me rieçenia kvadratickìch rovn¡c. Pri dekompoz¡cii syst‚mu na moduly sa jednotlivìm modulom priraÔuj£ men . Z sadou je, §e n zov modulu mus¡ vyjadrovaœ funkciu modulu. Logika a kontext modulu je pri pride–ovan¡ n zvu nereleventn . 5.1. Koh‚zia modulov -------------------- Pre moduly je mo§n‚ definovaœ sedem £rovn¡ koh‚zie [Myers:1978], ktor‚ s£ zoraden‚ a ohodnoten‚ pod–a ich vhodnosti, resp. nevhodnosti pre zoskupovanie element rnych funkci¡ do modulov nasledovne: 7. funkŸn  koh‚zia vhodn‚ informaŸn  koh‚zia I p p 5. komunikaŸn  koh‚zia p p 4. procedur lna koh‚zia p p 3. Ÿasov  koh‚zia p p 2. logick  koh‚zia < 1. koincidenŸn  koh‚zia nevhodn‚ Ohodnotenia priraden‚ jednotlivìm typom koh‚zie s£ relat¡vne a zodpovedaj£ §iadate–nosti ich vìskytu v "dobrej" dekompoz¡cii syst‚mu. 1. KoincidenŸn  koh‚zia ----------------------- KoincidenŸn£ koh‚ziu modulu je mo§n‚ identifikovaœ vtedy, ak s£ do modulu zoskupen‚ viacer‚ vz jomne nez visl‚ funkcie. Vonkajç¡ prejav koincidenŸnej koh‚zie bìva obtia§nosœ jednoduch‚ho vyjadrenia funkcie modulu. Modul s koincidenŸnou koh‚ziou bìva bìva pop¡sanì svojou logikou, nie funkciou. Pr¡kladom koincidenŸnej koh‚zie m“§e byœ modul s nasledovnìmi funkciami: - vìpis nasleduj£ceho riadku - obr tenie reœazca - zarovn vanie textu NajŸastejç¡m d“vodom pre vìskyt koincidenŸnej koh‚zie v moduloch bìva po§iadavka vytv rania modulov s predp¡sanou ve–kosœou, napr. 100 a§ 200 riadkov. V tomto pr¡pade sa m“§e staœ, §e dva alebo viac "dobrìch" modulov s malìm rozsahom je zl£Ÿenìch do v„Ÿçieho modulu. OpaŸnì pr¡pad predstavuje "dobrì" modul, ktorì svojim rozsahom presahuje definovan‚ ohraniŸenie. V tomto pr¡pade je modul umelo rozdelenì na viacero menç¡ch modulov. ¬asto sa vyskytuj£cou pr¡Ÿinou vytv rania modulov s koincidenŸnou koh‚ziou je dosiahnutie ohraniŸen¡ vìvojov‚ho alebo technick‚ho prostredia. V tomto pr¡pade je taktie§ potrebn‚ umelo redukovaœ ve–kosœ modulov. V pr¡pade koincidenŸnej koh‚zie je mo§n‚ identifikovvaœ viacero nepriaznivìch n sledkov na vlastnosti syst‚mu. Prvìm z nepriaznivìch d“sledkov je obœia§nejçia £dr§ba a Ôalçie rozçirovanie syst‚mu. Experimenty uk zali, §e v modul rnom syst‚me s koincidenŸnou koh‚ziou je analìza a lokaliz cia chìb obtia§nejçia ako v nemodul rnom syst‚me. Òalçou ne§iadanou vlastnosœou je nemo§nosœ ich op„tovn‚ho vyu§¡vania (reusability). Op„tovn‚ vyu§¡vanie existuj£cich modelov je z kladnìm predpokladom zni§ovania n kladov na vìvoj softv‚ru. KoincidenŸn  koh‚zia zvyçuje n klady na vìvoj syst‚mov. 2. Logick  koh‚zia ------------------ Logick  koh‚zia v module existuje vtedy, ak modul obsahuje spojenie viacerìch s£visiacich funkci¡, z ktorìch v§dy iba jedna je aktivovan . Aby bolo mo§n‚ jednou aktiv ciou potenci lne aktivovaœ vçetky funkcie, je potrebn‚ do aktiv cie zaŸleniœ i inform cie, ktor‚ s£ vyu§¡van‚ v çpecifickìch funkci ch modulu. ¬itate–nosœ modulu sa zni§uje, Ÿo m  za n sledok zvìçenie obtia§nosti £dr§by a identifik cie chìb. Pr¡kladom logickej koh‚zie v module s£ nasleduj£ce funkcie: - vìber z konta (parameter Ÿ¡slo konta) - zistenie akt¡v vkladate–ov (bez parametrov) - pripoŸ¡tavanie £rokov (parameter £rokov  sadzba) Logick  koh‚zia vedie k tvorbe modulov, u ktorìch je pochopenie ich logiky a interfejsu na okolie ve–mi obtia§ne. T to skutoŸnosœ je Ÿastokr t sp“soben  prekrìvan¡m a prepletan¡m k¢du a £dajov vyu§¡vanìch jednotlivìmi funkciami. Je potrebn‚ analyzovaœ i k¢d i d ta, ktor‚ s danou funkciu nes£visia, Ÿo vìrzane zni§uje Ÿitate–nosœ modulov. 3. ¬asov  koh‚zia ----------------- ¬asov  koh‚zia v module znamen  existenciu Ÿasovìch z vislost¡ medzi funkciami zoskupenìmi v module. Funkcie v module s£ s¡ce Ÿasovo z visl‚, ale existuj£ siln‚ funkŸn‚ z vislosti s ostatnìmi modulmi. Pr¡kladom Ÿasovej koh‚zie m“§e byœ modul s nasledovnìmi funkciami: - otvorenie s£boru £dajov - z¡skanie po§adovanìch inform ci¡ - vytlaŸenie vìstupnej zostavy Existencia Ÿasovej koh‚zie sp“sobuje, §e pri modifik cii urŸitej funkcie je potrebn‚ modifikovaœ ve–k‚ mno§stvo modulov, ktor‚ s touto funkciou s£visia. Takìto stav m“§e maœ za n sledok, §e niektor‚ z modulov m“§u byœ pri vykonanej modifik cii prehliadnut‚, s Ÿ¡m s£vis¡ regresia produktu (modifik ciou urŸit‚ho modulu sa poruç¡ funkŸnosœ in‚ho, u§ odladen‚ho modulu). 4. Procedur lna koh‚zia ----------------------- Procedur lna koh‚zia znamen  zoskupovanie element rnych funkci¡ do modulov na z klade proced£r (postupnost¡ aktiv¡t) vykon vanìch v syst‚me. Tento typ koh‚zie je evidentne lepç¡, ako Ÿasov  koh‚zia. Pr¡kladom procedur lnej koh‚zie m“§e byœ: - naŸ¡tanie z znamu zo s£boru1 - zodpovedaj£ca modifik cia z znamu v s£bore2 V pr¡pade procedur lnej koh‚zie zoskupen‚ funkcie spolu istìm sp“sobom s£visia, nie s£ iba vykon van‚ v rovnakom Ÿase. No i v tomto pr¡pade s£ funkcie v„Ÿçinou slabo viazan‚, Ÿo zni§uje mo§nosœ op„tovn‚ho pou§itia modulov s procedur lnou koh‚ziou. 5. KomunikaŸn  koh‚zia ---------------------- KomunikaŸn  koh‚zia predstavuje rozç¡renie procedur lnej koh‚zie v tom, §e vçetky funkcie v module pracuj£ s rovnakìmi £dajmi. Pr¡kladom komunikaŸnej koh‚zie m“§e byœ modul s funkciami: - vypoŸ¡taj dr hu telesa - vyp¡ç dr hu telesa na tlaŸiareå Takìto sp“sob v„zby funkci¡ je vìhodnejç¡ ako procedur lna koh‚zia, preto§e funkcie s£ vz jomne viac viazan‚. St le vçak nie s£ vz jomne viazan‚ nato–ko, aby bolo mo§n‚ modul viacn sobne (op„tovne) vyu§¡vaœ. V s£vislosti s Ÿasovou, procedur lnou a komunikaŸnou koh‚ziou sa zav dza pojem "flowchart" koh‚zia. Tento typ koh‚zie vznik  umiestnen¡m funkci¡ z vìvojov‚ho diagramu do jedn‚ho modulu. Tieto funkcie s£ Ÿasovo z visl‚, preto§e s£ vykon van‚ v rovnakom Ÿase. S£ taktie§ procedur lne z visl‚, preto§e algoritmus reprezentovanì vìvojovìm diagramom definuje ich postupnosœ aktiv cie. KomunikaŸn  koh‚zia je dan  spracovan¡m spoloŸnìch inform ci¡, ktor‚ s£ v danom vìvojovom diagrame spracov van‚. 6. InformaŸn  koh‚zia --------------------- InformaŸn  koh‚zia modulu znamen , §e modul pozost va z viacerìch funkci¡, z ktorìch ka§d  m  svoj vstupnì bod, nez vislì k¢d, priŸom vçetky spracov vaj£ spoloŸn‚ £daje. InformaŸn  koh‚zia nie je v rozpore zo z sadami çtrukt£rovan‚ho programovania, preto§e ka§dì modul m  pr ve jeden vstupnì a jeden vìstupnì bod. Vìhodou oproti logickej koh‚zii je i skutoŸnosœ, §e jednotliv‚ funkcie modulu s£ nez visl‚, tzn. k¢d nie je prekrìvanì a prepletanì. Modul s informaŸnou koh‚ziou je v z sade implement ciou abstraktn‚ho £dajov‚ho typu. 7. FunkŸn  koh‚zia ------------------ O funkŸnej koh‚zii je mo§n‚ hovoriœ vtedy, ak modul realizuje pr ve jednu funkciu, alebo ak modul rieçi jeden cie–. Takìto modul je mo§n‚ viacn sobne (op„tovne) vyu§iœ. Dobre definovanì a zdokumentovanì modul s funkŸnou koh‚ziou je mo§n‚ vyu§¡vaœ vo viacerìch syst‚moch. édr§ba takìchto modulov je jednoduchçia. V z sade je mo§n‚ tvrdiœ, §e funkŸn  koh‚zia vedie k izol cii chìb. KeÔ§e funkŸn  koh‚zia predstavuje najvyçç¡ stupeå koh‚zie, pochopenie funkcie modulu je jednoduhçie. Tìm je u–ahŸen  lokaliz cia chyby. FunkŸn  koh‚zia z roveå zjednoduçuje i odstraåovanie chìb, preto§e je potrebn‚ modifikovaœ iba jeden modul. Podobne vìhodn‚ vlastnosti vykazuje funkŸn  koh‚zia i vzh–adom k Ôalçiemu rozçirovaniu syst‚mu. Pr¡klad dekompoz¡cie syst‚mu na moduly s identifik ciu typu koh‚zie v jednotlivìch moduloch je ilustrovanì na OBR.5.1. OBR.5.1. koh‚zia 5.2. Zviazanosœ modulov ----------------------- Zviazanosœ definuje typ a rozsah interakci¡ medzi modulmi. Podobne ako pri koh‚zii, mo§no i pre zviazanosœ definovaœ viacer‚ typy. Miera ich §iadanosti v dekompoz¡cii syst‚mu je nasledovn : 5. d tov  zviazanosœ vhodn‚ 4. parci lna d tov  zviazanosœ 3. riadiaca zviazanosœ 2. glob lna zviazanosœ 1. obsahov  zviazanosœ nevhodn‚ Obsahov  zviazanosœ ------------------- O obsahovej zviazanosti dvoch modulov je mo§n‚ vravieœ vtedy, ak jeden modul priamo referencuje obsah druh‚ho. Pr¡klady obsahovej zviazanosti s£ nasledovn‚: 1. Modul A modifikuje pr¡kazy modulu B 2. Modul A referencuje lok lne d ta v module B, napr. pomocou relat¡vnej adresy s b zovou adresou modulu B 3. Modul A odovzd va riadenie na n vestie v module B Obsahov  zviazanosœ vy§aduje pri akejko–vek zmene modulu vykonaœ zodpovedaj£ce zmeny i v ostatnìch moduloch. Vytvorenie obsahovej zviazanosti je jednoduch‚ v programovac¡ch jazykoch ni§çej £rovne. Vo vyççich programovac¡ch jazykoch je vytvorenie takejto v„zby obtia§nejçie. Jazyky vyççej £rovne s£ v„Ÿçinou budovan‚ na princ¡poch çtrukt£rovan‚ho programovania, zatia– co obsahov  zviazanosœ tìmto princ¡pom protireŸ¡. Glob lna zviazanosœ ------------------- Dva moduly s£ glob lne viazan‚ ak oba referencuj£ spoloŸn‚ glob lne £daje. Namiesto vz jomnej komunik cie pomocou parametrov, glob lne viazan‚ moduly komunikuj£ pomocou spr¡stupåovania a modifik cie glob lnych premennìch. V pr¡pade, §e niektorì z modulov glob lnu premenn£ nem“§e modifikovaœ, nejedn  sa o glob lnu v„zbu. Typickìm sp“sobom dosahovania glob lnej v„zby medzi modulmi je napr. pou§itie COMMON konçtrukcie vo Fortrane, alebo pou§itie glob lnej premennej v Pascale. Pou§itie glob lnej zviazanosti nie je §iad£ce z viacerìch d“vodov. Prvìm z nich je rozpor s princ¡pmi çtrukt£rovan‚ho programovania. Chyby v syst‚moch s glob lnou v„zbou sa œa§ko lokalizuj£, preto§e je obtia§ne zistiœ, ktorì modul priradil glob lnym £dajom nespr vnu hodnotu. Druhìm z d“vodov je existencia ved–ajç¡ch efektov aktiv cie modulov. Aktiv cia modulu na z klade vstupnìch premennìch generuje vìstup, no modifikuje glob lne premenn‚, ktor‚ nie s£ explicitn‚ vìstupy modulu. Existencia ved–ajç¡ch efektov zni§uje Ÿitate–nosœ modulov, s n slednìm zhorçen¡m vlastnost¡ syst‚mu pri jeho £dr§be a Ôalçom rozçirovan¡. Tret¡m d“vodom je z vislosœ glob lne viazanìch modulov na zmen ch deklar cie glob lnych premennìch. V pr¡pade, §e modifik cia jedn‚ho modulu vy§aduje modifik ciu deklar cie glob lnych £dajov, je potrebn‚ t£to modifik ciu vykonaœ vo vçetkìch moduloch referencuj£cich modifikovan‚ glob lne £daje. ætvrtìm d“vodom je obtia§ne zakomponovanie existuj£cich glob lne viazanìch modulov do novo vytv ranìch aplik ci¡. V pr¡pade pou§itia modulu je potrebn‚ do novo vytv ran‚ho syst‚mu zahrn£œ identickì zoznam glob lnych premennìch. Piatym, a mo§no najz va§nejç¡m, d“vodom je pr¡stup modulu ku vçetkìm spoloŸnìm £dajom, hoci danì modul vyu§¡va iba mal£ Ÿasœ z nich. T to vlastnosœ je v rozpore s po§iadavkou na selekt¡vny pr¡stup k riadiacim £dajom a m“§e maœ za n sledok poŸ¡taŸov£ kriiminalitu. Program tor i mal‚ho a bezvìznamn‚ho modulu m  pr¡stup ku vçetkìm £dajom a niŸ mu nebr ni v r mci dan‚ho modulu vykon vaœ z sadn‚ z sahy do spracovania v syst‚me. Predch dzaj£ce argumenty jasne a presvedŸivo hovorili proti pou§itiu glob lnej v„zby medzi modulmi. V urŸitìch pr¡padoch vçak takìto typ v„zby m“§e byœ vhodnì. Ak napr. existuje rozsiahly s£bor £dajov, ktor‚ s£ pou§¡van‚ vo vçetkìch moduloch syst‚mu. Odovzd vanie rozsiahleho syst‚mu parametrov vo vçetkìch moduloch je potenci lnym miestom vzniku chìb. V tomto pr¡pade je pou§itie glob lnej zviazanosti mo§n‚, no treba si uvedomiœ jeho mo§n‚ negat¡vne n sledky a prijaœ prevent¡vne opatrenia na ich minimaliz ciu. Riadiaca zviazanosœ ------------------- Medzi dvoma modulmi existuje riadiaca zviazanosœ vtedy, ak jeden modul odovzd va element riadenia druh‚mu, tzn. jeden modul riadi logiku druh‚ho modulu. Pr¡kladom riadiacej v„zby m“§e byœ odovzd vanie k¢du funkcie modulu s logockou koh‚ziou, alebo odovzd vanie hodnoty prep¡naŸa modulu. V pr¡pade analìzy riadiacej v„zby je potrebn‚ rozl¡çiœ, akìm sp“sobom sa v module interpretuje odovzd van  inform cia. V pr¡pade, §e modul A aktivuje modul B a tento modul vracia hodnotu pr¡znaku identifikuj£cu "Nem“§em vykonaœ ulohu", potom modul B odovzd va £daje, tzn. modul B posiela £daje a modul A na z klade tìchto £dajov rozhodne o Ôalçej akcii. Dan  v„zba nie je riadiaca. In  situ cia nast va vtedy, ak interpret cia £dajov je nasledovn : "Nem“§em vykonaœ ulohu, vyp¡ç chybov‚ hl senie PQR123". V tomto pr¡pade modul B neodovzd va iba £daje, ale poskytuje i inform ciu o tom, akk£ dalçiu Ÿinnosœ m  modul B vykonaœ. Jedn  sa preto o riadiacu v„zbu. Hlavnìm probl‚mom pri riadiacej v„zbe je skutoŸnosœ, §e moduly nie s£ £plne nez visl‚. Riadiaci modul mus¡ maœ inform cie o logike riaden‚ho modulu. Ako n sledok kles  Ÿitate–nosœ modulov a taktie§ mo§nosœ viacn sobn‚ho vyu§¡vania modulov v r“znych produktoch. Riadiaca v„zba je vo v„Ÿçine pr¡padov spojen  s logickou koh‚ziou v riadenom module. Probl‚my s tìmto typom koh‚zie sa pravdepodobne vyskytn£ taktie§. Parci lna d tov  zviazanosœ --------------------------- Programovacie jazyky umo§åuj£ odovzd vanie parametrov pri aktiv cii jednotlivìch modulov. Parametrami nemusia byœ iba jednoduch‚ £daje (hodnoty), no i cel‚ £dajov‚ çtrukt£ry (z znamy, polia). Parci lna d tov  zviazanosœ medzi modulmi existuje vtedy, ak volanì modul vyu§¡va iba niektor‚ komponenty parametra, ktorì je mu pri aktiv cii volaj£cim modulom poskytnut . Pr¡kladom parci lnej d tovej viazanosti m“§e byœ modul pre vìpoŸet mesaŸnej mzdy pracovn¡ka. AktivaŸnìm parametrom modulu je z znam o pracovn¡kovi obsahuj£ci jeho meno, adresu, z kladnì mesaŸnì pr¡jem, vìkony za predch dzaj£ci mesiac atÔ. Pre vìpoŸet mzdy s£ potrebn‚ iba £daje o z kladnom pr¡jme a vìkonoch. V tomto pr¡pade s£ £daje o mene a adrese pracovn¡ka pre danì modul nerelevantn‚. Analogicky ako pri glob lnej zviazanosti existuje probl‚m nekontrolovate–n‚ho pr¡stupu k £dajom. Pre identifik ciu pou§¡vanìch a modifikovanìch komponentov parametra je potrebn‚ prech dzaœ celì modul. Parameter aktiv cie modulu nie je dostatoŸnou inform ciou o £dajoch, ktor‚ sa skutoŸne medzi volaj£cim a volanìm modulom odovzd vaj£, tzn. ktor‚ sa vyu§¡vaj£ alebo modifikuj£. In  forma parametrickej d tovej v„zby sa vyskytuje pri odovzd van¡ smern¡ka ako parametra aktiv cie. Hoci sa v tomto pr¡pade jedn  o jednoduch£ hodnotu, t to hodnota referencuje rozsiahlu £dajov£ strukt£ru a teda existuje mo§nosœ vìskytu parci lnej d tovej v„zby. D tov  zviazanosœ ----------------- D tov  v„zba medzi modulmi existuje vtedy, ak si moduly odovzd vaj£ buÔ jednoduch‚ parametre, alebo zlo§en‚ parametre, ktorìch vçetky polo§ky s£ vo volanom module referencovan‚. Dekompoz¡cia na moduly s d tovou v„zbou je cie–om ka§d‚ho architektonick‚ho n vrhu. V moduloch s d tovou v„zbou sa nevyskytuj£ probl‚my, o ktorìch sme vraveli u parci lnej d tovej, riadiacej, glob lnej a obsahovej v„zby. D tov  v„zba vìrazne zni§uje mo§nosœ vìskytu regresnìch chìb. Pre ilustr ciu v„zieb medzi modulmi uva§ujme syst‚m s medzimodul rnymi interfejsami ilustrovanìmi na OBR.5.2. V tabu–ke na OBR.5.3. s£ uveden‚ parametre, pomocou ktorìch medzi sebou jednotliv‚ moduly komunikuj£. V nasleduj£com pop¡çeme typy v„zieb medzi modulmi. OBR.5.2. hierarchia modulov OBR.5.3. parametre a typy v„zieb P -L Q - d tov  v„zba, preto§e sa komunikuje pomocou parametra s jednoduchou hodnotou. P -L S - t to v„zba by mohla byœ d tovou v tom pr¡pade, §e vçetky prvky zoznamu odovzd van‚ho modulom S sa n sledne spracov vaj£. V„zba je vçak parci lne d tov , ak sa nespracov vaj£ vçetky prvky zoznamu. Q -L R - v„zba je riadiaca, preto§e sa odovzd va k¢d funkcie Q -L S - t to v„zba by mohla byœ d tovou v tom pr¡pade, §e vçetky prvky zoznamu odovzd van‚ho modulom S sa n sledne spracov vaj£. V„zba je vçak parci lne d tov , ak sa nespracov vaj£ vçetky prvky zoznamu. R -L T - d tov  v„zba, preto§e sa komunikuje pomocou parametra s jednoduchou hodnotou. S -L U - d tov  v„zba, preto§e sa komunikuje pomocou parametra s jednoduchou hodnotou. Na OBR.5.3. s£ 3 v„zby medzi modulmi oznaŸen‚ ako glob lne. Jedn  sa o v„zby medzi modulmi P -L T, P -L U a T -L U. V„zby medzi tìmito modulmi nie s£ evidentn‚ z OBR.5.2. Mezi tìmito modulmi vçak nie je definovan‚ ziadne priame spojenie, preto je opodstatnen‚ predpokladaœ, §e tieto moduly bud£ komunikovaœ prostredn¡ctvom glob lnych £dajov. 5.3. Rozsah a zlo§itosœ modulov ------------------------------- Spr vna dekompoz¡cia syst‚mu na moduly by v prvom rade mala podporovaœ Ÿitate–nosœ a £dr§bu syst‚mu. S tìmito vlastnosœami bezprostredne s£vis¡ rozsah a zlo§itosœ jednotlivìch modulov. Rozsah modulu sa ch pe ako poŸet zdrojovìch riadkov k¢du modulu. Snaha o zvyçovanie Ÿitate–nosti modulov vedie k zmençovaniu rozsahu modulov. Zni§ovan¡m rozsahu vçak rastie poŸet medzimodul rnych v„zieb, Ÿ¡m sa op„œ zhorçuje Ÿitate–nosœ a pochopite–nosœ cel‚ho syst‚mu. Kompromisom, rozç¡rene pou§¡vanìm v praxi, je rozsah modulu ohraniŸenì pribli§ne na jednu stranu. Rozsah modulu by vçak mal predovçetkìm z visieœ od v„zieb a koh‚zie, nie striktne od poŸtu riadkov k¢du. Zlo§itosœ mo§no definovaœ ako £silie potrebn‚ na pochopenie logiky programu. Zlo§itosœ preto priamo determinuje £dr§bu produktu. Z tohoto h–adiska sa najm„ pri v„Ÿç¡ch syst‚moch kladie d“raz na jednoduchosœ logiky modulov. Zakazuje sa pou§¡vanie "program torskìch trikov", ktor‚ zlo§itosœ vìrazne zvyçuj£. 5.4. Objektovo-orientovanì n vrh -------------------------------- Jeden z mo§nìch pr¡stupov k vytv raniu n vrhu syst‚mu vyznaŸuj£ceho sa silnou vn£tromodul rnou v„zbou a minimaliz ciou medzimodul rnych v„zieb je objektovo-orientovanì n vrh. Podstatou objektovo orientovan‚ho n vrhu je r“zna £roveå abstrakcie, na ktorej sa syst‚m navrhuje. Abstrakcia vych dza z defin¡cie z kladnìch £dajovìch çtrukt£r a oper ci¡ nad nimi, ktor‚ na danej £rovni syst‚m spracov va. Abstrakciu a vytv ranie vyçç¡ch £rovn¡ abstrakcie pomocou ni§ç¡ch je mo§n‚ ilustrovaœ na pr¡klade poŸ¡taŸov‚ho syst‚mu:w éroveå 5: probl‚movo orientovanì programovac¡ jazyk éroveå 4: assembler éroveå 3: operaŸnì syst‚m éroveå 2: strojovì k¢d éroveå 1: mikroprogramy éroveå 0: digit lna logika Pri objektovom n vrhu sa vytv ra model syst‚mu na urŸitej £rovni abstrakcie. Pre tento model sa definuj£ spracov van‚ udajov‚ çtrukt£ry a oper cie nad nimi, ktor‚ s£ potrebn‚ k modelovaniu. Model je n sledne transformovanì na ni§çiu £roveå, priŸom je potrebn‚ definovaœ: - sp“sob implement cie £dajovìch çtrukt£r pomocou £dajovìch çtrukt£r pou§¡vanìch ni§çou £rovåou abstrakcie - sp“sob implement cie proced£r pomocou proced£r definovanìch na ni§çej £rovni abstrakcie Objektovo-orientovanì n vrh umo§åuje vytv raœ hierarchick£ dekompoz¡ciu syst‚mu, ktor‚ pre ka§dì typ spracov vanìch inform ci¡ priraÔuje samostatnì modul. Takìto pr¡stup sa vyznaŸuje d tovou v„zbou a informaŸnou koh‚ziou. Z kladnìmi princ¡pmi s£ enkapsul cia £dajov a skrìvanie detailov. Enkapsul cia £dajov znamen  zoskupenie spolu s£visiacich £dajov (napr. objedn vky) do jedn‚ho modulu, ktorì naviac obsahuje vçetky oper cie nad danìmi £dajmi. Enkapsul cia na viacerìch hierarchickìch £rovniach umo§åuje zachovanie integrity £dajov a vyluŸuje mo§nosœ regresnìch chìb. Skrìvanie detailov znamen  definovanie presn‚ho interfejsu s okol¡m, priŸom detaily implement cie £dajov, realiz cie proced£r a intern‚ funkcie modulu ost vaj£ pred okol¡m skryt‚. Tento pr¡stup taktie§ zni§uje mo§nosœ vìskytu regresnìch chìb a zlepçuje £dr§bu syst‚mu.