22947

ЖИТТЄВИЙ ЦИКЛ ПРОГРАМ (ЖЦП). ПОНЯТТЯ ПРО ТЕХНОЛОГІЮ ПРОГРАМУВАННЯ

Лекция

Информатика, кибернетика и программирование

ПОНЯТТЯ ПРО ТЕХНОЛОГІЮ ПРОГРАМУВАННЯ Пiд ЖЦП будемо розумiти сукупнiсть науковотехнiчних та органiзацiйних заходiв направлених на розробку та експлуатацiю програмних моделей систем. Щоб продукувати такі складні об'єкти використовують спецiальнi технологiї програмування. В основi технологiй програмування ТхП лежать засоби що реалiзують ЖЦП. Будьяка серйозна ТхП спирається на певну методологiю програмування сукупнiсть певних концепцій методiв програмування тощо.

Русский

2013-08-04

73 KB

1 чел.

ТЕМА:  ЖИТТЄВИЙ  ЦИКЛ  ПРОГРАМ  (ЖЦП).

ПОНЯТТЯ ПРО  ТЕХНОЛОГІЮ ПРОГРАМУВАННЯ

 Пiд  ЖЦП  будемо  розумiти  сукупнiсть  науково-технiчних   та органiзацiйних заходiв, направлених на розробку та  експлуатацiю програмних моделей систем. На практицi реальні програмнi  системи дуже складнi. Не  без  пiдстав  вважають,  що  вони  вiдносяться  до одних з найбiльш складних штучних об'єктiв,  що  створювалися людством.  Щоб   продукувати  такі складні об'єкти, використовують   спецiальнi   технологiї програмування.  В основi технологiй програмування (ТхП)  лежать засоби, що реалiзують ЖЦП. Будь-яка  серйозна  ТхП  спирається  на  певну методологiю  програмування  -  сукупнiсть  певних   концепцій, методiв програмування тощо). Методології програмування вивчає програмологія – наука про програми та програмування. ЖЦП складається з  етапiв, що представлені на малюнку:

                         -------------------¬  (АЗ)

                         ¦ 1.Аналiз задачi  ¦

                         L-------------------

                                   ¦

                                    

                         ----------------------¬ (ППМ)

                         ¦ 2.Проектування      ¦

                         ¦   програмної моделi ¦

                         L----------------------

                                   ¦

                                    

                         ----------------------¬  (К)

                         ¦ 3.Кодування         ¦

                         L----------------------

                                   ¦

                                    

                         ----------------------¬

                         ¦ 4.Обгрунтування     ¦ (ОПП)

                         ¦   правильностi      ¦

                         ¦   програми.         ¦

                         L-----------------T----

                           /                

                          /

                         / ----------------------------¬

                        /

                       /   ¦ 4.2. Обгрунтування факту  ¦

                      /

                     /     ¦      вiдповiдностi моделi ¦

                    /

                   /       ¦      прагматичним вимогам ¦

                   

    --------------------¬  L----------------------------

    ¦ 4.1.Обгрунтування ¦

    ¦     коректностi   ¦

     L--------------------

          /           \

         /             \

                         

--------------------¬  --------------------¬

¦ 4.1.1.Математичнi ¦  ¦ 4.1.2.Iнженернi   ¦

¦       методи      ¦  ¦       методи      ¦

|-------------------|  ------------------¬--

                                         

--------------¬ -------------------¬  -------------¬

¦ Верифiкацiя ¦ ¦ Трансформацiйний ¦  ¦ Тестування ¦

¦ програми    ¦ ¦ пiдхiд           ¦  |            |

|-------------| -------------------¬  -------------¬

1.Аналiз задачi.  Вимагає з'ясування:

1.1. функцiональної семантики майбутньої програми (вхідної         сиcтеми);

 1.2. програмно-технiчних  засобiв  реалiзацiї цiєї семантики;

 1.3. прагматичних вимог до програмної  системи (ефективність використання ресурсів, швидкодія тощо );

 1.4. вимог до iнтерфейсу( зручність спiлкування з програмою),

      безпека, якiснi вимоги.

