модель фазирования прикладной среды

Классы МПК:G06F9/44 устройства для выполнения специальных программ
Автор(ы):, , , , , ,
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2006-04-20
публикация патента:

Изобретение относится к области выполнения программного обеспечения. Техническим результатом является повышение надежности выполнения программного обеспечения за счет обеспечения модели фазирования прикладной среды. В вариантах осуществления настоящего изобретения система фазирования содержит многоуровневое фазовое пространство, в котором операции в программной системе ограничены фазой или подфазой. Операции выполняются только в определенной фазе. Таким образом, операции, которые могут дать неверные результаты в больших и сложных программных системах, выполняются не одновременно, а следуют в определенном порядке. Настоящее изобретение предусматривает также структуру данных для введения фазовых ограничений в качестве программных атрибутов в программный код. 3 н. и 17 з.п. ф-лы, 11 ил. модель фазирования прикладной среды, патент № 2439664

модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664 модель фазирования прикладной среды, патент № 2439664

Формула изобретения

1. Система для обеспечения модели фазирования прикладной среды, причем система содержит:

по меньшей мере одно запоминающее устройство, содержащее:

множество программных компонентов, образующих по меньшей мере два набора программных компонентов,

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

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

по меньшей мере одно процессорное устройство, соединенное с по меньшей мере одним запоминающим устройством, причем по меньшей мере одно процессорное устройство выполнено с возможностью:

принимать по меньшей мере один запрос, связанный с множеством программных компонентов,

ставить в очередь по меньшей мере один запрос, когда запрос не может быть выполнен в текущей фазе, и

переходить между фазами.

2. Система по п.1, в которой первое фазовое пространство является ведущим фазовым пространством.

3. Система по п.1, в которой вторая фазовая область является подфазовой областью первой фазовой области и характеризуется подфазовым пространством.

4. Система по п.3, в которой подфазовая область дополнительно содержит по меньшей мере одну дополнительную подфазовую область, характеризующуюся по меньшей мере одним дополнительным подфазовым пространством.

5. Система по п.1, в которой первая фазовая область и вторая фазовая область являются ортогональными.

6. Система по п.1, дополнительно содержащая ведущий директор, управляющий первой фазовой областью.

7. Система по п.6, дополнительно содержащая

по меньшей мере один поддиректор, управляющий по меньшей мере одним подфазовым пространством в первой фазовой области; и

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

8. Система по п.6, дополнительно содержащая по меньшей мере один программный компонент, зарегистрированный ведущим директором, который ограничивает выполнение по меньшей мере одного программного компонента по меньшей мере одной управляемой фазой, управляемой ведущим директором.

9. Система по п.7, в которой по меньшей мере один поддиректор зарегистрирован ведущим директором и управляется ведущим директором.

10. Система по п.1, в которой завершение всех методов, ограниченных первой фазой, и завершение всех методов, ограниченных второй фазой, приводит к завершению компьютерной операции.

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

переходят к первой фазе;

ограничивают выполнение первого процесса первой фазой;

принимают запрос на выполнение по меньшей мере одного другого процесса,

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

переходят к по меньшей мере одной другой фазе; и

ограничивают выполнение по меньшей мере одного другого процесса по меньшей мере одной другой фазой.

12. Компьютерный носитель данных по п.11, в котором переход к первой фазе содержит переход к одному из следующего: фазы запроса, фазы обновления и фазы возобновления.

13. Компьютерный носитель данных по п.11, в котором переход к первой фазе содержит переход к первой фазе, имеющей по меньшей мере две подфазы.

14. Компьютерный носитель данных по п.13, в котором переход к первой фазе, имеющей по меньшей мере две подфазы, содержит переход к первой фазе, имеющей по меньшей мере две подфазы, содержащие по меньшей мере одно из следующего: подфазу соглашения, подфазу фиксации и подфазу отмены.

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

16. Компьютерный носитель данных по п.13, в котором переход к первой фазе, имеющей по меньшей мере две подфазы, содержит переход к первой фазе, имеющей по меньшей мере две подфазы, содержащие подфазу подключения и подфазу работы.

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

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

19. Система для обеспечения модели фазирования прикладной среды, причем система содержит:

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

по меньшей мере одно процессорное устройство, соединенное со структурой данных, причем по меньшей мере одно процессорное устройство выполнено с возможностью:

принимать запрос на выполнение по меньшей мере одной операции, связанной со структурой данных,

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

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

переходить с текущей фазы на следующую фазу,

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

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

20. Система по п.19, в которой атрибут фазового ограничения содержит одно из следующего: ограничение обращения, ограничение конструирования и ограничение ссылки.

Описание изобретения к патенту

Уровень техники

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

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

Ввиду этих и других соображений и было разработано настоящее изобретение.

Краткая сущность изобретения

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

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

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

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

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

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

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

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

Краткое описание чертежей

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

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

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

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

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

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

