Научная статья на тему 'СРАВНИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ РАЗЛИЧНЫХ СПОСОБОВ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ'

СРАВНИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ РАЗЛИЧНЫХ СПОСОБОВ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ Текст научной статьи по специальности «Математика»

CC BY
33
5
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Труды МАИ
ВАК
Область наук

Аннотация научной статьи по математике, автор научной работы — Малинина Наталия Леонидовна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Малинина Наталия Леонидовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «СРАВНИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ РАЗЛИЧНЫХ СПОСОБОВ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ»

УДК 681.142.2(338.9)

Сравнительная эффективность различных способов разработки алгоритмов и программ

H.Л. Малинина Реферат

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

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

Целью настоящей работы является разработка методики, позволяющей достаточно корректно оценивать трудозатраты на построение МПО различными способами.

I. Структура процесса разработки МПО

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

Очевидно, что первый и второй этапы в принципе не могут быть автоматизированы, поскольку опираются на опыт, эрудицию, знания и интуицию разработчика, требуют

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

Неавтоматизированный ручной труд

Возможна автоматизация частных вопросов в ограниченных размерах

Неавтоматизированный ручной труд и/или Способ автоматизиции разработан, но широко не применяется_

Частично-автоматизированный труд

Неавтоматизированный труд и/или Автоматизированный труд

1. Изучение объекта исследования, моделирования или проектирования и выбор необходимых расчетных методов или

2. Декомпозиция объекта, процесса проектирования или конструирования, процесса функционирования, решения расчетной _задачи на элементарные модули ли операции._

3. Выбор и разработка расчетных моделей, операторов, соответствующих элементарным операциям, составляющим процессы проектирования, конструирования и т.д.

й

4. Разработка произвольного алгоритма (блок-схемы) проектирования, конструирования, решения расчетной задачи, математического моделирования.

5. Программирование отдельных модулей операторов или блоков, входящих в произвольный алгоритм.

6. Преобразование произвольного алгоритма в нормальный.

I

7. Разработка программы для реализации нормального алгоритма (управляющей программы).

Рис. 1. Единая технологическая схема разработки МПО

На пятом этапе возможность использования автоматизации частично реализуется за счет применения стандартных программ и отдельных технологий программирования [3,4,5], однако тоже только частично.

Два последних этапа являются самыми сложными и трудоемкими. Причиной этого является их совместное выполнение в практике разработки алгоритмов и программ, когда приходится одновременно решать три группы вопросов: упорядочение всех операторов алгоритма, их логическую и информационную увязку между собой, а также информационное снабжение программы из внешних источников и баз данных. Раздельное выполнение этих этапов и применение методов синтеза сетевых моделей и вычислительных алгоритмов [1,2] даст возможность автоматизировать процесс разработки нормальных алгоритмов, разделить вопросы упорядочения, а так же логической и информационной увязки.

Могут быть рассмотрены четыре типовых случая разработки МПО, приведенные в таблице I:

Таблица I

Этапы разработки Степень МПО автоматизации 1 2 3 4 5 6 7

Неавтоматизированные способы разработки

Применение стандартных программ в отдельных стандартных модулях (малая автоматизиция) - - - - + - -

Применение автоматизированного синтеза алгоритмов и программ при разработке МПО в целом, но только в интересах первоначального синтеза + +

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

Примечание: «-» - автоматизация не применяется; «+» - автоматизация применяется частично; «+

+» - автоматизация применяется в максимальном объеме.

Следуя единой технологической схеме, можно также рассмотреть четыре наиболее часто встречающихся случая разработки МПО (рис.2).

а) Прямое программирование б) R-технология.

в) Концептуальное ^Автоматизированный

программирование синтез алгоритмов

Рис. 2. Принципиальные схемы разработки МПО

2. Критерий эффективности некоторого способа разработки МПО

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

I = 7

Т = е Т = Т + г, + Тз/ + Тк + т5г + Тб/ + т;г (2.1)

I=1

I = 7

С == е С1, = с + С2/ + Сзг + С4/ + С5/ + Сб/ + С7/ (2.2)

1 = 1

где: 21/ (С.) — трудозатраты (стоимость) при изучении объекта проектирования, моделирования, управления;

Тъ (С, ) — трудозатраты (стоимость) на декомпозицию объекта;

Тз/ С) — трудозатраты (стоимость) на разработку расчетных модулей, блоков модели, операторов;

Т4г (С4/) — трудозатраты (стоимость) на построение блок-схемы произвольного алгоритма;

Т5/ (С5/) — трудозатраты (стоимость) на программирование расчетных модулей, блоков модели,

операторов;

Т6/ (С6/) — трудозатраты (стоимость) на разработку граф-схемы нормального алгоритма; Тц (С7/) — трудозатраты (стоимость) на разработку управляющей программы.

В дальнейшем будут применяться в основном только формулы для определения трудозатрат.

3. Формулы для оценки трудозатрат и стоимости при разработке МПО неавтоматизированным способом

3.1.Для первого этапа следует принять:

Т =01* п (3.1)

С1 = 51 * т 1 *п

где: п — длина итогового алгоритма в модулях или блоках;

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

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

3.2.Для второго этапа по аналогии:

Т = т 2 * п (3.2)

С2 = ^ * т 2 * п

где: т 2 - средние удельные трудозатраты на анализ и декомпозицию объекта, приходящиеся на один модуль или блок итогового алгоритма.

s2 - здесь и далее - удельная стоимость трудозатрат на соответствующем этапе. 3.3.На третьем этапе правильнее перейти к другой схеме оценки трудозатрат, т.е.:

п

Тз = е г3, к = 1,2,...,п (3.3)

1

п

С3 = ^ * е г 3к 1

где: г3к - трудозатраты на разработку математического описания к-ого модуля. 3.4.Четвертый этап

Трудозатраты на разработку блок-схемы модели или блок-схемы произвольного алгоритма, состоящего из п модулей, эквивалентны трудозатратам на разработку матрицы смежности модулей произвольного алгоритма или таблицы отношений предшествования или следования [1]. По аналогии запишем:

т4 =т 4 * п (3.4)

с4 = s4 * т 4 * п

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

4 п

Таким образом, получим, что: е Т = (т1 + т2 + т3)* п + е г3к (3.5)

11

4 п

или: е С = (^ * т 1 + s2 * т 2 + s4 * т 4)* п + sз * е г3к

11

