Модель фазирования прикладной среды
Иллюстрации
Показать всеИзобретение относится к области выполнения программного обеспечения. Техническим результатом является повышение надежности выполнения программного обеспечения за счет обеспечения модели фазирования прикладной среды. В вариантах осуществления настоящего изобретения система фазирования содержит многоуровневое фазовое пространство, в котором операции в программной системе ограничены фазой или подфазой. Операции выполняются только в определенной фазе. Таким образом, операции, которые могут дать неверные результаты в больших и сложных программных системах, выполняются не одновременно, а следуют в определенном порядке. Настоящее изобретение предусматривает также структуру данных для введения фазовых ограничений в качестве программных атрибутов в программный код. 3 н. и 17 з.п. ф-лы, 11 ил.
Реферат
Уровень техники
Программные системы, вообще говоря, выполняют операции, осуществляя процессы внутри компьютера. Зачастую один процесс может содержать несколько простых задач или методов. Для правильного выполнения процесса простые методы должны выполняться в определенном порядке, поскольку результат одного простого метода может служить входным сигналом для другого простого метода. При попытке выполнения метода до приема надлежащего входного сигнала или несвоевременной выдаче результата процесс может завершиться неудачно. Таким образом, очень важен порядок выполнения методов в программной системе.
Для разработчиков программного обеспечения порядок методов становится главной заботой при разработке программного кода. Вообще говоря, методы в программной системе обращаются к другим методам, чтобы эти другие методы могли выполнить и обеспечить некоторую операцию. Разработчик программного обеспечения должен учитывать порядок обращения к методам и пытаться написать такой код, который будет работать в любой ситуации независимо от порядка обращений. К сожалению, разработка сложного кода, который является достаточно гибким, чтобы работать при любых условиях, представляет собой чрезвычайно сложную задачу. По мере роста размера и сложности прикладных программ взрывной рост возможных порядков обращений сильно затрудняет правильное упорядочение обращений к методам. Бремя, лежащее на разработчиках программного обеспечения, может стать весьма тяжким, когда имеется множество методов, обращающихся к нескольким другим методам, а для надлежащего выполнения процесса возвращаемые результаты должны поступать в определенной последовательности. Аналогично, разработчикам программного обеспечения трудно протестировать гибкий код, в котором методы выполняют различные обращения для различных сценариев работы.
Ввиду этих и других соображений и было разработано настоящее изобретение.
Краткая сущность изобретения
В настоящем кратком изложении сущности изобретения в упрощенном виде излагаются идеи, которые затем подробно описываются в подробном описании. Настоящее краткое изложение сущности изобретения не предназначено для выявления основных признаков или существенных признаков заявленного изобретения и не призвано помочь в определении объема заявленного изобретения.
Настоящее изобретение предусматривает введение ограничений на выполнение программных методов во всей компьютерной системе. В целом настоящее изобретение представляет собой модель многоуровневого фазирования, которая ограничивает выполнение программных методов двумя или более фазами, причем каждая фаза может иметь две или более подфазы. Фазы представляют собой рабочие состояния, которые разделяют методы в программной системе. Выполнение всех методов в одном разделе ограничивается только определенной фазой. Создается фазовая область, в которой наборы программных компонентов обладают общей фазировкой в фазовом пространстве. Фазовое пространство определяет разрешенную последовательность фаз. В вариантах выполнения настоящего изобретения фазовое пространство представляет собой конечный ориентированный граф, который определяет для программных компонентов разрешенные фазы и разрешенные фазовые переходы.
В вариантах осуществления настоящего изобретения программные компоненты подчиняются фазовому ограничению. Фазовое ограничение представляет собой статическое ограничение, которое ограничивает фазы, разрешенные в некотором программном контексте. Фазовое ограничение может применяться к определенному сегменту программы, обеспечивая соответствие последовательности выполнения фазе, соответствующей ограничению, при всяком выполнении этого сегмента программы. Для реализации фазового ограничения программный компонент может включать в себя структуру данных, которая образует атрибут фазового ограничения. Атрибут фазового ограничения может быть частью метаданных режима выполнения программного компонента.
В вариантах осуществления настоящего изобретения машиночитаемый носитель содержит множество компонентов, занимающих первую фазовую область. В некоторых вариантах осуществления первый поднабор программных компонентов занимает первую подфазовую область, а второй набор программных компонентов занимает вторую подфазовую область. В вариантах осуществления настоящего изобретения подфазами являются фазы, которые сгруппированы под родительской фазой.
В одном варианте осуществления настоящее изобретение обеспечивает способ разделения выполнения множества методов на фазы в программной системе. Сначала в способе осуществляется переход к первой фазе, которая может содержать две или более подфаз. Выполнение первого набора методов ограничено первой фазой. Затем компьютерная система переходит к одной или нескольким другим фазам, в которых выполнение одного или нескольких других наборов методов ограничено одной или несколькими другими фазами. Наконец, компьютерная система переходит к одной или нескольким другим фазам.
В вариантах осуществления настоящего изобретения предусматривается также программная система. Программная система содержит ведущий управляющий компонент, который управляет набором фаз для всей программной системы. Управляющий узел или Директор - это программная структура, которая управляет переходом фаз в фазовом пространстве. В некоторых вариантах осуществления наряду с ведущим директором регистрируется один или несколько поддиректоров, которые управляют одним или несколькими наборами подфаз. У этих одного или нескольких директоров регистрируются один или несколько компонентов, которые ограничены выполнением методов только во время этих одной или нескольких фаз.
Изобретение может быть реализовано в виде компьютерного процесса, вычислительной системы или в виде продукта производства, такого как компьютерный программный продукт. Компьютерный программный продукт может быть компьютерным носителем данных, считываемым компьютерной системой и кодирующим компьютерную программу, содержащую команды для выполнения компьютерного процесса. Компьютерный программный продукт может быть также сигналом, распространяющимся на носителе, который считывается компьютерной системой и кодирует компьютерную программу, содержащую команды для выполнения компьютерного процесса.
Более полное понимание настоящего изобретения и его модификаций может быть получено при обращении к прилагаемым чертежам, краткое описание которых приводится ниже, к нижеследующему подробному описанию вариантов осуществления изобретения и к прилагаемой формуле.
Краткое описание чертежей
Фиг. 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 работы может также содержать подфазы.
Возможны и другие фазовые пространства. Например, возможно подфазовое пространство для изменений пользовательского интерфейса. В подфазовом пространстве пользовательского интерфейса подфаза аннулирования может обеспечить выполнение методов для построения структур. Подфаза составления затем составляет построенные структуры. Для других типов операций могут использоваться другие фазовые пространства, что должно б