Основы разработки программного обеспечения вычислительных систем. Милованов И.В - 11 стр.

UptoLike

11
Пусть С(х) функция сложности решения проблемы х, Т(х) функ-
ция затрат времени на решение проблемы х. Для двух проблем р
1
и р
2
из
соотношения С(р
1
) > С(р
2
) следует, что
T(p
l
) > T(p
2
). (1.1)
Этот вывод интуитивно ясен: решение сложной проблемы требует
большего времени.
Далее. Из практики решения проблем человеком следует
С(р
1
+ р
2
) > С(р
1
) + С(р
2
).
Отсюда с учётом соотношения (4.1) запишем
T(p
1
+ p
2
) > T(p
l
) + T(p
2
). (1.2)
Соотношение (1.2) это обоснование модульности. Оно приводит к
заключению «разделяй и властвуй» сложную проблему легче решить,
разделив её на управляемые части. Результат, выраженный неравенством
(1.2), имеет важное значение для модульности и ПО. Фактически, это ар-
гумент в пользу модульности.
Однако здесь отражена лишь часть реальности, ведь здесь не учиты-
ваются затраты на межмодульный интерфейс. Как показано на рис. 1.11, с
увеличением количества модулей (и уменьшением их размера) эти затра-
ты также растут.
Таким образом, существует оптимальное количество модулей Opt,
которое приводит к минимальной стоимости разработки. Увы, у нас нет
необходимого опыта для гарантированного предсказания Opt. Впрочем,
разработчики знают, что оптимальный модуль должен удовлетворять
двум критериям:
снаружи он проще, чем внутри;
его проще использовать, чем построить.
Рис. 1.11. Затраты на модульность