Поскольку работа по изучению объекта и его декомпозиции, а также работа по разработке блок-схемы являются наиболее сложными и наиболее высокооплачиваемыми, можно полагать, что: ^ = s2 = s4 = s

4 п

Тогда: е с1 =s*(т + т2 + т3)*п + sз* е г3к

11

3.5.Трудозатраты на пятом этапе можно рассматривать по аналогии с третьим этапом:

п

Т5 = е г5, к = 1,2,...,п (3.6)

п

C5 = * е т

1

где: т ^ - трудозатраты на разработку программы А>ого модуля. 3.6.Шестой и седьмой этапы

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

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

Одной из характеристик сложности структуры связного графа является его цикломатическое число:

п = m- п + 1 (3.7)

где: m - число дуг ориентированного графа;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

п — число вершин ориентированного графа или число модулей блок-схемы.

Нижняя граница числа взаимно-независимых путей в графе определяется формулой В.П. Куляпина: а гат = п + 1 (3.8)

При этом действительное число взаимно-независимых путей, как правило, больше.

Рассмотрим пример на рис.3, где представлен граф hq, который может рассматриваться как блок-схема.

о-*-

В

п(Н) = 10- 7 + 1 = 4

1 /1 V ч.т

/ 1 5 \

1

X / г

Е

Рис. 3. Граф Hq.

Матрица смежности вершин этого графа ^ представлена на рис.4. Цикломатическое число графа Hq: п (Hq) = 10- 7 + 1 = 4. Нижняя граница числа взаимно-независимых путей: о т1П = 4 + 1 = 5 .

i ь 1 5 1 { i т I р

а в с d е f g

I =

а

в

с

d

е

f

g

\ I

\ ь 1 5

\ 1 X

\ 1 т

\ I

\ р

\

Я

\ 1 1 1

\ 1 1

\ 1 1

\ 1

\ 1 1

\ 1

\ 1

\ 1

\ 1

\

Рис. 4. Матрица смежности вершин графа ^ .

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

г„ = 1

бинарным отношениям следования: qi < qj.

Будем рассматривать новую матрицу как матрицу смежности вершин нового графа Hk 2

(рис.5). В этом графе каждая вершина соответствует дуге и паре вершин исходного графа Hq. При таком преобразовании графа система бинарных отношений следования на исходном множестве элементов не изменится. Соответственно не могло измениться и число взаимно-независимых путей.

Р

Ь

I

V (Нк1) = 16 - 12 + 1 = 5

\ а

\ Ь с d

\ е I

\ g h

\ к

\ 1 т

\ п

\ Р

\

\ г

\

\

Рис. 5. Матрица смежности вершин графа Нк2. Для того чтобы новый граф имел бы, как и исходный граф, начальную и конечную дуги, добавим к нему дуги а и ^, а также вершины ® и р , что не изменит его цикломатического

числа. Матрица смежности вершин Fk 2 графа Нк 2 получит вид, представленный на рис.5.

Цикломатическое число нового графа Нк2: V (Нк2) = 16- 12 + 1 = 5. Следовательно, число взаимно-независимых путей в исходном графе будет не менее шести. Действительно, исходный граф имеет следующие взаимно-независимые пути, совпадающие с взаимно-независимыми путями в конвертированном графе.

Таблица 2

№ п/п Исходный граф Путь по дугам Конвертированный граф Путь по вершинам

1 осуир а осутр Р

2 схуХжр а схуЛжр Р

3 схЗр а схЗр Р

4 сх/Зтцтр а сх/Зтцтр Р

5 сх/Зт1ХРр а сх/Зт!ХРр Р

6 сх/3<Е,тр а Р

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

Итак, нижняя граница числа взаимно-независимых путей в блок-схеме определяется цикломатическим числом. Действительное число взаимно-независимых путей может быть определено путем последовательного многократного конвертирования блок-схемы. Введем функцию:

Р (*,) = е Р (*,)

I

где: 9 - номер пути в графе от начальной вершины к конечной, \ =1,2,3...,- порядковые номера вершины J , п 9 - множество всех вершин, входящих в путь 9 ,

Хг =1,2,., - порядковые номера вершин 9 -го пути в графе от начальной вершины до вершины с номером ,

Рх, ) - сумма полустепеней захода и исхода вершины .

Конвертирование исходного графа для определения действительного числа путей в нем считается законченным, когда функция р ) вдоль любого 9 -го пути на интервале

(1 ё ) ® (1 ё ^ ) становится по мере приближения - ) к нулю вначале неубывающей, а затем убывающей. Граф в этом случае называется голономным, а действительное число путей в исходном графе будет равно:

о = v + 1

исх. голон.

где: V голон. - цикломатическое число голономного графа

Для целей настоящей работы достаточно ограничиться знанием нижней границы цикломатического числа. Так как преобразование блок-схемы в нормальный алгоритм и программу включает в себя трудозатраты на упорядочение блок-схемы, просмотр всех взаимно-независимых путей и их алгоритмическую и информационно логическую увязку, то общие трудозатраты на такую работу можно записать как:

Трс = Тупор + А Трс (3.9)

где: тупор — трудозатраты на упорядочение блок-схемы;

А трс — трудозатраты на просмотр всех взаимно-независимых путей и их алгоритмическую и информационно-логическую увязку. Рассмотрим по порядку.

тупор — трудозатраты на упорядочение. Существующие на практике методы упорядочения блок-схем, например, метод Де-Мукрона, не дают однозначного упорядочения, в результате чего исследователь оказывается перед необходимостью выбора того или иного варианта упорядочения, причем число таких вариантов пропорционально числу модулей в блок-схеме. Окончательный порядок достигается обычно путем ряда итераций. Обозначим число вариантов, которые надо

просмотреть и сравнить при упорядочении блок-схемы: I упор.. В идеальном случае I упор = 1. В

случае глобального перебора I упор = пПрактика показывает, что в большинстве реальных случаев имеет место примерно линейная зависимость:

С упор @ п (3.10)

где: а — коэффициент пропорциональности.

Тогда: ТуПОр С упор т упор (3.11)

где: т упор — средние трудозатраты на упорядочение одного варианта вручную.

Вполне очевидно, что т упор зависит от п . Из практики известно, что в качестве нижней границы можно принять следующую зависимость: т упор = $ * п (3.12)

