Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KPZ_modul2.docx
Скачиваний:
6
Добавлен:
12.09.2019
Размер:
83.24 Кб
Скачать

1.Програма, як формалізований опис процесу обробки даних.

Метою програмування є опис процесів обробки даних (надалі - просто процесів). Дані - це представлення фактів та ідей у формалізованому вигляді, придатному для передачі і переробки в якомусь процесі, а інформація - це сенс, який надається даними при їх поданні. Обробка даних - це виконання систематичної послідовності дій з даними. Дані представляються і зберігаються на т.зв. носіях даних. Сукупність носіїв даних, використовуваних при будь-якій обробці даних, будемо називати інформаційним середовищем. Набір даних, що містяться в будь-який момент в інформаційному середовищі, будемо називати станом цієї інформаційного середовища. Процес можна визначити як послідовність змінюють один одного станів деякої інформаційного середовища.  Описати процес - означає визначити послідовність станів заданої інформаційного середовища. Якщо ми хочемо, щоб по заданому опису необхідний процес породжувався автоматично на будь-якому комп'ютері, необхідно, щоб цей опис було формалізованим. Такий опис називається програмою. З іншого боку, програма повинна бути зрозумілою і людині, так як і при розробці програм, і при їх використанні часто доводиться з'ясовувати, який саме процес вона породжує. Тому програма складається на зручному для людини формалізованій мові програмування, з якого вона автоматично переводиться на мову відповідної комп'ютера за допомогою іншої програми, званої транслятором. Людині (програмісту), перш ніж скласти програму на зручному для нього мовою програмування, доводиться проробляти велику підготовчу роботу з уточнення постановки задачі, вибору методу її рішення, з'ясуванню специфіки застосування необхідної програми, проясненню загальної організації розробляється програми та багато іншого. Використання цієї інформації може істотно спростити завдання розуміння програми людиною, тому дуже корисно її якось фіксувати у вигляді окремих документів (часто не формалізованих, розрахованих тільки для сприйняття людиною).  Зазвичай програми розробляються в розрахунку на те, щоб ними могли користуватися люди, що не беруть участь в їх розробці (їх називають користувачами). Для освоєння програми користувачем крім її тексту потрібна певна додаткова документація. Програма або логічно пов'язана сукупність програм на носіях даних, забезпечена програмною документацією, називається програмним засобом (ПС). Програма дозволяє здійснювати деяку автоматичну обробку даних на комп'ютері. Програмна документація дозволяє зрозуміти, які функції виконує та чи інша програма ПС, як підготувати вихідні дані і запустити потрібну програму в процес її виконання, а також: що означають отримані результати (або який ефект виконання цієї програми). Крім того, програмна документація допомагає розібратися в самій програмі, що необхідно, наприклад, при її модифікації.  2.Технологія програмування як технологія розробки надійних програмних засобів Під технологією програмування будемо розуміти сукупність виробничих процесів, що приводить до створення необхідного ПС, а також опис цієї сукупності процесів. Іншими словами, технологію програмування ми будемо розуміти тут в широкому сенсі як технологію розробки програмних засобів, включаючи в неї всі процеси, починаючи з моменту зародження ідеї цього кошти, і, зокрема, пов'язані зі створенням необхідної програмної документації. Кожен процес цієї сукупності базується на використанні будь-яких методів і засобів, наприклад, комп'ютер (у цьому випадку будемо говорити про комп'ютерної технології програмування).  Використовується в літературі і близьке до технології програмування поняття програмної інженерії, яка визначається як систематичний підхід до розробки, експлуатації, супроводу і вилученню з обігу програмних засобів . Головна відмінність між технологією програмування і програмної інженерії як дисциплінами для вивчення полягає у способі розгляду та систематизації матеріалу. У технології програмування акцент робиться на вивченні процесів розробки ПС (технологічних процесів) і порядку їх проходження - методи та інструментальні засоби розробки ПС використовуються в цих процесах (їх застосування і утворюють технологічні процеси). Тоді як у програмній інженерії вивчаються перш за все методи та інструментальні засоби розробки ПС з точки зору досягнення певних цілей - вони можуть використовуватися в різних технологічних процесах (і в різних технологіях програмування); як ці методи і засоби утворюють технологічні процеси - тут питання другорядне.  Не слід також плутати технологію програмування з методологією програмування . Хоча в обох випадках вивчаються методи, але в технології програмування методи розглядаються «згори» (з точки зору організації технологічних процесів), а в методології програмування методи розглядаються «знизу» (з точки зору основ їх побудови).  Маючи на увазі, що надійність є невід'ємним атрибутом ПС, ми будемо обговорювати технологію програмування як технологію розробки надійних ПС. Це означає, що, по-перше, ми будемо обговорювати всі процеси розробки ПС, починаючи з моменту виникнення задуму ПС. По-друге, нас будуть цікавити не тільки питання побудови програмних конструкцій, але і питання опису функцій та прийнятих рішень з точки зору їх людського (неформального) сприйняття, і, нарешті, в якості продукту технології ми будемо приймати надійну (а не правильну) ПС . Все це буде істотно впливати на вибір методів та інструментальних засобів у процесах розробки ПС.

3. Усередині великої прикладної програми можуть існувати сотні і навіть тисячі перемінних і кілька потоків керування. Повний набір цих перемінних, їхній поточних значень, що тече адреси і стека виклику для кожного процесу описує стан прикладної програми в кожен момент часу. Тому що виконання нашої програми здійснюється на цифровому комп'ютері, ми маємо систему з дискретними станами. Аналогові системи, такі, як рух кинутого м'яча, навпроти, є безупинними. Д.Парнас пише: "коли ми говоримо, що система описується безупинною функцією, ми маємо через, що в ній немає схованих сюрпризів. Невеликі зміни вхідних параметрів завжди викликають невеликі зміни вихідних". З іншого боку, дискретні системи по самій своїй природі мають кінцеве число можливих станів, хоча у великих системах це число відповідно до правил комбінаторики дуже велике. Ми намагаємося проектувати системи, розділяючи їх на частині так, щоб одна частина мінімально впливало на іншу. Однак переходи між дискретними станами не можуть моделюватися безупинними функціями. Кожна подія, зовнішнє стосовно програмної системи, може перевести її в новий стан, і, більш того, перехід з одного стану в інше не завжди детермінований. При несприятливих умовах зовнішня подія може порушити поточний стан системи через те, що її творці не змогли передбачити всі можливі варіанти. Уявимо собі пасажирський літак, у якому система керування польотом і система електропостачання об'єднані. Було б дуже неприємно, якби від включення пасажиром, що сидить на місці 38J, індивідуального висвітлення літак негайно ввійшов би в глибоке піку. У безупинних системах таке поводження було б неможливим, але в дискретних системах будь-яка зовнішня подія може вплинути на будь-яку частину внутрішнього стану системи. Це, очевидно, і є головною причиною обов'язкового тестування наших систем; але справа в тім, що за винятком самих тривіальних випадків, усеосяжне тестування таких програм провести неможливо. І поки в нас немає ні математичних інструментів, ні інтелектуальних можливостей для повного моделювання поводження великих дискретних систем, ми повинні задовольнитися розумним рівнем впевненості в їхній правильності.

4. Технологія програмування як технологія розробки надійних програмних засобів  Відповідно до звичайного значення слова «технологія» [REF _Ref53419621 \ n \ * MERGEFORMAT 6 ] Під технологією програмування будемо розуміти сукупність виробничих процесів, що приводить до створення необхідного ПС, а також опис цієї сукупності процесів. Іншими словами, технологію програмування ми будемо розуміти тут в широкому сенсі як технологію розробки програмних засобів, включаючи в неї всі процеси, починаючи з моменту зародження ідеї цього кошти, і, зокрема, пов'язані зі створенням необхідної програмної документації. Кожен процес цієї сукупності базується на використанні будь-яких методів і засобів, наприклад, комп'ютер (у цьому випадку будемо говорити про комп'ютерної технології програмування).  У літературі є й інші, дещо відрізняються, визначення технології програмування. Ці визначення обговорюються в роботі [REF _Ref53419638 \ n \ * MERGEFORMAT 7 ]. Використовується в літературі і близьке до технології програмування поняття програмної інженерії, яка визначається як систематичний підхід до розробки, експлуатації, супроводу і вилученню з обігу програмних засобів [REF _Ref53419638 \ n \ * MERGEFORMAT 7 ]. Саме програмної інженерії (Software Engineering) присвячена згадана робота [REF _Ref53419509 \ n \ * MERGEFORMAT 3 ]. Головна відмінність між технологією програмування і програмної інженерії як дисциплінами для вивчення полягає у способі розгляду та систематизації матеріалу. У технології програмування акцент робиться на вивченні процесів розробки ПС (технологічних процесів) і порядку їх проходження - методи та інструментальні засоби розробки ПС використовуються в цих процесах (їх застосування і утворюють технологічні процеси). Тоді як у програмній інженерії вивчаються перш за все методи та інструментальні засоби розробки ПС з точки зору досягнення певних цілей - вони можуть використовуватися в різних технологічних процесах (і в різних технологіях програмування); як ці методи і засоби утворюють технологічні процеси - тут питання другорядне.  Не слід також плутати технологію програмування з методологією програмування [REF _Ref53419672 \ n \ * MERGEFORMAT 8 ]. Хоча в обох випадках вивчаються методи, але в технології програмування методи розглядаються «згори» (з точки зору організації технологічних процесів), а в методології програмування методи розглядаються «знизу» (з точки зору основ їх побудови). У роботі [REF _Ref53419684 \ n \ * MERGEFORMAT 9 , Стор 25] методологія програмування визначається як сукупність механізмів, що застосовуються в процесі розробки програмного забезпечення та об'єднаних одним загальним філософським підходом.  Маючи на увазі, що надійність є невід'ємним атрибутом ПС, ми будемо обговорювати технологію програмування як технологію розробки надійних ПС. Це означає, що, по-перше, ми будемо обговорювати всі процеси розробки ПС, починаючи з моменту виникнення задуму ПС. По-друге, нас будуть цікавити не тільки питання побудови програмних конструкцій, але і питання опису функцій та прийнятих рішень з точки зору їх людського (неформального) сприйняття, і, нарешті, в якості продукту технології ми будемо приймати надійну (а не правильну) ПС . Все це буде істотно впливати на вибір методів та інструментальних засобів у процесах розробки ПС.

5 Життєвий цикл програмного забезпечення

Процес створення та використання програмної системи включає декілька стадій: від початкової ідеї до остаточного морального застаріння. Цей процес називається життєвим циклом програмного забезпечення [6, 8, 11]. Він складається з наступних 6 етапів.

1. Специфікація вимог:

а) підготовка повного і чіткого визначення задачі;

б) представлення документів з вимогами до задачі користувачам і аналітикам для погодження (ухвалення).

