- •1.5. Класифікація програм
- •1.6. Питання для самоперевірки
- •1.7. Завдання для самостійної роботи
- •2.1. Продукти, продукція та програмне забезпечення
- •2.1.1. Продукти інженерії програмного забезпечення
- •2.1.2. Продукція інженерії програмного забезпечення
- •2.1.3. Програмне забезпечення
- •2.2. Модель життєвого циклу
- •2.3. Інженерія програмного забезпечення
- •2.4. Ресурси для створення програмного забезпечення
- •2.4.1. Мови програмування
- •2.4.2. Системи, середовища програмування, середовища для розробки програмного забезпечення
- •2.5. Питання для самоперевірки
- •2.6 Питання для самостійної роботи
- •Опції головного меню для створення та редагування програм
- •Завдання
- •Лабораторна робота 2.2
- •Завдання
- •3.1. Розробка програмних специфікацій
- •3.1.1. Ресурс. Метод
- •3.1.2. Специфікація
- •3.1.3. Специфікування. Процес
- •3.2. Мови специфікації
- •3.2.1. Псевдокод
- •3.2.2. Графічні форми. Блок-схеми
- •3.3. Прагматичні рекомендації
- •3.4. Питання для самоперевірки
- •3.5. Завдання для самостійного виконання
- •3.6. Задачі для досліджень
- •Задачі для самостійного розв’язання
- •Практичне заняття 2 Опис управляючої дії чергування у програмних специфікаціях
- •Приклад складення специфікацій
- •Задачі для самостійного розв’язання
- •Практичне заняття 3 Опис управляючих дій чергування і перетворення у програмних специфікаціях
- •Приклад складення специфікацій
- •Задачі для самостійного розв’язання Практичне заняття 4 Опис вкладеного чергування у програмних специфікаціях
- •Приклад складення специфікацій
- •Задачі для самостійного розв’язання
- •Практичне заняття 5 Опис управляючої дії повторення у програмних специфікаціях
- •Приклад складення специфікацій
- •Задачі для самостійного розв’язання
- •Практичне заняття 6 Опис управляючої дії чергування, вкладеної в дію повторення, у програмних специфікаціях
- •Приклади складення специфікацій
- •Задачі для самостійного розв’язання
- •Практичне заняття 7 Опис вкладеного повторення і з’єднання у програмних специфікаціях
- •Приклади складення специфікацій
- •Задачі для самостійного розв’язання
- •5.1. Принципи інженерії програмного забезпечення і програмні конструкції
- •5.2. Рівні інкапсуляції
- •5.3. Питання для самоперевірки
- •5.4. Тести
5.1. Принципи інженерії програмного забезпечення і програмні конструкції
Нині розв’язування трьох груп задач інженерії програмного забезпечення ґрунтується на понятті програмної конструкції. По-перше, ідеться про розв’язання задач прямої інженерії, тісно пов’язаних із навчанням програмуванню, що передбачає з’ясування таких питань: із чого можуть будуватися програми; якими мають бути програмні конструкції; як ці конструкції доцільно використовувати. По-друге, задачі зворотної інженерії не можна розв’язати, не класифікувавши програмних конструкцій та зв’язків між ними. І по-третє, розв’язування задач ефективної реалізації процесів повторного використання потребує розуміння властивостей програмних конструкцій [64].
У практичному програмуванні відомі різні погляди на програмні конструкції. Як засіб, що дає змогу уточнити поняття програмної конструкції, використовуватимемо класифікацію, а як класифікаційну ознаку – рівень інкапсуляції, котрий введемо на основі принципів інженерії програмного забезпечення – інкапсуляції та багаторівневого подання.
Інкапсуляція в загальному випадку – це процес створення оболонки навколо тих чи інших речовин. Оболонка називається капсулою, а речовини в капсулі є інкапсульованими й характеризуються високими внутрішніми (cohesion) та низькими зовнішніми (coupling) зв’язками. Інкапсуляція у програмуванні – це процес, у результаті виконання якого „речовина” програм, кодованих тією чи іншою мовою програмування, агрегується, утворюючи капсули. Вони можуть використовуватися у програмуванні як єдині у певному розумінні закінчені частини програм. Цей процес, як побачимо далі, регламентований.
У програмі роль інкапсульованої „речовини” відіграють її компоненти, наприклад оператори, підпрограми. Утворення капсули навколо компонентів програми дає змогу досягти таких цілей:
маніпулювати при написанні, налагодженні та розумінні програм капсулами, розглядаючи їх як закінчені частини;
зазначити метод програмування що регламентує використання капсул;
зазначити значення оброблювані капсулою;
обмежувати допуск до компонентів розміщених у капсулі;
приховувати деталі реалізації компонентів, розміщених у капсулі;
використовувати капсули для побудови інших капсул;
Побудова капсули відбувається агрегуванням необхідних частин програми та створення оболонки (інтерфейсу), що забезпечує правильне застосування капсули.
При створення або повторному використанні капсул перед програмістом постають три питання. По-перше, в якому разі (для реалізації яких проектних рішень – дій) може застосовуватись та чи інша капсула (яка концепція капсули)? По-друге, якою має бути капсула (яка будова, устрій капсули)? По-третє, як пов’язується капсула з оточенням (який контекст капсули)?
Відповідь на перше запитання ґрунтується на використанні знань про розв’язувану задачу і таких фундаментальних понять: тип, абстракція, перелічування, вибір, математична індукція. Відповідь на друге питання враховує якість капсули, що є виявленням її функціональних і конструктивних характеристик, які визначають відповідність капсули вимогам, котрі висуваються до неї згідно з її призначенням. Нарешті, відповідь на третє питання дає вказівку щодо інтерфейсу, методу та місця застосування капсули та відбиває її зв'язок із середовищем – як капсула залежить від будови та концепції інших капсул програми.
Програміст створюючи або повторно багатократного використовуючи заготовлені капсули, застосовує їх згідно з методом програмування та реалізовує проектні рішення, отримані в попередніх фазах життєвого циклу програми, що становить частину процесів конструювання програм.
Капсулу застосовувану згідно з методом програмування називатимемо програмною конструкцією. Щоб характеризувати відомі нині програмні конструкції, а також з’ясувати, які значення вони обробляють та в чому полягають методи конструювання (програмування) програм із них, скористаємося ще одним принципом інженерії програмного забезпечення багаторівневим поданням.
Багаторівневе подання програм. В інженерії програмного забезпечення завдяки застосуванню абстракції значного поширення набули рівні подання програмного забезпечення, які, скажімо, відповідають фазам життєвого циклу або в рамках однієї фази відбивають різні погляди на програмне забезпечення [3]. Наприклад, програма може розглядатися як текст, сукупність взаємозв’язаних компонентів (операторів) або послідовність одиниць і нулів.