Тогда: Тупор @а*$* п2 (3.13)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Оценить значения коэффициентов а и $ в отдельности невозможно из-за отсутствия статистических данных, однако некоторые сведения, касающиеся произведения а * $ можно узнать из практики. Так, для упорядочения блок-схемы из 10 модулей с учетом выбора варианта упорядочения может потребоваться 1 или 2 часа, а для упорядочения блок-схемы из 50 модулей с учетом выбора варианта упорядочения может потребоваться несколько дней, т.е. до 40 или 50 рабочих часов и даже больше. Эти цифры позволяют дать следующую ориентировочную оценку величине а * $ :

п

или: а*$@ 0,01 ё 0,02 (3.14)

Поэтому в качестве ориентировочной оценки для Тупор. можно принять:

Туор 0,01 ё 0,02)* п2 (3.15)

Рассмотрим величину А Трс. Трудозатраты на просмотр всех взаимно-независимых путей в блок-схеме и их алгоритмическую и информационно-логическую увязку можно рассматривать как сумму трудозатрат по всем взаимно-независимым путям на их просмотр и увязку по всем

пересечениям каждого из путей с другими. Строго говоря, функция А Трс является неаддитивной. По мере просмотра все чаще встречаются уже проверенные связи и уже просмотренные участки. И, хотя любая связь, сколько бы раз она не встречалась, должна быть проверена, но после ряда проверок она перестает проверяться. Дефицит времени неминуемо приводит к тому, что часть проверок не осуществляется. Часть эта становится тем больше, чем сложнее блок-схема. Поэтому при суммировании трудозатрат следует ввести поправку на реальную неаддитивность функции:

а Трс =Ь рс * е 0, 9 = 1,2,...,О (3.16)

1

где: 0 9 — трудозатраты на поиск, просмотр, анализ 9 -ого пути и его алгоритмическую и информационно-логическую увязку с другими путями; ь рс — средний коэффициент пропорциональности.

Строго говоря, выражение (3.15) следует записать в виде:

АтРс = е Ьрс{9)*ег (3.17)

1

Причем Ь рс (9 ) может в зависимости от 9 меняться от 1 до величины достаточно малой (но не равной нулю). Однако в целях упрощения задачи будем рассматривать А трс в виде (3.16), а

позже определим функцию Ь рс (9 ) .

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

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

Оценим трудозатраты на анализ 9 -ого пути следующим образом:

0, = p,tm?l (3.18)

где: Р 9 — характеристика сложности 9 -ого пути, равная числу связей типа "вершина-дуга" и "дуга-вершина", встречающихся вдоль 9 -ого пути с учетом боковых связей. т Р^Р — средние трудозатраты на однократную проверку любой связи из числа р9 на 9 -ом пути с учетом трудозатрат на ее алгоритмическое и программное включение. По определению:

РГ= е (Р—1+ Р+)в , %-= (9+1) (3.19)

Здесь: (|Р | + Р+) - сумма абсолютных значений полустепеней захода и исхода в вершине % ,

принадлежащей 9 -му пути длиной дуг ((¡9 +1) вершин).

Введем допущение, что: т ^ = т по всем путям в блок-схеме Тогда:

а ¡9 +1

атрс = рСР*е е (Р-1+ Р) (3.20)

11

а ',+1

е е (Р—I + р )

Введем понятие средней сложности пути: , , (321)

Р ср = —-

а

Тогда: а Тр,= р р *т Р1Р *Р сР * а (3.22)

Оценим значения а и р ср . Выше было отмечено, что: а шп = п + 1 В свою очередь: п = т — п + 1

где: т — число дуг ориентированного графа или число ненулевых элементов матрицы смежности блок-схемы.

Вполне очевидно, что при п = 0 и тт1п = п — 1 граф представляет собой простую цепь.

Для матрицы без контуров и петель: тт

п2 — п

2

Введем коэффициент плотности заполнения матрицы смежности: т.

т

тах

(3.23)

Очевидно, что в реальных случаях будем иметь некоторое промежуточное значение тг:

тт1п тг J ттах (3.24)

Тогда для произвольного графа без контуров и петель:

тг = г * ттах (3.25)

1 « _ тт1п _ 2 _

Гтах = 1 и ,т1п = - " " (3.26)

ттах П

2

То есть: г = — ,...,1 п

Цикломатическое число блок-схемы в зависимости от г будет:

2

п г = г * — п + 1 (3.27)

, ^ , ж г * п ц

или: п г = (п — 1) * 3--14

и 2 ш

г

ж г * п ц

Тогда: а т1П =( п - 1) * 3-— - 1ЧЦ + 1 (3.28)

И 2 ш

