книги / Оценка затрат на разработку программных средств
..pdfвозникает необходи |
|
||||
мость учета ряда ра |
|
||||
нее не |
формализо |
|
|||
ванных факторов ре |
|
||||
ального |
функциони |
|
|||
рования |
копий |
КП. |
|
||
Каждая |
из |
копий в |
|
||
той или иной степени |
|
||||
должна |
адаптиро |
|
|||
ваться к конкретным |
|
||||
условиям |
|
примене |
Рис. 2.11. Коэффициент изменения трудоемкости |
||
ния, для чего |
в КП |
||||
С|б при разработке программ в зависимости от |
|||||
необходимо |
преду |
предполагаемого тиража N |
сматривать средства автоматизации адаптации и выделять компоненты КП, подлежащие
изменениям. При увеличении тнражности возрастают требования к корректности, тестированию и испытаниям программ, а также к полноте документации и увеличивается отчуждаемость программ от их первичных разработчиков. В результате при переходе от уни кального КП даже к программам, подлежащим тиражированию в нескольких экземплярах, затраты на разработку заметно возра стают. В среднем перспективы широкого тиражирования по влия нию на суммарные затраты при разработке можно оценить на уровне 30—50% и КИТ аппроксимировать выражением (рис. 2.11)
си — 1 *5 (1 — ехр (— 1,Ш)]. |
(2.12) |
Следует подчеркнуть, что в каждый экземпляр системы затраты на разработку КП входят N -й частью. Поэтому доля затрат на
разработку программ для каждой ЭВМ убывает особенно быстро (как 1 /N) при больших тиражах. Однако встречаются уникальные
крупные КП, которые разрабатываются почти с такими же допол нительными затратами, как серийные.
М о б и л ь н о с т ь ( п е р е н о с и м о с т ь ) и с п о л ь з о в а н и я
к о м п о н е н т |
КП д л я д р у г и х р а з р а б о т о к |
приводит к не |
обходимости их проектирования как автономных |
комплектующих |
|
изделий [37, |
103]. Это требует стандартизации их построения и |
организации связей, унификации базы данных и гарантии качест ва функционирования. В результате может быть достигнута воз можность сборочного программирования [15, 103]. Суть его сво дится к созданию новых КП из набора готовых программных моду лей или групп программ, ранее использованных и испытанных в другом сочетании при решении несколько отличных функциональ ных задач. Однако широкую применяемость трудно обеспечить для компонент всех типов и назначения. Из любого комплекса про грамм вряд ли можно и нужно делать повторно используемыми
81
все 100% программных модулей. Всегда для сборки КП из комп лектующих изделий может потребоваться доработка отдельных компонент или создание программ для их сопряжения в новых сочетаниях.
В ряде случаев целесообразна настройка (адаптация) готовых компонент на новые условия применения. Если условия функцио нирования КП изменяются не очень сильно, то адаптация может обеспечить настройку 10—20% компонент при полном сохранении остальной части КП. При больших изменениях условий примене ния более эффективной может оказаться сборка нового КП с ча стичным использованием апробированных компонент (до 80—90%) и с разработкой небольшой части новых программных модулей, обеспечивающих новые функции и условия применения КП.
Таким образом, выделяются два подхода подготовки мобиль ных компонент КП для многократного использования в других раз работках: создание переносимых модулей и групп программ с уни
фицированной структурой и интерфейсом для сборочного програм мирования и применение настраиваемых компонент и КП в целом,
адаптируемых к широкому спектру условий применения. При обо их подходах затраты на разработку программ возрастают прибли зительно пропорционально предполагаемой доле многократно ис-
Рис. 2.12. Коэффициенты изменения трудоемкости при разработке программ вследствие затрат на обеспечение их мобильности ci7 и за счет использования мобильности сХъ в зависимости от доли (%) переносимых программных компонент:
---------— суммарная эффективность применения переносимости при двух ПС;
------- — затраты на обеспечение адаптируемости ПС
82
пользуемых компонент. Для обеспечения сборочного программиро вания КИТ на строку в программе сп увеличивается в среднем на
10—20% (рис. 2.12). Дополнительные затраты на адаптируемость ПС могут достигать 30—40%, т. е. приблизительно такой же вели
чины, как для обеспечения повторного применения |
компонент на |
|
80—90% (штрих-пунктир на рис. 2.12). |
|
|
М о б и л ь н о с т ь |
( п е р е н о с и м о с т ь ) и с по л ь з о в а н ия |
|
к о м п о н е н т КП |
из д р у г и х р а з р а б о т о к |
позволяет сни |
жать затраты при сборочном программировании новых КП. При этом относительное повышение производительности труда (КИТ — С\в) пропорционально доле использования готовых комплектующих
изделий и степени их пригодности для использования в новом ПС. В пределе при построении нового КП на 80—90% из готовых ком понент затраты могут сократиться в 3—5 паз, что эквивалентно соответствующему повышению производительности труда. В этом случае при сборочном программировании, кроме 10—20% затрат на создание новых программных компонент, необходимы ресурсы на комплексирование нового КП, его комплексную отладку, испы тания и документирование. В результате суммарные затраты за метно возрастают и эквивалентное повышение производительности труда С|8 может составлять 2,5—3 раза.
Применение адаптируемых компонент позволяет создавать но вые ПС с небольшими затратами, что дает эквивалентное повыше
ние производительности |
труда специалистов |
в десять |
раз (см. |
§ 4.1) [23, 103]. Однако |
необходимо учитывать |
затраты, |
которые |
требуются на создание адаптируемых компонент и всего первично го КП. В результате программная мобильность с учетом затрат на ее подготовку в среднем дает снижение КИТ на 30—50% (пунктир на рис. 2.12).
Однако следует подчеркнуть, что данная оценка относится к простейшему случаю, когда готовые компоненты или их настройка используются только дважды в новых ПС. Многократное примене ние одних и тех же апробированных компонент или многократная адаптация КП к различным условиям применения позволяет зна чительно повысить эффективность мобильности программ и являет ся одним из самых перспективных методов повышения эквивалент ной производительности труда специалистов (см. § 4.1).
Факторы технологической н программной оснащенности процес са разработки КП, влияющие на непосредственные затраты при разработке сложных программ. Данная группа факторов в преды дущем параграфе обобщалась в понятии программная оснащен ность разработчиков современными методами и средствами авто матизации создания программ. Оснащение процесса разработки средствами, повышающими производительность труда, требует за трат на их создание и применение — Сзр в выражении (2.5). В дан ном разделе эти затраты не учитываются и оценивается в основном
83
чистый эффект изменения относительных трудозатрат на непосред ственную разработку КП. В общем случае программная оснащен
ность может требовать затрат, даже превышающих затраты на не^ посредственную разработку, и их совместный анализ позволяет установить оптимальный уровень автоматизации для различных условий разработки КП (см. § 4.1).
П р и м е н е н и е с о в р е м е н н ы х м е т о д о в р а з р а б о т к и К П. Разработан и опубликован ряд методов, которые в некоторых условиях дают заметный эффект, однако вряд ли они целесообраз ны во всех случаях. Опыт крупных разработок позволил выделить методы, наиболее широко и эффективно применяемые в современ ных технологических процессах создания сложных КП третьего и второго классов:
модульно-иерархическое четко структурированное построение всего комплекса программ, его программных компонент и базы данных [17, 35];
структурное программирование программных модулей и струк турирование информационных модулей базы данных;
распределение ресурсов памяти и производительности реали зующей ЭВМ с начала проектирования, контроль и управление ис пользованием ресурсов в течение всей разработки [21];
нисходящая разработка технических требований и специфика ций на программные компоненты КП с последовательной иерархи ческой детализацией функций и формализацией связей компонент [85];
|
пошаговая разработка компонент КП с контролируемыми эта |
пами технологии и поэтапным контролем результатов работ [11, |
|
48, |
52]; |
|
бригадная организация разработки крупных функциональных |
компонент с централизованным комплексированием и тестировани ем комплекса программ в целом [20, 7, 33].
Приведенные методы акцентируют внимание на системной ор ганизации и методичности проведения всей разработки и прежде всего на ее начальных этапах. Это позволяет выявлять ошибки проектирования на ранних стадиях, что требует на 1—2 порядка меньше затрат при устранении каждой ошибки (см. рис. 1.4) [62, 99]. Наибольший эффект перечисленные методы дают при созда нии сложных и сверхсложных КП третьего класса. Для их приме нения необходимо инструктивно-методическое обеспечение разра ботки и обучение всех специалистов комплексной методике прове дения работ большими коллективами. Для создания руководящих документов, обучения коллектива и контроля выполнения инструк тивных предписаний требуются затраты, которые могут составить 3—5% от общих. Системы автоматизированного обучения и кон троля технологического процесса способствуют более полному ис пользованию современных методов.
84
Большинство из приведенных методов применяется в совокуп ности с другими, что не позволяет оценить отдельно эффективность каждого из них. Опубликованные данные в большинстве случаев отражают совместное влияние некоторой группы из приведенных методов без точного указания влияния каждого. При разработке сложных КП перечисленные методы органически входят в техноло гии процесса разработки и поддерживаются средствами автомати зации. В этих случаях интегральные оценки эффективности сово купности методов более стабильны и характеризуются повышени
ем |
производительности труда приблизительно |
на |
50% |
(сз\ ~ |
|
- 0 ,6 —0,7). |
а в т о м а т и з а ц и и р а з р а б о т к и |
КП |
в дан |
||
Ур о в е н ь |
|||||
ном |
разделе |
рассматривается прежде всего, как |
фактор, |
влияю |
щий на Сip и на производительность труда специалистов. Создание систем автоматизации разработки программ (САРПО) в ряде слу чаев требует собственных немалых затрат, которые здесь непо средственно не учитываются. Однако сложность и эффективность САРПО трудно представить непосредственно функциональными характеристиками. Поэтому для обобщенного представления уров ня автоматизации разработки используется [6, 48] объем программ (строк текста) П тв системах, обеспечивающих автоматизацию.
Тем самым появляется возможность сравнивать затраты на авто матизацию с эффективностью от автоматизации в сопоставимых единицах (см. § 4.1). Объемы программ автоматизации 77т могут быть переведены в трудоемкость их разработки (в человеко-годах) или в стоимость разработки в денежном выражении.
В ряде работ [6, 48, 52] приводится классификация средств авто матизации по условным уровням сложности (см. табл. 1.1). При этом наблюдается удивительная близость подходов к выделению уровней автоматизации (по составу средств в каждом уровне) и их функциональных задач, хотя классификация осуществлялась за ведомо независимо. Этот факт подтверждает рациональность такой классификации. Каждому уровню автоматизации в табл. 2.3 соот ветствуют объем программ, реализующих все функции автоматиза ции данного уровня, и приблизительная трудоемкость . создания соответствующих программных средств. По этим показателям уровни отличаются приблизительно на порядок, что дает более или менее одинаковый прирост производительности труда (обрат ная величина значения КИТ) при переходе на следующий, более высокий уровень автоматизации.
Наибольшие различия в характеристиках шкалы уровней авто матизации в [6] и в [20, 48] проявляются на нижних уровнях. Низ шие уровни в [6] характеризуются большим набором средств авто матизации и более высокой стоимостью систем, чем в [48]. Вследст вие этого системы автоматизации по всей шкале в [6] меньше раз личаются сложностью, и зависимость стоимости систем от уровня
85
Т а б л и ц а 2.3
сложность и Э Ф Ф Е К Т И В Н О С Т Ь |
С И С Т Е М |
|
|
|
|
|
|
|
А В Т О М А Т И З А Ц И И Р А З Р А Б О Т К И П Р О Г Р А М М |
|
|
|
|
|
|
|
|
|
|
|
|
У р о в н и а в т о м а т и з а ц и и |
|
|||
Х а р а к т е р и с т и к и с и с т е м а в т о м а т и з а ц и и |
|
|
|
|
|
|
|
|
р а з р а б о т к и п р о г р а м м |
|
|
1 |
2 |
|
3 |
4 |
5 |
|
|
|
|
|||||
Общин объем программ Пт системы автоматиза |
|
|
|
|
|
|
||
ции разработки программ данного уровня |
[20], |
1 |
10 |
|
100 |
1000 |
10 000 |
|
тыс. строк ассемблера |
|
|
1 |
|||||
|
|
|
|
|
|
|
|
|
Трудоемкость разработки систем |
автоматизации |
1 |
10 |
|
10* |
103 |
10* |
|
данного уровня [20], чел.-годы |
|
|
|
|||||
Коэффициент изменения производительности |
тру |
1 |
1,3—1,8 |
|
2,2-3,0 |
2,5—5 |
3—7 |
|
да при разработке программных |
средств— I/C32 |
|
||||||
Стоимость разработки системы автоматизации со |
0,1—0,3 |
1—3 |
|
5—10 |
10—20 |
20—50 |
||
ответствующего уровня по данным [6], млн. дол. |
|
|||||||
Общий объем программ /7Т систем автоматизации |
|
|
|
|
|
|
||
соответствующего уровня [6], тыс. строк ассемб |
100—300 |
(1—3)-103 |
|
(5—10) • 103 |
(1—2) -10^ |
(2—5) • Юч |
||
лера |
|
|
|
|||||
Коэффициент изменения производительности |
тру |
1 |
1,1-1,2 |
|
1.3-1,4 |
1,5—2,0 |
2,0-3,0 |
|
да при разработке программных |
средств — 1/с32 |
|
автоматизации несколько отличается от логарифмической, которая принята за основу в табл. 1.1 и в [20, 48]. Наличие более высокой степени автоматизации на нижних уровнях в [6] приводит к вырав ниванию шкалы изменения производительности, что отражается в виде меньших приростов производительности труда между сосед ними уровнями по сравнению с [20, 48]. Если учесть это обстоятель
ство, то шкалы уровней автоматизации в [6] и в [48] |
значительно |
сближаются по величинам относительных изменений |
производи |
тельности труда при средних и высоких уровнях автоматизации. Наиболее высокие уровни (4—5) отражают современные пред ставления об эффективных средствах, необходимых при разработ ке сложных и сверхсложных КП высокого качества. При этом ав томатизация отражается не только на повышении производитель ности труда, но и на длительности разработки КП. Без достаточно высокой автоматизации принципиально невозможно создавать КП
высокой сложности в разумные сроки (см. § 3.5).
На разработку САРПО с наиболее высоким (5) уровнем авто матизации всех функций по оценкам [6, 61] требуется 20—50 млн. дол. (рис. 2.13). При этом оценки весьма сильно различаются и отсутствуют характеристики объема программ в таких САРПО. Если принять достаточно широко используемую оценку стоимости разработки одной строки текста в сложных КП второго класса 10 дол., то наиболее сложные зарубежные САРПО содержат око ло 2—5 млн. строк текста программ. Оценка коэффициента изме нения трудоемкости разработки с32 в зависимости от затрат на
САРПО представлена на рис. 2.13 сплошной линией [6]. В этой ра боте оснащенность технологической ЭВМ операционной системой выделена как отдельный фактор, хотя,
мическом масштабе и первому уровню |
тизации разработки; |
|
соответствует П г = 103 команд. Экстра |
---- с учетом затрат |
на |
поляция в область /7Т< 1 0 3 иллюстри |
операционные |
систе |
рует быстрое повышение затратна раз |
мы технологических |
|
ЭВМ [6J; |
|
|
работку при практическом отсутствии |
U — уровни автоматизации |
87
средств САРПО. В области /7Т> 1 0 3 снижение КИТ может быть аппроксимировано выражением
c,, = l/lg(tfT.10-2). |
(2.13) |
Для современных уровней технологий разработки КП третьего класса (U ~ 3) средства автоматизации повышают производитель
ность труда приблизительно в два-три раза.
Уровень языков п р о е к т и р о в а н и я КП особенно сильно влияет на затраты при переходе от программирования на уровне машинных кодов реализующей ЭВМ к символическим язы кам проектирования программ. Применение даже простейших ав токодов (ассемблеров) дйя программирования повышает произво дительность труда при разработке небольших и средних (103— 104 команд) программ в несколько раз. Однако вряд ли целесообразно ориентироваться на разработку современных сложных КП с приме нением машинных кодов. Поэтому при анализе влияния языков проектирования программ за исходный принят уровень автокодовассемблеров. При создании относительно небольших программ
применение ЯВУ может дать увеличение производительности тру да ~ 1,5—2 раза. При разработке сложных КП третьего класса эффективность ЯВУ снижается, так как значительный объем ра бот, связанных с динамической комплексной отладкой, документи рованием, испытаниями и др., слабо зависит от уровня языка. В ре зультате производительность труда по сравнению с разработкой на ассемблере повышается только на 10—20% (с33 — 0,8—0 , 9 ) При создании КП второго класса [26] применение ЯВУ дает несколько
|
большее увеличение произ |
|||||
|
водительности |
труда — око |
||||
|
ло 30% |
(см. § 3.4). При этом |
||||
|
возможно значительное уве |
|||||
|
личение других затрат вслед |
|||||
|
ствие |
увеличения |
объема |
|||
|
программ из-за их расшире |
|||||
|
ния при трансляции. Поэто |
|||||
|
му эффективность использо |
|||||
|
вания ЯВУ при создании КП |
|||||
|
различных классов |
и слож |
||||
|
ности |
необходимо |
рассмат |
|||
|
ривать в комплексе с учетом |
|||||
|
всех видов затрат и измене |
|||||
Рис. 2.14. Коэффициент изменения трудо |
ния совокупной |
производи |
||||
тельности труда |
(см. § 4.2). |
|||||
емкости с32 при разработке программ в |
Т и р а ж с и с т е м ы |
ав |
||||
зависимости от объема систем автоматиза |
т о м а т и з а ц и и |
|
р а з р а |
|||
ции разработки 77т с учетом всех средств |
|
|||||
обеспечения технологии; U — уровни ав |
б о т к и |
КП влияет на непо |
||||
томатизации |
средственные |
затраты |
при |
88
разработке программ косвенно вследствие изменения качества САРПО. Увеличение числа эксплуатируемых САРПО расширяет условия их применения, что способствует выявлению ошибок и вы зывает необходимость введения некоторых дополнительных функ ций. В результате стимулируется развитие систем автоматизации
иулучшается эффективность их применения. Это может приводить к повышению производительности труда на 10—20%. На качестве
иэффективности САРПО наиболее сильно отражается тиражиро вание и внедрение первых 5— 10 экземпляров, на которых апроби руется система. В среднем тиражируемые САРПО в отличие от уникальных способствуют дополнительному повышению произво дительности труда на 5— 10% (с34~ 0 ,9 —0,95).;
Факторы оснащенности процесса разработки КП аппаратурны
ми средствами, влияющие на непосредственные затраты при раз работке сложных программ. По мере развития вычислительной техники и технологии ее производства затраты на аналогичные по характеристикам ЭВМ быстро снижаются, приблизительно на по рядок каждые 5 лет [15, 71]. Это обстоятельство создало впечатле ние у ряда разработчиков ПС, что ресурсы ЭВМ практически не ограниченны и их не следует учитывать как существенный фактор, влияющий на затраты в процессе создания программ. Этому впе чатлению способствовало очень медленное снижение, а иногда и возрастание затрат на непосредственную разработку КП вследст вие увеличения их сложности. В то же время сложность применяе мых систем автоматизации разработки программ часто ограничи вается недостаточными вычислительными ресурсами ЭВМ. Поэто му оснащенность аппаратурными средствами для автоматизации разработки необходимо рассматривать с учетом сложности созда ваемого КП и сложности применяемых САРПО.
При анализе фактора аппаратурной оснащенности процесса разработки программ целесообразно учитывать интегральные ха рактеристики всех вычислительных средств, используемых при соз дании данного КП. При разработке сложных КП реального време ни ЭВМ применяются (см. § 2.1) в качестве базы для размещения средств автоматизации проектирования программ по трем направ лениям:
реализующая ЭВМ — для функционирования резидент-систем
автоматизации разработки программ и для средств автоматизации окончательной комплексной отладки и испытаний КП в реальном масштабе времени;
технологическая ЭВМ — для обеспечения функционирования
средств автоматизации разработки программ на основных техноло гических этапах, предшествующих испытаниям в реальном мас штабе времени;
моделирующая ЭВМ — для имитации объектов внешней среды,
89
в которой предстоит функционировать разрабатываемому, тести руемому и испытываемому КП.
При разработке конкретного сложного КП возможность авто матизации определяют суммарные ресурсы всех используемых вы числительных средств. Функции систем автоматизации распределя ются по ЭВМ с учетом их технических характеристик и возможной эффективности использования в конкретной разработке. При низ ком уровне автоматизации разработки относительно простых КП все технологические средства обычно размещаются на реализую щей ЭВМ, которая также используется для имитации внешней сре ды и тестов.
О т н о с и т е л ь н о е б ы с т р о д е й с т в и е Э В М на о д н о го с п е ц и а л и с т а , у ч а с т в у ю щ е г о в р а з р а б о т к е КП, определяет возможность непрерывного эффективного применения САРПО и доступный уровень автоматизации разработки про грамм. Дефицит машинного времени снижает производительность труда разработчиков и увеличивает совокупные затраты на разра ботку программ вследствие неполного использования средств ав томатизации. Избыток машинного времени связан с нерентабель ными затратами на аппаратуру и эксплуатацию применяемых ЭВМ. Можно предположить, что существует оптимальная степень обеспе чения разработчиков машинным временем, при которой минимизи руются совокупные затраты — Ср для некоторых условий разработ ки КП. Эту обеспеченность машинным временем обобщенно можно характеризовать числом операций в секунду всех ЭВМ, используе мых для разработки конкретного КП, приходящихся на каждого специалиста в коллективе разработчиков. Достаточно часто эта ве личина находится в диапазоне 104— 10г\ Экспертные оценки пока зывают, что при этом обеспеченность машинным временем обычно составляет 50—70%. Плохое обеспечение машинным временем мо жет увеличивать затраты на непосредственную разработку КП в полтора-два раза. Однако в среднем влияние недостаточного обес
печения машинным временем на полные затраты при |
создании |
|
сложных КП можно оценить на уровне 20—30% (c4i~ |
0 ,7 —0,8). |
|
О т н о с и т е л ь н ы й о б ъ е м о п е р а т и в н о й * |
|
п а м я т и |
Э В М на о д н о г о с п е ц и а л и с т а , у ч а с т в у ю щ е г о в
р а з р а б о т к е КП, |
может также проявляться |
как заметный |
фактор, изменяющий |
производительность труда |
разработчиков. |
Ограничение оперативной памяти для реализации технологических функций и моделирования внешней среды вызывает снижение уровня их автоматизации и необходимость повышения использова ния машинного времени ЭВМ. В результате усложняется и замед ляется исполнение заданий в процессе разработки программ. При работе в режиме разделения времени на ЭВМ определяющим яв ляется не только объем суммарной оперативной памяти, но и объ ем, доступный для каждого специалиста, взаимодействующего в
90