Среда приложений. Часть 4.

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

Даже при поверхностном анализе количественных оценок в ПО не следует смешивать по крайней мере три типа программ.

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

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

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