Хелпикс

Главная

Контакты

Случайная статья





3-4 дәрістер. Программалық жабдықтардың технологиялық сипаттамаларын анықтау



Жалпы «технологиялық тиімділік» деп, программалық жабдық тың жобасының сапасын тү сінеді. Программалық жабдық ты жасауғ а жә не оны кейіннен жетілдіріп отыруғ а кететін ең бек жә не материалдық ресурстар тікелей жобамен (проектімен) байланысты болады. Барынша жан-жақ ты, сауатты қ ұ рылғ ан жобаны кодтау, тестілеу, жө ндеу жә не  жә не модификациялау да жең іл болады.

Программисттердің жинақ талғ ан тә жірибелері бойынша программалық жабдық тың технологиялылығ ы келесі факторлармен анық талады:

- модельдің жан-жақ ты қ арастырылғ андығ ы (проработанность моделей);

- модульдердің ө зара тә уелсіздігінің дең гейі (уровень независимости модулей);

- программалау стилі (стиль программирования);

- кодтарды қ айталап қ олдану дә режесі (степень повторного использования кодов).

Програрммалық жабдық тың моделі неғ ұ рлым толық зерттелген, жан-жақ ты ескеріліп жасалғ ан болса, онда жалпы есепке кіретін бө лек есептерді (подзадачаларды), мә ліметтердің қ ұ рылымын  жә не т. б. анық тау да соғ ұ рлым нақ тырақ болады, оларды жобалау жә не жү зеге асыру жең іл болады, қ ателер азаяды. Ал модульдер неғ ұ рлым ө зара тә уелсіз болса, соғ ұ рлым олардың жү зеге асырылуы, модификациялануы, олардағ ы қ атені іздеу жә не т. б. жең іл болады.

Программалау стилі деп программаны ә рлеу стилін жә не қ ұ рылымдылығ ын тү сінеді. Программаның қ ұ рылымдылығ ы оның оқ ылуына (читаемость программы) жә не программалауда қ ате жіберілмеуіне ә сер етеді. ХХ ғ асырдың 60-жылдарындағ ы кризис, яғ ни спагетти- программалар осы қ ұ рылымдылық тың болмауының  нә тижесі.

Кодтардың қ айта пайдаланылу дә режесі, бұ л бұ рыннан бар кітапханаларды, кластарды, подпрограммаларды пайдаланумен жә не жаң адан жасалғ ан кодтарды унификациялаумен анық талады. Бұ л барлық жағ дайда тиімді болмауы мү мкін, мысалы кодтарды қ айта пайдалану жасанды  тү рде жоғ арылатылса, онда жобаның  технологиялылығ ы да соғ ұ рлым тө мендеуі мү мкін.

Программалық жабдық тың жалпы қ ұ рылымы анық талғ аннан кейін, ә детте  ұ станым таң далынады: қ ұ рылымдық ұ станым немесе объектілік ұ станым немесе компоненттік ұ станым.

Ұ станым  анық талғ аннан кейін, жоғ арыдағ ы айтылғ ан программаның жалпы қ ұ рылымын жеке компоненттерге декомпозициялау басталады, бұ л декомпозиция мү мкін емес болғ анғ а дейін жү реді. Мұ ндай декомпозицияның нә тижесі, қ ұ рылымдық ұ станымда  – подпрограммалар мен модульдердің иерархиясы болып шығ ады, ал объектілік ұ станымды пайдаланатын декомпозиялауда, класстар тү ріндегі иерархия алынады.  

Модуль (Unit) – жеке автономды тү рде компиляцияланатын программаның бірлігі.  Модульдердің ө зара тә уелсіздігі екі критериймен анық талды: жабысу(сцепление) жә не байланысу (связность).

Жабысу – бұ л модульдердің бір-бірінен неғ ұ рлым алшақ тығ ын анық тайды. Егер бір модульде екінші модуль туралы ешқ андай ақ парат берілмесе, онда олар тә уелсіз, ал олар бір-бірі туралы ақ парат сақ тайтын болса, онда жабысқ ан болып есептеледі. Жабысудың келесі тү рлері  анық талғ ан:

- мә ндер бойынша (по данным);

- ү лгі бойынша (по образцу);

- басқ ару бойынша (по управлению);

- жалпы мә ліметтер орналасқ ан облыс бойынша (по общей областей данных);

- ішкі компоненттері, мә ліметтері бойынша (по содержимому).

Егер «жабысу» жеке-жеке модульдердің бір-біріне алшақ тық арақ атынасын анық таса, «байланысу» бір модуль ішіндегі программалық элементтердің ө зара байланысу дең гейін анық тайды. Ө зара тығ ыз байланыста болатын элементтерді бір модульге орналастырғ ан тиімді болады, ал егер оларды ә ртү рлі модульдерге орналастырса модульдердің бір-біріне тә уелділігі артады, бұ л қ иынырақ болады. Ә лсіз байланысқ ан элементтерді де бір модульде пайдалану оның технологиялылығ ын тө мендетеді. Ә зірге байланысудың келесі тү рлері анық талғ ан(кему дә режесіне қ арай):

