stringtranslate.com

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

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

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

Меры

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

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

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

Типы

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

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

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

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

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

Рекомендации

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