Зараз важко уявити собі
життя людини без комп'ютера. Люди використовують його для розв'язання
найрізноманітніших задач: від виконання важких обчислень до виконання кропіткої
домашньої роботи (прання білизни, приготування їжі, миття посуду і, навіть,
домашній секретар).
Персональний комп'ютер зараз є майже в кожному
домі і без нього неможлива обробка такого величезного потоку інформації, який
зараз буквально "наринув" на людину. Оформлення складної
документації, створення та обробка графічних зображень, отримання даних з
будь-якого питання з баз даних та світової мережі Інтернет, табличні
розрахунки, розв'язування математичних задач, навчання. Ось далеко не повний
перелік всіх можливостей нашого помічника — комп'ютера.
Для розв'язання цих задач у розпорядженні
користувача є велика кількість різноманітного програмного забезпечення, яке
поділяється на чотири великі категорій:
·
операційні
системи - програми, що забезпечують працездатність комп'ютера;
·
системні
утиліти — програми, що оптимізують роботу з комп'ютером (архіватори,
антивірусні засоби, програми роботи з дисками і таке інше);
·
інструментальні
засоби — системи програмування, що дозволяють створювати інші програми;
·
прикладне
програмне забезпечення — програми, призначені для розв'язання певного класу
задач.
Отримавши задачу, користувач, виходячи з її
умови, вирішує, яким програмним засобом можна скористатися для її розв'язання.
Якщо в складі програмного забезпечення є програма, придатна для цього, то
користувач вибирає її як інструмент, якщо ж ні, то доводиться створювати нову
спеціальну програму, виконання якої призведе до очікуваного результату.
Однак є величезна
категорія задач, для розв'язку яких не існує відповідного програмного
забезпечення, або існуюче програмне забезпечення з деяких причин нас не
влаштовує. В цьому випадку ми повинні самостійно написати програму для
виконання поставленої мети.
Розглянемо технологію розв'язання прикладної
задачі на ЕОМ.
Розв'язування будь-якої задачі починається з
її постановки. На цьому етапі треба чітко з'ясувати, що дано і що треба знайти.
Тобто треба добре уявити, в чому полягає дана задача, які необхідні початкові
дані для її розв'язання, та що можна вважати за очікуваний результат.
Наприклад, ви вирішили зробити ремонт кімнати. Вочевидь, що безпосередньо зробити
ремонт персональний комп'ютер не може. Але він може допомогти у виконання
розрахунків на витратні матеріали, оплату виконаних робіт тощо.
Другим етапом
розв'язування задач є побудова математичної моделі. Це дуже відповідальний
етап, тому що не завжди в умові задачі міститься формула, придатна для
застосування в програмі. Для цього створюється інформаційна математична модель
об'єкта.
У нашому випадку математичною моделлю нашої
задачі буде:
по-перше,
розрахунок площі поверхні, що підлягає ремонту (будемо наклеювати шпалери);
по-друге,
розрахунок необхідних витратних матеріалів з урахуванням площі шпалер, що
знаходяться в рулоні, та проценту додаткових шпалер для співпадання
малюнків;
по-третє,
розрахунок вартості витратних матеріалів та виконаних робіт.
Наступним етапом є
розробка алгоритму на основі побудованої математичної моделі. Для цього можна
використати вже відомі методи та способи розв'язування отриманих математичних
співвідношень, причому при наявності кількох методів розв'язання необхідно
вибрати оптимальний, провівши їх оцінку та аналіз. Якщо серед існуючих методів
розв'язання необхідний відсутній, треба розробити власний.
Під час створення складних алгоритмів
застосовується метод покрокової деталізації, який полягає в тому, що складний
алгоритм розбивається на прості підзадачі, кожна з
яких в свою чергу може розбиватися на ще простіші. Такий підхід дозволяє також
розбити алгоритм на окремі частини — модулі, реалізацію кожного з яких доручити
окремому програмісту. В цьому випадку програміст концентрується на розв'язанні
окремої підзадачі, використовуючи для цього свої
методи.
Останнім етапом у методі покрокової розробки є
об'єднання окремих модулів у єдине ціле. Для цього між всіма модулями повинні
бути встановлені зв'язки, тобто узгоджена передача інформації від одних модулів
до інших. Це дуже важка робота і від оптимальності вибору вхідних та вихідних
параметрів окремих модулів кінець кінцем залежить оптимальність роботі всієї
програми.
Алгоритм, призначений для комп'ютерної
реалізації, має бути записаний однією з мов програмування. На даному етапі
розвитку комп'ютерної техніки різноманітність існуючих мов програмування дає
програмісту можливість вибрати оптимальний варіант для отримання бажаного
результату. А враховуючи можливість розбиття алгоритму на окремі модулі,
реалізацію кожної підзадачі взагалі можна виконати
різними засобами.
Написану вибраною мовою програмування програму
необхідно тепер налагодити та протестувати. Під налагоджуванням програми
розуміється процес випробування роботи програми з виправленням виявлених при
цьому помилок. Виправити помилки, пов'язані з правилами написання програм, вам
допомагає середовище програмування, а ось логічні помилки виправити набагато
важче. В цьому вам можуть допомогти правильно підібрані тести.
Останній етап — це використання програми для
отримання шуканих результатів. На цьому етапі обов'язково ще раз перевірити
правильність очікуваних результатів. Якщо отримані результати являються
помилковими, необхідно повернутися до одного з попередніх етапів (іноді,
навіть, до найпершого — постановки задачі) і ще раз перевірити правильність
зроблених робіт. Можливо, що на деяких етапах буде необхідно доопрацювати або
повністю переробити весь етап.
Тепер програму можна експлуатувати і, навіть,
пропонувати іншим користувачам, доповнивши її необхідною документацією.
Отже, основними етапами розв'язку задачі за
допомогою ЕОМ є наступні:
·
постановка
задачі;
·
побудова
математичної моделі;
·
розробка
алгоритму;
·
опис
алгоритму мовою програмування;
·
тестування
та налагоджування програм;
·
експлуатація
програми.
З самого початку
розвитку теорії і практики програмування розроблялися технології, що були
орієнтовані на певну традиційну схему програмування. Ця схема передбачає певні
етапи роботи, що до останнього часу були характерними для переважної більшості
програмних продуктів. Цю схему часто називають каскадною (або водоспадною)
моделлю.
Каскадна модель виділяє такі основні етапи
життєвого циклу програм:
1. Аналіз проблеми,
постановка задачі і специфікація вимог до майбутньої програми. Як правило, цей
етап повинен передбачати взаємодію між виконавцем та замовником. Результатом
повинно бути технічне замовлення, сформульоване в письмовому вигляді.
2. Проектування. Повинен
бути вибраний метод вирішення задачі та спроектований відповідний алгоритм.
3. Кодування, яке
полягає в написанні тексту програми відповідно до розробленого алгоритму.
4. Відлагодження,
яке полягає у виявлення та виправленні помилок.
5. Тестування, що
передбачає перевірку правильності програми на тестових прикладах – спеціально
підібраних наборів вхідних даних. Для цих наборів даних повинні бути відомими
правильні відповіді. Якщо відповіді програми на всіх тестових прикладах
співпадають з очікуваними, програма вважається правильною.
Тестування повинно бути якомога більш повним,
і правильний підбір тестових прикладів часто є дуже непростою задачею. Повинні
бути перевірені всі типи вхідних даних і всі можливі варіанти виконання
програми. Повинен бути проведений тест в нормальних умовах (дані, характерні
для реальних умов фунціонування), тест в
екстремальних умовах (перевірка функціонування програми в крайніх випадках,
коли вхідні дані перебувають на межі припустимого діапазону) і тест за
виняткових обставин (коли вхідні дані виходять за рамки припустимого
діапазону).
6. Впровадження і
експлуатація.
7. Модифікація програми
у випадку необхідності. Необхідність модифікації програми може бути пов’язана,
наприклад, зі зміною умов її функціонування або з посиленням вимог до неї.
8. Зняття з експлуатації.
Обмеженість
каскадної моделі. Спіральна модель
Каскадна модель
життєвого циклу програми є задовільною у випадку, якщо з самого початку
вдається визначити чіткі вимоги і розробити повноцінний проект. Але так буває
далеко не завжди. Часто замовник сам не до кінця уявляє, що йому потрібно, і
може уточнити вимоги лише після певного досвіду використання програми. Особливо
це стосується великих, в тому числі наукомістких проектів. Часто замовника в
класичному розумінні цього слова взагалі немає. Програмний продукт може бути
призначений для масового ринку та конкурувати з іншими аналогічними продуктами.
Тоді його переваги та недоліки проявляються лише в процесі реальної
експлуатації. Ці та інші обставини призводять до того, що переважна частина
помилок робиться на ранніх етапах – аналіз задачі, розробка вимог,
проектування. Виправити ж ці помилки тоді, коли вони уже втілені в програмному
продукті, дуже важко.
У зв’язку з цим на зміну традиційній каскадній
моделі приходить спіральна модель життєвого циклу програм, яка передбачає
ітераційну розробку програмного забезпечення. Спочатку розробляється прототип –
найпростіший варіант програми, який ілюструє основні можливості інтерфейсу та
основні функціональні можливості. Прототип використовується для дослідження
якості проекту та доцільності його подальшого розвитку. Сучасні технології та
інструментальні засоби програмування істотно полегшують створення таких
прототипів.
Контрольні запитання:
1. Етапи розв'язку задач на комп'ютері.
2. Схеми програмування.
3. Життєвий цикл
програм.