Национальные информационные ресурсы:
проблемы промышленной эксплуатации.
Г.Р.Громов. Москва, Наука, 1984

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

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

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

На рис. 26 сопоставляется относительная структура распределения ошибок по фазам проектов двух типов: 1) организационно-экономических, данные по которым (справа на диаграмме) отражают опыт фирмы «ИБМ»; 2) сложных технических комплексов (слева на диаграмме) по данным аэрокосмической фирмы «Боинг». Усилия, затрачиваемые на устранение ошибок, это хотя и значительная часть, но далеко не вся работа над проектом. Существуют ли более общие оценки?

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

По данным: Гласс Р. Руководство по надежному программированию, 1982, с. 24; Martin J. Аррliсаtion development without Programmers. Savant Inst., 1981

 

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

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

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

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

 

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

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

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% [И]. Таким образом, расходы на постановку задачи, оцениваемые в среднем на уровне 70% от всех затрат за технологический цикл создания программ, с учетом расходов на сопровождение программного продукта составляют 40% трудозатрат за полный цикл жизни программ. Принимая во внимание известные изменения в распределении усилий на сопровождение программ, которые произошли за 70-е годы [12], а также среднее по отрасли распределение («40—20—40») трудозатрат за технологический цикл их создания, существовавшее к началу 70-х годов, можно оценить те структурные сдвиги в программировании, которые произошли в те­чение 70-х годов и продолжают развиваться в 80-х годах (см. рис. 23 и 24).

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

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

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

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

Профессия

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

Численность

ожидавшаяся

в 1980 г

фактическая

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

102 700

165 000

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

Н.св.

Источник: Управление статистики труда США (приводится в: США - экономика, политика, идеология, 1983, №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% всего фонда заработной платы, ежегодно расходуемого на программирование в США, идет на оплату труда специалистов по анализу приложений и постановке задачи на программирование — системных аналитиков.

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

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

 

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

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

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

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

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


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