Популярное

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



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



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



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



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


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

1 2 3 4 5 6

Relevant-units = Ustep (&(Vstep (Used-tools (tool-name, step, )) Started (time-moment, step) )

- Allocations (time-moment, tool-name, List-of<step> !! List(Relevant-units)))

Правило 3. Выполнение части работы на шаге проекта.

Вариант 1. Исполнители в равных долях занимаются всеми назначенными им видами работ.

Current-time (time-moment, delta) &

3 step (Project-steps (step, , , , , , efforts, ) &

Current-ratio (time-moment, step, effort-ratio) & effort-ratio < 100 &

(&(Vag ent-name (Assignments (effort-unit, agent-name, , step, ) & Assumptions (time-moment, agent-name, List-of<effort-unit>))

Current-efforts = S(delta/Length (List-of<effort-unit>) * 100 / efforts)

- Performs (time-moment, time-moment + delta, agent-name,

effort-unit, 100/Length (List-of<effort-unit>) ) )

- Current-ratio (time-moment + delta, step, effort-ratio + Current-efforts) )

Вариант 2. Каждый исполнитель выполняет назначенные ему виды работ последовательно.

Current-time (time-moment, delta) &

3 step (Project-steps (step, , , , , , , , efforts, ) &

Current-ratio (time-moment, step, effort-ratio) & effort-ratio < 100 &

(&(Vag ent-name (Assignments (effort-unit, agent-name, , step, ) & Assumptions (time-moment, agent-

name, List-of<effort-unit>)) Relevant-agents = U(agent-name)

- Performs (time-moment, time-moment + delta, agent-name,

First (List-of<effort-unit>), 100) )

- Current-ratio (time-moment + delta, step,

effort-ratio + delta * Relevant-agents * 100 / efforts))

Примечание. Функция First обеспечивает получение первого элемента заданного списка.

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

Current-time (time-moment, delta) &

3 step (Project-steps (step, , , , , , , , efforts, ) &

Current-ratio (time-moment, step, effort-ratio) & effort-ratio < 100 &



(&(V agent-name (Assignments (effort-unit, agent-name, , step, ) & Assumptions (time-moment, agent-name, List-of<effort-unit>)) & (V effort-unitе List-of<effort-unit> Ri = Effort-ratio (effort-unit, List-

of<effort-unit>) ) )

Current-efforts = S( delta * Ri / efforts)

(* Effort-ratio - функция со значениями [0,100%], определяющая весовой коэффициент - долевой вклад исполнителя в конкретный вид работы из текущего списка назначенных ему работ*)

- Performs (time-moment, time-moment + delta, agent-name, effort-unit, Ri) ) - Current-ratio (time-moment +delta, step, effort-ratio + Current-efforts) )

Правило 4. Завершение шага проекта. Current-time (time-moment, ) & time-moment Ф 0 & 3 step (Project-steps (step, , , , , , , , , ) &

Current-ratio (time-moment, step, effort-ratio) & effort-ratio > 100 - Finished (time-moment, step) )

Правило 5. Устранение назначений ресурсам работ по выполнению завершенных шагов.

Правило 5.1. Для ресурсов-исполнителей. Current-time (time-moment, ) &

3 agent-name (Assumptions (time-moment, agent-name, List-of<effort-unit>) &

Relevant-units - effort-unit (&(Veffort-unit (Assignments(effort-unit, agent-name, , step, ))

Finished (time-moment, step) )

- Assumptions (time-moment, agent-name, List-of<effort-unit> \ List

(Relevant-units) ) )

Правило 5.2. Для ресурсов-средств. Current-time (time-moment, ) &

3 tool-name (Allocations (time-moment, tool-name, List-of<step>) )

Relevant-units - Ustep (&(Vstep (Used-tools (tool-name, step, ) )

Finished (time-moment, step) )

- Allocations (time-moment, tool-name, List-of<step> \ List (Relevant-units)))

Правило 6. Генерация продукта. Current-time (time-moment, ) & time-moment Ф 0 &



3 product (Products (product-ref, , , , , , , , , , List-of-<stepFROM>, ) &

(&(Vstep (Project-steps (step, ...) & step e List-of-<stepFROM> )

Finished ( , step) ) & NOT (Produced( , product-ref))

- Produced (time-moment, product-ref) )

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

Правило 7. Передача назначений работ ресурсам на следующий временной интервал.

Правило 7.1. Для ресурсов-исполнителей.

Current-time (time-moment, delta) & time-moment ф 0 &

3 agent-name (Assumptions (time-moment - delta, agent-name, List-of<effort-unit>)

- Assumptions(time-moment, agent-name, List-of<effort-unit>) )

Правило 7.2. Для ресурсов-средств. Current-time (time-moment, delta) & time-moment ф 0 &

3 tool-name (Allocations (time-moment - delta, tool-name, List-of<step>)

- Allocations (time-moment, tool-name, List-of<step>) )

4.3. Универсальный рецепт

В качестве универсального правила вывода в данном исчислении используется правило modus ponens и гипотеза о замкнутости мира [17], в соответствии с которой отрицание интерпретируется как неудача (т.е. как отсутствие в текущем состоянии рабочей среды Wi соответствующего кортежа). Следует отметить, что описанное проблемно-ориентированное исчисление обладает свойством монотонности относительно значений всех предикатов, использованных под отрицанием. Дополнительным правилом вывода является правило смены текущего момента времени, суть которого состоит в замене в рабочей среде кортежа отношения Current-time:

Current-time (time-moment, delta) & Wi = Wi-1

- Wi+1 = Wi \ Current-time (time-moment, delta) U Current-time (time-moment + delta, delta).

Комментарий. Если текущее состояние среды Wi не меняется при значении текущего момента времени time-moment, то значение текущего момента времени увеличивается на delta.

4.4. Правило остановки



Процесс вывода останавливается, если достигнуто конечное состояние рабочей среды Wi (см. раздел 4.1.) или превышено установленное на шкале времени максимальное значение, т. е. истинен предикат:

(&(Vproduct-ref (Products (product-ref, ,...) ) Produced ( product-ref) ) v

Current-time (time-moment, ) & time-moment > Tmax

4.5. Специфицирование параметров динамической реляционной модели плана проекта

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

В процессе модельного выполнения, в случае выбора вариантов правил с параметрами, необходимо оценивать значения этих параметров в конкретном контексте. К таким параметрам относится (1) признак снятия ограничений на инициализацию шага (см. раздел 4.2, Правило 1), обусловленных фактической доступностью критичных ресурсов или другими причинами (для этой цели используется атрибут sign в отношении Constraints), а также (2) весовая доля распределения рабочего времени исполнителя в зависимости от текущего списка его назначений (см. раздел 4.2, Правило 3, Вариант 3). Задание значений этих параметров производится менеджером в процессе применения правил с параметрами по запросу средства исполнения модели плана проекта (см. рисунок). При этом менеджер должен учитывать особенности планируемого проекта и исходить из собственного опыта.

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

5. Статический граф плана программного проекта

Целью этого раздела является формальное определение понятия статический граф плана программного проекта. Статический граф плана проекта предназначен для визуализации фрагментов этого плана, поддержки процесса его специфицирования и моделирования процесса его исполнения (см. раздел 4).



Предлагаемая графовая модель отражает видение плана программного проекта как сети задач; такое видение является широко распространенным (task network [16], network of tasks [14]). Вершины-задачи связаны дугами, отражающими передачу между задачами производимых ими продуктов. Кроме этого, модель отражает назначение ресурсов (людей, средств и методов) для выполнения шагов проекта. Вершины-ресурсы связаны дугами с теми вершинами-задачами, для выполнения которых они назначены, при этом указаны шаги, на которых выполняются задачи (поскольку одна и та же задача может выполняться многократно). Разметка множества вершин-задач графа задает частичный порядок выполнения шагов проекта, определяемый запланированным временным графиком.

В качестве структурной модели плана проекта будем использовать связный размеченный ориентированный граф G = <Task , Res, (R1, R2)>. В работе [14] аналогичный граф с двумя типами вершин называется многослойным (layered).

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

5.1. Вершины статического графа, представляющие задачи

Task - множество вершин графа, представляющих множество задач плана программного проекта, Task = {task-name1, task-namek}, Vi = 1,k (task-namei e Task-names), и при этом

3 task-name e Task <- 3 task-name (Tasks (task-name, , ) )

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

Комментарий. Вершина графа task-name существует тогда и только тогда (т. и тт.), когда в реляционной модели плана проекта определена задача с именем task-name.

5.2. Разметка вершин статического графа

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



TaskS - размеченное множество вершин графа, где множества меток, сопоставленных задачам, не пересекаются, т. е.

V task-name1 , task-name2 е Task

(task-name1 ф task-name2 - S1czS & S2czS & S1nS2 = 0 )

Везде ниже шаг K, на котором выполняется задача task-name и очередность выполнения которого задана числом t, обозначается task-name(t,K).

Правило 1. Разметка вершины, соответствующей начальному шагу проекта.

3! task-name{0} е TaskS -

3 step (Project-steps (step, task-name, ...) & Starting-step (step) )

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

Комментарий. Вершина графа task-name помечена множеством меток {0} и является начальной вершиной т. и тт., когда в реляционной модели плана проекта определен шаг, на котором выполняется задача с именем task-name, и этот шаг является первым.

Правило 2. Разметка вершин, соответствующих остальным шагам проекта. 3 task-name2(i,K2) е TaskS - 3 task-name1(i-1,K1) е TaskS

(Project-steps (K2, task-name2, ...) & Project-steps (K1, task-name1, ...) & Previous (K1, K2) & V task-name3(t,K3) е TaskS (Project-steps (K3, task-name3, ...) & Previous (K3, K2) - i-1 > t ) ) .

Комментарий. Вершина графа task-name2 помечена меткой (i,K2) т. и тт., когда существует вершина графа task-name1 (возможно, совпадающая с task-name2), помеченная меткой (i-1,K1), и в реляционной модели плана проекта определены шаги с номерами K1 и K2, на которых выполняются задачи task-name1 и task-name2 соответственно, причем установлено, что шаг с номером K1 должен выполняться перед шагом с номером K2 и для каждой вершины графа task-name3, помеченной меткой (t,K3), определен шаг с номером K3, на котором выполняется задача task-name3 и который должен выполняться перед шагом с номером K2; при этом первый индекс метки (i-1,K1) не меньше первого индекса метки (t,K3). Тем самым при построении разметки из всех меток вершин-задач предшествующих шагов выбирается метка с наибольшим первым индексом, указывающим на наиболее позднее выполнение задачи.



5.3. Дуги статического графа, представляющие передачу продуктов между задачами

R1 - множество дуг графа, представляющих передачи продуктов между задачами плана проекта, R1 = {(task-name task-namej)}, 1 < i < k, 1 < j < k, k = Task, и при этом

3 (task-name1(t1, K1), task-name2(t2, K2)) product-name e R1

3 product-name (Products (product-name, , , , List-of<stepFROM>, List-

of<stepTO>, ) &

3 K1 (Project-steps (K1, task-name1, ...) & 3 K2 (Project-steps (K2, task-name2, ...) &

K1 e List-of<stepFROM> & K2 e List-of<stepTO>) ) )

Комментарий. Дуга (task-name1, task-name2) существует и помечена именем рабочего продукта product-name т. и тт., когда в реляционной модели определен продукт, являющийся выходным для шага с номером K1, на котором выполняется задача task-name1, и входным для шага с номером K2, на котором выполняется задача task-name2.

Примечание. Здесь и далее значение первого индекса разметки t в идентификаторе шага task-name1(t,K) однозначно определяется значениями переменных task-name и K (согласно Правилу 2, описанному в разделе 5.2.).

5.4. Вершины статического графа, представляющие ресурсы

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

Res={resource-name1, resource-namen}, Vi (i=1,n) resource-

nameie Resource-names, где

Resource-names=Agent-names u Tool-names u Method-names, и при этом

3 resource-name e Res <-

3 resource-name e Resource-names

(Assignments ( , resource-name,...) v Used-tools (resource-name, ...) v Used-methods (resource-name, ) )

Комментарий. Вершина с именем resource-name, представляющая ресурс, существует в графе т. и тт., когда в реляционной модели определен ресурс resource-name (исполнитель, инструмент или метод), предназначенный для использования в данном проекте.



5.5. Дуги статического графа, представляющие назначение ресурсов для выполнения шагов проекта

R2 - множество дуг, представляющих назначение ресурсов для выполнения шагов проекта. Дуги, указывающие назначение исполнителей, помечены ролями, на которые назначаются эти исполнители.

R2 = {(resource-nameb task-namej(t,K))role-name}, 1 < i < n, 1 < j < p,

где n = Res, p = Task и

3 (resource-name, task-name(t,K))role-name е R2 -

3 resource-name е Resource-names

(3 K (Project-steps (K, task-name, ...) &

(Assignments ( , resource-name, role-name, K, ) v

Used-tools (resource-name, K, ) v

Used-methods (resource-name, K) ) ) )

Комментарий. В графе существует дуга между вершиной resource-name, представляющей ресурс, и вершиной task-name, представляющей задачу, т. и т. т., когда в реляционной модели плана проекта определен ресурс resource-name и шаг, на котором выполняется задача task-name и для выполнения которого назначен ресурс resource-name. Если при этом ресурс resource-name -исполнитель, то дуга помечена ролью role-name, на которую он назначен.

6. Динамические графовые модели плана программного проекта

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

Динамический граф строится на основе определенного в разделе 5 статического графа G = <Task , Res, (R1, R2)>, представляющего структуру плана программного проекта, и описанной в разделе 4 реляционной динамической модели, представляющей процесс исполнения специфицированного плана при заданных параметрах. Предполагается, что к моменту построения динамического графа процесс модельного исполнения завершен и существует полная реляционная динамическая модель.

Определим Gd (time-moment) = <(TaskS)D, Res1, (R1PS,R2RS)> -динамический граф, описывающий состояния вершин и дуг статического графа G в заданный момент процесса исполнения time-moment (time-moment е [0, T], где дискретное множество [0, T] содержит такты условного времени модельного исполнения проекта, заданные значением параметра delta (см. раздел 4), T - полученная тактовая продолжительность процесса модельного исполнения). В таблице представлено описание возможных состояний элементов графа Gd, представленных множествами D, RQ PS и RS. В разделах 6.1-6.4 приведены правила определения этих состояний при заданном



статическом графе G плана проекта и динамической реляционной модели процесса его выполнения.

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

момент времени time-moment

Элемент графа

Состояние элемента в процессе исполнения

Описание значений элементов кортежа состояния

Вершина

task е Task, соответствующая задаче

Пятерка вида

(step, step-status, step-progress, starting-moment, finishing-moment) е D

step е N - номер шага

step-status е {not-started, started-not-finished, finished} - состояние шага в момент времени time-moment (еще не начал выполняться, выполняется, завершен)

Продолжение таблицы

Элемент графа

Состояние элемента в процессе исполнения

Описание значений элементов кортежа состояния

step-progress е [0,100] -

процентная доля выполненной работы для шага проекта (если шаг еще не начал выполняться, то step-progress = 0, если шаг завершен, то step-progress = 100)

starting-moment е {not-defined} *и [0, Tmax] - момент начала выполнения шага (если шаг еще не начал выполняться и момент начала выполнения не определен, то starting-moment = not-defined)



finishing-moment е {not-defined} U ]0, Tmax] - момент завершения шага (если шаг еще не завершен, то finishing-moment = not-defined)

Вершина

Метка

resource-status е {occupied, free}

- состояние ресурса в момент времени time-moment (занят, свободен).

res е Res, соответствующая ресурсу

Дуга r1 е R1, соответствующая передаче

продукта product-name между

задачами

resource-status е RС

Пара вида (product-status, production-moment) е PS

product-status е {not-produced, produced} - состояние продукта в момент времени time-moment (создан, не создан)

Дуга r2 е R2, соответствующая назначению ресурса на роль для выполнения шага

Тройка вида (status, initiating-moment, release-moment) е RS

Production-moment е {not-

defined} U ]0, Tmax]

создания продукта (если продукт еще не создан, production-moment = not-defined)

status е {not-performs, performs, performed} - состояние назначения ресурса в момент времени time-moment (ресурс не начал работать на шаге, работает на шаге, закончил работать на шаге)

Окончание таблицы

Элемент графа

Состояние элемента в процессе исполнения

Описание значений элементов кортежа состояния

initiating-moment е {not-defined} U[0, Tmax] - момент начала работы ресурса на шаге (если в момент времени time-moment назначение ресурса r2 еще не активизировано, то moment = not-defined)

release-moment е {not-defined} U ]0, Tmax] - момент освобождения ресурса от выполнения шага (если ресурс еще не освобожден, то release-moment = not-defined)





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