1 / 80

MODULĀRA PROGRAMMATŪRAS IZSTRĀDE

MODULĀRA PROGRAMMATŪRAS IZSTRĀDE. Pieci kritēriji, kas saistīti ar modularitāti: Dekompozīcija Kompozīcija Saprotamība Nepārtrauktība (turpināmība) Aizsardzība. DEKOMPOZĪCIJA. Moduļi. Problēmas sākotnējais apraksts. DEKOMPOZĪCIJAS PIEMĒRS - lejupejošā programmēšana.

gita
Download Presentation

MODULĀRA PROGRAMMATŪRAS IZSTRĀDE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MODULĀRA PROGRAMMATŪRAS IZSTRĀDE • Pieci kritēriji, kas saistīti ar modularitāti: • Dekompozīcija • Kompozīcija • Saprotamība • Nepārtrauktība (turpināmība) • Aizsardzība

  2. DEKOMPOZĪCIJA Moduļi Problēmas sākotnējais apraksts

  3. DEKOMPOZĪCIJAS PIEMĒRS - lejupejošā programmēšana Pretpiemērs : inicializācijas modulis

  4. KOMPOZĪCIJA

  5. KOMPOZĪCIJA Apakšprogrammu un komponenšu bibliotēkas. VCL Pretpiemērs : preprocesori Neatkarīgs no iepriekšējā – var strādāt pretī (lejupejošā progr. nerūpējas, lai varētu lietot citās kombinācijās)

  6. SAPROTAMĪBA ? Cilvēkam jābūt skaidram ko dara tikai no šī, vai sliktākajā – no tuvākās apkārtnes. Jāvar saprast, ko dara modulis bez moduļa iekšējās uzbūves zināšanām Pretpiemērs: pēc kārtas izpildošos moduļu atkarības.

  7. NEPĀRTRAUKTĪBA (TURPINĀMĪBA) Arhitektūra Specifikācija Līdzība ar nepārtrauktu funkciju - mazas argumenta izmaiņas izraisa (lielas,nelielas?) funkcijas vērtības izmaiņas Simboliskās konstantes Pretpiemēri: Datu fizikālās reprezentācijas izmantošana Statiskie masīvi

  8. AIZSARDZĪBA Kļūdu apstrāde notiek tajā pašā modulī Nenormālas izpildes laika situācijas tiek apstrādātas vienā vai dažos moduļos.

  9. MODULARITĀTE • Pieci principi, kas saistīti ar modularitāti: • Lingvistiskas modulāras vienības • Maz saskarņu • Mazas saskarnes • Skaidri noteiktas saskarnes • Informācijas slēpšana (aizsardzība?)

  10. LINGVISTISKĀS VIENĪBAS • Moduļiem jāatbilst valodā lietotajām sintaktiskajām vienībām. • Var būt • programmēšanas valoda • (tad moduļiem jābūt atsevišķi kompilējamiem), • programmas izstrādes valoda, • specifikāciju valoda.

  11. MAZ SASKARŅU Katram modulim jāsadarbojas ar tik maz citiem moduļiem, cik vien iespējams. n-1 n n*(n-1)/2 Ja pārāk daudz, tad izmaiņas vienā var ietekmēt ļoti daudz citus.

  12. SASKARNES Ja divi moduļi vispār sadarbojas, tad apmaināmās informācijas daudzumam jābūt pēc iespējas mazākam. • Maz, mazas, skaidri noteiktas

  13. SKAIDRI FORMULĒTAS SASKARNES Ja divi moduļi A un B sadarbojas, tam jābūt acīmredzamam no viena vai abu moduļu teksta. Netiešā sasaiste: x A B izmanto maina

  14. INFORMĀCIJAS AIZSARDZĪBA Informācijai par moduli jābūt moduļa iekšējai (privātai) lietai izņemot kādu daļu, kas apzināti deklarēta kā publiska. Publiskā daļa Slēptā daļa Saskarne. Interface/Implementation. Funkcijas nodalīšana no tās realizācijas.

  15. INFORMĀCIJAS SLĒPŠANA (VAI AIZSARDZĪBA?) • Padara moduļa implementācijas detaļas nepieejamas (noslēptas no) citiem moduļiem. • Priekšrocības: • modulis tiek pasargāts pret iejaukšanos no ārienes • citiem moduļiem nav jāzin attiecīgā moduļa implementācijas detaļas • modifikācija skar tikai vienu moduli

  16. ATVĒRTI UN SLĒGTI MODUĻI • Atvērts, ja tas ir pieejams labojumiem. • Slēgts, ja stabils, notestēts un lietojams.

  17. MODUĻU VIENOTĪBA UN SASAISTE • Darbību atkarība moduļa iekšienē nosaka tā vienotību (cohesion). • Vienotība ir “līme”, kas satur moduli kopā. • Divi moduļi ir neatkarīgi, ja tie var pareizi funkcionēt viens bez otra un tie nav saistīti. • Savienojumu (interconnections) daudzums divu moduļu starpā nosaka to sasaisti (coupling).

  18. MODUĻA VIENOTĪBA labi • Funkcionāla • Secības • Komunikācijas • Procedurāla • Laicīga • Loģiska • Gadījuma slikti

  19. GADĪJUMA VIENOTĪBA • Elementiem ir/nav acīmredzamas sakarības savā starpā • float sub1 (int i, float a, float b, char *d) • {static int count = 0; • cout << a << “ un “ << b << “ summa ir “; • cout << a+b; • count++; • return ((float)i);} • Sešu-collu pieeja : Menedžeris lika sadalīt, programmētājs ik pēc sešām collām novelk līniju un iegūto noformē kā apakšprogrammu. • Degradē pavadīšanas jēgu (nepieciešamas būtiskas korekcijas) “Modularizēšana ar nejaušu vienotību ir sliktāka par nemodularizēšanu vispār.” /Šneidermans un Meijers, 1975/ Grūti pavadīt un uzlabot, nav atkārtoti izmantojams

  20. LOĢISKĀ VIENOTĪBA • Modulis satur vairākas savā starpā saistītas darbības. Veiktā darbība ir atkarīga no parametra(u) vērtības(ām). • void sub2 (int k, float a, float b, char type) • {switch (type) • {case ‘a’: cout << a+b; break; • case ‘b’: ... ieraksta summu diskā .... • case ‘c’: cout << k++; break; • } • return ; • } • Grūti saprast, pavadīt un atkārtoti izmantot • Ja jāizpilda vairākas no dotajām darbībām, kods var būt “savērpts” Lieto, lai izmantotu vienus un tos pašus buferus, kādu koda gabalu. Piemēram, visas funkcijas ar izvadfailu

  21. LAICĪGĀ VIENOTĪBA • Elementi ir saistīti tikai tāpēc, ka izpildes laikā šīs darbības jāveic kādā noteiktā brīdī (piem., inicializācija, procesa beigas) • void sub3 (int k, float a, FILE *dfile) • {cout << “Virsraksts \n”; • k = 0; // Inicializācija • a = 0.0; • dfile = fopen (“Data.dat”,”r”); • return ; • } • Grūti pavadīt un atkārtoti izmantot • Viegli nepamanīt kādu niansi pārrakstot

  22. PROCEDURĀLĀ VIENOTĪBA • Veic darbību virkni kas atbilst veicamajiem soļiem “dabā” • NOVILKT IELAS APAVUS • UZVILKT MĀJAS ČĪBAS • NOMAZGĀT NETĪROS TRAUKUS • UZSILDĪT KARTUPEĻUS • APĒST KARTUPEĻUS • IESLĒGT TELEVIZORU

  23. PROCEDURĀLĀ VIENOTĪBA (TURP.) • Elementi atbilst dažādām aktivitātēm • Kontekstā izskatās sakarīgi • Ja izrauti no konteksta, tad nav skaidra jēga “kāpēc šis tiek darīts šeit”? Iepriekšējais darbu saraksts alfabētiski: • APĒST KARTUPEĻUS • IESLĒGT TELEVIZORU • NOMAZGĀT NETĪROS TRAUKUS • NOVILKT IELAS APAVUS • UZSILDĪT KARTUPEĻUS • UZVILKT MĀJAS ČĪBAS • Pavadīšanas un atkārtotas izmantošanas problēmas

  24. KOMUNIKĀCIJAS VIENOTĪBA Visas funkcijas darbojas ar vieniem un tiem pašiem ieejas datiem vai arī veido vienus un tos pašus izejas datus. • Elementi darbojas ar tām pašām datu struktūrām • ATRAST GRĀMATAS NOSAUKUMU • ATRAST GRĀMATAS CENU • ATRAST GRĀMATAS IZDEVĒJU • ATRAST GRĀMATAS AUTORU • modulis atrast_pasūtītāja_info • lieto pasūtītāja_konta_nr • atrast pasūtītāja_vārdu • atrast pasūtītāja_konta_stāvokli • atdot pasūtītāja vārdu, pasūtītāja_konta_stāvokli • beigas • Pavadīšanas un atkārtotas izmantošanas problēmas (ja vajag tikai vārdu?)

  25. SECĪBAS (INFORMATĪVĀ) VIENOTĪBA • Veic darbību virkni • Katrai definēts noteikts ieejas un izejas punkts • Neatkarīgs kods katrai darbībai • Visas darbības notiek ar vienu datu struktūru AUTO PĀRKRĀSOŠANAS POSMI: Notīrīt veco krāsu Pielāpīt virsbūves caurumus Sagatavot virsbūvi krāsošanai Nogruntēt

  26. SECĪBAS (INFORMATĪVĀ) VIENOTĪBA (turp.) • Viena moduļa rezultāts ir otra ievaddati (aprēķināt trajektoriju un izvadīt datus) • Ja tikai izrēķināt un izvadīt citur, būs problēmas • Struktūrprogrammēšanas mērķis • Abstraktie datu tipi • Problēmas • Loģiski funkcija var būt izmētāta pa vairākiem moduļiem • Viena moduļa izvada izmaiņas var izsaukt nesaderību ar nākošo moduli • Nedaudz papildinot krāsošanas darbības varētu panākt funkcionāli vienotu moduli “AUTO PĀRKRĀSOŠANA” • Var būt problēmas ar atkārtotu izmantošanu

  27. FUNKCIONĀLĀ VIENOTĪBA • Veic tieši vienu darbību vai sasniedz vienu noteiktu mērķi. • APRĒĶINĀT LEŅĶA KOSINUSU • PĀRBAUDĪT SINTAKSI • APRĒĶINĀT GADA IENĀKUMUS • PIEŠĶIRT VIETAS NUMURU LIDMAŠĪNAS PASAŽIERIM • Modulī nav lieku datu vai darbību – viss ir būtisks • Viegli atkārtoti izmantot • Maza varbūtība, ka izmaiņas šajā modulī ietekmēs citus moduļus • Viegli saprast un labot kļūdas • Viegli aizvietot ar citu • Sliktums – daudz darbību

  28. VIENOTĪBA (secinājumi) • Vienotība ir moduļa laba dizaina mērs (jo vairāk, jo labāk). • Katram modulim jābūt funkcionāli vai informatīvi vienotam • Funkcionāla vienotība norāda, ka strukturāla izstrāde varētu būt pietiekama • Informatīvā vienotība norāda, ka OO izstrādes filozofija varētu būt derīga

  29. VIENOTĪBA (kā noteikt veidu)

  30. DIVAS PILSĒTAS (1)

  31. DIVAS PILSĒTAS (2)

  32. MODUĻU SASAISTE labi • Datu sasaiste • Pazīmju (zīmoga, spiedoga) sasaiste • Vadības (kontroles) sasaiste • Kopējo datu sasaiste • Satura sasaiste slikti Nevajadzīga sasaiste samazina atkārtotas izmantojamības iespēju un palielina risku, ka sistēma tiks sabojāta veicot izmaiņas vienā vai otrā saistītajā modulī

  33. SATURA SASAISTE • Viens modulis modificē lokālus datus citā modulī vai ietekmē tā funkciju izpildi. • Var nodot vadību no viena moduļa uz otru • Trūkumi: • Pavadīšana nepieciešama abiem moduļiem • Moduļi nav neatkarīgi • Sarežģīta atkārtota lietojamība

  34. KOPĒJO DATU SASAISTE • Divi moduļi modificē vienus un tos pašus globālos datus. • Piemērs: COMMON bloki FORTRAN • Trūkumi: • Nav strukturizācijas • Atļauj piekļūt liekiem datiem • Datu izmaiņas ietekmē visus saistītos moduļus • Sarežģīta atkārtota lietojamība

  35. KOPĒJO DATU SASAISTE Kur var likties laba : Liels daudzums mainīgo, kuriem jāvar piekļūt no vairākiem moduļiem Risinājums: Viens inicializē, pārējie tikai lasa.

  36. VADĪBAS(KONTROLES) SASAISTE • Viens modulis nodod otram pazīmi (kā parametru vai globālu mainīgo), tādējādi ietekmējot darbību izpildi tajā. • Cieši saistīti ar loģisko vienotību • void DarbinātLampu(int režīms) • {if (režīms == 0) Ieslēgt(); • else if (režīms==1) Izslēgt(); • else if (režīms==2) Mirkšķināt(); • else; • } • Trūkumi: • Vienam modulim jāzin otra struktūra (loģiskā vienotība) • Pavadīšana nepieciešama abiem moduļiem • Sarežģīta atkārtota lietojamība Risinājums – sadalīt atsevišķās primitīvās operācijās

  37. PAZĪMJU (ZĪMOGA, SPIEDOGA) SASAISTE • Datu struktūra tiek nodota kā arguments, bet izsauktais modulis darbojas tikai ar šīs struktūras daļu. • Piemērs: Norāde uz datu struktūru kā parametrs • Trūkumi: • Blakusefekti • Lasāmība

  38. DATU SASAISTE • Moduļi sadarbojas tikai ar parametru starpniecību • Visi argumenti ir homogēnas datu vienības • “ ... katrs arguments ir vai nu vienkāršs vai arī datu struktūra, kuras visi lauki tiek izmantoti izsaucošajā modulī.” (Schach,1996)

  39. ABSTRAKCIJA “Reālās dzīves” uzdevums (problēma) Abstrakcija Modelis Modelis nosaka uzdevuma īpašības – datus un operācijas

  40. ABSTRAKCIJA - PIEMĒRS • Pasaules atlants – kalni, tuksneši, okeāni, dažas lielākās pilsētas • Atsevišķa kontinenta karte – valstu robežas, lielās pilsētas • Atsevišķas valsts karte – lielākie autoceļi, vidēji lielas pilsētas • utt.

  41. ABSTRAKCIJA • Lielu kompleksu sistēmu veidošanai, saprašanai un vadīšanai cilvēki lieto dažus ne pārāk sarežģītus paņēmienus. Viena no svarīgākajām tehnikām ir abstrakcija.

  42. PIEMĒRS – PASAŽIERU VILCIENS Vilciena sastāvs sastāv no vismaz vienas lokomotīves un vagoniem • Operāciju piemēri: • Piekabināt_vagonu(s, v) • Atkabināt_pēdējo_vagonu(s) • Garums(s) • Vagons(s, i) • Atrodi_vagonu(s, v) • Aizsūti_lokomotīvi_uz_depo(s)

  43. VILCIENS – PROGRAMMĒŠANA Dabiska vēlme noformēt kā atsevišķu moduli Saskarnes daļā jābūt nepieciešamajām funkcijām – sastāva izveidošana, vagonu pievienošana, atkabināšana, u.c. Viens vai vairāki vilcieni? (klasiskajā modulārajā programmēšanā dabiski darboties ar vienu) Ja vairāki, varam runāt par tipu

  44. VILCIENS – PROGRAMMĒŠANAS PROBLĒMAS • Atklātā veidā inicializācija un deinicializācija. • Reālie dati ir ārpus moduļa (atmiņas masīvs?). • Tipu drošība (pasta vagons un malkas vagons) • Dažu funkciju realizēšanai ir nepieciešama datu caurlūkošana – kursora jēdziens

  45. IEKAPSULĒŠANA UN ABSTRAKCIJA “Datu struktūra līdz ar darbībām, kas tiek veikta ar šo struktūru” “Visa savākšana vienā vienībā, reālās pasaules parādība tiek modelēta ar šo vienību.” Var būt (un dabiski, ka ir!) dažādi abstrakcijas līmeņi. Katrā abstrakcijas līmenī izstrādātājs nodarbojas tikai ar tiem jēdzieniem, kas ir piemēroti šim līmenim. Izstrādātājs var ignorēt abstrakcijas līmeņus, kas atrodas zemāk un augstāk par šo. Kalkulators - ļauj saskaitīt skaitļus, arī nezinot saskaitīšanu stabiņā.

  46. DATU IEKAPSULĒŠANA UN PAVADĪŠANA Nosaka tos aprakstāmās parādības aspektus, kas var mainīties un izveidot moduli tā, lai minimizētu nākotnē veicamās izmaiņas. Datu struktūras parasti nemainās - var mainīties to realizācija. (Tūkstošgades problēma) Iekapsulēšana ļauj tikt galā ar mainību.

  47. PARNASA PRINCIPI • Deivida Parnasa formulētie principi: • Moduļa lietotājs jānodrošina ar visu informāciju, kas nepieciešama lai šo moduli varētu korekti lietot, un neko citu. • Moduļa izstrādātājs jānodrošina ar visu informāciju, kas nepieciešama lai šo moduli varētu korekti izveidot, un neko citu.

  48. ABSTRAKTIE DATU TIPI • “Datu abstrakcija: jaunu, augsta līmeņa datu tipu, kas palīdz aprakstīt kāda noteikta lietojuma vai programmas vajadzības, definēšanas process.” (Taylor,1990) • “Datu tips līdz ar darbībām, kas tiek veiktas ar šī tipa instancēm.” (Schach,1996) • Ietver • Datu abstrakciju • Procedūru abstrakciju • Piemēri: Saistītie saraksti, steki, rindas

  49. ABSTRAKTIE DATU TIPI - VISPĀRĪGAS LIETAS • Viena klasifikācijas shēma: • Nosakam, kādi būs elementi, ar ko darbosies šajā ADT un ko ar tiem vēlas darīt. • ADT sastāv no: • Struktūras, ko apraksta • Divas elementu kopas: Atomi - elementi, kas veido ADT un Pozīcija, kur novieto šos atomus. • Strukturāla attiecība, kas nosaka, kā pozīcijas ir savā starpā saistītas (vienkāršs piemērs – saraksts) • Operāciju kopa, ko var veikt ar šiem elementiem. • Priekšnoteikumi un pēcnoteikumi

  50. ABSTRAKTIE DATU TIPI - VISPĀRĪGAS LIETAS (2) ADT Datu struktūra Operācijas Saskarne • ADT raksturo sekojošas īpašības: • Tas eksportē tipu • Tas eksportē operāciju kopu, ko sauc par saskarni. • Saskarnes operācijas ir vienīgais veids, kā piekļūt ADT datu struktūrai. • Aksiomas un priekšnoteikumi definē ADT pielietojamības apgabalu. Vēlamies lietot Sarakstu kā normālu datu tipu Nezinām, kā tieši ir realizēts saraksts, nevar darboties “pa tiešo”. Tukšs saraksts arī ir saraksts

More Related