На Фиг. 7 приведен вариант осуществления структуры данных или означивания языка, содержащей атрибут фазового ограничения, который ограничивает выполнение программного метода определенной фазой, согласно настоящему изобретению.

На Фиг. 8A и Фиг. 8B приведен вариант осуществления способа фазирования операций согласно настоящему изобретению.

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

Подробное описание

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

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

На фиг. 1 приведен пример варианта осуществления модели 100 многоуровневого фазирования. Модель многоуровневого фазирования содержит первую, или ведущую, фазовую модель, содержащую три фазы 102, 104 и 106. Ведущие фазы наступают в порядке, обозначенном стрелками 116. На протяжении фазы 1 102 имеют место две подфазы, подфаза 1 108 и подфаза 2 110. Кроме того, на протяжении подфазы 2 имеют место еще две подфазы, подфаза 2a и подфаза 2b. Таким образом, модель 100 фазирования представляет многоуровневый набор фаз, в котором подфазы имеют место во время других фаз или подфаз. Далее любое обсуждение, относящееся к фазе, может также относиться и к подфазе.

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

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

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

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

Как показано на фиг. 2, примерная компьютерной система 200, предназначенная для реализации изобретения, включает в себя вычислительное устройство общего назначения в виде компьютера 210. Компоненты компьютера 210 могут включать в себя, в частности, процессорное устройство 220, системную память 230 и системную шину 221, которая соединяет различные компоненты системы, в том числе системную системы 230, с процессорным устройством 220. Системная шина 221 может быть любой из нескольких типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, и использовать любую из множества шинных архитектур. В качестве неограничивающего примера такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (MCA), шину улучшенной промышленной стандартной архитектуры (EISA), локальную шину Ассоциации видеоэлектронных стандартов (VESA) и шину взаимодействия периферийных компонентов (PCI), известную также под названием шины расширения.

Как правило, компьютер 210 содержит множество считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми существующими носителями, к которым может обращаться компьютер 210, и включают в себя энергозависимые и энергонезависимые носители, сменные и несменные носители. В качестве неограничивающего примера считываемые компьютером носители могут включать в себя компьютерные носители данных и среды передачи данных. Компьютерные носители данных включают в себя энергозависимые, энергонезависимые, сменные и несменные носители, полученные любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, в частности, ОЗУ, ПЗУ, СППЗУ, флэш-память или память, полученную по другой технологии, CD-ROM, цифровые универсальные диски (DVD) или другую память на оптических дисках, магнитные кассеты, магнитную ленту, память на магнитных дисках или другие магнитные запоминающие устройства или любой другой носитель, который может использоваться для хранения требуемой информации и к которому может обращаться компьютер 210. Среды передачи данных, как правило, воплощают машиночитаемые команды, структуры данных, программные модули и другие данные в виде сигналов, модулированных данными, таких как несущая волна или другой механизм передачи, и включает в себя любые средства доставки информации. В качестве неограничивающего примера среды передачи данных включают в себя проводные среды, такие как проводные сети или прямое проводное соединение, и беспроводные среды, такие как звуковые, радиочастотные, инфракрасные и другие беспроводные среды. Сочетание любого из вышеперечисленного следует также включать в число считываемых компьютером носителей.

Системная память 230 включает в себя компьютерные носители данных в виде энергозависимой и (или) энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 231 и оперативное запоминающее устройство (ОЗУ) 232. Базовая система ввода-вывода 233 (BIOS), содержащая основные подпрограммы, которые способствуют передаче информации между элементами компьютера 210, например, во время запуска, обычно хранится в ПЗУ 231. ОЗУ 232 обычно содержит данные и (или) программные модули, такие как модель 100 фазирования, которые являются непосредственно доступными для процессорного устройства 220 и (или) уже выполняются процессорным устройством 220. В качестве неограничивающего примера на фиг. 2 приведены операционная система 234, прикладные программы 235, другие программные модули 236 и программные данные 237; для упорядочения выполнения всего программного обеспечения, хранящегося или выполняющегося из ОЗУ 232, может действовать модель фазирования, такая как модель 100 фазирования.

Компьютер 210 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. В качестве примера на фиг. 2 приведен компьютер 210 с интерфейсом 240 несменной энергонезависимой памяти, который осуществляет считывание с несменных энергонезависимых магнитных носителей 241, таких как жесткий диск, или запись на них. Компьютер 210 может также включать в себя интерфейс 250 энергонезависимой памяти, который осуществляет считывание с устройства 251, такого как дисковый накопитель, или запись на него, которое осуществляет считывание со съемных энергонезависимых носителей 252, таких как магнитный диск, или запись на них. Кроме того, компьютер 210 может включать в себя оптический дисковод 255, который осуществляет считывание со сменного энергонезависимого оптического диска 256, такого как CD-ROM, или с других оптических носителей и запись на них. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в примерной среде, включают в себя, в частности, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т. п. Накопитель 241 на жестком диске обычно соединен с системной шиной 221 интерфейсом несменной памяти, таким как интерфейс 240, и накопитель 251 на магнитных дисках и оптический дисковод 255 обычно соединены с системной шиной 221 интерфейсом сменной памяти, таким как интерфейс 250.