Результат аналiзу оформляється у вигляді технiчного  завдання, що є невід’ємною складовою Договору між Замовником та Виконавцем про розробку програмної системи.

2. Проектування. Полягає в:

2.1. Обранні структур даних (вибір функцiй кодування  та декодування,  вхiдних та вихiдних даних);

2.2. Розробці семантичної структури системи, тобто декомпозиції її на більш прості  складові - блоки, модулi тощо.

3. Кодування. Це процес подання результатів проектування засобами    вибранної мови  (або мов) програмування.

4. Обгрунтування правильності програми. Полягає в обгрунтуваннi, по- перше, того що отримана програма коректна, тобто  дiйсно моделює співвідношення вхідної системи відносно вибраних функцій кодування та декодування і, по-друге, що вона задовольняє всім прагматичним  вимогам.

Обгрунтування коректностi може здійснюватись як інженерними так і математичними методами. Інженерні методи базуються на, так званому, тестуванні програми.Тестування програми полягає в проведеннi конкретних  обчислень за програмою на окремих спецiально пiдiбраних варiантах вхiдних даних.  Пiсля кожного такого обчислення результати  порівнюються з тими, що мають бути за функціональною семантикою (п.1.1), тобто для тесту а перевіряється рівність:

                  f(a)=h(P(g(a))), де  

h,g- відповідно функції декодування та кодування програми.Якщо  знайдено  невiдповiднiсть, то шукають помилку в програмі i намагаються її усунути. Цей процес називається вiдлагодженням  (debugging) програми. Тестування та вiдлагодження є своєрідним мистецтвом. Воно полягає, зокрема, в умiннi пiдiбрати набір тестів так, щоб мiнiмiзувати наявні ресурси (матеріальні та у часі) по виявленню та усуненню можливих помилок (“ляпів”) в програмi. Але, на жаль, катастрофічний дефіцит на практиці згаданих ресурсів не дозволяє за допомогою  тестування реально вирішити проблему ОПП. Тестування  дозволяє знайти деякi з можливих помилки в програмi, але  не  гарантує що всiх їх на даний момент знайдено. Тобто воно лише частково обгрунтовує коректність програми. На вiдмiну вiд  iнженерних  математичні методи мають на меті зробити  факт  коректностi  моделi  математичним  фактом. При цьому  програмiст виступає як  математик  у спецiальнiй математичнiй галузi векрифікації програм.  Технологiї, що застосувують подібні методи обгрунтування правильностi програм називають доказовим програмуванням. Розглянемо кілька з них.

Верифiкацiя - iсторично перший пiдхiд до доказового програмування- винайдений в середенi 70-х рокiв, як реакцiя наукового математичного спiвтовариства на, так звану, "кризу" в програмуваннi. Ця “криза” образно сформульована у відомому висловлюванні:”В кожнiй серьознiй і працюючій системi є не виявлені “ляпи”. Верифiкацiя полягає в намаганні математично довести коректнiсть програми в рамках певної математичної системи. Для цього були розроблені спеціальні методи формального подання семантики програм та відповідні логічні засоби. Отримані результати були широко обговорені науковим співтовариством і знайшли своє відображення в літературі. Експерименти з конкретними програмами показали, що математичне доведення коректностi програм справа цілком реальна. Але в бiльшостi випадкiв цi доведення на сьогодні ще досить складнi і самі потребують великих ресурсів. Текстуально подібні доведення мають на багато бiльший розмiр нiж сама програма. Окрім того виникає природнє питання: а чи самі ці доведення є коректними? Мали місце спроби також автоматизувати процес верифікації програм за допомогою спеціальних програм-верифікаторів. І хоч сьогодні методи верифікації поки що залишаються “в теорії”, всеж вони дозволи краще зрозуміти природу програмування і підштовхнули до нових ідей в галузі доказового програмування. Одна з них лежить в основі технології, так званого, трансформаційного програмування. Ця технологія полягає у застосуваннi  спецiальних  мов  специфiкацiй для проектування та подання промiжних  моделей  вхiдної системи та розробці формальних методiв еквiвалентних перетворень (трансформацiй) одних класiв таких специфiкацiй в iншi і таких,  що  гарантують коректнiсть подібних переходiв. Тобто сочатку є вхiдна  система  (= функцiональна семантика майбутньої системи, див. Аналіз), на нiй  базується наступна промiжна  модель, яка  подається за допомогою  певної   мови специфiкацiй. За допомогою спеціальних трвнсформацій з неї отримують наступну модель, i так далi поки не буде отримана потрібна програмна модель. Оскiльки трансформацiйнi  правила  зберігають коректнiсть,  то на кожному кроці ми завжди маємо систему, що є моделлю попередньої системи. А значить і моделлю вхідної.  Цей  пiдхiд до доказового програмування є досить реалістичним і має  багато прихильникiв (Див.наприклад, []). Формальні специфiкацiї програм та методи їх еквівалентних перетворень  розробляє і вивчає теорiя програмування. Чи задовільняє програма прагматичним вимогам (п.1.3) з’ясувують під час дослідної її експлуатації, а також шляхом аналізу її семантичної структури.