- функционалды (функциональная);

- тізбектей (последовательная);

- ақ параттық (коммуникативная или информационная);

- процедуралық (процедурная);

- уақ ытша (временная);

- логикалық (логическая);

- кездейсоқ (случайная).

Программалық жабдық ты  қ ұ руда қ олданылатын негізгі екі ә діс:

- тө меннен жоғ ары қ арай жобалау (восходящий метод);

- жоғ арыдан тө мен қ арай жобалау(нисходящий метод).

 «Жоғ ары қ арай жү ру» ә дісі бұ л бірінші пайда болды, мұ нда программаның ең тө мені элементтері, сонан соң одан жоғ ары элементтері т. с. сияқ ты жасалады. Бұ л ә дістің тиімсіз жағ ы, кейін біріктірген кезде компоненттер ө зара ү йлеспей қ алады, программа интерфейсі ең соң ынан жасалады, яғ ни оны алдын-ала кө рсетіп алу мү мкіндігі жоқ. Бұ л ә діс ө ндірісте қ олданылмайды, ә детте оқ ыту ү шін қ олданылады.

«Тө мен қ арай» программалау мұ нда программаның бірінші жоғ ары дең гейдегі компоненттері жобаланады, ә рі қ арай біртіндеп тө менгі дең гейдегі компоненттері жасала береді, мұ нда программаның жасалғ ан бө лігін тестілеу ү шін ә лі жасалмағ ан тө мендегі компоненттерді арнайы модульдермен («заглушка» программа) алмастыра тұ рады.

Қ ұ рылымдық программалауда, жалпы есептеу процесі ү ш тү рлі ұ йымдастырылады: ызық тық, тармақ талатын жә не қ айталанатын. Бұ л процесстерді жү зеге асыру ү шін жоғ ары дең гейдегі программалау тілдерінде арнаулы басқ арушы операторлар (if, while) қ олданылады, ал  бұ рынғ ы тө менгі дең гейдегі тілдерде басқ ару жолғ а кө шу арқ ылы беріліп, спагетти- программалар шығ атын болды. Сонымен, 1960 жылдардан бастап осы ү ш конструкцияны  «базалық қ ұ рылымдар» деп қ абылдау келісілген, оның жазылуының бірнеше тү рлі нотациялары бар: блок-схема, псевдокод, Flow-формалар, Насси-Шнейдерман диаграммасы жә не т. б. . Мысалы, базалық қ ұ рылымдардың блок-схема тү ріндегі жазылуы (3. 5- сурет):

2-ә рекет
1-ә рекет
Шарт
Ә рекет
иә
жоқ
тармақ талатын
қ айталанатын
сызық тық
Шарт
1 - Ә рекет
2 - Ә рекет
жоқ
иә

 

 


3. 5- сурет. Базалық қ ұ рылымдардың блок-схема тү ріндегі жазылуы

 

Программада қ ұ рылымдық ә дісті кө рсету ү шін жоғ арыдағ ы блок-схемаларды пайдалану ө те ү лкен болады жә не кү рделі алгоритмдерді беруде оның мағ ынасын жоғ алтып алады, яғ ни детализациялау дең гейі тө мендеп кетеді, сондық тан программа қ ұ рылымын кө рсету ү шін блок-схемадан басқ а: псевдокодтар, Flow-формалар жә не Насси-Шнейдерман диаграммалары қ олданылады.

Псевдокод – бұ л алгоритмді мә тін тү рінде (текстовая нотация) жазып шығ у. Псевдокодтарды жазудың бірнеше варианттары кездеседі. Мысалы, бір нұ сқ асы тө мендегі кестеде берілген (3. 6-сурет):

 

Сызық тық Тармақ талғ ан Қ айталанатын
< 1- ә рекет> < 2- ә рекет> егер шарт онда 1-ә рекет ә йтпесе 2-ә рекет бітті ә зір шарт цб қ айталанатын ә рекет цс  

3. 6- сурет. Базалық қ ұ рылымдардың  псевдокод тү ріндегі жазылуы

 

Flow-формалар қ ұ рылымдық алгоритмдерді жазуғ а арналғ ан графикалық нотация.  Flow-форманың ә рбір символы – бір басқ арушы қ ұ рылымды білдіретін тө ртбұ рыш тү рінде болады (3. 7- сурет), мысалы:

 

ә зір шарт
ә рекет
           
егер шарт онда ә йтпесе    
1 ә рекет
2 ә рекет
                
1 ә рекет
2 ә рекет
3 ә рекет

сызық тық
қ айталанатын
тармақ талатын


 

 

3. 7- сурет. Базалық қ ұ рылымдардың Flow-форма тү ріндегі жазылуы

 