Накопители и связанные с ними компьютерные носители данных, описанные выше и приведенные на фиг. 2, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 210. Например, приведенный накопитель 241 на жестком диске предназначен для хранения операционной системы 244, прикладных программ 245, других программных модулей 246 и программных данных 247, которые могут совпадать или отличаться от операционной системы 234, прикладных программ 235, других программных модулей 236 и программных данных 237. Операционная система 244, прикладные программы 245, другие программные модули 246 и программные данные 247 приведены под другими номерами позиций, чтобы показать, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 210 через интерфейс 260 пользовательского ввода, связанный с устройствами пользовательского ввода данных, такими как клавиатура 262 и координатно-указательное устройство 261, обычно называемое мышью, шаровой указатель или сенсорная клавиатура. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или другое подобное устройство. Эти и другие устройства ввода данных часто соединены с процессором 220 посредством интерфейса 260 пользовательского ввода, который соединен с системной шиной 221, но может быть соединен другими интерфейсами и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB).

С системной шиной 221 через интерфейс, такой как видеоинтерфейс 290, также соединен монитор 291 или устройство отображения другого типа. Помимо монитора 291 компьютер 210 может также включать в себя другие внешние устройства вывода, такие как динамики 297 и принтер 296, которые могут быть соединены посредством интерфейса 295 внешнего устройства вывода.

Компьютер 210 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 280. Удаленный компьютер 280 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, равноправным устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше в отношении компьютера 210, хотя на фиг. 2 приведено только запоминающее устройство 281. Логические соединения, приведенные на фиг. 2, включают в себя локальную сеть (LAN) 271 и глобальную сеть (WAN) 273, но могут также включать в себя другие сети, такие как беспроволочные сети. Такие сетевые среды распространены в офисах, в компьютерных сетях в масштабе предприятия, в интрасетях и в Интернете.

При использовании компьютера 210 в сетевой среде локальной сети он соединен с локальной сетью 271 через сетевой интерфейс или адаптер 270. При использовании компьютера 210 в сетевой среде глобальной сети он обычно содержит модем 272 или другие средства для установления связи по глобальной сети 273, такой как Интернет. Модем 272, который может быть внутренним или внешним, может быть соединен с системной шиной 221 через интерфейс 260 пользовательского ввода или другой подходящий механизм. В сетевой среде программные модули, изображенные относящимися к компьютеру 210 или к его частям, могут храниться в удаленном запоминающем устройстве 281. В качестве неограничивающего примера удаленные прикладные программы 285 постоянно находятся в запоминающем устройстве 281. Следует иметь в виду, что приведенные сетевые соединения даны в качестве примера и что можно использовать другие средства для установления канала связи между компьютерами.

Если вновь обратиться к фиг. 1, то на нем фаза 1 102 является надфазой по отношениию к подфазе 1 108 и подфазе 2 110. Во время подфазы 2 110 имеют место две следующие подфазы: подфаза 2a 112 и подфаза 2b 114. Аналогично, подфаза 2 110 является надфазой по отношении к подфазе 2a 112 и подфазе 2b 114. Любая фаза или подфаза может иметь подфазы. В рамках модели многоуровнего фазирования отсутствуют какие-либо ограничения на число уровней. Кроме того, в каждом фазовом пространстве должно быть по меньшей мере две фазы, но отсутствуют какие-либо ограничения на число фаз, превышающее две фазы. Во время надфазы любой набор подфаз может циклически проходиться один или несколько раз.

Фазовая модель 100 является примером фазового пространства. Фазовое пространство представляет собой конечный ориентированный граф, определяющий разрешенные фазы (узлы графа) и разрешенные фазовые переходы (ребра графа). Поэтому фазовое пространство определяет разрешенные последовательности фаз. Фазовое пространство 100 определяется на наборе фаз фаза 1 102, фаза 2 104 и фаза 3 106. Фазовое пространство 100 имеет также три фазовых перехода 118a, 118b и 118c. Фазовый переход представляет собой ситуацию, когда происходит одновременная смена фазы всеми программными компонентами, которые совместно используют фазу, имевшую место до перехода.

Когда программные компоненты совместно используют фазовое пространство, эти программные компоненты являются частью фазовой области. Фазовая область представляет собой набор программных компонентов, соответствующих общему фазовому пространству, определенному конкретным фазовым пространством. Например, все программные компоненты, которые соблюдают ограничения, введенные ведущим фазовым пространством, имеющим ведущие фазы 102, 104 и 106, являются частью ведущей фазовой области. Таким образом, все программные компоненты, связанные с программными компонентами в ведущей фазовой области, содержат фазовое ограничение, связанное по меньшей мере с одной из ведущих фаз 102, 104 и 106.

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

