Диссертация (1152223), страница 42
Текст из файла (страница 42)
При этом сложно определить, какие изменения выполнены конкретным модулем.2.Внешнее сцепление, когда две операции процесса делят между собой доступ к внешнимсервису или устройству. Очень напоминает сцепление по общему доступу к данным. Если обеоперации делят доступ к внешнему сервису и имеют разрешение на запись информации, можетвозникать состояние гонки.3.Сцепление по управлению, когда один процесс синхронизирует своё исполнение с дру-гим, посылая ему информационный объект-флаг, предназначенный для управления внутреннейлогикой второго [68].
Рассмотрим вариант, когда флаг не несёт «полезной» информационнойнагрузки. Пусть есть процесс, который единожды стартовав, доходит до некоторой точки, гдеожидает сигнала синхронизации от второго процесса. Во втором процессе происходит исполнение, в результате будет достигнуто некоторое внутреннее состояние, которое рассматривается как внешнее для первого. Это внешнее событие инициирует продолжение исполнение первого процесса. В этом случае, есть поток управления, связывающий два подпроцесса, однако потока данных нет. Если же флаг несёт «полезную» информационную нагрузку, то существуютоба потока: управления и данных.4.Сцепление по образцу — когда процессы имеют доступ к одному сложному информаци-онному объекту, причём каждый меняет только свою часть информации, которая не пересекается с информацией, изменяемой другим процессом.
Например, происходит согласование договора с юристом, экономистом и техническим специалистом, каждый корректирует свою частьинформации, блоки не пересекаются. Напоминает сцепление по содержимому. Кажется, коллизии нет, поскольку обе операции изменяют разные элементы данных, однако это е так, поскольку исполнитель первой операции ещё не видит изменений, вносимых вторым исполнителем.Мы вернёмся к рассмотрению этого сценария ниже, при рассмотрении параллельной (информационной) связности.5.Сцепление по данным, если взаимодействие последовательно выполняемых работ органи-зовано через передачу аргументов.
Можно представить, что есть несколько операций, которыеисполняются последовательно, причём они оперируют общими данными. Данные передаютсяот первой операции ко второй через посылку, имеющую «информационное» наполнение. Мож-162но говорить, что потоки управления и данных совпадают. Мы вернёмся к рассмотрению этогосценария при анализе последовательной связности.Степень влияния работ одного процесса на объекты данных другого процесса можно сопоставить с понятием сцепления. При этом, следует различать взаимозависимость переменных состояния и внешних данных (глобальных переменных и внешних хранилищ данных). Процессыявляются слабо сцепленными, если работы одного процесса не оказывают влияния на объектыданных другого процесса и переменные состояния этих процессов не имеют общих элементовданных. Если же процесс оказывает влияние на другой подпроцесс, говорят об их сцеплении.Высокое сцепление (взаимозависимость) возникает, когда одна работа изменяет сразу несколькообъектов данных, принадлежащих разным процессам.
Несколько особняком стоит сцепление поуправлению, оно соответствует ситуации, когда изменение состояния внешнего объекта инициирует начало или возобновление трансформаций в другом объекте. При этом, следует различатьситуации, когда поток управления сопровождается информационным потоком, в этом случаеможно говорить о сцеплении по данным, и когда поток управления есть, а потока данных нет.Связность модуля (cohesion) — внутренняя характеристика модуля, характеризующая меру прочности соединения работ и информационных объектов внутри одного модуля [174].1.Функциональная связность означает, что некоторая совокупность работ решает одну об-щую задачу или выполняет одну функцию. Так связаны действия, образующие одну операциюили операции образующие глобально известный, повторно используемый процесс.
Мы будемрассматривать такую совокупность как «чёрный ящик», причём мы ничего не знаем про потокивнутри него. Рассматривать по отдельности функционально связанные модули недопустимо, нотолько совместно.2.Последовательная связность — отдельные работы связаны таким образом, что выход од-ной является входом следующей. Не следует трактовать слово последовательность, как указание на линейность в порядке исполнения, но как указание, что работы выполняются над однимобъектом данных. В рамках производственного процесса заготовка поступает на вход и последовательно проходит все стадии обработки. В бизнес-процессе на вход поступает заявка клиента, она обрабатывается операциями, выполняемыми в определённом порядке. Прибытие заявкина определённую операцию инициирует исполнение последней, можно говорить, что потокиуправления и данных совпадают [179]. Ветвление процесса происходит в соответствии со статусом, приобретённым заявкой.
Как мы установили ранее, операции, в этом случае, сцепленыпо данным. При последовательной связности модули могут иметь взаимную зависимость поданным, но, поскольку они не обращаются к данным одновременно, мы можем рассматриватьэти модули отдельно друг от друга.3.Параллельная (информационная) связность — несколько работ выполняются параллельно,163причём все имеют общий вход и\или выход. Этот случай можно охарактеризовать либо с точкизрения потоков данных, либо управления. Принято считать, что поток управления вначале разветвляется на несколько параллельных ветвей, а затем эти потоки объединяется в один [207].При этом, вне внимания остаются коллизии работы с данными.
Если поток данных не разделяется, так что параллельные ветви изменяют общий объект данных, то возникает состояние гонки. Если же данные разделяются, так что каждая ветвь работает со своей копией объекта данных, то возникает вопрос, как объединить изменения, сделанные в параллельных ветвях? Сдругой стороны, каждая параллельная ветвь образует свой поток управления. Если один потокуправления вначале разделяется на несколько параллельных потоков, но последние не объединяются, то говорят о размножении точек управления процесса [208].
Таким образом, если информационный поток не разделяется одновременно с потоком управления, то следует говоритьо сцеплении по данным или по образцу. А если поток данных разделяется — о сцеплении поданным. При параллельной связности моделей следует учитывать степень их взаимного сцепления по данным.4.Процедурная связность — работы связаны передачей управления, но передачи данныхмежду ними нет. После завершения первой работы происходит проверка статуса её завершенияи, если он нормальный, то управление передаётся следующей по порядку. Если же статус завершения ненормальный, то может произойти обработка ошибочной ситуации. Хотя в теорииэтот вид связности имеет место, на практике он сводится к последовательному соединению работ — чтобы иметь возможность отличить один экземпляр процесса от другого, мы используемидентификатор процесса. Таким образом, информационный поток, хотя и минимальный, присутствует, он включает лишь номер процесса.5.Временная связность — работы увязаны в линейную последовательность, так что послезавершения первой, управление всегда передаётся следующей по порядку, ветвлений нет.
Передачи данных между работами нет, поэтому вторая работа выполняется без учёта статуса завершения первой. Как и в предыдущем примере, на практике, обычно, существует минимальный информационный поток, образованный идентификатором процесса.6.Логическая связность, когда работы предназначены для решения одной общей задачи,причем исполняется только одна из них, которая более других соответствует конкретной ситуации. Например, процесс «по случаю» (Ad-Hoc) объединяет альтернативные варианты работ, такчто пользователь выбирает те из них, которое в наибольшей степени соответствует конкретнойситуации.
Как и в предыдущем примере, на практике существует минимальный информационный поток, образованный идентификатором процесса. При логической связности модули теоретически могут оказывать взаимное влияние друг на друга, иметь общие объекты данных, но онии при каких обстоятельствах не исполняются одновременно, всегда выбирается только один164модель, так, что взаимным влиянием можно пренебречь.7.Связность по совпадению — процесс содержит работы, которые не связаны друг с другомни управлением ни данными.
Выявить какой-либо порядок в исполнении работ не представляется возможным. Иначе мы называем такой процесс неформализованным, но он не представляет мало интереса для бизнеса.Мы предполагаем, что связность характеризует степень совпадения потоков управления иданных процесса. Высокая связность возникает, когда оба потока совпадают, а низкая связностьвозникает, когда в процессе нет ни потока данных, ни управления.
Подводя общий итог —сцепление характеризует взаимозависимость работ через общие элементы данных, а связностьхарактеризует совпадение потоков управления и данных процесса.«Правильная» декомпозиции бизнес-процессаДекомпозицию системы будем называть правильной, если эту систему можно разложитьна части таким образом, чтобы каждая из образованных подсистем была независима от остальных. Только в этом случае мы можем заменить рассмотрение целого на исследование его частей по отдельности. В противном случае, если подсистемы окажутся взаимозависимыми, ихпридётся рассматривать с учётом взаимовлияния.Рассмотрим, критерии независимости подсистем.
Во-первых, объекты, на которые разделяется система, не должны иметь общих элементов данных. В противном случае, изменениеобъекта, образующего одну подсистему, приведёт к изменению другого объекта, образующеговторую подсистему. Подсистемы окажутся взаимозависимыми, поскольку изменения в однойприведут к модификации другой. Во- вторых, отдельные работы не должны оказывать влияниесразу на несколько объектов, изменять их, особенно если эти объекты относятся к разным подсистемам.