Данная работа является оформлением некоторых размышлений, появившихся при знакомстве
с продуктом «1С:Предприятие 8.0» (далее V8). По своей направленности работа является
в некотором роде продолжением статьи «От V7 к V8. Обсуждение концепций структур
данных» [1] . Часть поднятых в той работе вопросов устарела с выходом V8, часть
осталась, появились и новые.
<p><h1>Небольшое вступление (или отступление) </h1>
<p>Как известно, в электронике существует всего два типа проблем – отсутствие
контакта там, где он должен быть и его наличие там, где его быть не должно.
Сходным образом можно сформулировать два типа проблем в программных концепциях:
<ul>
<li>Смешение нескольких понятий там, где требуется их разделение;
<li>Использование различных понятий там, где можно обойтись одним. </li>
</ul>
Первая проблема обычно приводит к неполному описанию (функциональному покрытию)
предметной области, а вторая – к сложности (запутанности) внутреннего устройства
систем.
<p>Процессы повышения «внутреннего качества» системы обычно называют рефакторингом
и/или нормализацией. « <em>Рефакторинг </em> (Refactoring) (сущ.) представляет
собой процесс такого изменения программной системы, при котором не меняется
ее внешнее поведение, но улучшается внутренняя структура» [2]. Под нормализацией
предметной области (системы) мы понимаем выделение <em>минимального </em> числа <em>независимых </em> понятий
(сущностей, объектов), позволяющих описывать данную область (реализовывать
требования системы) в полном объеме. В данном определении два ключевых слова
«минимального» и «независимых» связаны между собой. Если, все понятия предметной
области независимы, то их количество будет минимально, и, наоборот, при минимизации
количества понятий их взаимосвязанность уменьшается.
<p>Вообще, можно выделить два рода проблемных систем (подсистем). Плохо спроектированные
системы первого рода слабо отвечают заявленной функциональности (например,
ненадежны). Очевидно, что сравнивать качество систем по простоте (сложности)
их внутреннего устройства можно лишь при их сравнимой внешней функциональности.
Поэтому, первый коэффициент качества системы (подсистемы) можно представить
в виде: КК = Функциональность/Сложность.
<p>Подозрительные системы второго рода функциональность отрабатывают, но их трудно
модифицировать. Оглядываясь на развитие программных систем, мы видим, что именно
«простота модификации» является историческим судьей, выносящим приговор той
или иной системе. Для оценки качества программных систем очень важен дифференциальный
КК, показывающий насколько сложно изменить систему: dКК = (∆ функциональности)/(∆
сложности). Разработчик любого коммерческого продукта находится под давлением
необходимости «расширения функциональности продукта в сжатые сроки». Возникает
соблазн пожертвовать ясностью и простотой.
Читать всю статью: http://www.klerk.ru/soft/1c?6211