На фиг. 3 приведена Компьютерная среда 300, содержащая один или более компонентов, занимающих одну или несколько фазовых областей. Ведущий директор 302 управляет переходами и установлением ведущего фазового пространства. Все компоненты в компьютерной среде являются частью ведущей фазовой области 300, но могут занимать одну или несколько подфазовых областей. Для обеспечения создания фазовой области 300 автор программы должен выбрать фазовое пространство, правила выполнения фазовых переходов в фазовом пространстве и правила обработки сообщений, пересекающих границу фазовой области.

Фазовая область 300 может характеризоваться многоуровневым фазовым пространством. В вариантах осуществления настоящего изобретения с ведущим директором 302 регистрируются один или более компонентов, таких как компонент 1 304. Компонент 1 304 представляет любой тип программного элемента, включающий в себя программные компоненты и методы. Программный компонент 304 ограничен одной фазой в ведущем фазовом пространстве.

В других вариантах осуществления с ведущим директором 302 регистрируются один или несколько поддиректоров, таких как поддиректор 1 306 и поддиректор 2 308. Поддиректоры управляют одной или несколькими другими фазовыми областями с одной или несколькими различными фазовыми пространствами. Таким образом, фазовая область 300 имеет одну или несколько вложенных фазовых областей. Все компоненты, такие как компонент 2 310, зарегистрированный с поддиректором 1 306, ограничены одной или несколькими подфазами в подфазовом пространстве или в одной или нескольких ведущих фазах ведущего фазового пространства. В одном варианте осуществления подфазовая область, управляемая поддиректором, действует в единственной ведущей фазе. Операции подфаз могут выполняться многократно на протяжении единственной ведущей стадии.

В вариантах осуществления настоящего изобретения поддиректоры, такие как поддиректор 2, регистрируют других поддиректоров, таких как поддиректор 3, для создания дальнейших вложенных подфазных областей. В некоторых вариантах осуществления поддиректор 2 308 управляет работой компонента 3 312 и поддиректора 3 314. В других вариантах осуществления поддиректор, такой как поддиректор 3 314, управляет более чем одним компонентом, таким как компонент 4 316 и компонент 5 318. Каждый поддиректор может управлять фазовым пространством, включающим в себя уникальные фазы. Так, поддиректор 1 306 использует первое подфазовое, а поддиректор 3 314 использует второе подфазовое пространство. Если два фазовых пространства не взаимодействуют, то такие фазовые пространства называются ортогональными пространствами. Сочетание ортогональных фазовых пространств может образовать декартово фазовое пространство, которое может использоваться для образования фазовой области для единственного произведения. Основополагающий фазовый набор представляет собой декартово произведение ортогональных фазовых наборов, причем разрешенные переходы также являются декартовыми произведениями разрешенных переходов для ортогональных фазовых наборов.

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

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

Фаза 404 обновления направляет команды и запросы соответствующему программному компоненту. В вариантах осуществления во время фазы 404 обновления программные компоненты выполняют команды или запросы. В одном варианте осуществления фаза 404 обновления имеет подфазовое пространство 500, имеющее место во время фазы 404 обновления. На фиг. 5 приведен пример подфазы 500, описание которой приводится ниже. В одном варианте осуществления фаза 404 обновления запускает подфазы для уровней данных. Иными словами, в подфазах фазы 404 обновления выполняются любые запросы на запись в данные.

Третья фаза, фаза 406 возобновления, направляет и выполняет другие методы, не обработанные во время фазы 404 обновления. В одном варианте осуществления во время фазы 406 возобновления выполняются все запросы на извлечение данных. Например, после обновления данных в фазе 404 обновления все программные компоненты получают информацию о происшедшем изменении данных, и получившие информацию программные компоненты извлекают обновленные данные. В одном варианте осуществления фаза 406 возобновления использует подфазовое пространство 600. На фиг. 6 приведен пример осуществления подфазового пространства 600, описание которого приводится ниже.

Для изменения фаз фазовое пространство 400 проходит через фазовый переход. В примере осуществления имеется три фазовых перехода 408a, 408b и 408c, представление переходов между этими тремя стадиями 402, 404 и 406. Как указано выше, фазовый переход - это точка во времени, в которую директор, например директор 302, изменяет фазовый такт, и фаза для всех программных компонентов в фазовой области одновременно изменяется.

Может иметь место предупреждение или уведомление программных компонентов в фазовой области о текущей фазе или о переходе к новой фазе. В одном варианте осуществления директор уведомляет о фазе все программные компоненты. В других вариантах осуществления метод выдачи запросов запрашивает директора о фазе. В вариантах осуществления настоящего изобретения уведомление о переходе направляется одному или нескольким программным компонентам в фазовой области. В одном варианте осуществления уведомление о переходе имеет место либо во время текущей фазы, либо в начале следующей стадии. В других вариантах осуществления для процесса уведомления используются особые фазы. Например, фазовое пространство 400 может иметь три фазы уведомления, расположенные в переходах 408a, 408b и 408c, которые предназначены для уведомления программных компонентов в фазовой области.

