7.2.5. Забезпечення ефективності програмного засобу

Ефективність ПЗ забезпечується прийняттям рішень на різних етапах його розробки, починаючи з розробки його архітектури. Особливо сильно на ефективність ПЗ впливає вибір структури і представлення даних. Але і вибір алгоритмів, які використовуються в тих чи інших програмних моду­лях, а також особливості їх реалізації (включаючи вибір мови програмуван­ня) може суттєво вплинути на ефективність ПЗ. При цьому постійно вини­кає потреба вирішувати протиріччя між часовою ефективністю і ефектив­ністю по пам'яті (ресурсах). Наприклад, деяким показником ефективності по пам'яті може бути кількість стрічок програми на мові програмування, а деяким показником часової ефективності може бути час відповіді на запит користувача.

Тому дуже важливо, щоб у специфікації якості були явно вказані пріо­ритети або кількісне співвідношення між показниками цих примітивів яко­сті. Слід також врахувати, що різні програмні модулі по-різному впливають на ефективність ПЗ в цілому: одні модулі можуть сильно впливати на часо­ву ефективність і практично не впливати на ефективність по пам'яті, а інші можуть суттєво впливати на загальні витрати пам'яті, не дуже впливаючи на час роботи ПЗ. Крім того, цей вплив (перш за все, стосовно часової ефе­ктивності) заздалегідь ( до закінчення реалізації ПЗ) не завжди можна пра­вильно оцінити.

З врахуванням сказаного, рекомендується дотримуватись наступних принципів для забезпечення ефективності ПЗ:

        спочатку слід розробити надійний ПЗ, а потім вже займатись дове­денням його ефективності до необхідного рівня відповідно до його специ­фікації якості;

        для підвищення ефективності ПЗ, перш за все, необхідно використа­ти оптимізуючий компілятор - це може забезпечити необхідну ефектив­ність;

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

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

Для пошуку критичних модулів з точки зору часової ефективності ПЗ потрібно буде отримати розподіл по модулях часу роботи ПЗ шляхом від­повідних вимірювань під час виконання ПЗ. Це можна зробити за допомо-

гою динамічного аналізатора (спеціального програмного інструмента), який може визначити частоту звертання до кожного модуля в процесі викорис­тання ПЗ.

Застосування захисного програмування модулів приводить до зниження ефективності ПЗ як по часу, так і по пам'яті. Тому необхідно розумно регу­лювати міру застосування захисного програмування залежно від потреб до надійності та ефективності ПЗ, сформульованих в специфікації якості ПЗ, що розробляється. Вхідні дані створюваного модуля можуть поступати як безпосередньо від користувача, так і від інших модулів. Найбільш вжива­ним випадком використання захисного програмування є застосування його для першої групи даних, що й означає реалізацію стійкості ПЗ. Це потрібно робити завжди, коли в специфікації якості ПЗ є вимога про забезпечення стійкості ПЗ. Використання захисного програмування для другої групи вхі­дних даних означає спробу виявити помилку в інших модулях під час вико­нання розроблюваного модуля - спробу виявити помилку в самому цьому модулі під час його виконання. По суті, це означає часткове втілення підхо­ду самовиявлення помилок для забезпечення надійності ПЗ. Цей випадок захисного програмування використовується вкрай рідко — лише у тому ви­падку, коли вимоги до надійності ПЗ надзвичайно високі.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43  Наверх ↑