stringtranslate.com

Сложность программирования

Сложность программирования (или сложность программного обеспечения ) — это термин, который включает свойства программного обеспечения, которые влияют на внутренние взаимодействия. Некоторые комментаторы различают термины «сложный» и «запутанный». «Сложный» подразумевает, что его трудно понять, но в конечном итоге он познаваем. «Сложный», напротив, описывает взаимодействия между сущностями. По мере увеличения числа сущностей число взаимодействий между ними увеличивается экспоненциально, что делает невозможным узнать и понять их все. Аналогично, более высокие уровни сложности в программном обеспечении увеличивают риск непреднамеренного вмешательства во взаимодействия, тем самым увеличивая риск внесения дефектов при изменении программного обеспечения. В более экстремальных случаях это может сделать изменение программного обеспечения практически невозможным.

Идея связи сложности программного обеспечения с удобством обслуживания программного обеспечения была подробно исследована профессором Мэнни Леманом , который разработал свои Законы эволюции программного обеспечения . Он и его соавтор Лес Белади исследовали многочисленные метрики программного обеспечения , которые можно было бы использовать для измерения состояния программного обеспечения, в конечном итоге придя к выводу, что единственным практическим решением является использование детерминированных моделей сложности. [1]

Типы

Сложность существующей программы определяет сложность изменения программы. Сложность проблемы можно разделить на две категории: [2]

  1. Случайная сложность относится к трудностям, с которыми сталкивается программист из-за инструментов разработки программного обеспечения. Выбор лучшего набора инструментов или языка программирования более высокого уровня может уменьшить ее. Случайная сложность часто возникает из-за того, что не используется домен для определения формы решения. [ необходима цитата ] Проектирование на основе домена может помочь минимизировать случайную сложность.
  2. Существенная сложность обусловлена ​​характеристиками решаемой проблемы и не может быть уменьшена.

Меры

Было предложено несколько мер сложности программного обеспечения. Многие из них, хотя и дают хорошее представление о сложности, не поддаются простому измерению. Некоторые из наиболее часто используемых метрик:

Для измерения сложности программирования можно использовать несколько других показателей:

Закон Теслера — это пословица из области взаимодействия человека и компьютера, гласящая, что каждое приложение имеет присущую ему сложность, которую невозможно устранить или скрыть.

Метрики Чидамбера и Кемерера

Чидамбер и Кемерер [4] предложили набор метрик сложности программирования, широко используемых в измерениях и академических статьях: взвешенные методы на класс, связь между классами объектов, ответ для класса, количество дочерних элементов, глубина дерева наследования и отсутствие связности методов, описанные ниже:

Смотрите также

Ссылки

  1. ^ ММ Лехмам ЛА Белади; Эволюция программ - Процессы изменения программного обеспечения 1985
  2. ^ В программной инженерии проблему можно разделить на случайную и существенную сложность [1].
  3. ^ Генри, С.; Кафура, Д. Труды IEEE по программной инженерии, том SE-7, выпуск 5, сентябрь 1981 г. Страницы: 510–518
  4. ^ ab Chidamber, SR; Kemerer, CF IEEE Transactions on Software Engineering Том 20, Выпуск 6, июнь 1994 г. Страницы: 476 - 493