На фиг. 5 приведен пример подфазового пространства 500 фазы 404 обновления. Подфаза 500 в некоторых вариантах осуществления используется для уровня данных. Иными словами, методы для записи данных в совместно используемую структуру данных ограничены одной из подфаз подфазового пространства 500 данных. В одном варианте осуществления все программные компоненты, совместно использующие данные, соглашаются в фазе 502 соглашения либо зафиксировать изменение, либо отменить изменение. Фиксация или отмена изменения происходит в фазе 504 фиксации или отмены.

В другом варианте осуществления фаза согласия и фаза фиксации или отмены являются подфазами подфазы "фиксации или отмены", а подфазовое пространство 500 содержит вместо подфазы 502 соглашения подфазу 502 маркирования. В данном случае изменения данных осуществляются в фазе 504 фиксации или отмены, а все программные компоненты, использующие эти данные, помечаются в фазе 502 маркирования. Маркирование программного компонента представляет собой установку флажка в программном компоненте, который указывает программному компоненту на необходимость извлечения обновленных данных на соответствующей более поздней фазе. В одном варианте осуществления помеченные программные компоненты извлекают данные в фазе 406 возобновления. В другом варианте осуществления фаза 502 маркирования содержит две подфазы: подфазу маркирования и подфазу конечного маркирования. В данном случае программные компоненты, использующие данные, помечаются на подфазе маркирования и извлекают данные в подфазе окончательного маркирования.

Другой пример подфазового пространства 600, имеющего места в фазе 406 возобновления, приведен на фиг. 6A. Пример изменения программной структуры, ограниченной подфазовым пространством 600, приведен на фиг. 6B. Подфазовое пространство 600 обеспечивает подфазы для операций типа "подключи и работай". Подфазовое пространство 600 "подключи и работай" содержит две фазы: подфазу 604 работы и подфазу 602 подключения. В общем, в подфазе 602 подключения устанавливаются, изменяются и удаляются состав и конфигурация программного компонента, но не выполняются никакие функциональные возможности этапа работы. Аналогично, в подфазе 604 подключения используется установленный состав или конфигурация программного компонента для реализации обычных функциональных возможностей, установка, изменение или удаление состава или конфигурации не происходят.

На фиг. 6B приведен пример осуществления реконфигурации модулей. В этом варианте осуществления программный модуль имеет первую конфигурацию 606. После некоторого действия, например запроса посредством пользовательского ввода, программный модуль изменяется ко второй конфигурации 608. Специалисту в данной области техники понятно, что программный модуль в первой конфигурации 606 работает иначе по сравнению со второй конфигурацией 608. Таким образом, реконфигурация должна произойти без применения методов, выполняемых во время фазы работы, взаимодействующей с программным модулем. В вариантах осуществления настоящего изобретения во время подфазы 602 подключения инициализируются, подключаются или отключаются программные экземпляры и устанавливаются свойства. В некоторых вариантах осуществления дополнительные подфазы способствуют упорядочению операций, выполняемых в подфазе 602 подключения.

В одном варианте осуществления подфаза 602 подключения имеет дальнейшие подфазы. Подфаза 610 конструирования создает новые программные экземпляры посредством создания экземпляра известного класса, вызова программного компонента или использования интерфейса на существующем экземпляре для получения клонированного или специализированного выведенного экземпляра. Подфаза 612 конфигурирования добавляет или удаляет связи между экземплярами. Наконец, подфаза 614 инициализации задает свойства и требует согласования между надлежащим образом связанными экземплярами. Подфазы в подфазе 602 подключения могут отличаться от здесь представленных. Кроме того, подфаза 604 работы может также содержать подфазы.

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

На фиг. 7 приведен пример осуществления структуры 700 данных, ограничивающей выполнение элемента кода. Структура 700 данных представляет собой элемент кода. Фазовое ограничение может относиться к любому типу кода. Фазовое ограничение 702 приведено выше метода 704. Фазовое ограничение 702 ограничивает работу метода 704 фазой, указанной в фазовом ограничении, в данном варианте осуществления фазой "Выполнить". Таким образом, метод 704 выполняется только во время фазы "Выполнить" или подфазы "Выполнить".

В вариантах осуществления настоящего изобретения структура данных содержит форму ограничения, которая зависит от программного компонента и типа выполненной операции. В одном варианте осуществления ограничением является ограничение обращения. Ограничение обращения ограничивает обращение к методу определенной фазой. Таким образом, выполнение методов в других программных компонентах или тех же самых программных компонентах ограничивается тем, что инициация этих методов возможна только во время определенных фаз. В другом варианте осуществления ограничение представляет собой ограничение конструктора. Конструктор - это специальная форма метода, которая создает экземпляры программных компонентов. Таким образом, создание экземпляров программных компонентов ограничивается определенной фазой, например, как описано в отношении подфазы 610 конструирования на фиг. 6A. В другом варианте осуществления ограничение - это ограничение ссылки. Ограничение ссылки ограничивает целый класс программных компонентов и всех простейших операций класса. Например, ограничение ссылки, помещенное в интерфейс, ограничивает связи между программными модулями, как описано в отношении подфазы соединения на фиг. 6A.

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

