9 мар. 2010 г.

21 факт о профессиональном программировании


обложка книги "Факты и заблуждения профессионального программирования"Работая над проектом геоКоролёв на протяжении четырёх лет мы постоянно сталкивались с различными проблемами. Изучив книгу "Факты и заблуждения профессионального программирования" Роберта Гласса (издательство "Символ-Плюс" symbol.ru) мы увидели что с подобными проблемами сталкиваются разработчики во всём мире и эти проблемы "удивительно" совпадают с нашими. Именно поэтому мы решили сделать краткую выдержку основных моментов этой книги, чтобы больше не спотыкаться каждый раз об одни и те же грабли и использовать её как памятку в нашей ежедневной работе. Чего и вам желаем ...


ФАКТ №1

Самый важный фактор в разработке программного обеспечения – это не методы и средства, применяемые программистами, а сами программисты.


ФАКТ №2

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


ФАКТ №3

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


ФАКТ №4

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


ФАКТ №5

Чаще всего, первой из причин неуправляемости проекта является плохая оценка. Второй самой распространенной причиной неуправляемости проектов являются изменчивые требования.


ФАКТ №6

Анализ осуществимости проекта почти всегда дает ответ "ДА".


ФАКТ №7

Модификация повторно используемого кода крайне чревата ошибками. Если надо изменить более 20-25% кода компонента, то лучше переписать его с самого начала.
  • Решение модифицировать пакетную программную систему от стороннего производителя практически всегда ошибочно.

ФАКТ №8

Увеличение сложности задачи на 25% приводит к усложнению программного решения на 100%. Это не условие, которое можно попытаться изменить (хотя сложность всегда желательно свести к минимуму), это реальное положение дел.


ФАКТ №9

Исправление ошибок в требованиях обходится дороже всего, если они обнаружены на этапе эксплуатации, и дешевле всего, если это происходит на ранних этапах разработки.


ФАКТ №10

Требования, которых нет, - это такая ошибка, исправить которую труднее всего.
  • Самые живучие ошибки в программировании – те, что остаются незамеченными в процессе тестирования и доходят до этапа производства программного обеспечения, - это ошибки пропущенной логики. Отсутствующие требования приводят к пробелам в логике.

ФАКТ №11

Лучшее проектное решение задачи программирования редко бывает единственным.
  • Одно из высказываний о программистах звучит так: "Если в комнате сидят несколько классных проектировщиков программного обеспечения и двое из них согласны друг с другом, то они образуют большинство".

ФАКТ №12

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


ФАКТ №13

Фаза устранения ошибок – самая трудоемкая в жизненном цикле.
  • Данные о процентной доле времени, потраченного на устранение ошибок, с годами менялись, но обычные цифры составляют 20-20-20-40. То есть 20% на сбор требований, 20% на проектирование, 20% на кодирование и 40 на устранение ошибок. (В последнее время нагрузку стараются перераспределить на ранние стадии жизненного цикла, уделяя больше внимания сбору требований и проектированию, поэтому цифры, говорят, изменились на примерно такие: 25-25-20-30).

ФАКТ №14

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


ФАКТ №15

Стоимость сопровождения обычно составляет от 40 до 80% (в среднем 60%) стоимости программного обеспечения. Следовательно, эта фаза его жизненного цикла, возможно, самая важная.
  • Старые компьютеры выходят из употребления, а старые программы вводятся в эксплуатацию каждый день.

ФАКТ №16

Примерно 60% расходов на сопровождение приходится на улучшение кода и около 17% - на исправление ошибок. Таким образом, в основном сопровождение и поддержка программного обеспечения заключается в добавлении в него новых возможностей, а не в его исправлении.


ФАКТ №17

Сопровождение – это решение, а не проблема.


ФАКТ №18

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


ФАКТ №19

Качество есть совокупность свойств.

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

ФАКТ №20

Ошибки имеют тенденцию образовывать скопления.
  • Примерно 80% ошибок находятся в 20% модулей, а примерно половина модулей не содержит ошибок.

ФАКТ №21

Эффективность больше зависит от качественного проектирования приложения, чем от качественного программирования.
  • Неэффективность интерфейса или логики ничтожна в сравнении с неэффективностью ввода/вывода.

Комментариев нет:

Отправить комментарий