Относится ли программное обеспечение к производительности или к грязному коду?

22

Определение Википедии из программного обеспечения гнили фокусируется на производительности программного обеспечения. Это другое использование, чем я привык; Я думал об этом гораздо больше с точки зрения чистоты и дизайна кода - с точки зрения того, что код имеет все стандартные характеристики качества: удобочитаемость, удобство обслуживания и т. Д. Теперь производительность может снизиться, когда код станет нечитаемым, потому что никто не знает, что происходит. Но имеет ли термин «программная гниль» особое отношение к производительности? или я прав, думая, что это относится к чистоте кода? или это, возможно, случай множественного смысла употребления термина - с точки зрения пользователя, это связано с производительностью; но для мастера программного обеспечения это более конкретно связано с тем, как читается код?

Kazark
источник
1
В Википедии перечислены 3 причины, 2 из которых не связаны с производительностью, неиспользуемым кодом и редко обновляемым кодом ...
Izkata
2
«Программное обеспечение может со временем ухудшать« производительность »и становиться тем, что обычно называют« устаревшим », поскольку оно запускается и накапливает ошибки; это обычно не считается программным гниением, хотя может иметь некоторые из тех же последствий». Я думаю, ясно, что программная гниль не связана с производительностью.
zzzzBov
1
Единственная функция переименования на всей странице википидии - это предупреждение о том, что ссылки на источники не связаны.
Mattnz

Ответы:

39

Термин не связан с производительностью, по крайней мере, нигде, где я видел его использование.

Речь идет конкретно о коде, который плохо поддерживается и становится ... грязным ... гнилым. Речь идет о коде, дизайн которого не обновлялся по мере внесения изменений, и его трудно читать и понимать.

Одед
источник
1
Я слышал, что раньше речь шла о производительности: например, «гниение Windows», ощущение, что вам нужно переформатировать и переустанавливать Windows время от времени, так как со временем она замедляется.
Carson63000
3
Да ... но "гниение программного обеспечения" и "гниение окон" - это разные термины.
Стивен C
4
@Oded - аналогия не с грязью. Именно с такой гнилью, которая возникает в старых зданиях, что делает их структурно нездоровыми.
Стивен C
18

Давайте смотреть правде в глаза. «Программная гниль» не является четко определенной технической концепцией. Это скорее уничижительное описание того, что происходит, когда программное обеспечение плохо обслуживается.

Страница Википедии представляет одно представление, но есть явно альтернативные представления. И вы могли бы сказать, что разные взгляды отражают разные приоритеты и проблемы человека, придерживающегося взглядов:

  • Кто-то, кто сосредоточен на быстром создании программного обеспечения, будет более склонен искать доказательства "программной гнили" в производительности.

  • Кто-то, кто сосредоточен на дизайне / архитектуре (например, потому что им нужно добавить новую функциональность или исправить ошибки функциональности), увидит «программную гниль» с этой точки зрения.

И не очень полезно говорить, чья точка зрения более правильная. (Это похоже на спор о том, является ли бирюза более зеленой или синей).

Стивен С
источник
1
Так как пост ОП был о Википедии, я представляю: бирюзовый (цвет) - это «зеленый», но его «голубоватый оттенок». Поэтому я думаю, что ваш аргумент обоснован :).
Бен Ли
6

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

Калеб
источник
6

Википедия говорит, что программная гниль и программная гниль одинаковы. Я не согласен.

Гниение кода - это постепенная потеря читабельности и удобства обслуживания по мере того, как в код вносятся все новые и новые изменения.

Гниение программного обеспечения - это постепенная потеря производительности при перемещении программного обеспечения из одного эмулятора среды в другой. Одним из примеров является все программное обеспечение Data General PDP, работающее на эмуляторах. На самом деле гниет среда, а не программное обеспечение.

Гилберт Ле Блан
источник
+1. Википедия приравнивает программное обеспечение гнили к коду гнили. Мы должны отредактировать это. Там больше софт гниль. Один пример - неиспользуемый / сложный в использовании графический интерфейс. Устаревшая / неправильная документация тоже вносит свой вклад.
Jayan
3

Программное обеспечение на самом деле не портится, не устаревает, не изнашивается и не «гниет» в традиционном смысле.

Если среда, в которой работает программное обеспечение, не изменится, программное обеспечение будет существовать вечно. Вот почему я так взволнован, когда кто-то спрашивает, не умерла ли какая-то библиотека, потому что автор не обновлял ее в течение последних 5 минут (лишь немного преувеличивая для эффекта).

Но окружающая среда , как правило , делает изменение; операционные системы исправляются и обновляются, компьютеры заменяются более мощными, и устанавливаются новые программы (например, последняя версия клиента, например Internet Explorer, драйверы устройств или другие библиотеки), от которых может зависеть программное обеспечение. Таким образом, программное обеспечение должно быть обновлено, чтобы учесть эти изменения.

Существуют программные системы, которые работали непрерывно и надежно буквально десятилетия без существенного обновления или обслуживания. Вспоминается программное обеспечение COBOL, работающее на мэйнфреймах, которые обрабатывают банковские транзакции (хотя все они должны были быть изменены в 1999 году для поддержки 2000 года).

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

Роберт Харви
источник
Раздувание программного обеспечения - да, хорошая мысль. В моем понимании термина, когда я задал вопрос, программная гниль была связана с тем фактом, что она продолжала изменяться группой разработчиков, чьи стандарты для очистки кода и дизайна были ниже норм.
Казарк
3

«Программная гниль» - это очень расплывчатый термин, который может означать самые разные вещи в зависимости от того, как вы воспринимаете концепцию, а также от того, каков ваш угол обзора .

Определение Википедии о программном обеспечении rot не устанавливает стандарт, так как оно также написано некоторыми людьми. Я думаю, что этот термин имеет множество значений и должен быть разбит на конкретные области, где он упоминается.

  • Программисты могут понимать это как необслуживаемую кодовую базу с множеством анти-шаблонов, без согласованности в стиле именования и кодирования.
  • Системные администраторы могут понимать это как плохую производительность, полную утечек памяти и ада. поддержание.
  • Конечный пользователь может понимать это как очень сложное, неинтуитивное, трудное в работе программное обеспечение.
Е.Л. Юсубов
источник
2

Я всегда думал о программной гнили как о состоянии, которое возникает, когда вы не используете программное обеспечение в течение определенного периода времени. Каким-то образом программное обеспечение превращается в состояние, в котором оно невозможно построить. Затем, когда вы дойдете до того момента, когда сможете его построить, он не будет работать с входами и выходами, как раньше. Это почти как если бы код фактически ухудшался в форме, даже если он хранится в цифровом виде.

Кент
источник
1
Потому что среда (компилятор, библиотеки или что-то еще) изменилась? Википедия обсуждает это.
Казарк