Документування. Полягає в підготовці програмної  документації у відповідності до певних державних стандартів.

Експлуатація. Як правило, реальній експлуатації передує, так звана, дослідна експлуатація. Під час останньої Замовник бажає перевірити чи задовольняє програма всім вимогам Технічного Завдання. Для Розробника ж, дослідна експлуатація (окрім усього іншого, наприклад, навчання майбутніх користувачів і т.п.)   – це ще одна,додаткова  можливість продовжити тестування і відлагодження  ( але вже в значній мірі за рахунок Замовника!). Тут покращується інтерфейс і  остаточно зясовується життєздатність ситстеми. В процесі експлуатації може виникнути необхідність в зміні постановки задачі, подальшому удосконалельні системи і т.п. Тому важливо, що б програма була придатною до майбутньої модифікації (добре структурованою і т.д.).  

  ТЕМА: ПОНЯТТЯ ПРОГРАМУВАННЯ. ПРОГРАМОЛОГІЯ.

Для опису (специфікації) інформаційних моделей використовують  спеціальні знакові системи - мови програмування. Мова програмування  - це спеціальна знакова  система, призначена для  опису певних  фіксованих класів інформаційних об’єктів та  алгоритмів. 

 Def.  Данними мов програмування  називаються конструкції, які подають в них інформаційні об’єкти, а програмами – конструкції,  що  подають алгоритми. Функції, що обчислюються програмами,   називаються програмними.

Визначимо тепер   центральне поняття інформатики  -  програмування. За звичаєм, коли визначають програмування, то апелюють до тих чи інших його окремих аспектів. Найчастіше програмування трактують як процес написання (побудови, конструювання і т.п.) програм та алгоритмів [1,4]  або як процес побудови програм для розв’язання певної задачі за допомогою комп’ютера [2,3,5]. Останній варіант хоч i є більш вдалим, але теж не може вважатися цілком задовільним, оскільки потребує в свою чергу з’ясування, що таке задача і т.д. Виходячи з нашого означення  інформатики, більш  змістовним  виглядає наступне означення.

Def.  Програмуванням  називається процес побудови інформаційних моделей систем.

Отже,  програмування - це не просто процес написання якоїсь окремої програми чи тієї чи іншої  сукупності програм засобами певної мови програмування, а цілеспрямований процесс побудови  інформаційних  систем, що моделюють об’єкти та співвідношення вхідної системи. Зауважимо, що в епіцентрі уваги  інформатики знаходяться проблеми побудови інформаційних моделей у вигляді, так званих, обчислювальних систем, тобто симбіозу автоматів з програмним керуванням ( наприклад, комп’ютерів) та програмного забезпечення. Тому нeвiд’ємнoю складовою процесу програмування таких систем є специфікація властивостей апаратури та системних програмних засобiв. Розділ інформатики, що вивчає програми та програмування отримав назву теорії програмування або програмології [6].