Представим а т1П в виде функции: а ■ = п{(п'г)т1п (3.29)

Тогда: *{ Гп)= ^^ (3.30)

Рис. 6. Зависимость ® ( г, п) тт Функция ® ( г' п) тт для ряда значений п и г приведена на рис.6. Итак:

А Трс \ Ьср *Рср * п[Г'п)т1П (3.31)

Оценим величину Р ср для некоторых типичных случаев.

Начнем со случая, когда р ср заведомо близко к минимальному значению. Для этого рассмотрим граф с большим числом параллельных путей, в каждом из которых начальная и конечная вершины простые, а остальные - простейшие. Граф такого вида, а также матрица смежности вершин представлены на рис.7 и 8.

1 2 3 4 5 6 7

■ i i с с с

n-3 n-2 n-1 n

\ 1 1 1 1

\ 1

\ 1

\ 1

\

\

\

\ 1

\ 1

\ 1

\ 1

\ 1

\ 1

\ 1

\

Рис 8. Матрица смежности вершин для графа с большим числом параллельных путей

ж п — 2 ц

Для каждого из путей в таком графе: Р ср = 2* 3 а +-ч (3.32)

и а ш

Рис. 9. Результаты расчетов р cp при различных s и n для графов с большим числом

параллельных путей.

Можно показать, что для графов такого вида при 10<n <50: р cp i (n- 3)0 77 + 8 (3.33)

или: р Cp min i л(n- 3)0,77 + 8Щ*о min (3.34)

Но для графов такого вида: а т1П = а = п + 1 = т - п + 2 (3.35)

В свою очередь: т = ттах * г (3.36)

2 4 (п - 2) 4

где: Г = Гт1п е Гтах' Гтт = "; Гтах = -^ = " (3.37)

п п (п - 1) п

Тогда для графов рассматриваемого вида:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

, п2 - п 2 ттп = ттах * гтп = -* — = п - 1

т1п тах т1п 2 п

mm max mm

* n2 - n 4 (n - 2)

Или: «max = mmax * ^max = ~— ** -7Г = 2 * ( П - 2) ; (3.38)

2 n (n - 1)

Следовательно: s min = 1; s max = n- 2 (3.39)

И любое промежуточное значение может быть выражено следующей формулой: n2 - n

s = mmax * r- n + 2 = -* r- n + 2 (3.40)

max 2

или:

2 r ж r n „ s = n2 * — n* 3- + 14 + 2 2 и 2 ш

Таким образом, имеем: ПРИ: r = 2 о *s i й(n- 3)0,77 + 8Щ

mm г cp mm п\ / ы

n

При: r = 3 о cp *s min i й (n - 3)0,77 + 8Щ* ^ (3.41)

При: rmax = 4 0 cp *s mini й( n - 3)0,77 + 8Щ*(п - 2)

Можно показать, что для графов такого вида величина р ср * а т1п может быть оценена по формуле:

Р ср *а mini й( п - 3)0'77 + 8Щ* + ^*( Г * п - 2) Щ (3.42)

24 где: Г = - '...'-; пп

Можно представить ра в более простом виде функциональной зависимости: р ср = п" (3.43)

Тогда:

2 . 1п[(п-3)0'77+8]

При: Гт1п = - ^ , (()--

п 1п(п)

п + 1

При: г

При: гт

п

а I

1п{[(п — 3)°-" + 8]*(—)} 1п(п)

1п{[(п — 3)077 + 8]*(п — 2)}

(3.44)

а I

п

1п(п)

Функция а( п, г) приведена на рис. 10.

2.50 а

2.00

1.50

1.00

0.50

0.00

V

V ч. * . _ _

\ \ г=4/п

\ =3/г

X

\

г=2/п

п

0 10 20 30 40 50 60 70 80 90 100 1 10 120 130

Рис. 10. Функция а (п, г) для графов с большим числом параллельных путей. Ясно видно, что даже для такого простого графа зависимость р * а от п близка к

3

квадратичной при г I — . В качестве нижней границы для оценочных расчетов для графов такого

п

1 7

вида можно принять: р ср * а @ п' (3 .45)

Таким образом, для графов, подобных, представленным на рис.5, нижняя граница трудозатрат

может быть выражена формулой: а Трс' р рс * т Р^ * п1'7

(3.46)

Для еще более сложных графов получить простую аналитическую зависимость для величины:

= а ¡,+1

е е (Р— | + Р+) по-видимому, нельзя. Ограничимся лишь гарантированной оценкой нижней

границы этой величины.

а 1,

Рассмотрим граф на рис.3. Для него: е е (Р—1+ Р+) = 94

1 1 %

Число вершин, определяющих число путей в графе, равно пяти.

(3.47)

Тогда: р ™ *а = п

2,82

(3.48)

4

11

Получим: Р

п

п

I ( Г)

т

(3.49)

(1)

В этом случае: А Трс = р рс * т РСр * п

2'82

(3.50)

Таким образом, для не очень сложного графа мы получили почти кубическую зависимость трудозатрат от числа вершин в графе (или числа модулей алгоритма). Рассмотрим граф, приведенный на рис.11.

1 2 3 4 5 6

\ 1 1 1 1 1

\ 1 1 1 1

\ 1 1 1

\ 1 1

\ 1

\

Рис. 11.

В этом графе:

Таблица 2.

9 Пути в графе Р9 9 Пути в графе Р9

1 1 2 3 4 5 6 30 9 1 3 4 5 6 25

2 1 2 3 4 6 25 10 1 3 4 6 20

3 1 2 3 5 6 25 11 1 3 5 6 20

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4 1 2 3 6 20 12 1 3 6 15

5 1 2 4 5 6 25 13 1 4 5 6 20

6 1 2 4 6 20 14 1 4 6 15

7 1 2 5 6 20 15 1 5 6 15

8 1 2 6 15 16 1 6 10

е 320

а = 16 9 +1

т= 15; п = 6; п = 10; а = 16; ее (Р-| + Р ) = 320 р ср = 20; Р ср *а = пХ22

1 1 49

Рассмотрим полный граф с числом вершин п = 7 :

1 2 3 4 5 6

\ 1 1 1 1 1 1

\ 1 1 1 1 1

\ 1 1 1 1

\ 1 1 1

\ 1 1

\ 1

\

V = 21 - 7+ 1= 15

Рис.12. Полный граф с числом вершин п = 7 . Сделаем некоторые выводы из полученных оценок: 1. Для простейших графов (рис.5):

а трс i рРС* п1'1

2. Для произвольного графа с малым числом вершин (рис.3):

аТрс i ррс*тР1 *п

(3.51)

(3.52)

3. Для полного графа с небольшим числом вершин (рис.11) п = 6 :

А Трс \ ррс *тЦ * пХ22 (3.53)

4. Для полного графа с п = 7 (рис.12):

А Тр.с.= Р рс *С * п2'88 (3.54)

Полученные оценки позволяют принять в качестве гарантированной нижней границы для оценки трудозатрат следующую формулу:

А Трс i р рс * п2 (3.55)

имея в виду при этом, что трудозатраты в реальных случаях могут быть намного больше.

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

а

еР

(3.56)

В действительности же по разным причинам на каждом 9 -ом пути просматривается такое же или меньшее число связей:

Р,е Р9

Общее число просмотренных связей на а путях будет:

2'82

9

е р,, ^ е р, (3.57)

11

Поскольку известно не все число путей а , то часть путей может оказаться не просмотренной. С учетом этого обстоятельства:

а ж а а

е р,ж л е р,ж л е р, (3.58)

111

где:

аж

е р, — действительное число проверенных связей с учетом повторных просмотров;

1

а

е р, — действительное число всех связей, подлежащих проверке с учетом повторных просмотров.

1

Можно определить А ср как соотношение:

а

е р,ж

Ь ср = 4-^ 1 (3.59)

е р,

1

где:

,ж= 1,2,...,а8; , = 1,2,...,а ; аж Л а

Итак, необходимо определить ту долю от общего числа всех связей, подлежащих просмотру, которая действительно будет просмотрена. Для этого примем такую дисциплину просмотра, которая не противоречит здравому смыслу и, с учетом дефицита времени, которым всегда озабочен разработчик алгоритмов и программ, даст ему уверенность в том, что им будет просмотрено достаточное число связей. Будем считать, что разработчик, проводя просмотр первого пути, отмечает все просматриваемые связи и осуществляет их проверку и информационно-логическую и алгоритмическую увязку. При просмотре любого последующего пути он просматривает и отмечает все связи, а проверяет информационно-логическую увязку лишь тех связей, которые отмечены не более чем 1 раз. Как только какая-либо связь оказывается отмеченной 1 раз, она при всех последующих просмотрах просматривается, отмечается, но не проверяется.

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

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

таких связей при просмотре (1 + 1) -го пути равно р1+1.

р1 +1 = р1 +1 (3.60)

р11 -=ри 1*(1 -У и 1) (3.61) где: У 1 +1 - доля связей, просмотренных и отмеченных при просмотре (1 + 1) -го пути, оказались отмечены не более 1 раз. Тогда при просмотре (1 + 2) -го пути:

р1 + 2 =рХ + 2 *УХ+ 2 (3.62)

р1+ 2 = р1 + 2 *( 1 'УХ, 2 ) (3.63) При просмотре , 1 -го пути (, * > 1) :

ру- р,-* У,' (3.64)

р,2- = р,-*(1 —У,•) (3.65) При просмотре , * путей будет просмотрено, увязано и проверено связей:

е р, = р1 +р 2 +р 3 + ... + р1+р;! + 1 + р! + 2 + ... + р, (3.66)

1

Далее:

е р, = р1 +р 2 +р 3 +... + р1 + ря+1 * у 1+1 + ...+ р,'*у,' (3.67)

1

или:

1

е р, = е р, + е р, *у,

1 1 1

При просмотре в блок-схеме всех а путей:

1

е р1 = е р, + е р,*у, (3.68)

*

, Г , • Г , Г ,

1 1 1

Однако все пути, как правило, неизвестны. Минимальное число путей может быть определено, как было показано выше, по формуле: а тт = п + 1. Тогда все пути сверх этого числа, если не проводить конвертирование графа (блок-схемы), просматриваются с некоторой

вероятностью Ч ,, следовательно:

а X а т1п а

е р9 = е Р9+ е р,*у,+ е и.*Р.*у

9 Ь Г 9 Г 9 11

(3.69)

Упростим это выражение. В действительности мы не знаем Р 9 , так как никогда заранее не известен порядок просмотра путей в графе. Поэтому, не совершая существенной ошибки, можно принять:

Р9 = Р

е Р9

1

9 ср

а

(3.70)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Т а е Р9

Тогда: е Р1 = *

1 + е у9 + е и9*у

к

л I

(3.71)

Далее:

(3.72)

еР

1

а

еР

а =1 + е у9 + е и9

Имея в виду, что Р9 = Р9 , получим: р рс * а = 1 + е у 9 + е и 9 *у 9

(3.73)

Величина у 9 заранее не известна и не известна ее зависимость от 9 . Поэтому будем считать ее постоянной и некоторой средней. Тогда:

у 1 = у

2

+ 2 = Ух +1 *У = У

У9=У

9 - X

а тт - X

у а = у

Г а т1п Г

Следовательно:

9 - X

" т1п " т1п

е у 9 = е у

X X

где:

9 = X + 1;X + 2;....;а тп

9 - X = 1,2'...'а т1п - X

То есть:

(3.74)

е у9~1=у+у 2 + у 3 + ... + у а т1п

(3.75)

9

9

а

Перейдем к последнему слагаемому: е ^ , *У, . Распространяя правила просмотра и

а тт

проверки связей, принятые для интервала от 1 + 1 до а тт на интервал от а тт + 1 до а . Напишем для данного слагаемого: , = а тт + 1;а тт + 2;...;а

У — у а тт _ 1 + 1

V а тт ^

У а т,„ + 2 = Уа т'" + 2

У а =¥а~1

Определим вероятность У , . Будем понимать эту вероятность как вероятность события,

состоящего в том, что любой из путей, номер которого находится в интервале от а т1П + 1 до а , будет просмотрен. Очевидно, что эта вероятность равна доле просмотренных путей в интервале от а т1П + 1 до а . Обозначим: а зад - заданное, выбранное, либо предполагаемое для просмотра число путей, причем такое, что: а зад < а .

Тогда: У, — а-__а т1П (3.76)

а а тт

и выражение (3.72) получит вид:

а т1п а _ а а

Р Ра *а=1 + е + —-— * е У, (3.77)

j

l s - s mm

Далее:

l 1 S min S - S S

Pe = -+-* е + ^—mir* е y f (3.78)

S S l S (S -S min )

min

Введем обозначения: - S _ s зад

S = -- S = —задд-

u , u зад

S

min

1 Ж l 1 S min S - 1 S*S min Ц

и получим: p pc =-* 3-+-* е y,f+- Гд ^ * е y j ч (3.79)

S min иS S l S(S- 1) sm, ш

Очевидно, что: p pcJ 1.

Следовательно, величина p pc характеризует полноту проработки алгоритма и программы в целом.

Рассмотрим некоторые числовые примеры. 1. Пусть:

s min =10; s кш =1,5

1-2; s кш, =15;

s - 20; y - 0,8;

S= 2;

Найдем слагаемые в скобках в выражении (3.79):

1/ - у _ 1. Л" /2 = 1;

s min 10

е У,- е У , = 3,328911;

1 3

s s min 20

е У,- е У, = 0,4511865;

s min 10

и, наконец:

1 ж 3,328911 1,5 - 1 ______„Ц

bcp -—* з 1 + -+ 0,5991607ч - 0,2814

ш

cp 10 J" 2 ' 2 (2 - 1)

В рассмотренном примере в случае сравнительно простого графа (блок-схемы) при обязательной двукратной проверке каждой связи оказывается, что программист выполняет чуть больше четверти необходимой работы по взаимной информационно-логической увязке всех связей в блок-схеме. 2. Рассмотрим более сложный пример:

S min - 20; ^зад - 1,5

1- 2; s зд - 30;

s- 2; y - 0,8; s - 40;

В этом примере:

1/--1; /и '

s min 20

е У,- е У,- 3,9279423;

1 3

s 40

е У,- е У,- 0,0712685;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

s min 21

1 Ж 1 1 М

b - — * з 1 + -* 3,9279423+ -* 0,0712685Ч - 0,149;

cp 20 U 2 4 Ш

Можно сделать некоторый, хотя и не вполне очевидный, вывод: при сохранении тех же характеристик процесса разработки алгоритма: 1 - 2;У - 0,8 при усложнении блок-схемы вдвое: s 1 - 20; s 2 - 40 полнота проверки алгоритма и программы при разработке уменьшается почти вдвое, хотя, казалось бы, она не должна была бы измениться столь существенно.

Таким образом, величина $ рс определяет ту долю от общего числа всех связей, подлежащих

просмотру, которая действительно будет просмотрена. Величина $ рс характеризует полноту проработки алгоритма и программы в целом. Введение такого понятия как полнота проверки алгоритма и программы при их создании и анализ величины $ рс дает возможность в дальнейшем подойти к оценке вероятности появления ошибок в алгоритме или программе или математического ожидания числа ошибок. В задачу данного исследования подобная работа пока

не входит. Поэтому вновь вернемся к выражению (3.22): А трс = $ ср * т ^ * Р ср * а

Выше было показано, что можно принять: А трс'\ $ ср * т Р^ * п2 Имея в виду (3.78) получим:

1 1 1 " т"1 а - 1

Атрс] трр*—(Гге + *е )*п

р а шп а а 1 а (а - 1)

Пусть:

¥г = 1, 1 = 0, а а = а

Тогда:

а т\ тР (о +а - ^ -1)*п2 = т Р(1) * а - *п =тР(1)*п

рс Рср а ш/ а а ' "Рср а шт*а "Рср

Итак, в идеальном случае полной проверки алгоритма и программы по всем путям имеем: А трс\ тР1Р * п2 (3.80)

3.7. Полная стоимость разработки программного продукта

Общие трудозатраты на разработку алгоритма и программы из п модулей или блоков неавтоматизированным способом выразятся следующей формулой:

п п

с = + V2п + 'е *зк + '4т4п + s5е *5к + п2 +

т = тп 2п + е *3к п + е *5к + арп + тРЦп2 (з.81)

1 1

где:

С (т) - полная стоимость (или трудозатраты в часах) разработки алгоритма и программы из п модулей;

' - стоимость одного часа трудозатрат на соответствующем этапе разработки.

п

п

Работа по изучению объекта и его декомпозиции, а также по разработке блок-схемы являются наиболее сложными и высокооплачиваемыми, то есть: 51 = s2 = s4 . Кроме того, следует

полагать, что: s5 < Sз < s1 Поэтому:

п п

с sl*(т 1 + т2 + тз)*п+ sзе *зк + ^е *5к + s6*а*р*п + s6*п2

1 1

Или:

Ci А * п + В * п2 (3.82)

Последние формулы, хотя и приближенно, но выражают определенную закономерность зависимости трудозатрат или стоимости создания МПО вручную от числа модулей или операторов (блоков) программы. Значения коэффициентов А и В зависят от трудоемкости работ по созданию МПО на различных этапах. Характер полученных функциональных зависимостей совпадает с экспериментальными данными [2], полученными статистическим путем, что может служить косвенным подтверждением достоверности полученных формул. Выражение (3.82) может быть написано не для определения стоимости разработки МПО, а для определения трудозатрат, то есть:

трс = А * п + В( * п2 (3.83)

Исходя из имеющейся статистики, в качестве первого приближения для коэффициентов А и В могут быть приняты следующие значения: Ат = 1 и Вт = 0,02. Эти значения соответствуют случаю составления алгоритмов и программ простейшего вида, как например, рассмотренный в

работе [6] алгоритм Евклида. Значения функции Трс (п) представлены на рис.13.

450

400

х

| 350

1= 300

х га

ё 250

5 200

га а 1-

га со о

Ч

^

а

150

100

50

Трудоза траты в час ,ах ^^

Трудозатраты в / рабочих днях

/

_ __ __ _ и ----

20

40 60 80 100 120

количество операторов алгоритма

140

160

0

0

Рис. 13. Значения функции Трс (п)

Из этого следует вполне очевидный вывод о необходимости снижения трудозатрат на этапе синтеза алгоритма, что может привести к существенному снижению трудозатрат на разработку МПО в целом.

4. Формулы для оценки трудозатрат на разработку МПО способом автоматизированного синтеза алгоритмов и программ

Не вдаваясь в детали автоматизации синтеза алгоритмов и программ, попробуем оценить стоимость или трудозатраты на такую автоматизацию. При этом будем исходить из того, что автоматизация осуществляется программно-алгоритмическими средствами. Автоматизированный синтез алгоритмов и программ может быть осуществлен на 6 и 7 этапах разработки МПО, а способы работы на 1-5 этапах практически не меняются. Небольшие необходимые изменения могут состоять в том, что создание отдельных модулей или блоков должно проводится единообразно, имеется в виду, что заранее должен быть разработан стандарт на модули и операторы, который должен строго выдерживаться. Это не должно привести к резкому увеличению трудозатрат на 1-5 этапах. Кроме того, есть возможность разрабатывать отдельные блоки или модули также автоматизированным способом, что позволит еще больше снизить трудозатраты и сделать автоматизированный синтез еще более выгодным. Автоматизированный синтез как алгоритмов и программ, так и отдельных модулей, может осуществляться в один или два этапа. При более простых методах синтеза синтез осуществляется в два этапа. На первом этапе осуществляется автоматизированный синтез алгоритма по блок-схеме, а на втором - автоматизированный синтез программы по полученному алгоритму. Второй этап в

настоящее время в той или иной степени присутствует, тогда как первый - нет. Таким образом, даже наличие разработанных методов синтеза программ по алгоритмам пока не позволяет решить проблему автоматизированного синтеза МПО в необходимой степени. Разработанные к настоящему времени методы автоматизированного синтеза, и их объединение с методами автоматизированного построения программ позволят осуществлять автоматизированный синтез алгоритмов и программ в один этап. В этом случае трудоемкость непосредственно автоматизированного этапа синтеза МПО будет практически равна нулю. Трудозатраты пойдут лишь на разработку метода и программы самого синтеза. И в этом случае необходимо будет учитывать лишь трудозатраты на доработку полученных программ синтеза применительно к тому или иному классу задач.

Итак, если метод автоматизированного синтеза МПО разработан [7] и реализован для некоторого числа M классов задач, достаточно близких между собой по характеру исходных данных, языкам, типам алгоритмов и т.д., то для всех задач подобных классов оценка стоимости разработки МПО должна выполняться с учетом этого обстоятельства. Поэтому в случае автоматизированного синтеза МПО можно записать:

l = 5

с1лс = е с АСт (4.1)

i = i

где: d лст — дополнительная стоимость разработки МПО, приходящаяся на каждую из задач, входящих в M классов.

Оценим эту величину. Общее число задач, входящих в M классов, будет:

M

е Nm , где n = 1,2,3,...,M (4.2)

i

Пусть общие расходы на разработку методов автоматизированного синтеза (МАС) МПО составят Слс, а дополнительные расходы на доработку МАС МПО применительно к т -ому

классу задач — D СлСт . Тогда дополнительные расходы на разработку МПО, приходящиеся в среднем на одну задачу т -ого класса за счет разработки метода автоматизированного синтеза, составят:

С D С

d _ ^ЛС , ц ^ЛСт

ЛСт _ е N Nm (4.3)

т

1

Здесь:

СЛС = ¿6 * TMAС (4.4)

D СЛСт = ¿6 ТШСт (4.5)

где:

TMAC - трудозатраты на разработку и реализацию общего для всех задач M классов метода автоматизированного синтеза МПО;

D TMACm - трудозатраты на доработку МАС МПО применительно к задачам m -ого класса.

Таким образом:

s * T s * D T

t = J6 1MAC + J6 ц MACm 0ACm m N

е N Nm

m

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1

Если предположить, что в каждом классе некоторое среднее число задач или N = Ncp = const, то: s * T s * D T

! _ J6 MAC \ J6 ц MACm _

S ACm - —-Г- + ----(4.6)

M * N N v '

cp cp

или:

S _ S6 * TMAC t Ж 1 , D TMACm Ц

S ACm -* 3 M + -T-4 (4.7)

Ncp И M TMAC Ш

Очевидно, что s

ACm зависит не от сложности конкретной задачи, а только от свойств класса задач, и, таким образом, является для каждого класса задач величиной постоянной. Если МАС МПО создается только для одного класса задач, то: s * T

S _ J6 1MAC

S ACm -—--(4.8)

cp

Из этого следует, что S CACm не зависит от сложности МПО конкретной задачи, а только от свойств класса задач и, таким образом, является величиной постоянной для каждого класса. Если метод автоматизированного синтеза создается для одного класса задач, то: s *T

А,

s

J6 * AC

AC (4.9)

cp

5. Теоретические области целесообразного применения различных методов построения МПО 5.1 Неавтоматизированная разработка МПО

n n

Cpci s1(m1 + m2 3)*n + S3*е tък + s5*е t5k + s6*a *b *n2 + s6*bpc*m™*n2

1 1

Здесь:

s1 - стоимость одного часа трудозатрат на 1, 2 и 4 этапах разработки МПО, S3 - стоимость одного часа трудозатрат на третьем этапе разработки МПО, s5 - стоимость одного часа трудозатрат на пятом этапе разработки МПО, s6 - стоимость одного часа трудозатрат на 6 и 7 этапах разработки МПО,

т1 - удельные трудозатраты на первом этапе разработки МПО в среднем приходящиеся на один модуль алгоритма (модели), т 2 - аналогично на втором этапе, т 4 - аналогично на четвертом этапе,

7 3к - удельные трудозатраты, приходящиеся на третьем этапе разработки МПО на к -ый модуль, 7 5к - аналогично для пятого этапа, а *Ь » 0,01 ё 0,02

- удельные трудозатраты, приходящиеся на проверку и информационно-логическую увязку каждой связи, встречающейся при просмотре очередного пути в алгоритме,

ь рс - показатель полноты проверки всех связей в алгоритме (необходимые расчетные формулы для

определения А рс приведены выше),

п - число модулей в алгоритме.

5. 2. Автоматизированная разработка МПО

п

сас = ^1*(т 1 2 4)*п + е 75к + §са

1

где § САСт может определяться по следующим формулам:

V * Т V * А Т

§ _ ^6 1МАС + ^6 ц МАСт иАСт т N

е N

т

т 1

где:

ТМАС, А ТМАС - определены выше, т = 1,..., М

М - число классов задач, Nт - число задач в классе.

ТМАС может, вообще говоря, определяться по формуле приведенной к расчету трудоемкости, либо может определяться из практики. Имеющийся на сегодняшний день опыт разработки МПО позволяет дать следующую оценку ТМАС : ТмАСча2Ш0ё 5000 - .

Для величины А ТМАС никакой статистики нет, хотя предположительно можно дать следующую оценку: А Т]чАСчя1Ш0ё 2000 - . Если в каждом из М классов задач число задач

л, Л,' - s6 т

составляет

Кр , то: § САСт + А ТМАСт)

К/М

ИЛИ: ^ САСт

? *Т 1 А Т

^6 МАС _ ( 1 | " МАСт

^ М

Т

МАС

)

При разработке МПО только для одного класса задач: ^ ас

V *Т

5.3. Области целесообразного применения метода автоматизированного синтеза

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

5.3.1. Сравнительная оценка эффективности автоматизированного неавтоматизированного способов построения МПО

Для иллюстрации сравнительной оценки используем упрощенные выражения для расчета С

и Срс .

Для прямого, ручного программирования:

С 1 А * п + В * п2

рс

Для автоматизированного построения МПО получим следующее упрощенное выражение: Сас = А * п + А

и

Оценим значения величин А , В и D1. Для упрощения расчетов примем:

1. 51 = 53 = = / ,

2. т1 = 10ч/час,

3. т2 = 5ч/час,

4. т4 = 5ч/час,

5. т

6. т

ЭАт

5Ат

50 час ,

500 час ,

7. а * Ь = 0,02,

8. = 5,

9. ТчС час000 / ,

10. Ncp = 1,4,25,

11. 7 = 1

12. D1 = 2000,5000,10000,20000

При этих исходных данных: А = 570, В » 5 . Тогда:

Срг \ 570*п + 5*п2

рс

САС = 570* п + D1

Результаты расчетов, приведенные на рис.14, позволяют сделать вывод о том, что даже при весьма невыгодных исходных данных для автоматизированного построения МПО, его внедрение становится выгодным, начиная с весьма небольших размеров программ (примерно 50-70

операторов). При исходных данных, более близких к реальности, выигрыш от применения автоматизации становится существенно ощутимее.

^

н

о ю

(U

о.

м пз о.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

J

Б

о г

S

р

о

220000 200000 180000 160000 140000 120000 100000 80000 60000 40000 20000 0

ч

Неавтоматизированное

пос! гроени ю МП( О

Авто >мати: ирова нное \

построение ivii о, D = 25000$ \

Г>

Л ^

* Автоматизированное построение МПО, D = 2000$

0 20 40 60 80 100 120 140 160 количество операторов

Рис. 14. Зависимость стоимости разработки МПО в случае неавтоматизированного построения программы и в случае применения автоматизированного синтеза.

5.3.2. Области целесообразного применения методов автоматизированного синтеза МПО

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

Непосредственное прямое программирование

Трс0 = А * п + В, *( р п)2 (5.1)

где:

р - средняя длина программного модуля; п - количество модулей; р * п - средняя длина всей программы.

At, Bt - коэффициенты, определяемые, как было показано выше, но без учета стоимости одного часа трудозатрат.

Модульное программирование

В этом случае производится отдельное программирование модулей вручную, а затем их объединение в общую программу также вручную.

Tpc = At * n + Bt * p2 * n + Bt * n2 (5.2)

Частично автоматизированная разработка МПО

Программирование отдельных модулей или блоков проводится общепринятыми методами вручную, а в единую систему или комплекс они собираются с помощью МАС МПО. TAC = A * n + Bt * p2 * n + g* D1 (5.3)

где: D1 - трудозатраты на разработку МАС МПО;

g - доля рассматриваемой задачи во всем классе задач, для которого были разработаны МАС МПО.

Полностью автоматизированная разработка МПО

В этом случае, как отдельные модули, так и все МПО строится автоматизировано. В этом

случае: Tac0 = A * n + g* D (5.4)

Сравнивая различные варианты между собой, получим приближенные формулы, описывающие в функциональном виде границы раздела между областями целесообразного применения того или иного способа разработки МПО:

АС РС 3. tac 4. TACo

1. TPC0 1/3 - Tpco/ tac 1/4 - TpCo/ TACo

2. Tpc 2/3 - Tpc / tac 2/4 - TpC / Taco

Вариант 1-3. Сравнение непосредственной прямой разработки программ вручную с частично автоматизированным синтезом МПО: ТРС0 = Тас

Из условия равенства трудозатрат, получим формулу для определения средней длины программного модуля:

Pi,:

V

g * D

Т^ (5.5)

5 (n2 - n)

к £

о 5

5

ra SP

о sP с то

X

5

6

к к

X

о SP О

0 20 40 60 80 100 120 140 160 количество операторов алгоритмов

Рис.15.

Вариант 1-4. Сравнение непосредственной прямой разработки программ вручную с полностью автоматизированным синтезом: трСо = тАСо. Слово "вручную" нельзя понимать буквально. В данной статье не учитывается возможное повышение производительности труда от появившихся в последние годы достаточно мощных средств машинного интерфейса, которые, с одной стороны, весьма облегчают работу создателей МПО, а с другой стороны, все-таки не решают проблему автоматизации синтеза структуры алгоритма или программы в полном объеме.

Из условия равенства трудозатрат, получим формулу для определения средней длины

программного модуля: p14 =

g* D1 - 430n

5n

(5.6)

н

а о и

я о

ев

X

«

Я Я

X

«

а о

70.00 60.00 50.00 40.00 30.00 20.00 10.00 0.00

1

■ 1 - D=2C - )000

1 - / ^ 10000

1 1 1 / ■ / / D=5000

У /

\\\/ D=20 00

- - - - ■ в в

10 20 30 40

количество операторов алгоритма

50

0

Рис. 16

Вариант 2-3. Сравнение модульной разработки МПО при ручном синтезе всей программы с частично автоматизированным синтезом МПО: ТрС = Тас в * п1

Тогда: Д* = --(5.7)

1

В данном случае размеры модулей не влияют на оценку применимости МАС МПО. Важно лишь число модулей. При 1 = 1 имеем следующие результаты:

п

Рис. 17.

Вариант 2-4. Сравнение модульной разработки МПО при ручном синтезе программы с полностью автоматизированным синтезом МПО: тс = тлс0

Р2,4 (5.8)

количество операторов алгоритма

Рис. 18.

Для р = 1 и Ч = 1 получим: Д = 5* п + 5* п2

П

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 19

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

1. Проведенный анализ технологии разработки математических моделей, алгоритмов и программ опирается на экспертные оценки квалифицированных специалистов в этой области, что позволило выявить структуру этого процесса и разработать основные математические зависимости для оценки трудозатрат на разработку МПО и его стоимости при применении различных методов.

2. Предлагаемая методика оценки трудозатрат и стоимости МПО как при его построении вручную, так и при автоматизированном построении опирается на структурные свойства моделей, алгоритмов и программ, рассматриваемых в качестве обыкновенных сетевых моделей.

3. Достоверность выявленных зависимостей от размеров алгоритмов и программ подтверждается их совпадением с зависимостями, выявленными на основе иных подходов другими авторами.

4. Проведенные с применением предлагаемой методики ориентировочные оценки эффективности методов автоматизированного синтеза МПО позволили получить следующие предварительные результаты:

5. Использование МАС МПО в полном объеме даже в случае уникального применения (1 задача) позволяет существенно снижать стоимость разработки МПО (особенно крупных программ). В сравнении с прямым программированием выгода появляется, уже начиная с программ размером в 100 операторов (1 задача), иногда даже меньше.

Литература:

1. Ермилов Л.И. Синтез сетевых моделей сложных процессов и систем. - М.: МО СССР, 1970. - 45с.

2. Малинин Л.И. Восемь дополнительных теорем из теории графов. В кн. Нечипоренко В.И.

Структурный анализ сложных систем. - М.: Сов. Радио, 1977, - с.198-212.

3. Вельбицкий И.В., Ходаковский В.Н., Шолмов Л.И. Технологический комплекс

производства программ на машинах ЕС-ЭВМ и БЭСМ-6. - М.: Статистика, 1980. - 263 с.

4. Ефимов Е.И. Решатели интеллектуальных задач. - М.: Наука, 1982. -316 с.

5. Тыугу Э.Х. Концептуальное программирование. - М.: Наука, 1984. -255 с.

6. Холстед М.Х. Начала науки о программах. - М.: Финансы и Статистика, 1981, 128с.

7. Эванчук С. Как снизить трудоемкость программирования, - М: Сов. Радио, 1983, 97 с.

8. Малинина Н.Л. Автоматизированный синтез вычислительных алгоритмов для

проектирования сложных технических систем. Дис. к. ф.-м. н.// МАИ.- М.: 1993. - 200с.

СВЕДЕНИЯ ОБ АВТОРЕ

Малинина Наталия Леонидовна, доцент кафедры вычислительной математики и программирования Московского авиационного института (государственного технического университета), к.ф.-м.н.

i Надоели баннеры? Вы всегда можете отключить рекламу.