2.4.5. Среда приложений

С самого начала стремительного развития программному обеспечению, в определенном смысле, «сильно повезло с программами», теми алгоритмами, которые веками вырабатывались, «отлаживались» и «тестировались» в естественных науках (в математике, физике, астрономии, инженерии, военном деле, бухгалтерии и статистике и др.) и которые оказывались почти готовыми «программами», ибо были ориентированы не на изобретательность, а лишь на усердие исполнителя.

Для оценки ПО требуется принимать во внимание следующие факторы:

· тип ПО;

· размер и сложность программ;

· назначение программ;

· степень жесткости требований к надежности и сопровождаемости;

· применявшаяся технология;

· условия и организация труда;

· моральные и материальные стимулы;

· стремление к рекламе;

человеческий фактор (условия труда, подготовленность специалистов, способности, методы администрирования и способы организации коллективов, социально-бытовые условия, разнообразные стимулы, способы создания творческой и морально

· здоровой обстановки в коллективе, готовность идти на контакты и взаимопомощь, информированность и т.д.)

При анализе количественных оценок ПО нельзя смешивать, по крайней мере, три типа программ:

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

2) сложные программные системы организационного типа для решения общесистемных задач или широкого круга задач, поставленных обычно менее четко и неформально. Их разработка требует больших трудозатрат, неудача рассматривается как «провал». При успешной реализации затраты на сопровождение таких систем начинают со временем превосходить затраты на разработку. Требуется, чтобы документация «отлаживалась», своевременно корректировалась и отражала актуальное состояние таких программных систем;

3) сложные и ответственные программы, работающие в масштабе реального времени. Требования к их надежности исключительно высоки. Ошибки в таких программах могут обойтись неизмеримо дороже, чем любые денежные затраты. Достаточно представить себе катастрофические масштабы последствий возможных ошибок в ПО систем типа СОИ (стратегическая оборонная инициатива США).

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