Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект 1 модуль СР 2012.doc
Скачиваний:
78
Добавлен:
19.02.2016
Размер:
3.1 Mб
Скачать

5.1. Принципи інженерії програмного забезпечення і програмні конструкції

Нині розв’язування трьох груп задач інженерії програмного забезпечення ґрунтується на понятті програмної конструкції. По-перше, ідеться про розв’язання задач прямої інженерії, тісно пов’язаних із навчанням програмуванню, що передбачає з’ясування таких питань: із чого можуть будуватися програми; якими мають бути програмні конструкції; як ці конструкції доцільно використовувати. По-друге, задачі зворотної інженерії не можна розв’язати, не класифікувавши програмних конструкцій та зв’язків між ними. І по-третє, розв’язування задач ефективної реалізації процесів повторного використання потребує розуміння властивостей програмних конструкцій [64].

У практичному програмуванні відомі різні погляди на програмні конструкції. Як засіб, що дає змогу уточнити поняття програмної конструкції, використовуватимемо класифікацію, а як класифікаційну ознаку – рівень інкапсуляції, котрий введемо на основі принципів інженерії програмного забезпечення – інкапсуляції та багаторівневого подання.

Інкапсуляція в загальному випадку – це процес створення оболонки навколо тих чи інших речовин. Оболонка називається капсулою, а речовини в капсулі є інкапсульованими й характеризуються високими внутрішніми (cohesion) та низькими зовнішніми (coupling) зв’язками. Інкапсуляція у програмуванні – це процес, у результаті виконання якого „речовина” програм, кодованих тією чи іншою мовою програмування, агрегується, утворюючи капсули. Вони можуть використовуватися у програмуванні як єдині у певному розумінні закінчені частини програм. Цей процес, як побачимо далі, регламентований.

У програмі роль інкапсульованої „речовини” відіграють її компоненти, наприклад оператори, підпрограми. Утворення капсули навколо компонентів програми дає змогу досягти таких цілей:

  • маніпулювати при написанні, налагодженні та розумінні програм капсулами, розглядаючи їх як закінчені частини;

  • зазначити метод програмування що регламентує використання капсул;

  • зазначити значення оброблювані капсулою;

  • обмежувати допуск до компонентів розміщених у капсулі;

  • приховувати деталі реалізації компонентів, розміщених у капсулі;

  • використовувати капсули для побудови інших капсул;

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

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

Відповідь на перше запитання ґрунтується на використанні знань про розв’язувану задачу і таких фундаментальних понять: тип, абстракція, перелічування, вибір, математична індукція. Відповідь на друге питання враховує якість капсули, що є виявленням її функціональних і конструктивних характеристик, які визначають відповідність капсули вимогам, котрі висуваються до неї згідно з її призначенням. Нарешті, відповідь на третє питання дає вказівку щодо інтерфейсу, методу та місця застосування капсули та відбиває її зв'язок із середовищем – як капсула залежить від будови та концепції інших капсул програми.

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

Капсулу застосовувану згідно з методом програмування називатимемо програмною конструкцією. Щоб характеризувати відомі нині програмні конструкції, а також з’ясувати, які значення вони обробляють та в чому полягають методи конструювання (програмування) програм із них, скористаємося ще одним принципом інженерії програмного забезпечення багаторівневим поданням.

Багаторівневе подання програм. В інженерії програмного забезпечення завдяки застосуванню абстракції значного поширення набули рівні подання програмного забезпечення, які, скажімо, відповідають фазам життєвого циклу або в рамках однієї фази відбивають різні погляди на програмне забезпечення [3]. Наприклад, програма може розглядатися як текст, сукупність взаємозв’язаних компонентів (операторів) або послідовність одиниць і нулів.