Очерки информационной технологии.
Г.Р.Громов.
Москва, ИнфоАрт, 1992, 1993.

Реализация программ и постановка задачи: отношение трудоемкости

Как оценить долю расходов на постановку задачи в общих расходах на разработку программного продукта? Ясно, что распределение затрат по отдельным фазам проекта существенно зависит от предметной области, а это в свою очередь существенно затрудняет получение общих оценок.

Выше приводились оценки Дж. Мартина для организационно-экономических задач, в которых большая часть всех усилий на поиск и устранение ошибок проекта относится к погрешностям постановки задачи. На другом конце спектра прикладных задач информационной технологии находятся такие программные разработки, в которых человеческий фактор, определяющий основную долю неопределенности в условиях правильности программ, играет существенно меньшую роль. Кроме чисто математических задач, задач машинного моделирования расчетного характера и т. д., сюда относятся также, как правило, детально специфицируемые до начала разработки сложные технические системы, например системы управления летательными аппаратами. Данные по относительной трудоемкости такого рода проектов приводит Р. Гласс [9].

На рис. 2.10 сопоставляется относительная структура распределения ошибок по фазам проектов двух типов:

Рис. 2.10. Относительное распределение числа ошибок программирования по основным фазам проекта (для двух существенно различных областей приложений).

По данным: Гласс Р. Руководство по надежному программированию. - 1982. - С.24: Nаrtin J. Application development without Programmers. Savant Inst.. - I98I

1)  организационно-экономических, данные по которым (справа на диаграмме) отражают опыт фирмы IBM;

2)  сложных технических комплексов (слева на диаграмме) по данным аэрокосмической фирмы Boeing.

Усилия, затрачиваемые на устранение ошибок, это хотя и значительная часть, но далеко не вся работа над проектом. Существуют ли более общие оценки?

Для традиционных областей приложений ЭВМ с детально специфицируемыми условиями правильности создаваемых программ такие оценки были выработаны к началу 70-х годов. С тех пор длительное время надежным нормативом для оценки распределения затрат по фазам проекта служила формула 40 - 20 - 40: проектирование (постановка задачи, специфицирование и логическое проектирование) - 40%; реализация (кодирование программ и автономное тестирование) - 20%; испытание (комплексное тестирование, отладка и испытания) - 40%. В эту формулу с удовлетворительной точностью вписывались статистические данные по итогам выполнения ряда больших проектов: система управления ПВО североамериканского континента (SAGE); система управления соединениями кораблей ВМС США (NTDS) и др. [10][1].

Выполненные фирмой TRW исследования позволили детально изучить распределение затрат по фазам типичного для начала 70-х годов большого проекта, в котором влияние человеческого фактора на условия правильности программ не было определяющим [10]. Средняя структура трудозатрат для проектов этого типа приводится в табл. 2.3.

Таблица 2.3

Распределение трудозатрат по фазам технологического цикла разработки программных комплексов

Технологический цикл

Относительная трудоемкость %

Проектирование

46

Выработка общих требований

8

Детализация требований

18

Логическое проектирование:

 

разработка структур данных

4

разработка алгоритмов обработки данных

16

Реализация

20

Кодирование и автономная отладка программных модулей

20

Отладка и испытание

34

Сопряжение модулей и комплексная отладка

21

Испытание и сдача заказчику

13

По данным исследований фирмы TRW (приводится в "Зарубежная  радиоэлектроника", - 1974. - № 12. с. 9).

Однако если  в 60-х  годах большие программные комплексы рассмотренного типа с жесткой структурой и детально специфицируемыми требованиями составляли подавляющую часть создаваемых прикладных программ, то уже к середине 70-х годов в связи с быстрым ростом новых областей приложений ЭВМ удельный вес таких проектов в суммарной стоимости ежегодно создаваемых программ начал резко снижаться. В начале 80-х годов прикладное программное обеспечение, при создании которого пик трудностей находится в области выработки требований на программы, становится преобладающим по масштабу возможных приложений и суммарной стоимости профессионально создаваемых программ.

Первые симптомы таких радикальных сдвигов в характере решаемых на ЭВМ задач были зарегистрированы на рубеже 70-х годов. Как показывали проведенные тогда исследования, если на 1964 г. (к моменту появления первых экземпляров мини-ЭВМ) математические и другие задачи расчетного характера занимали в среднем 75% полезного времени парка ЭВМ, то к началу микропроцессорной революции в 1974 г. доля таких задач в суммарной разгрузке парка ЭВМ снизилась до 30% [10] и, по оценкам, к 1984 г. находилась в пределах 2-5%. В 1982 г. были опубликованы следующие усредненные данные исследования распределения трудозатрат по всему циклу программ: сопровождение и поддержка - 46%, анализ приложений и постановка задачи - 40%, разработка (кодирование, отладка, испытание) 14% [11]. Таким образом, расходы на постановку задачи, оцениваемые в среднем на уровне 70% от всех затрат за технологический  цикл создания программ, с учетом расходов на сопровождение программного продукта составляют 40% трудозатрат за полный цикл жизни программ. Принимая во внимание известные изменения в распределении усилий на сопровождение программ, которые произошли за 70-с годы [12], а также среднее по отрасли распределение ("40 - 20 - 40") трудозатрат за технологический цикл их создания, существовавшее к началу 70-х годов, можно оценить те структурные сдвиги в программировании, которые произошли в течение 70-х годов и продолжают развиваться в 80-х годах (см. рис. 2.7 и 2.8).

Р. Гласс и Р. Нуазо отмечали в начале 80-х годов: "Тот факт, что затраты на кодирование программ составляют лишь незначительную часть всех затрат на программное обеспечение, явился неприятной неожиданностью для большинства технологов программного обеспечения. В настоящее время это открытие осмысливается" [13,с.З0].

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