Каждое ограничение является ограничением на "Типе", связанном с уровнем указанной фазы. Таким образом, ограничение, указывающее на надфазу, является ограничением на "Надфазе". Ограничение, указывающее на подфазу, является ограничением на "Подфазе". Ограничения на типы, которые являются подфазами, являются ограничениями на объединение всех ограничений на "Надтипах". Отношения между ограничениями на типах используются компиляторами или используются во время выполнения для проверки действительности отношений между ограничениями между различными программными компонентами.

Наложение ограничений может осуществляться во время выполнения или во время компилирования. Во время компилирования можно проверить ограничения на типах. Компилятор может проверить ограничения на типах и ограничения на подтипах в отношении набора правил цельности для методов с ограничением на типе, обращающихся к методам с ограничением на подтипе. Схема ограничения является законной, если ограничение на подтипе является таким же или более слабым ограничением по сравнению с ограничением на типе, например, если ограничение на типе указывает фазу 602 подключения, а ограничение на подтипе указывает подфазу 614 инициализации. В этом варианте осуществления ограничение подфазы 614 инициализации выполняется в рамках фазы 602 подключения и потому является более слабым ограничением. Схема ограничения является незаконной, если ограничение на подтипе взаимно не пересекается с ограничением на типе, например, если ограничение на типе указывает подфазу 604 работы, а ограничение на подтипе указывает противоположную подфазу 602 подключения. Схема ограничения законна, но должна подвергаться некоторой динамической проверке, если ограничение на подтипе является более сильным, чем ограничение на типе, или частично пересекается с ограничением на типе, например, если ограничение на типе указывает подфазу 602 подключения, а ограничение на подтипе указывает подфазу 614 инициализации. В этом варианте осуществления в случае, если фазовая область в настоящее время действует как в подфазе 602 подключения, так и в подфазе 614 инициализации, схема обращения является законной. Однако если область находится за пределами одной из этих двух фаз, схема является незаконной. Можно представить себе и включить в настоящее изобретение и другие правила цельности.

На фиг. 8A и 8B приведен пример осуществления способа 800 работы компьютерной среды в многоуровневой фазовой области. После запуска операция 802 перехода осуществляет переход в первую фазу, такую как фаза 402 запроса. В одном варианте осуществления инициализируется ведущий директор, такой как ведущий директор 302. В одном варианте осуществления компоненты, такие как компонент 304, ограниченные одной из ведущих фаз, регистрируются с ведущим директором. Ведущий директор запускает фазовый тактовый генератор для циклического прохождения логического времени по фазе в фазовом пространстве, таком как фазовое пространство 400.

Операция 804 определения определяет, ограничены ли какие-либо программные компоненты, такие как компонент 304, первой из ведущих фаз. Если программный компонент ограничен первой фазой, операция 806 выполнения выполняет программный компонент во время первой фазы. Если программные компоненты для выполнения отсутствуют, или во время выполнения программных компонентов, операция 808 определения определяет, имеется ли подфазовое пространство, такое как подфазовое пространство 500, которое возникает во время первой фазы. Если во время первой фазы не возникает никакого подфазового пространства, процесс переходит через соединитель 1 к операции 822 перехода, приведенной на фиг. 8B.

Если имеется подфазовое пространство, возникающее во время первой фазы, операция 810 идентификации идентифицирует подфазовое пространство и применимые подфазы. В одном варианте осуществления поддиректор, такой как поддиректор 306, инициализируется и регистрируется с ведущим директором, управляющим ведущим фазовым пространством. Поддиректор запускает логический подфазовый тактовый генератор, чтобы циклически пройти подфазы в подфазовом пространстве. Операция 812 определения определяет, ограничены ли какие-либо программные компоненты, такие как компонент 312, текущей подфазой. В одном варианте осуществления программные компоненты, ограниченные подфазовым пространством, региструются с поддиректором. Таким образом, в ведущей фазовой области создается вложенная подфазовая область. Если в подфазовой области имеются программные компоненты, ограниченные текущей подфазой, то операция 814 выполнения выполняет эти программные компоненты во время текущей подфазы. Операция 816 определения определяет, имеются ли еще подфазовые пространства, такие как подфазы 610, 612 и 614, которые имеют место в текущем фазовом пространстве. Если имеются еще подфазы, процесс возвращается к операции 810 идентификациии для идентификации следующих подфаз.