Інформаційні моделі систем можуть розглядатись і вивчатись у різних напрямках та аспектах. Сформулюємо кілька, на наш погляд, важливих принципів, які  могли б бути корисними в  процесі вивчення та програмуванні таких моделей.

Принцип підпорядкування. Як  об’єкти спеціальних  знакових систем, всі компоненти інформаційних моделей мають три основні аспекти: синтаксичний, семантичний та прагматичний. Даний принцип фіксує пріоритет прагматичних їх властивостей  над семантичними і останніх над синтаксичними.

Принцип відокремлення.  Цей принцип акцентує увагу на відносній самостійності основних аспектів інформаційних моделей і на їх попередньому відокремленому  вивченню  з застосуванням своїх спеціальних засобів та методів .

Принцип абстракції. Даний принцип вказує на необхідність використання різних рівнів абстракції в процесі дослідження та програмуванні  інформаційних моделей.

 Принцип типізації. Згідно з цим принципом кожний об’єкт  інформаційної системи належить певному типу і тільки одному. Тип визначає загальну синтаксичну і семантичну структуру даних, засоби їх обробки та доступу,  також в певних межах і їх прагматику. Типи мають ієрархічну залежність і утворюють ,так звану, башту типів мов програмування . Засоби утворення цієї башти разом з базовими типами є фундаментальною характеристикою мов програмування.

Принцип аксіоматизації.  Принцип  аксіоматизації вказує на важливість фіксації певними логічними засобами властивостей систем, щоб зробити процес їх програмування цілеспрямованим та більш контрольованим. З цією метою формулюють сукупність апріорних властивостей систем (аксіом) та правил, що дозволяють з аксіом отримувати інші необхідні властивості. Даний принцип вимагає ретельного аналізу та аксіоматизації семантики мов програмування та можливостей апаратури.          

Принцип функціональності.. Принцип функціональності вказує на важливість функціональних структур інформаційних систем в процесі їх вивчення та програмуванні. Такі структури можуть задаватись будь-якими прийнятними засобами, у тому числі і непроцедурними. Наприклад, табличними, аналітичними чи алгебраїчними за допомогою рівнянь.

Принцип конструктивізації. Як уже відмічалось, для кожного класу  -обчислювальних функцій, у тому числі і програмних,  важливим є питання його конструктивізації  (проблема аналізу), яке полягає у  пошуку певної  системи його подання за допомогою  елементарних  базових функцій та  відповідних конструкторів. Для програмних   функцій мов програмування такі конструктори називаються  композиціями. Систему базових  програмних функцій  та композицій називають імперативною логікою програм [7]. Вона називається повною для даної мови програмування, якщо дозволяє адекватно побудувати функціональну структуру  будь-якої її програми. Побудова та вивчення універсальних повних імперативних логік програм є однією з важливих передумов для порівняльного  аналізу та наукової класифікації мов програмування, їх аксіоматизації,   для верифікації інформаційних   моделей  т.п.  Більш детальне обговорення цих та інших загальних принципів  можна знайти в  [2].

Література

  1.  Майерс Г. Надежность программного обеспечения. . - М.:Мир,1980.
  2.   Редько В.Н. Основания  программологии // Кибернетика и ситемный анализ.-2000.-№1.-с.33-57.

  1.  



 

А также другие работы, которые могут Вас заинтересовать

62609. Урок русского языка в современной школе 5.52 MB
  В учебно-методическом пособии много практического материала который конкретизирует основные теоретические положения и разные подходы к построению уроков; в нем показываются способы внедрения в урок различных нововведений отражены особенности функционирования отдельных структурных элементов урока...
62610. Словарь ошибок вокальной педагогики 861.51 KB
  Эта школа за последние столетия вобрала в себя все наиболее эффективные способы и приемы постановки и развития певческого голоса. в Парижской консерватории был создан первый учебник где присутствовало ошибочное направление болонской итальянской школы утверждавшее в частности что самая удобная гласная – А самая трудная – У; низкие мужские и женские голоса имеют 2 регистра. А у начинающих певцов нет своего взгляда на вокал; себя они не слышат не ощущая изнутри своего голоса. Как же быть Даже определить тип голоса...