3
АЛ
М. Ӛ. МҰҚАШЕВА , Ұ. Т. МАХАЖАНОВА
ОҚУ-ӘДІСТЕМЕЛІК ҚҰРАЛ
Л. Н. ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ ҰЛТТЫҚ УНИВЕРСИТЕТІ
ПРОГРАММАЛАУ
ТЕХНОЛОГИЯСЫ
Л.Н.ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ ҰЛТТЫҚ УНИВЕРСИТЕТІ
М. Ӛ. Мұқашева, Ұ. Т. Махажанова ПРОГРАММАЛАУ ТЕХНОЛОГИЯСЫ
ОҚУ- ӘДІСТЕМЕЛІК ҚҰРАЛ
АСТАНА 2012 УДК 004.41 (075.8)
ББК 32.973-018я73 М 84
Л.Н. Гумилев атындағы Еуразия ұлттық университетінің Ғылыми кеңесі ұсынған Пікір жазғандар:
Туребаева Р. Д., техника ғылымдарының кандидаты, доцент Сарсимбаева С. М., физ.- мат. ғылымдарының кандидаты, доцент
Программалау технологиясы. Оқу-әдістемелік құрал. / Мұқашева М.Ӛ., Махажанова Ұ.Т. - Астана: Л.Н. Гумилев атындағы ЕҰУ, 2012. –207 б.
ISBN 978-601-7400-23-1
Оқу-әдістемелік құрал 05070300- ақпараттық жүйелер мамандығы МЖМБС бойынша
«Программалау технологиясы» пәнінің мазмұнына сәйкес жазылды.
Оқу-әдістемелік құралды жасауда оқытудың кредиттік технологиясының ерекшеліктері ескерілді. Жоғары оқу орындарының студенттеріне және оқытушыларға арналған.
УДК 004.41 (075.8)
ББК 32.973-018я73
ISBN 978-601-7400-23-1 © Л.Н. Гумилев атындағы ЕҰУ, 2012.
© Мұқашева М.Ӛ., 2012
© Махажанова Ұ.Т., 2012
І Силлабус
1. Оқытушылар туралы мәліметтер:
Мұқашева Манаргүл Ӛмірзаққызы, ақпараттық жүйелер кафедрасының доценті, педагогика ғылымдарының кандидаты, программалау және программалауды оқыту әдістемелері салалары бойынша ғылыми-әдістемелік жұмыстарымен айналысады, е- mail: [email protected]
Махажанова Ұлжан Тәңірбергенқызы, ақпараттық жүйелер кафедрасының оқытушысы, информатика магистрі, ақпараттық технологиялар және программалау бойынша ғылыми-зерттеу жұмыстарын жүргізеді.
2. Пән бойынша мәліметтер:
Аты: PT 102 Программалау технологиясы:
Сағат саны: Барлығы - 3 кредит , соның ішіндегі: дәрістер – 15 сағат, зертханалық сабақтар – 60 сағатқа жоспарланады.
3. Пәннің ӛткізілу уақыты:
1 курс, ІІ семестр
4. Пәннің пререквизиттері мен постреквизиттері :
Берілген пәнді зерделеу үшін келесі пәндерді (бӛлімдерді) меңгеру қажет:
Пән Бӛлімдердің атауы
Алгоритмдеу және программалау тілдер Толық курсы
Информатика Толық курсы
Студенттердің бұл пән бойынша алған білімдері келесі пәндерді оқытуда жалғасын табады:
Пән Бӛлімдердің атауы
Деректер қорын басқару жүйелері Толық курсы
Ақпараттық жүйелердің негіздері Толық курсы
Кодтау теориясы Толық курсы
Ақпараттық қауіпсіздік Толық курсы
5. Пәннің сипаттамасы:
Пәннің мақсаты.
«Программалау технологиясы» пәнінің мақсаты студенттерді программалық жабдықтарды жасау барысында қажет болатын программалық жүйелерді талдау, жобалау, жүзеге асыру және тестілеу әдістерімен таныстыру, сондай-ақ оларды қазіргі бар, қолданылып жүрген ұстанымдар мен технологиялармен таныстыру болып табылады. Бұл туралы теориялық мәліметтер дәріс сабақтарында қарастырылады. Ал зертханалық сабақтарда, объектіге бағдарланған программалау негіздері туралы білімдерін С++Builder ортасында жұмыс жасай отырып жалғастырады. Мұнда студенттер, программалық қамтамасыз етуді жобалау тәсілдерін, программалау стилін. программалаудың сапа кӛрсеткішін, программаны сынау мен қалыптастыру тәсілдерін, объектілі бағытталған программалаудың негіздерін, жады кластарын, адрестеу мен жадыны үйымдастыруды құру, кӛрсеткіштерді қолданып программа құру және C++ тілінің программалау ерекшеліктерін пайдалануды үйренеді.
Пәннің міндеттері.
Пәннің міндеттері келесідей: 050703 мамандықтарға қойылған талаптарға, Мемлекеттік стандартқа сәйкес, студенттер пәнді оқу үрдісінде С++ тілін қолданып есептерді алгоритмдеу негіздері, мәліметтер түрлерін, операцияларын Си программалау тілінің операторларын, ішкі операторларды, кіріктірілген /встроенные/ функцияларды, программаны қамтамасыз етуді жобалау тәсілдерін, динамикалық құрылымдарды, программалау технологиясы негіздерін, программалық қамтамасыз етуді жобалау тәсілдерін, программалау стилін, программалаудың сапа кӛрсеткіштерін, программаны сынау мен қалыптасытыру тәсілдерін, программалаудың объектілі бағытталған негіздерін, жады кластарын, адрестеу мен жадыны ұйымдастыруды қолданып программа кұруды үйренуі тиіс.
Пәнді оқытуды жоспарлау.
Дәріс сабақтарының жоспарлануы
Апта
№ Дәріс сабақтарының тақырыптары Дәрістер
(сағ.) 1, 2 Программалау технологиясы. Негізгі түсініктер мен
ұстанымдар. Программалау технологиясының даму кезеңдері.
2 3, 4 Программалық жабдықтардың технологиялық сипаттамаларын
анықтау.
2 5 Программалық жабдықтарға және оларды жобалаудағы бастапқы
мәліметтерге қойылатын талаптарды анықтау.
1 6, 7, 8 Құрылымдық ұстанымға негізделген программалық
жабдықтардың ерекшеліктері.
3 9,10,
11
Объектілік ұстанымға негізделген программалық жабдықтардың ерекшеліктері және оларға қойылатын талаптар.
3 12 Қолданушының интерфейсін құру. Қолданушы интерфейстерінің
түрлері және оларды құру кезеңдері.
1 13 Программалық жабдықтарды тестілеу. Программалық
жабдықтардың сапасын тексерудің түрлері.
1 14 Программалық жабдықтарды жӛндеу. Қателердің
классификациясы.
1 15 Программалық жабдықтарды құжаттау. Программаларды
құжаттаудың ортақ жүйесі.
1
БАРЛЫҒЫ
15
Зертханалық сабақтардың жоспарлануы
Апта
№ Зертханалық сабақтардың тақырыптары
Зертхана сабақтар (сағ.) 1 Программалауда қазіргі қолданылып жүрген технологиялар.
Объектіге бағдарланған программалаудың негізгі қағидалары.
4
2 С++ Buildеr 6 ортасының құрылымы. С++ Buildеr 6 ортасында қосымша құру. Жоба, форма, модуль, ресурс файлдары.
4 3 Негізгі визуалдық компоненттер. VCL кітапханасының
компоненттері. Қасиеттері, әдістері және оқиғалары.
4
4 Қосымша құруда тізімдерді пайдалану 4
5 Қосымшадағы ауыстырғыштардың қызметі 4
6 Қосымшадағы терезелердің және мәзірлердің жұмысын ұйымдастыру. Форма және мәзірлер.
4 7 Массивтермен жұмыс жасауға арналған компоненттер. 4 8 Ерекше жағдайларды ӛңдеу түсінігі. Ерекше жағдайлар класы. 4 9 Wіndows интерфейсінің компоненттерін қолданып файлдарды
басқару
4 10 С++ Buildеr 6 ортасындағы графика. Объектіні қозғалысқа келтіру.
Анимация.
4
11 С++ Buildеr 6 ортасында деректер қорын құру 4
12 С++ Buildеr 6 ортасында деректер қорын басқару 4 13 QReport парағын пайдаланып есеп беруді ұйымдастыру 4
14 Қосымшаның анықтамалық жүйесін құру. 4
15 Қосымшаны таратуға даярлау. Дистрибутивтер. Орнатушы инсталляциялық пакетті Install Shield Express утилитасы арқылы жасау.
4
БАРЛЫҒЫ: 60
Студенттердің ӛзіндік жұмыстарының тақырыптары және тапсыру мерзімі:
Апта
№ Ӛзіндік жұмыстардың тақырыптары және қысқаша
мазмұны Тапсырылу
мерзімі 1 Программалауда қазіргі қолданылып жүрген технологиялар.
Объектіге бағдарланған программалаудың негізгі қағидалары.
1-апта
2 С++ Buildеr 6 ортасының құрылымы. С++ Buildеr 6 ортасында қосымша құру. Жоба, форма, модуль, ресурс файлдары.
2-апта 3 Негізгі визуалдық компоненттер. VCL кітапханасының
компоненттері. Қасиеттері, әдістері және оқиғалары.
3-апта
4 Қосымша құруда тізімдерді пайдалану 4-апта
5 Қосымшадағы ауыстырғыштардың қызметі 5-апта
6 Қосымшадағы терезелердің және мәзірлердің жұмысын ұйымдастыру. Форма және мәзірлер.
6-апта 7 Массивтермен жұмыс жасауға арналған компоненттер. 7-апта 8 Ерекше жағдайларды ӛңдеу түсінігі. Ерекше жағдайлар класы. 8-апта
9 Wіndows интерфейсінің компоненттерін қолданып файлдарды басқару
9-апта 10 С++ Buildеr 6 ортасындағы графика. Объектіні қозғалысқа
келтіру. Анимация.
10-апта 11 С++ Buildеr 6 ортасында деректер қорын құру 11-апта 12 С++ Buildеr 6 ортасында деректер қорын басқару 12-апта 13 QReport парағын пайдаланып есеп беруді ұйымдастыру 13-апта
14 Қосымшаның анықтамалық жүйесін құру. 14-апта
15 Қосымшаны таратуға даярлау. Дистрибутивтер. Орнатушы инсталляциялық пакетті Install Shield Express утилитасы арқылы жасау.
15-апта
6. Әдебиеттер тізімі Негізгі әдебиеттер тізімі:
1. Иванова Г. С. Технология программирования: Учебник для вузов.- М.: Изд-во МГТУ им. Н. Э. Баумана, 2003- 320 с. /Серия: Информатика в техническом университете/
2. Мұқашева М. Ӛ. Программалау /С++ Builder 6/. Оқулық. Астана, ЕҰУ -2011 ж.- 375 б.
3. Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер,2007-638 с.
4. Холингворт, Джаррод, Сворт и др. Borland C++Builder 6. Руководство разработчика.: Пер с англ. – М. : ИД «Вильямс», 2004- 976 с.
5. Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. - М.:
БИНОМ, 2008. — 368 с.
6. Крэг Ларман. Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку.
М.:Вильямс, 07 – 736с.
7. Грекул В.И. и др. Проектирование информационных систем. 2005 г.- 304 с.
8. Бейзер Б. Тестирование чѐрного ящика. Технологии функционального тестирования программного обеспечения и систем. - СПб.: Питер, 2004. — 320 с.
Қосымша әдебиеттер тізімі:
9. Молчанов А. Ю. Системное программное обепечение. Лабораторный практикум. - СПб.: Питер, 2005.- 284 с.
10. Франке. С++ . Учебный курс.- СПб.: Питер, 2003
11. Архангельский А.Я. Программирование в C++ Bulder. М.: Бином, 2003.
12. Тяпичев Г. А. Быстрое программирование на С++.– .: СОЛОН-Пресс, 2004-384 с.
13. Фокс Дж. Программное обеспечение и его разработка. - М.: Мир, 1985.
7. Бағалау жүйесі
Барлығы – 100% үлеспен (баллмен) бағаланады , оның ішінде :
- Дәріс сабақтары және зертханалық жұмыстар бойынша үлесі (бақылау жұмысы, аралық тестілеу, коллоквиум, курстық жұмыстар және т.б.) – 60%
- Қортынды бақылау (емтитхан) бойынша – 40%
8. Пән саясаты және процедуралары
- сабаққа себепсіз кешікпеу керек, кешіккен жағдайда сабаққа қатысуға рұқсат берілмейді;
- сабақты себепсіз жібермеу, ауырған жағдайда – анықтаманы, басқа жағдайларда түсініктеме ұсыну керек;
- зертханалық және ӛзіндік жұмыстарын, курстық жұмыстарды және рефератты уақытында орындап тапсыру;
- оқу процесіне белсенді қатысу;
- курстастармен және оқытушылармен шыдамды, ашық және түсіністік қатынаста болу.
ІІ Глоссарий
CASE (Computer- Aided Software/System Engineering– разработка программного обеспечения/программных систем с использованием компьютерной поддержки) – программалық жабдықтарды/ программалық жүйелерді компьютердің қолдауымен құру;
COM (Component Object Model –компонентный модель объекта) - компоненттік объектілер моделі, бұл - бинарлық программалық компоненттерді (немесе программалық коды екілік форматта жазылған компоненттерді) біріктірудің объектіге бағдарланған технологиясы болып табылады. Бұл технологияның артықшылығы бинарлық деңгейдегі стандартты сақтай отырып кез-келген программалау тілінде, кез-келген ортада жасалған компоненттерді кез-келген программада пайдалана беруге болады
RAD (Rapid Application Development- быстрая разработка приложений)- қосымшалар құруды жылдамдату;
UML (Unified Modeling Language– унифицированный язык моделирования) - модельдеудің унифицацияланған тілі (немесе модельдеудің ортақ түрге келтірілген түрі).
МСТ (мемлекеттік стандарт) – белгілі бір салаларға байланысты ережелерді тағайындайтын мемлекеттік деңгейде қабылданған арнайы құжат.
Верификация - ақырғы ӛнімнің, яғни программалық жабдықтың, алдын-ала анықталған талаптарға сәйкес жасалғандығын тексере отырып, программалық жабдықтың дұрыстығын дәлелдеу. Программалық жабдықтарды верификациялауда «Хоардың аксиоматикалық семантика әдісі», «Флойдтың индуктивті тұжырымдамалар әдісі» және т.б.
арнайы формальды әдістер қолданылады.
Глоссарий – терминдер мен ұғымдардың түсіндірме сӛздігі.
Инкапсуляция- бір объектіге тән барлық қасиеттердің, әдістер мен әрекеттердің капсуланың қызметін атқаратын бір құрылымға немесе типке жинақталуы.
Иерархия – бұл белгіл бір жүйедегі элементтердің бір- біріне бағынышты түрде реттеліп орналасуын білдіреді. Мысалы тума класстардың, түпкі кластарға бағынышты болуын «кластар иерархиясы» немесе «объектілер иерархиясы» деп атайды.
Класс(class)- инкапсуляция, қабылдаушылық және полиморфизм қағидаларына сәйкес анықталатын объектілерді программада сипаттау және қолдану үшін құрылатын жаңа құрылымдық тип. Кез-келген объект белгілі бір кластың ӛкілі, бір данасы немесе айнымалысы болып есептеледі.
Кроссплатформалы программалық жабдықтар – екі немесе одан да кӛп түрліше аппараттық платформаларда немесе түрліше операциялық жүйелерде жұмыс жасай беретін программалық жабдықтар. Мысалы, операциялық жүйеге тәуелсіз, яғни Linux және Windows тобына жататын операциялық жүйелердің барлығында дерлік жұмыс жасай беретін C, С++, PureBasic және Free Pascal —кроссплатформалы программалау тілдері болып есептеледі.
Қабылдаушылық- белгілі бір түп-объектіден тарайтын және оның барлық қасиеттерін, әдістері мен әрекеттерін қабылдап алып, сақтап қалатын кӛп тума- объектілерінің болуы. Тума-объектінің түп-объектіден берілген қасиеттерін, әдістері мен әрекеттерін ӛзгертуге болмайды, бірақ оны жаңа элементтермен толықтыруға болады және одан тарайтын жаңа тума-объектілер алуға болады. Мұның нәтижесінде объектілердің пайда болуын, қайсысы-қайдан тарайтынынын кӛрсететін, объектілер /немесе кластар/ иерархиясы пайда болады, оның ең түпкі немесе жоғарғы объектісі TObject класы болып табылады .
Нотация – қандайда болмасын бір ұғымдар мен түсініктерді және олардың арасындағы байланыстарды кӛрсету үшін, арнайы келісім бойынша қабылданған шартты
түрде алынған белгілеулердің жиынтығы. Мысалы, алгоритмдерді кӛрсетуде мәтіндік нотация (псевдокод) және графикалық нотация (блок- схемалар) қолданылатыны белгілі.
Пакеттер(packages)- бұл визуалдық компоненттер мен басқа да объектілердің, функциялардың және т.б. кітапханаларын біріктіре отырып қамтитын, қосымшаға динамикалық түрде қосылатын DLL модульдің немесе кітапхананың арнайы бір түрі.
Полиморфизм- түрлі объектілердің, нәтижелері әр түрлі болатын, бірақ атаулары бірдей әрекеттерді орындай алуы. Мысалы, Windows терезелерінде ең жиі қолданылатын объектілердің бірі, батырмаларды алатын болсақ, бір терезеде бірнеше батырма тұрады, олардың кез-келгеніне «шерткенде немесе сырт еткізгенде», олар түрліше қызметтерді орындайды
Программалық жабдық (soft) – қандайда болмасын белгілі бір саланың есептерін шешуге арналған, программалау тілдерінің бірінде жүзеге асырылған компьютерлік программалардың жиынтығы. Программалық жабдықтар қазіргі заманғы ақпараттық жүйелердің негізгі бӛлігі, құраушысы болып табылады.
Программалық жабдықтың ӛмірлік циклы- оны құру туралы идеяның пайда болған уақытынан бастап, оны жасаған фирманың программалық жабдықты әрі қарай қолдап жетілдіруді тоқтатқанға дейінгі уақыты.
Программаның интерфейсі - қолданушы мен программалық жабдықтың арасындағы қатынас, байланыс. Мысалы, Windows операциялық жүйесінің интерфейсі- қолданушыға ӛте ыңғайлы графикалық интерфейс (Graphical User Interface, GUI), кейде оны «визуальды интерфейс» деп те атайды.
Программалау технологиясы - программалық жабдықтарды жасау процесінде қолданылатын қолданылатын арнайы әдістер мен құралдардың жиынтығы.
Техникалық тапсырма- программалық жабдықты құру мақсаттары, оған қойылатын талаптар, жасау уақыты мен кезеңдері, тапсырыс берушіге ӛткізу мерзімі және т.б. кӛптеген мәліметтер қамтылған, программалық жабдық туралы толық мәлімет беретін құжат.
Техникалық тапсырманы жасауға тапсырыс беруші де және оны орындаушы да қатысуы керек.
ЭЕМ (электронды есептеуіш машина) – қазіргі дербес компьютерлердің бұрынғы атауы.
ІІІ Дәріс сабақтарының қысқаша конспектілері
1- 2 дәрістер. Программалау технологиясы. Негізгі түсініктер мен ұстанымдар.
Программалау технологиясының даму кезеңдері
Программалау технологиясы, бұл- программалық жабдықтарды жасау процесінде қолданылатын қолданылатын арнайы әдістер мен құралдардың жиынтығы.
Электрондық-есептеуіш машиналар алғаш қолданыла бастаған кезеңнен бастап қазіргі уақытқа дейін оларға арналған программалар жазу негізгі мәселелердің бірі болып саналады. Программалық жабдықтың ӛмірлік циклы деп, оны құру туралы идея пайда болған кезден бастап, оны жасаған фирманың программалық жабдықты әрі қарай қолдап жетілдіруі тоқтатылғанға дейінгі уақытты айтады.
Программаның ӛмірлік циклының құрылымы ISO IEC 12207: 1995 Information Technologe - Software Life Cycle Processes (Информационные технологии - Процессы жизненного цикла программного обеспечения) халықаралық стандартымен анықталған, мұндағы ISO – International Organization for Standardization (Международная организация по стандартизации) және ІЕС - International Electrotechnical Commission (Международная комиссия по электротехнике).
Аталған стандарт бойынша программалық жабдықты құру келесі процесстерден тұрады:
- даярлық жұмыстары;
- болашақ жүйеге немесе программаға қойылатын талаптарды анықтау;
- болашақ жүйенің немесе программаның архитектурасын жобалау;
- программаға қойылатын талаптарға талдау (анализ) жасау;
- программалық жабдықты детальды жобалау;
- программалық жабдықтың кодын жасау және тестілеу;
- программалық жабдықты жүйеге кірістіру;
- программалық жабдықты құжаттау;
- программалық жабдықты қолдап отыру.
Программалау технологиясының даму кезеңдерінің бастапқысы, стихиялы программалау кезеңі болып табылады. Бұл кезеңде, қазіргі жоғары деңгейдегі программалау тілдері болмағандықтан программалар машиналық тілде жазылды, мысалы, 1958 жылы академик С. А. Лебедевтің басшылығымен жасалған, М-20 есептеулерге арналған электронды есептеуіш машинасы номерленген командалардан тұратын программаны орындай алатын болды (3.1-сурет).
Номер Команда Операндалар сақталатын жедел жады ұяшықтарының адрестері
0100 01 1234 6543 3489
0101 02 4563 0567 3456
0102 05 3489 3456 2987
3.1-сурет. М-20 ЭЕМ-на арналып жазылған программа мәтіні
Алғашқы кезеңдерден бастап-ақ, программистердің алдындағы міндет, жадыдан аз орын алатын және тез жұмыс жасайтын программа құру әдістерін табу керек болды, мысалы, қазіргі программалау тілдерінде сирек болса да қолданылатын GOTO операторы да соның бір кӛрінісі болып табылады.
Мұндай тәсілдерді қолдану программаның статикалық түрінің динамикалық түрімен сәйкес келмеуіне әкеліп соқтыратын болғандықтан бұл программаларды программисттер ӛз тілдерінде BS-программалар (Bowl Spaghetti - блюдо спагетти) деп атайтын болған. Кейбір жағдайларда программисттің ӛзі құрған BS-программасының қатесін ӛзі таба алмай қалатын кездері болады ( 3.2-сурет):
3.2-сурет. BS-программа листингісінің фрагменті
Программалық жабдықты құрудағы негізгі міндеттердің бірі программаның статикалық күйі, яғни бастапқы жазылуымен (немесе листингісі) оның динамикалық күйі, яғни компьютердегі орындалу тәртібі сәйкес келуі керек немесе программа командалары жазылу реті бойынша орындалуы тиіс.
Бұл мәселені шешу үшін жаңа тиімді программалау технологиясын жасау қажет болды.
Бұл ізденістің нәтижесінде 70- жылдардың басында IBM корпорациясы ұсынған, теориялық негізін профессор Э. Дейкстра қалаған құрылымдық программалау технологиясы пайда болды. Мұнда, программалар белгілі бір ережелерге сәйкес немесе технологиялық әдістерге негізделіп құрылатын болды. Мұның негізінде күрделі программаларды кішкентай шағын программаларға жіктеп алу яғни «декомпозиция» принципі жатыр. Бұл кезеңнің программалары модульдерден құралды. Модульдерден құралған мұндай программалар кӛптеген мәселелерді шешкенімен, оның тиімсіз жақтары да болды. Мысалы, неғұрлым подпрограммалар кӛп болған сайын, ол подпрограммаларда программаға қатысатын кең ауқымды (глобалдық) мәліметтердің ӛзгеріп кетуі кӛбейеді, сондықтан әрбір подпрограмма ӛзі орындалып болған ортақ пайдаланылатын кең ауқымды соң мәліметті қайтадан бастапқы қалпына келтіріп қоюы қажет болды. Сондықтан әрбір подпрограмманың ішінде ӛзінің локальдық мәліметтерін жасау қажеттілігі туындады (3.3-сурет).
3.3-сурет. Құрылымдық программалау элементтері Негізгі программа
Глобальды мәліметтер
Подпрограмма1
Локальды мәлімет
Подпрограмма3
Локальды мәлімет
Подпрограмма2
Локальды мәлімет
Мысалы квадрат теңдеуді шешу қажет болса, коэффициенттер ғана негізгі программадан алынады, ал дискриминантты табу ол локальдық айнымалы арқылы жасалады.
Құрылымдық программалаудағы тағы бір мәселе, бір программаға қатысты әртүрліподпрограммаларды бірнеше программисттің бір мезгілде параллель құра алу мүмкіндігімен байланысты туындады. Әрине, бұл тәсіл программаны құру уақытын біраз қысқарта алады, бірақ, мұнда стихиялы түрде «тӛменнен жоғары» қарай программалау қағидасы қолданылды, яғни әуелі қарапайым подпрограммалар жасалып, сонан кейін оларды біріктіріп күрделі программалар жасалатын болды. Ал, бұл подпрограммаларды біріктіріп қалған кезде, ортақ ережелер болмағандықтан негізігі программаны алу ӛте қиын болды, яғни түрліше стильде жасалған подпрограммаларды біріктіру қиынға соқты. Мұны, ХХ ғасырдың, 60-жылдары «подпрограммалаудағы кризис» деп атады.
Модульдік программалау (3.4- сурет) кӛп мәселелерді шешті оның тиімсіз жағы, егер программаға бірнеше модуль қатынасатын болса, онда олардың ӛзара байланысындағы қателер, яғни интерфейстегі қателерді тек программаның орындалуы кезінде ғана байқау мүмкін болатын болды, себебі модульдер программадан тыс ӛз алдына бӛлек компиляцияланады. Егер программаға қатысатын модульдер саны кӛп болса, мұндай қателердің бәрінің алдын алу мүмкін емес екені белгілі болды.
3.4-сурет. Модульдік – құрылымдық программалау элементтері
Келесі кезеңде, объектілік ұстаным қолданыла бастады. Мұнда программа объектілердің жиынтығынан жасалады. Бұл объектілер белгілі бір класқа жатады. Ал ол кластар белгілі бір иерархияға бағынады, және соңғысы алдынғысының барлық қасиеттерін қабылдайды, және олар ӛзара «оқиғалар» арқылы байланысады. Бұл кезеңдегі ең алғаш имитациялық модельдеу тілі Simula болды. Қазіргі, Delphi, Visual C++, C++ Builder, Visual Basic, Java бұлардың барлығы да RAD технологияларға жатады және объектілік ұстанымды барынша қолдайды. Бұл технологиялардың тиімсіз тұсы - компиляциялаудағы ортақ стандарттардың болмауы. Мысалы, белгілі бір алгоритмге сәйкес Visual C++ ортасында жазылған программаны, сол алгоритм үшін C++ Builder ортасында пайдалану мүмкін емес, яғни сол алгоритмді қайтадан жазу керек болады, сол сияқты объектілік компоненттің бір сипаттамасы ӛзгертсе болды, онда соған сәйкес программаны да қайтадан компиляциялаудан ӛткізу қажет болады.
Жоғарыда аталған мәселені шешуді программалаудағы компоненттік ұстаным (COM- технологияның) кӛмегімен шешуге болатыны қазір белгілі болып отыр. Компненттік ұстанымның мағынасы, мұнда программалар ӛзара бір-бірімен стандарт түрдегі екілік
Негізгі программа Глобальды мәліметтер
Модуль 2 Модулдік мәлімет
Подпрограмма1 мәлімет
Подпрограмма2 мәлімет Модуль 1
Мәлімет
Подпрограмма1 мәлімет
Подпрограмма2 мәлімет
интерфейс арқылы байланысады және бинарлық (екілік форматтағы) компоненттерден құралады. Мұндағы объект– компоненттердің кәдімгі объектілерден ӛзгешелігі оларды динамикалық кітапханаларға немесе exe-файлдарға біріктіріп екілік түрде, бастапқы мәтінсіз (без исходных текстов) тарата беруге болады және оны осы компоненттік технологияны ұстанатын кез-келген тілде пайдалана беруге болады. COM- технологияның қарапайым мысалы, Paint графиктік редакторында жасалған сурет-объектіні Word- мәтіндік редакторындағы құжатқа апарып кіріктіруге болады.
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- сурет), мысалы :
3.7- сурет. Базалық құрылымдардың Flow-форма түріндегі жазылуы
Насси-Шнейдерман диаграммасы (3.8- сурет) , бұл Flow-формалардың жетілдірілген түрі болып табылады, егер Flow-формада бәрі тӛртбұрыш түрінде берілсе мұнда тармақталу шарттары үшбұрыш түрінде кӛрсетіледі, мысалы:
3.8- сурет. Базалық құрылымдардың Насси-Шнейдерман диаграммасы түріндегі жазылуы әзір шарт
әрекет дейін шарт әрекет
қайталанатын Шарт
1 әрекет 2 әрекет
иә жоқ
тармақталатын 1 -әрекет
2- әрекет 3 - әрекет сызықтық
1 әрекет
2 әрекет
3 әрекет егер шарт
онда әйтпесе
1 әрекет
2 әрекет әзір шарт
әрекет
сызықтық тармақталатын қайталанатын
Программаны әрлеу стиліне тӛмендегілер кіреді:
- программадағы объектілерге, айнымалыларға, функцияларға дұрыс, мағыналы атаулар беру, мысалы 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;
}…
- ұзақ «кӛбейту» амалынан құтылу, ол үшін оларды қосумен, азайтумен, жылжытумен алмастыру;
- ӛрнектерде типтерді түрлендіруді азайту;
- шарттарды тексеруде, артық тексерулер жасамау;
- массив элементіне индекстері бойынша сұраныс жасамауға тырысу, себебі сол элементтің адресін табу үшін индекстердің мәніне кӛбейту амалы орындалады, сондықтан жадыдан массив элементтерінің мәнін бір рет оқып алып, оны бір скаляр шамаға меншіктеп, оны керек жерде пайдалана беруге болады.
Программаны компиляциялау және жинау кезіндегі қателерден, яғни синтаксистік қатеден басқа программаның орындалу кезінде пайда болатын қателер болады, әдетте, оларды динамикалық қателер деп атайды. Олардың кӛрінуі де түрліше болады, мысалы жүйе қате туралы хабарлама береді немесе тұрып қалады, түсініксіз нәтижелер де беруі мүмкін.
Сондықтан программалауда кетуі мүмкін қателерді алдын ала ескеріп, оларды уақытында табу және жою үшін арнаулы әдістер қолданылады. Мұның барлығы программалауда
«ерекше жағдайларды ӛңдеу» (обработка исключительных ситуации) деп аталатын мәселеге әкеледі. Ерекше жағдайларды ӛңдеу механизмі арнаулы аппараттық немесе тілдік құралдар
кӛмегімен қателерді тауып алып, оны ӛңдеуге мүмкіндік береді, яғни программаның қауіпті жағдайда қалуына жол бермейді.
5- дәріс. Программалық жабдықтарға және оларды жобалаудағы бастапқы мәліметтерге қойылатын талаптарды анықтау
Программалық жабдықтың ӛмірлік циклының негізгі кезеңдерінің бірі- есептің қойылуы кезеңі. Мұнда программалық жабдықтың орындайтын қызметі және программалық жабдыққа қойылатын талаптар анықталады. Бұл талаптар екіге бӛлінеді:
- функционалдық талаптар, яғни бұл болашақта жасалатын программаның қандай жұмыстарды, функцияларды орындайтынын анықтайды;
- эксплуатациялық талаптар, бұл болашақ программалық жабдық қандай жағдайларда жұмыс жасайтынын анықтайды.
Программалық жабдықтарға қойылатын негізгі эксплуатациялық талаптарға тӛмендегілер жатады :
- дұрыстығы, техникалық тапсырмаға сәйкес жұмыс жасауы ;
- универсалдығы – кез-келген мүмкін жағдайларда дұрыс жұмыс жасауы ; - сенімділігі – түрлі қателерден кейін дұрыс жауаптарды қайтара алуы;
- тексерілуі - нәтижелерді тексеру мүмкіндігі;
- нәтиженің дәлдігі - нәтижелер ауытқуының берілген шамадан аспауы;
- қорғалған болуы - ақпараттың құпиялылығын сақтай алуы;
- программалармен үйлесімділігі - басқа программалармен үйлесімді жұмыс жасау мүмкіндігі;
- аппаратпен үйлесімділігі - кейбір құрылғылармен үйлесімді жұмыс жасау мүмкіндігі
;
- тиімділігі - техникалық ресурстарды аз және жылдам пайдалану мүмкіндігі ;
- бейімділігі - түрлі жағдайларға байланысты жасалатын модификацияларға бейімділігі;
- қайта пайдаланыылуы - қайта жүктемей-ақ іске қосыла беруі ; - реентерабелділігі – бірнеше процестерде параллель қолданыла беруі.
Техникалық тапсырма- программалық жабдықты құру мақсаттары, оған қойылатын талаптар, жасау уақыты мен кезеңдері, тапсырыс берушіге ӛткізу мерзімі және т.б. кӛптеген мәліметтер қамтылған программалық жабдық туралы толық мәлімет беретін құжат.
Техникалық тапсырманы жасауға тапсырыс беруші де және оны орындаушы да қатысуы керек. Ол келесі бӛлімдерді қамтиды:
- кіріспе;
- программалық жабдықтар жасаудың қажеттілігін негіздеу;
- программалық жабдықтардың қызметі;
- программалық жабдықтарға қойылатын талаптар;
- программалық жабдықтардың құжаттарына қойылатын талаптар;
- техникалық-экономикалық кӛрсеткіштер ; - құру кезеңдерімен стадиялары;
- программалық жабдықты қабылдау және бақылау тәртібі.
6,7-8 дәрістер. Құрылымдық ұстанымға негізделген программалық жабдықтардың ерекшеліктері
Программалық жабдықтың ӛмірлік циклындағы маңызды кезеңнің бірі – бұл программалық жабдықтарға қойылатын талаптарға анализ жасау негізінде программалық
жабдықтардың ерекшелігін немесе спецификациясын анықтау болып табылады.
Спецификация (specify-дәл анықтау- точно определять, spesisication- детальдары- детали, specific- ерекше сипаттамалары- особый отличительный характер) – бұл жасалатын программалық жабдықтардың және оған қойылатын шектеулердің формалды түрдегі дәл сипаттамалары. Сонымен, программалық жабдықтардың спецификациясы, бұл программалық жабдық туралы дәл және толық сипаттама. Спецификация негізгі екі бӛлімнен тұрады:
- функционалдық бӛлім, программалық жабдықтардың орындайтын функцияларын сипаттайды;
- эксплуатациялық бӛлім, техникалық құрал-жабдықтарға, ақпараттық қауіпсіздікті сақтауға қойылатын талаптарды анықтайды.
Спецификацияның толықтығы, мұнда болашақ жасалатын программалық жабдықтарға қатысты барлық нәрселер ескерілуі керек, яғни программалық жабдықтарды жасаушы үшін (разработчик) ешқандай кедергі, қосымша мәселе болмауы керек.
Спецификацияның дәлдігі, бұл – спецификация тапсырыс (заказчик) беруші мен оны орындаушы (разработчик) тарапынан бірдей мағынада қабылдануы керек.
Программалық жабдықтардың спецификацияларын кӛрсету үшін кәдімгі табиғи тілдер жарамайды. Сондықтан дәл спецификацияларды кӛрсету үшін арнайы формальды модельдер қолданылады.
Спецификацияларды анықтау кезеңіндегі формальды модельдерді екі топқа бӛледі:
ұстанымдарға (құрылымдық, объектілік) тәуелді және тәуелсіз. Классификациясы тӛменде 3.9- суретте берілген.
Программалық жабдықтардың спецификациясы жан-жақты кӛрсету үшін әдетте бірнеше модельді қатар пайдаланады.
Спецификацияларды талдау және
анықтау кезеңдерінің модельдері
Ұстанымға тәуелсіз модельдер
Күйлер ауысуының диаграммалары
Пәндік облыстың математикалық моделі
малар күйлер ауысуының
Құрылымдық ұстаным
Функциональдық диаграммалар Мәліметтер ағыны диаграммалары Мәліметтер қатынасының диаграммалары
Объектілік ұстаным
Әрекеттер диаграммасы Класстар диаграммасы Вариант қолдану диаграммалары Ұстанымға тәуелді модельдер