Если отсутствуют подфазовые пространства, которые можно идентифицировать, операция 818 определения определяет, не осталось ли каких-либо другие подфаз, возникающих в текущем подфазовом пространстве. Если имеется другая подфаза, возникающая в текущем подфазовом пространстве, операция 820 перехода переходит к следующей подфазе в подфазовом пространстве. В одном варианте осуществления поддиректор ждет, когда будут выполнены все цепочки в текущей подфазе, а затем переходит к следующей подфазе. Затем процесс вновь переходит к операции 812 определения. Если в текущем подфазовом пространстве не осталось подфаз, то операция 818 определения определяет, нет ли другой надфазы для перехода в какое-либо надфазовое пространство. Если имеется другая надфаза, операция 820 перехода переходит к следующей надфазе. Этот процесс (определение подфаз внутри надфазы; выполнение программных компонентов внутри подфазы; переход к следующей подфазе, пока не будут исчерпаны все подфазы; и затем переход к следующей надфазе) повторяется до тех пор, пока не будут циклически пройдены все подфазовые пространства и не потребуется переход к следующей ведущей фазе. Когда для первой ведущей фазы заканчивается цикл подфаз, процесс переходит через соединитель 1 к операции 822 перехода, приведенной на фиг. 8B.

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

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

Если отсутствуют программные компоненты, ограниченные следующей ведущей фазой, или во время выполнения программных компонентов с ограничениями, операция 828 определения определяет, имеются ли какие-либо подфазовые пространства внутри текущей ведущей фазы. Если подфазовые пространства отсутствуют, операция идентификации 830 идентифицирует подфазовое пространство и переходит к первой подфазе. Операция 832 определения определяет, ограничены ли какие-либо программные компоненты текущей подфазой. Если программные компоненты, ограниченные текущей подфазой, отсутствуют, операция 834 выполнения выполняет программные компоненты.

Если отсутствуют программные компоненты, ограниченные текущей подфазой, или во время выполнения таких программных компонентов, операция 836 определения определяет, имеются ли другие подфазовые пространства внутри текущей подфазы. Если имеются другие подфазовые пространства, процесс возвращается к операции 830 идентификации. Если другие подфазовые пространства внутри текущей подфазы отсутствуют, операция 838 определения определяет, имеется ли следующая подфаза в текущем подфазовом пространстве или следующая надфаза в надфазовом пространстве. Если имеется следующая подфаза или надфаза, операция 840 перехода переходит к следующей подфазе или надфазе. Если в текущей ведущей фазе отсутствуют следующая подфаза или надфаза, то операция 842 определения определяет, имеется ли следующая ведущая фаза, такая как фаза 406 возобновления. Если имеется следующая ведущая фаза в ведущем фазовом пространстве, процесс через соединитель 2 возвращается к операции 802 перехода и начинает цикл прохождения фаз посредством перехода к первой фазе.

Для дальнейшего объяснения настоящего изобретения ниже описывается пример компьютерной системы, действующей в многоуровневой фазовой области, со ссылкой на фиг. 9. Пример компьютерной системы использует приложение личных контактов, такое как программа-клиент сотрудничества и передачи сообщений Microsoft® Outlook®. В данном случае интерфейс пользователя отображает один или несколько контактов в адресной книге. Пользовательский интерфейс имеет ведущее окно 902 просмотра. В ведущем окне 902 просмотра выводятся все контакты, и пользователь имеет возможность выбрать контакт для просмотра более подробной информации о контакте.

Компьютерная среда 900 работает в фазовом пространстве. Ради объяснения, а не ограничения, вся система 900 работает в фазовом пространстве 400, приведенном на фиг. 4. Кроме того, для целей объяснения, пусть компьютерная система 900 в настоящее время находится в фазе 402 запроса. Таким образом, компьютерная система 900 допускает любую операцию, на которую принят запрос или команда. Так, команда 916 пользователя на просмотр подробного вида 904 контакта принимается и помещается в очередь. Кроме того, команда 918 направляется модулю 908 адресной книги для извлечения подробной запрашиваемой информации. Запрос 918 данных также ставится в очередь.

Ведущий директор 302 изменяет фазу в области 900 компьютерной системы на фазу 404 обновления. В данном случае команды 916 и 918 направляются соответственно модулю 906 состояния выбора и адресной книге. Во время фазы 404 обновления осуществляется переход к подфазовому пространству пользовательских интерфейсов, предназначенному для внесения изменений в пользовательский интерфейс, как было объяснено выше со ссылкой на фиг. 6. Начинается подфаза аннулирования. Начинается обработка команды 916 для получения подробного вида. Отменяются виды в ведущем виде 902. Например, выбор подробного вида 904 становится неактивным. Кроме того, главный вид 902 устанавливается в неактивное окно. Создается подробный вид с соответствующими полями и элементами пользовательского интерфейса. Затем поддиректор пользовательского интерфейса переходит к подфазе составления. Выбор контакта на ведущем виде 902 изменяется на неактивный, например выделенный вариант выбора изменяет цвет. Ведущий вид 902 указывается как неактивный. Например, обрамление окна ведущего вида 902 меняет цвет, чтобы показать свою неактивность. При помощи элементов пользовательского интерфейса составляется подробный вид 904. Поля остаются открытыми для приема данных из модуля 908 адресной книги.