В 1977 г. Управление статистики труда США опубликовало данные о структуре и динамике численности основных профессиональных групп трудящихся, занятых эксплуатацией национального парка ЭВМ (табл. 2.4) [14, с.83].

Таблица 2.4

Численность профессионально занятых работой с ЭВМ в 1970 г. и структура занятости в 1980 г.

Профессия

Число работников в 1970 г.

Численность в 1980 г.

ожидавшаяся

фактическая

Системные аналитики

102 700

165 00

300 000

Программисты

176 500

250 000

230 000

Итого программистов

279 200

415 000

530 000

Специалисты по ремонту систем обработки данных

36 000

72 600

нет свед.

Операторы ЭВМ и периферийных устройств

150 000

275 000

нет свед.

Операторы УПД

300 000

235 000

нет свед.

По данным: Управление статистики труда США (приводится в: "США – экономика, политика, идеология", - I983, - № 8, с.106; ТИИОР – 1978, Т. 66. - № 8, с. 83).

Как видно из таблицы, за 10 лет их численность должна была вырасти на 25% и составить к 1980 г. 1 млн. человек (отметим для сравнения, что почти столько же к этому времени было занято и в промышленности, производящей ЭВМ). Ожидалось, что численность программистов составит в 1980 г. около 400 тыс. человек, а к 1990 г. вырастет еще на 25% и достигнет полумиллиона.

В начале 80-х годов Управление опубликовало уточненные данные [15], согласно которым на рубеже 80-х годов темпы прироста численности профессиональных программистов резко увеличились, превысив прогноз на 1990г. еще в 1980г. Численность программистов в 1980 г. составила 534 тыс. (в том числе 300 тыс. системных аналитиков). Ежегодный прирост общей численности программистов в США оценивается в начале 80-х годов на уровне 17-25% в год.

Итак, согласно данным официальной статистики, специалисты по постановке задачи и анализу приложений - системные аналитики - являются самой большой по численности и наиболее быстро растущей группой среди всех групп специалистов, профессионально работающих с ЭВМ в США. В 1980 г. системные аналитики составили около 60% численности профессиональных программистов. По уровню оплаты системные аналитики ранжируются на уровне системных программистов, т.е. на 15 - 25% выше, чем прикладные программисты [16]. Однако если принять во внимание, что системные программисты составляют самую небольшую часть всех программистов (менее 10% от общей численности), то становится понятным, что к настоящему времени около 70% всего фонда заработной платы, ежегодно расходуемого на программирование в США, идет на оплату труда специалистов по анализу приложений и постановке задачи на программирование - системных аналитиков (рис. 2.11).

Следует также учитывать, что системные аналитики принимают участие не во всех типах программных разработок. Например, создание системного программного обеспечения, как правило, не требует их участия. Соответственно относительный вес расходов на системных аналитиков в прикладных задачах оказывается несколько больше, чем 70%. Поэтому в зависимости от типа решаемых прикладных задач расходы на постановку задачи и анализ приложений (в том числе анализ приложений на этапах внедрения и сопровождения программного продукта) составляют 70 - 80% от общих трудозатрат на прикладное программирование.

Рис.2.11. Динамика относительной численности основных профессиональных групп программистов.

Рассчитано по: Управление статистики труда США (приводится в: "США - экономика, политика, идеология", - I983, - № 8, - С. 106; ТИИЭР, - 1978, - Т.66. - № 8, - С. 83); - 1980 -1990 гг. - оценка автора)

Итак, в 80-х годах в среднем три четверти трудозатрат на разработку прикладных программ составляют расходы на анализ приложений, постановку задачи и формулировку требований на программный продукт. В то же время центр тяжести научных исследований в программировании и подавляющее большинство публикуемых результатов научных трудов были все еще сосредоточены, как 10, 20 и 30 лет назад, на этапе реализации программ. Более того, и здесь из всего спектра вопросов технологии разработки и повышения надежности программ на этапах их логического проектирования, кодирования, тестирования и отладки за основной объем научных исследований выбирался наиболее далекий пока от практического использования раздел: аналитическая верификация и автоматический синтез программ. "Интересно, что по данному вопросу имеется больше литературы, чем по любому другому аспекту надежности программного обеспечения", - констатирует Г. Майерс [17,c.311].

По-видимому, если выйти за рамки чисто "фольклорных аналогий"[2], к которым обычно обращаются для объяснения такого рода ситуаций в науке программирования американские ученые и специалисты (Дж. Вейценбаум [18], Р. Гласс [9] и др.), то следует признать, что наиболее точно отразил отношение лидеров большой науки программирования и практической значимости выполняемых ими исследований Джонатан Свифт: " В их языке нет даже слов для выражения таких понятий. Кроме математики и музыки, они ничего не знают и не хотят знать" [19,с. 168]. Наблюдения Свифта, сделанные 300 лет назад в период зарождения Академии наук Англии (Лондонского королевского общества), по-видимому, объясняют многие наблюдаемые сегодня симптомы "детской болезни" науки программирования.


[1] Этой же формулы придерживается в своих оценках, судя по приводимым им данным, и Р. Гласс [9].

[2] Прохожий обращается к человеку, ползающему на коленях под фонарем: "Что Вы тут делаете?" - "Ищу часы, которые обронил вон в том темном углу". - А почему же Вы их здесь ищете?" - Здесь лучше видно!".


Онлайн-версия CD-ROM приложения к книге Г.Р.Громова
"
От гиперкниги к гипермозгу: информационные технологии
эпохи Интернета. Эссе, диалоги, очерки
."