2. Аналіз:

а) вивчення задачі, визначення специфікацій (тобто структури вхідних та вихідних даних);

б) оцінка альтернативних методів розв’язання (алгоритмів);

в) вибір оптимального метода (алгоритма).

3. Проектування:

а) визначення структури програмної системи та її проектування;

б) розбиття програмної системи на окремі компоненти та їх проектування з визначенням ключових елементів структури даних.

4. Реалізація:

а) створення алгоритмів і кодів окремих модулів вибраною мовою програмування;

б) створення вихідного текста програми;

в) налагодження вихідного текста.

5. Тестування і верифікація:

а) тестування вихідного текста;

б) участь користувачів і спеціальних колективів (тестерів) у всіх перевірках системи.

6. Експлуатація і супроводження:

а) використання готової програмної системи;

б) оцінка її ефективності;

в) усунення знайдених в процесі експлуатації помилок;

г) внесення необхідних змін для підтримки актуальності програмної системи;

д) перевірка коректності внесених змін (вони не повинні негативно впливати на функціонування системи).

Життєвий цикл програмного забезпечення є ітеративним, тобто допускає багатократне повторення своїх етапів. В ході розробки (етап 3) можуть виникнути проблеми, які будуть вимагати змін вимог до системи (етап 1); під час реалізації (етап 4) може виникнути необхідність переглянути результати, отримані під час розробки (на етапі 3); під час тестування (етап 5) можуть бути виявлені помилки і так далі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]