Насси-Шнейдерман диаграммасы (3. 8- сурет), бұ л Flow-формалардың жетілдірілген тү рі болып табылады, егер Flow-формада бә рі тө ртбұ рыш тү рінде берілсе мұ нда тармақ талу шарттары ү шбұ рыш тү рінде кө рсетіледі, мысалы:

 

1 -ә рекет
2- ә рекет
3 - ә рекет
сызық тық
      
Шарт
1 ә рекет
2 ә рекет
иә
жоқ
тармақ талатын
      
ә зір шарт
ә рекет
дейін шарт
ә рекет
қ айталанатын

3. 8- сурет. Базалық қ ұ рылымдардың Насси-Шнейдерман диаграммасы тү ріндегі жазылуы

 

Программаны ә рлеу стиліне тө мендегілер кіреді:

- программадағ ы объектілерге, айнымалыларғ а, функцияларғ а дұ рыс, мағ ыналы  атаулар беру, мысалы Max_Item, Next_Item;

- модульді дұ рыс жазу ережесі: модульдің аты, қ ысқ аша сипаттамасы (не ү шін қ олданылады), кіріс жә не шығ ыс параметрлерінің қ ысқ аша сипаттамасы, оғ ан қ атысатын модульдер тізімі алгоритмнің қ ысқ аша сипаттамасы немесе шектеулер;

- программаның авторы туралы мә ліметтер;

- идентификациялаушы ақ парат (сериялық номер, нұ сқ а номері жә не т. б. )

- модульдің мә тінін ә рлеу стилі жә не т. б.

Жалпы программалауда программаның тиімділігі оның жылдам орындалуымен жә не жады кө лемін аз пайдалануымен анық талады. Кейбір фрагменттердің дұ рыс жазылуы, мысалы, кө п қ айталануы тиіс циклдер программаның орындалу уақ ытына тікелей ә сер етеді. Қ азіргі программалау жү йелерінде программалық жабдық тың тиімділігін оптимизациялауды кө бінесе компиляторлар орындайды.

Программаның орындалу уақ ытын азайту ү шін қ олданылатын тә сілдер де, бұ л ә сіресе кө п қ айталанатын циклдарды программалауда кездеседі:

- цикл параметрлеріне тә уелсіз шамаларды, ө рнектерді циклдан шығ ару, мысалы:

for (int i=0; i< 99; i++)

for (int j=0; j< 99; j++)

a[320*i+j]=s[k, l].  

 

бұ л циклда *(кө бейту 320*i) 10000 рет жә не, s[k, l] элементін шақ ыру, яғ ни массивке сұ раныс  жасау 10000 рет орындалады. Егер осы жазуды келесі тү рде жазсақ 320=28 +26 деп алсақ , сонда келесі тү рде жазуғ а болады:

skl=s[k, l]; //массив элементін шақ ыруды цикл сыртына шығ ару

for (int j=0; j< 99; j++)          

{

KomAin=j< < 8+s< < 6 //320*i кө бейтуді жылжытумен алмастыру

 for (int i=0; i< 99; i++)

a[KomAin+i]=skl;

}…

- ұ зақ «кө бейту» амалынан қ ұ тылу, ол ү шін оларды қ осумен, азайтумен, жылжытумен алмастыру;

- ө рнектерде типтерді тү рлендіруді азайту;

- шарттарды тексеруде, артық тексерулер жасамау;

- массив элементіне индекстері бойынша сұ раныс жасамауғ а тырысу, себебі сол элементтің адресін табу ү шін индекстердің мә ніне кө бейту амалы орындалады, сондық тан жадыдан массив элементтерінің мә нін бір рет оқ ып алып, оны бір скаляр шамағ а меншіктеп, оны керек жерде пайдалана беруге болады.

Программаны компиляциялау жә не жинау кезіндегі қ ателерден, яғ ни синтаксистік қ атеден басқ а программаның орындалу кезінде пайда болатын қ ателер болады, ә детте, оларды динамикалық қ ателер деп атайды. Олардың кө рінуі де тү рліше болады, мысалы жү йе қ ате туралы хабарлама береді немесе тұ рып қ алады, тү сініксіз нә тижелер де беруі мү мкін. Сондық тан программалауда кетуі мү мкін қ ателерді алдын ала ескеріп, оларды уақ ытында табу жә не жою ү шін арнаулы ә дістер қ олданылады. Мұ ның барлығ ы программалауда «ерекше жағ дайларды ө ң деу» (обработка исключительных ситуации) деп аталатын мә селеге ә келеді. Ерекше жағ дайларды ө ң деу механизмі арнаулы аппараттық немесе тілдік қ ұ ралдар кө мегімен қ ателерді тауып алып, оны ө ң деуге мү мкіндік береді, яғ ни программаның қ ауіпті жағ дайда қ алуына жол бермейді.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.