После завершения в подфазовом пространстве пользовательского интерфейса всех ограниченных операций аннулирования и составления ведущий директор 302 переходит к фазе 406 возобновления. Во время фазы 406 возобновления выполняется операция извлечения данных. Операция извлечения данных в одном варианте осуществления ограничена подфазовым пространством извлечения данных. Подфазовое пространство извлечения данных имеет две подфазы, маркирования и конечного маркирования, как описано выше со ссылкой на фиг. 6. Инициализируется подфаза маркирования. Адресная книга ищет программные модули, которые требуют обновления данных. Маркируется подробный вид 904. Поддиректор для подфазового пространства извлечения данных переходит к подфазе конечного маркирования. В подфазе конечного маркирования адресная книга 908 извлекает требуемую контактную информацию из одного из трех хранилищ данных: адресная книга 910 сервера обмена, клиентская адресная книга 912 или адресная книга MSN. При извлечении информации о контакте адресная книга вписывает информацию о контакте в подробный вид 904.

После завершения всех операций, ограниченных фазой 406 возобновления, ведущий директор 302 возвращается в фазу 402 запроса. В данном случае пользовательский интерфейс вновь принимает команды и запросы от устройств пользовательского ввода. Пользователь вносит изменения в информацию о контакте, содержащуюся в подробном виде 904. Например, пользователь изменяет адрес контакта. Из подробного вида 904 в адресную книгу 908 направляется команда на изменение данных. Кроме того, на модуль 906 состояния выбора направляется команда на обновление видов ведущего вида 902 и подробного вида 904. В этом варианте осуществления команды ставятся в очередь, а ведущий директор 302 переходит к фазе 404 обновления. Фаза 404 обновления инициирует подфазовое пространство записи данных, такое как подфазовое пространство 500.

В подфазе 502 соглашения адресная книга направляет запрос на изменение данных этим нескольким хранилищам 910, 912 и 914 данных. Одно или несколько хранилищ данных может содержать копию данных, измененных в подробном виде 904. Таким образом, каждое хранилище данных, содержащее данные, должно согласиться на изменение данных. Таким образом, в подфазе 502 соглашения происходит процедура голосования. Если все хранилища данных соглашаются на фиксацию изменения, соглашение отправляется обратно в адресную книгу 908. Поддиректор изменяет фазу на фазу 504 фиксации или отмены. В данном случае изменения данных отправляются в хранилища данных и используются для обновления данных.

Тем временем, во время фазы 404 обновления возникает пространство пользовательского интерфеса. Во время подфазы аннулирования состояние 906 выбора аннулирует разделы ведущего вида 902 и подробного вида 904, содержащие устаревшие данные. В подфазе составления происходит повторное составление ведущего вида 902 и подробного вида 904, содержащих пустые места для измененных данных. После завершения всех подфаз фазы 404 обновления фазовая область 900 переходит в фазу 406 возобновления.

В фазе 406 возобновления следующие подфазовые пространства содержат подфазы для маркирования и конечного маркирования. Переходя в фазу маркирования, адресная книга 908 маркирует ведущий вид 902 и подробный вид 904 в качестве видов, требующих измененных данных. В подфазе конечного маркирования измененные данные записывают в ведущий вид 902 и подробный вид 904. Эти изменения могут происходить в течение очень короткого промежутка времени и с очень мелким шагом. Например, фазы циклически проходятся после каждого введенного пользователем символа и мельчайшие доли секунды. Таким образом, создается впечатление, что изменения происходят мгновенно.

Настоящий пример показывает, каким образом многоуровневое фазирование ограничивает выполнение методов в системе. Если команды и изменения происходят в отсутствие фазирования, возможна ситуация, когда ведущий вид 902 и подробный вид 904 обновятся до того, как все хранилища данных изменили данные. Поэтому пользователь может видеть на подробном виде 904 или ведущем виде 902 смешанные результаты в зависимости от порядка следования методов, пытающихся изменить данные и обновить виды пользовательского интерфейса.

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

Класс G06F9/44 устройства для выполнения специальных программ

устройство обработки информации, система обработки информации, способ обработки информации и носитель информации -  патент 2525746 (20.08.2014)
устройство воспроизведения, способ воспроизведения, устройство записи, способ записи, программа и структура данных -  патент 2525482 (20.08.2014)
расширяемость для основывающейся на web визуализации диаграмм -  патент 2524855 (10.08.2014)
моделирующий коап -  патент 2516703 (20.05.2014)
устройство и способ предоставления информации, терминальное устройство и способ обработки информации, и программа -  патент 2515717 (20.05.2014)
способ и устройство для классификации контента -  патент 2509352 (10.03.2014)
конфигурируемое разделение для параллельных данных -  патент 2503997 (10.01.2014)
кэширование и предоставление данных перед отправкой, относящихся к отправителю или получателю сообщения электронной почты -  патент 2501074 (10.12.2013)
протокол коммутации смеси мультимедийных данных для управления мультимедийными данными -  патент 2501070 (10.12.2013)
синхронизация жизненных циклов виртуальной машины и приложения -  патент 2498394 (10.11.2013)
Наверх