Популярное

Мифы о звукоизоляции



Как построить дом из пеноблоков



Как построить лестницы на садовом участке



Подбираем краску для ремонта



Каркасные дома из дерева


Главная » Улучшение плана программного

1 2 3 4 5 6

Примечание 1. Из всего множества ресурсов (людей, средств, методов) состояния определяются только для людей и средств, так как методы считаются доступными в любой момент времени без ограничений.

Примечание 2. Для каждого продукта может быть определено еще одно состояние, когда работы по созданию продукта уже ведутся, но продукт еще не создан. При необходимости это состояние можно получить из текущего состояния вершины task, из которой исходит соответствующая продукту дуга (т. е. из состояния шага, на котором создается рассматриваемый продукт: если этот шаг еще выполняется, значит, идет работа по созданию продукта).

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

6.1. Состояния вершин динамического графа, соответствующих задачам

Правило 1. Шаг еще не начал выполняться. task-name(i,K) е TaskS &

Started (starting-moment, K) & time-moment < starting-moment

-- (task-nameS1)(K,not-startedA not-defined (TaskS)D

Комментарий. Состояние вершины task-name описывается пятеркой (K, not-started, 0, not-defined, not-defined), если шаг с номером K, на котором выполняется задача task-name, начал выполняться позже момента времени time-moment (см. выше Примечание 3).

Правило 2. Шаг выполняется.

task-name(i,K) е TaskS &

Started (starting-moment, K) & Finished (finishing-moment, K) & time-moment > starting-moment & time-moment < finishing-moment & Current-ratio (time-moment, K, P)

(task nameS1)(K started-not-finished, P, starting-moment, not-defined) е (TaskS)D

Комментарий. Состояние вершины task-name описывается пятеркой (K,started-not-finished, P, starting-moment, not-defined), если шаг с номером K, на котором выполняется задача task-name, начал выполняться в момент времени starting-moment, предшествующий моменту времени time-moment; был завершен позже момента времени time-moment; в момент времени time-moment был выполнен на P процентов.

Правило 3. Выполнение шага завершено.



task-name(i,K) е TaskS &

Started(starting-moment, K) & Finished (finishing-moment, K) & time-moment > finishing-moment

- (task-nameS1)(Kfmished, 100, starting-moment, finishing-moment) е (TaskS)D

Комментарий. Состояние вершины task-name описывается пятеркой (K,finished,100,starting-moment,finishing-moment), если шаг с номером K, на котором выполняется задача task-name, был завершен в момент времени finishing-moment, предшествующий моменту времени time-moment.

6.2. Состояния вершин динамического графа, соответствующих ресурсам

Правило 1. Ресурс свободен. resource-name е Res &

resource-name е Agent-names u Tool-names & V initiating-moment, release-moment

( (Performs*(initiating-moment, release-moment, resource-name, ) v Allocations*(initiating-moment, release-moment, resource-name, )) & ((time-moment < initiating-moment) v (time-moment > release-moment) ) )

free t- RС

- resource-name е Res

Комментарий. Состояние вершины resource-name описывается меткой free, если в момент времени time-moment ресурс, представленный этой вершиной, не выполнял никакой работы по проекту.

Правило 2. Ресурс занят. resource-name е Res &

resource-name е Agent-names u Tool-names & 3 initiating-moment, release-moment ((Performs*(initiating-moment, release-moment, resource-name, ) v Allocations*(initiating-moment, release-moment, resource-name, )) & ((initiating-moment < time-moment) & (time-moment < release-moment) )

- resource-nameoccupied е ResRС

Комментарий. Состояние вершины resource-name описывается меткой occupied, если в момент времени time-moment ресурс, представленный этой вершиной, выполнял работу по проекту.

6.3. Состояния дуг динамического графа, соответствующих передаче продуктов

Правило 1. Продукт не произведен. (task-name1(t1,K1), task-name2(t2,K2)) product-name е R1 &



Produced (production-moment, product-name) & time-moment < production-moment

- ((task-name1(t1, K1), task-name2(t2, K2)) product-name) (not-produced not-defined) е R1PS

Комментарий. Состояние дуги (task-name1, task-name2), помеченной рабочим продуктом product-name, описывается парой (not-produced, not-defined), если продукт product-name создан позже момента времени time-moment.

Правило 2. Продукт произведен. (task-name1(t1,K1), task-name2(t2,K2)) product-name е R1 &

Produced (production-moment, product-name) &

time-moment > production-moment

- ((task-name1(t1,K1), task-name2(t2,K2)) product-name) (produced production-moment) е R1PS

Комментарий. Состояние дуги (task-name1, task-name2), помеченной рабочим продуктом product-name, описывается парой (produced, production-moment), если продукт product-name создан в момент времени production-moment, предшествующий моменту времени time-moment.

6.4. Состояния дуг динамического графа, соответствующих текущим назначениям ресурсов

6.4.1. Назначения для ресурсов-исполнителей

Определим на основе отношения Performs (time-moment1, time-moment2, agent-name, effort-unit, ratio) (см. раздел 4.1) вспомогательное отношение Performs* (time-moment1, time-moment2, agent-name, effort-unit), представляющее непрерывный промежуток времени, в течение которого исполнитель agent-name выполнял конкретное назначение effort-unit. В соответствии с определенными в разделе 4.2 правилами модельного исполнения плана проекта для каждой пары (agent-name, effort-unit) существует набор кортежей отношения Performs, в совокупности определяющих непрерывный временной интервал, в течение которого исполнитель фактически выполнял данное назначение. Соответственно, отношение Performs*, определяющее единственный кортеж для каждой пары (agent-name, effort-unit), может быть задано следующим правилом.

3 agent-name е Agent-names

(Performs (time-moment1, time-moment2, agent-name, effort-unit, ) &

Current-time( , delta) &

NOT (Performs (time-moment1 - delta, time-moment1, agent-name, effort-unit, ) ) &

Performs(time-moment3, time-moment4, agent-name, effort-unit, ) & NOT (Performs (time-moment4, time-moment4 + delta, agent-name,



effort-unit, ) )

- Performs* (time-moment1, time-moment4, agent-name, effort-unit) )

Комментарий. Отношение Performs задает временные интервалы длиной delta, на которых исполнитель занимался некоторой работой. Записанное выше правило фактически объединяет несколько последовательных интервалов, заданных отношением Performs, в течение которых исполнитель выполнял одну и ту же работу, в один интервал, заданный отношением Performs*.

Правило 1. Исполнитель еще не начал работать на шаге. (agent-name, task-name(t,K))role-name е R2 &

Assignments (effort-unit, agent-name, role-name, K, ) & Performs*(initiating-moment, , agent-name, effort-unit) & time-moment < initiating-moment

- ((agent-name, task-name(t,K))role-name)(not-performs not-defined not-defined) е R2RS Комментарий. Состояние помеченной ролью role-name дуги графа между

вершиной agent-name, представляющей исполнителя, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (not-performs, not-defined, not-defined), если на шаге с номером K исполнитель agent-name в роли role-name выполнял часть работы effort-unit, начиная с момента времени initiating-moment, и момент времени time-moment предшествует моменту времени initiating-moment.

Правило 2. Исполнитель работает на шаге. (agent-name, task-name(t,K))role-name е R2 &

Assignments (effort-unit, agent-name, role-name, K, ) &

Performs*(initiating-moment, release-moment, agent-name, effort-unit) &

time-moment > initiating-moment &

time-moment < release-moment

- ((agent-name, task-name(t,K))role-name)(perfos mitiating-moment not-defined) е R2RS

Комментарий. Состояние помеченной ролью role-name дуги графа между вершиной agent-name, представляющей исполнителя, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (performs, initiating-moment, not-defined), если на шаге с номером K исполнитель agent-name в роли role-name выполнял часть работы effort-unit, начиная с момента времени initiating-moment и до момента времени release-moment, и момент времени time-moment находится между моментами времени initiating-moment и release-moment.

Правило 3. Исполнитель закончил работать на шаге.

(agent-name, task-name(t,K))role-name е R2 &

Assignments (effort-unit, agent-name, role-name, K, ) & Performs*(initiating-moment, release-moment, agent-name, effort-unit) &



time-moment > release-moment

- ((agent-name, task-name(t,K))role-name)(perfoimed mitiating-moment release-moment) е R2RS

Комментарий. Состояние помеченной ролью role-name дуги графа между вершиной agent-name, представляющей исполнителя, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (performed, initiating-moment, release-moment), если на шаге с номером K исполнитель agent-name в роли role-name выполнял часть работы effort-unit, начиная с момента времени initiating-moment и до момента времени release-moment, и момент времени release-moment предшествует моменту времени time-moment.

6.4.2. Назначения для ресурсов-средств производства

Определим аналогичное отношению Performs* отношение Allocations*(time-moment1, time-moment2, tool-name, step) по следующему правилу.

3 tool-name, step

(Used-tools (tool-name, step, ) &

Started (time-moment1, step) &

Finished (time-moment2, step)

- Allocations* (time-moment1, time-moment2, tool-name, step) )

Комментарий. Отношение Used-tools определяет назначение средств, используемых при выполнении шагов проекта. Отношение Allocations* определяет непрерывный промежуток времени, на котором средство tool-name использовалось при выполнении шага step.

Правило 1. Средство еще не начали использовать на шаге. (tool-name, task-name(t,K)) е R2 &

Allocations* (initiating-moment, , tool-name, K) &

time-moment < initiating-moment

- (tool-name, task-name(t,K)) (not-performs= not-defined not-defined) е R2RS

Комментарий. Состояние дуги графа между вершиной tool-name, представляющей средство, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (not-performs, not-defined, not-defined), если средство tool-name используется при выполнении шага с номером K, начиная с момента времени initiating-moment, и момент времени time-moment предшествует моменту времени initiating-moment.

Правило 2. Средство используют на шаге. (tool-name, task-name(t,K)) е R2 &

Allocations* (initiating-moment, release-moment, tool-name, K) &



time-moment > initiating-moment & time-moment < release-moment

- (tool-name, task-name(t,K)) (performs,initiating-moment= not-defined) е R2RS

Комментарий. Состояние дуги графа между вершиной tool-name, представляющей средство, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (performs, initiating-moment, not-defined), если средство tool-name используется при выполнении шага с номером K, начиная с момента времени initiating-moment и до момента времени release-moment, и момент времени time-moment находится между моментами времени initiating-moment и release-moment.

Правило 3. Средство закончили использовать на шаге. (tool-name, task-name(t,K)) &

Allocations* (initiating-moment, release-moment, tool-name, K) &

time-moment > release-moment

- (tool-name, task-name(t,K)) (performed,initiating-moment,release-moment) е R2RS

Комментарий. Состояние дуги графа между вершиной tool-name, представляющей средство, и вершиной task-name(t,K), представляющей шаг с номером K, на котором выполняется задача task-name, описывается тройкой (performed, initiating-moment, release-moment), если средство tool-name используется при выполнении шага с номером K, начиная с момента времени initiating-moment и до момента времени release-moment, и момент времени release-moment предшествует моменту времени time-moment.

6.5. Приращение динамического графа

В дополнение к динамическому графу Gd(time-moment), представляющему состояния элементов модели плана проекта в заданный момент времени процесса исполнения, определим приращение динамического графа AGd(time-moment1, time-moment2) = Gd(time-moment2) - Gd(time-moment1) как подграф динамического графа Gd(time-moment2), который представляет прогресс выполнения плана проекта на заданном промежутке времени.

Пусть Gd(time-moment1) = <(TaskS)D1, ResRa, (R1PS1,R2RS1)> -динамический граф в момент времени time-moment1,

Gd(time-moment2) = <(TaskS)D2, ResRС2, (R1PS2,R2RS2)> - динамический граф в момент времени time-moment2,

тогда AGd(time-moment1, time-moment2) = <(ATaskS)AD, AResARС, (AR1, AR2ARS)> - приращение динамического графа на промежутке времени [time-moment1, time-moment2], которое содержит только те элементы графа Gd(time-moment2), состояния которых изменились по сравнению с элементами графа Gd(time-moment1).



Состояния вершин приращения динамического графа определяются в виде правил, аналогичных правилам определения состояний вершин динамического графа (разделы 6.1. - 6.4.).

7. Меры и дефекты плана программного проекта

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

Для формального определения мер и дефектов используются статическая (см. раздел 3) и динамическая (см. раздел 4) реляционные модели плана проекта [Мат02а], ее статический граф G = <Task , Res, (R1, R2)> (см. раздел 5), динамический граф Gd(time-moment) = <(TaskS)D, Res1, (R1PS, R2RS)> и приращение динамического графа на промежутке времени AGd(time-moment1, time-moment2) = <(ATaskS)AD, AResARС, (AR1, AR2ARS)> (см. раздел 6).

7.1. Меры плана программного проекта

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

Мера 1. Продолжительность проекта.

Неформальное определение: фактическая продолжительность программного проекта (сетевое время (net process time [14], длина критического пути (critical path [16])).

Формальное определение: Current-time (time-moment, )

- net-process-time = time-moment

Примечание. Здесь и далее символ в отношении означает вхождение анонимной свободной переменной.

Комментарий. В соответствии с описанным в разделе 4.3 универсальным рецептом, в каждом состоянии рабочей среды Wi процесса исполнения модели плана проекта существует только один кортеж отношения Current-time, который представляет текущее время проекта. Тем самым, по окончании процесса исполнения значение переменной time-moment представляет фактическую продолжительность модельного исполнения проекта.

Мера 2. Занятость исполнителя в проекте.

Неформальное определение: процентная доля времени занятости исполнителя в проекте по отношению к общей продолжительности проекта.



Формальное определение:

3 agent-name е Agent-names

(time-intervals = {time-moment (Performs (time-moment, ,agent-name, , ) & V time-moment1, time-moment2 е time-intervals (time-moment1 Ф time-moment2) ) }

- agent-usage-time-ratio (agent-name) =

time-intervals / net-process-time * 100 )

Примечание 1. Здесь и далее единицей измерения времени является длина единичного интервала delta, определяемая отношением Current-time.

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

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

Мера 3. Средний уровень занятости исполнителей в проекте (при установленных назначениях).

Неформальное определение: средняя (медианная) доля занятости исполнителей в проекте (относительно общей продолжительности проекта).

Формальное определение:

V agent-name е Agent-names

(all-agent-usage-time-ratios = { agent-usage-time-ratio (agent-name) }

- resource-capacity-usage-ratio = median (all-agent-usage-time-ratios) )

Примечание. Функция median находит среднее медианное значение для заданного набора значений.

Комментарий. Для каждого исполнителя вычисляется процентная доля времени его занятости в проекте (см. определение Меры 2). Для полученного набора значений при помощи функции median вычисляется средняя процентная доля занятости исполнителей в проекте.



Мера 4. Продолжительность выполнения вида деятельности.

Неформальное определение: фактическая продолжительность выполнения вида деятельности в проекте.

Формальное определение:

3 activity-name

(Activities (activity-name, List-of<task-name>) & 3 first-task е List-of<task-name>

(3 first-step (Project-steps (first-step, first-task, ...) & Started (earliest-moment, first-step) &

V task-name1 е List-of<task-name>\{first-task}

(V step1 (Project-steps (step1, task-name1, ...) & Started (time-moment1, step1) & earliest-moment < time-moment1 ) ) v List-of<task-name> = {first-task} & 3 last-task е List-of<task-name>

(3 last-step (Project-steps (last-step, last-task, .) & Finished (latest-moment, last-step) &

V task-name2 е List-of<task-name>\{last-task}

(V step2 (Project-steps (step2, task-name2, .) & Finished (time-moment2, step2) & latest-moment > time-moment2 ) ) v List-of<task-name> = {last-task} - activity-process-time (activity-name) = latest-moment - earliest-moment

) ) ) ) )

Примечание. Здесь и далее символ .. в отношении означает вхождение множества анонимных свободных переменных.

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

7.2. Дефекты плана программного проекта

Спецификация каждого дефекта описана ниже в форме правила логического вывода с параметрами. Значения параметров задаются до начала этапа анализа плана и оказывают существенное влияние на результаты



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

- название дефекта;

- значения заданных параметров правила выявления дефекта;

- фактические значения атрибутов компонентов плана, которые удовлетворяют условию наличия дефекта;

- ссылка на компонент плана, к которому относится выявленный дефект, путем локализации соответствующего фрагмента статического графа. При этом используется функция Visualize (graph-fragment), где graph-fragment е Task u Res u R2- фрагмент статического графа. Эта функция реализует операцию визуализации заданного фрагмента.

7.2.1. Дефекты плана программного проекта, определяемые по его статической модели

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

Дефект 1.1.

Неформальное определение: назначение на роль исполнителя с недостаточным опытом.

Параметр: число проектов, участие в которых в такой же роли, как и в рассматриваемом проекте, дает исполнителю достаточный опыт.

Формальное определение:

3 agent-name, role-name, step

(Assignments ( , agent-name, role-name, step, ) & Staff (agent-name, , , , experience-records) & Parame/er-sufficient-experience (role-name, #previous-projects) & relevant-records = { < , , role-name,.. .> е experience-records } & relevant-records < #previous-projects - unexperienced-agent (agent-name, #previous-project, relevant-records) & Visualize ((agent-name, task-name(t step))role-name е R2) )





1 2 3 4 5 6
© 2024 РубинГудс.
Копирование запрещено.