Этапы жизненного цикла программ существенно различаются между собой степенью определенности и прогнозируемости их характеристик. Соответственно изменяются возможности подготовки и достоверность планов проведения работ. В процессе разработки сложных программных средств уточняются и детализируются их спецификации требований, функции, структура и характеристики компонентов. Поэтому на начальных этапах, особенно принципиально новых проектов, трудно спланировать точно все последующие этапы. В результате планирование проводится итерационно в соответствии с последовательным повышением достоверности и точности сведений об объекте и среде разработки.
Разработка сложных ПС, особенно на начальных и завершающих этапах, характеризуется высокой долей творческого труда. Поэтому трудоемкость и длительность отдельных операций и частных работ существенно зависят от индивидуальных особенностей их исполнителей и характеристик конкретного проекта. Вследствие этого отсутствует достоверная кооперационная статистика разработки программ, и пока невозможно создать типовые нормативы на большинство частных операций при создании ПС. Отсюда принципиальной особенностью планирования разработки комплексов программ является активное участие руководителей и заказчиков проекта в составлении планов на базе исследованных характеристик прототипов завершенных разработок ПС и их личного опыта. Такие планы должны иметь разумные ограничения в детализации работ на уровне, обеспечивающем необходимую управляемость всего процесса проектирования. В процессах и системах автоматизации планирования и управления разработкой ПС целесообразно учитывать следующие их особенности:
- последовательную, иерархическую детализацию и поэтапное уточнение планов и прогнозов в соответствии с повышением полноты и достоверности исходных данных об объекте и среде разработки, получаемых в процессе создания ПС;
- использование прототипов технико-экономических показателей, перечней и графиков частных работ как основных исходных данных для прогнозирования и планирования разработки новых ПС;
- целесообразность и возможность выбора первичного прототипа перечня работ, достаточно адекватного исходным данным проектируемого ПС, и возможность его уточнения проектировщиком;
- регистрацию, обобщение и хранение реализованных рабочих планов и значений ТЭП для их использования в качестве прототипов при планировании последующих аналогичных разработок.
Таким образом, в процессе планирования после использования прототипов для прогнозирования и планирования очередной разработки происходит ее реализация, данные которой могут быть использованы в качестве прототипов для последующих проектов. Тем самым может быть создана последовательно уточняющаяся база данных, позволяющая повышать достоверность прогнозирования и планирования разработок ПС определенного класса. Внутри этого цикла может происходить разработка конкретного ПС, для которой характерно также последовательное уточнение и детализация прогнозов и планов.
В качестве базового варианта целесообразно принять статистические данные ТЭП, перечень работ и документов жизненного цикла создания наиболее сложного встроенного комплекса программ реального времени (табл.1). На основе этих исходных данных могут быть оценены ТЭП для полного цикла разработки ПС конкретного вида в более простых случаях путем исключения из базового варианта работ и документов, в которых отсутствует необходимость. По оставшимся работам могут быть оценены ТЭП для вариантов и выбран из них предпочтительный. Для технико-экономического анализа процесса создания программ важнейшей составляющей являются совокупные трудовые затраты - трудоемкость С на непосредственную разработку ПС.
Трудоемкость разработки программных средств наиболее сильно зависит от размера — масштаба программ, выраженного числом операторов на ассемблере или строк на языке программирования высокого уровня. В п. 4 обсуждался вопрос о способах и единицах измерения размера разрабатываемых программ и обоснована целесообразность проводить эти оценки в числе операторов (команд) на языке ассемблера. Реальное изменение создаваемых в настоящее время сложных ПС от 104 до 107 строк (LОС) определяет диапазон трудоемкости разработки таких программ от человеко-года до десятков тысяч человеко-лет. Широкий диапазон изменения размера создаваемых программ в наибольшей степени определяет значения суммарной трудоемкости их разработки. Подтверждена по большому числу проектов высокая статистическая корреляция между размером комплексов программ в операторах на ассемблере и трудоемкостью их разработки. С другой стороны, отсутствуют какие либо данные о значительном преимуществе других мер размера и сложности при прогнозировании затрат на разработку сложных и сверхсложных ПС. Объем программ в числе операторов на ассемблере характеризуется простотой и экономичностью определения, а также удобством для расчетов и прогнозирования.
Опыт подсказывает, что по мере увеличения размера комплекса программ возрастают не только абсолютные, но и относительные затраты на разработку каждой строки текста в программе. Вследствие этого затраты труда при разработке одной строки текста в программах разного объема могут различаться в несколько раз. Согласно материалам М.Х. Холстеда («Начала науки о программах»), трудоемкость разработки программного модуля пропорциональна квадрату размера программы. Модульно-иерархическое построение крупных ПС позволяет замедлить квадратичный рост сложности и соответствующей ей трудоемкости разработки при увеличении размера программ. Суммарную трудоемкость разработки сложного ПС можно представить двумя сомножителями. Первый сомножитель является доминирующим, он прямо пропорционален размеру программ П и отражает практически линейное возрастание трудоемкости создания любых программ при увеличении их размера.
Однако при увеличении размера программ в ряде случаев наблюдается более быстрый рост их сложности разработки, чем описываемый простой линейной зависимостью. Логично предположить, что по мере увеличения размера ПС возрастает относительная трудоемкость разработки каждой строки в программе. Это обстоятельство можно учесть поправочным вторым сомножителем, отражающим изменение трудоемкости на разработку каждой строки в программе при увеличении ее размера.
В ряде исследований размер базы данных либо совсем не учитывается, либо включается в объем ПС. Этому способствует также развитие теории сложности в направлении преимущественного анализа функциональной сложности программ при почти полном игнорировании сложности данных и их влияния на технико-экономические показатели. В статистической теории сложности программ показано, что для программных модулей и относительно небольших групп программ велика корреляция между числом имен переменных и числом операторов в программе. Однако для сложных и сверхсложных ПС эта корреляция меньше, что определяет необходимость разделения ПС на два типа: на осуществляющие преимущественно логическую обработку относительно небольшого потока данных и на информационно-поисковые системы при наличии больших баз данных и относительно простой их логической обработке. Для характеристики этих типов программ может использоваться отношение числа имен переменных к числу строк или операторов текста программ. Для первого типа ПС это отношение не превышает десяти процентов, а для второго оно может значительно превышать единицу и достигать десятков и сотен. Затраты при разработке ПС второго типа оказываются зависящими от размера базы данных, который влияет на сложность взаимодействия программ с данными.
Хотя размеры базы данных для сложных ПС по числу типов имен переменных изменяются в очень широких пределах, приблизительно от 103 до 108 , их непосредственное влияние на трудоемкость разработки строки в программе даже при числе переменных, в десятки раз превышающем размер программы, оценивается на уровне 10%. При этом степень этого влияния трудно формализовать, так как большую роль играет структура базы данных и ее функциональное назначение. Поэтому далее этот фактор отдельно не учитывается и только для очень больших и сложных структур баз данных рекомендуется увеличивать трудоемкость на десяток процентов.
Накопленный опыт создания ПС позволил выделить группы факторов, влияющих на выбор технологии и на затраты С (рис.2). Абсолютная величина С, так же как и длительность разработки, зависят от ряда факторов, которые могут изменять их в различных направлениях. Наибольшее влияние на них оказывает размер ПС, который из всех параметров изменяется в самом широком диапазоне. Поэтому при первичной оценке непосредственных затрат и длительности полного цикла разработки сложных ПС размер программ используется в качестве базового доминирующего параметра. Остальные факторы можно учитывать поправочными коэффициентами при уточнении интегральных показателей.