7.2.5. Забезпечення ефективності програмного засобу
Ефективність ПЗ забезпечується прийняттям рішень на різних етапах його розробки, починаючи з розробки його архітектури. Особливо сильно на ефективність ПЗ впливає вибір структури і представлення даних. Але і вибір алгоритмів, які використовуються в тих чи інших програмних модулях, а також особливості їх реалізації (включаючи вибір мови програмування) може суттєво вплинути на ефективність ПЗ. При цьому постійно виникає потреба вирішувати протиріччя між часовою ефективністю і ефективністю по пам'яті (ресурсах). Наприклад, деяким показником ефективності по пам'яті може бути кількість стрічок програми на мові програмування, а деяким показником часової ефективності може бути час відповіді на запит користувача.
Тому дуже важливо, щоб у специфікації якості були явно вказані пріоритети або кількісне співвідношення між показниками цих примітивів якості. Слід також врахувати, що різні програмні модулі по-різному впливають на ефективність ПЗ в цілому: одні модулі можуть сильно впливати на часову ефективність і практично не впливати на ефективність по пам'яті, а інші можуть суттєво впливати на загальні витрати пам'яті, не дуже впливаючи на час роботи ПЗ. Крім того, цей вплив (перш за все, стосовно часової ефективності) заздалегідь ( до закінчення реалізації ПЗ) не завжди можна правильно оцінити.
З врахуванням сказаного, рекомендується дотримуватись наступних принципів для забезпечення ефективності ПЗ:
• спочатку слід розробити надійний ПЗ, а потім вже займатись доведенням його ефективності до необхідного рівня відповідно до його специфікації якості;
• для підвищення ефективності ПЗ, перш за все, необхідно використати оптимізуючий компілятор - це може забезпечити необхідну ефективність;
• якщо ефективність ПЗ не задовільняє специфікацію його якості, топотрібно знайти найкритичніші модулі з точки зору необхідної ефективності ПЗ; ці модулі необхідно оптимізувати в першу чергу шляхом їх ручноїпереробки;
• не слід займатись оптимізацією модуля, якщо цього не потрібно длядосягнення необхідної ефективності ПЗ.
Для пошуку критичних модулів з точки зору часової ефективності ПЗ потрібно буде отримати розподіл по модулях часу роботи ПЗ шляхом відповідних вимірювань під час виконання ПЗ. Це можна зробити за допомо-
гою динамічного аналізатора (спеціального програмного інструмента), який може визначити частоту звертання до кожного модуля в процесі використання ПЗ.
Застосування захисного програмування модулів приводить до зниження ефективності ПЗ як по часу, так і по пам'яті. Тому необхідно розумно регулювати міру застосування захисного програмування залежно від потреб до надійності та ефективності ПЗ, сформульованих в специфікації якості ПЗ, що розробляється. Вхідні дані створюваного модуля можуть поступати як безпосередньо від користувача, так і від інших модулів. Найбільш вживаним випадком використання захисного програмування є застосування його для першої групи даних, що й означає реалізацію стійкості ПЗ. Це потрібно робити завжди, коли в специфікації якості ПЗ є вимога про забезпечення стійкості ПЗ. Використання захисного програмування для другої групи вхідних даних означає спробу виявити помилку в інших модулях під час виконання розроблюваного модуля - спробу виявити помилку в самому цьому модулі під час його виконання. По суті, це означає часткове втілення підходу самовиявлення помилок для забезпечення надійності ПЗ. Цей випадок захисного програмування використовується вкрай рідко — лише у тому випадку, коли вимоги до надійності ПЗ надзвичайно високі.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Наверх ↑