RU2439664C2 - Модель фазирования прикладной среды - Google Patents
Модель фазирования прикладной среды Download PDFInfo
- Publication number
- RU2439664C2 RU2439664C2 RU2007139779/08A RU2007139779A RU2439664C2 RU 2439664 C2 RU2439664 C2 RU 2439664C2 RU 2007139779/08 A RU2007139779/08 A RU 2007139779/08A RU 2007139779 A RU2007139779 A RU 2007139779A RU 2439664 C2 RU2439664 C2 RU 2439664C2
- Authority
- RU
- Russia
- Prior art keywords
- phase
- subphase
- sub
- space
- transition
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
Изобретение относится к области выполнения программного обеспечения. Техническим результатом является повышение надежности выполнения программного обеспечения за счет обеспечения модели фазирования прикладной среды. В вариантах осуществления настоящего изобретения система фазирования содержит многоуровневое фазовое пространство, в котором операции в программной системе ограничены фазой или подфазой. Операции выполняются только в определенной фазе. Таким образом, операции, которые могут дать неверные результаты в больших и сложных программных системах, выполняются не одновременно, а следуют в определенном порядке. Настоящее изобретение предусматривает также структуру данных для введения фазовых ограничений в качестве программных атрибутов в программный код. 3 н. и 17 з.п. ф-лы, 11 ил.
Description
Уровень техники
Программные системы, вообще говоря, выполняют операции, осуществляя процессы внутри компьютера. Зачастую один процесс может содержать несколько простых задач или методов. Для правильного выполнения процесса простые методы должны выполняться в определенном порядке, поскольку результат одного простого метода может служить входным сигналом для другого простого метода. При попытке выполнения метода до приема надлежащего входного сигнала или несвоевременной выдаче результата процесс может завершиться неудачно. Таким образом, очень важен порядок выполнения методов в программной системе.
Для разработчиков программного обеспечения порядок методов становится главной заботой при разработке программного кода. Вообще говоря, методы в программной системе обращаются к другим методам, чтобы эти другие методы могли выполнить и обеспечить некоторую операцию. Разработчик программного обеспечения должен учитывать порядок обращения к методам и пытаться написать такой код, который будет работать в любой ситуации независимо от порядка обращений. К сожалению, разработка сложного кода, который является достаточно гибким, чтобы работать при любых условиях, представляет собой чрезвычайно сложную задачу. По мере роста размера и сложности прикладных программ взрывной рост возможных порядков обращений сильно затрудняет правильное упорядочение обращений к методам. Бремя, лежащее на разработчиках программного обеспечения, может стать весьма тяжким, когда имеется множество методов, обращающихся к нескольким другим методам, а для надлежащего выполнения процесса возвращаемые результаты должны поступать в определенной последовательности. Аналогично, разработчикам программного обеспечения трудно протестировать гибкий код, в котором методы выполняют различные обращения для различных сценариев работы.
Ввиду этих и других соображений и было разработано настоящее изобретение.
Краткая сущность изобретения
В настоящем кратком изложении сущности изобретения в упрощенном виде излагаются идеи, которые затем подробно описываются в подробном описании. Настоящее краткое изложение сущности изобретения не предназначено для выявления основных признаков или существенных признаков заявленного изобретения и не призвано помочь в определении объема заявленного изобретения.
Настоящее изобретение предусматривает введение ограничений на выполнение программных методов во всей компьютерной системе. В целом настоящее изобретение представляет собой модель многоуровневого фазирования, которая ограничивает выполнение программных методов двумя или более фазами, причем каждая фаза может иметь две или более подфазы. Фазы представляют собой рабочие состояния, которые разделяют методы в программной системе. Выполнение всех методов в одном разделе ограничивается только определенной фазой. Создается фазовая область, в которой наборы программных компонентов обладают общей фазировкой в фазовом пространстве. Фазовое пространство определяет разрешенную последовательность фаз. В вариантах выполнения настоящего изобретения фазовое пространство представляет собой конечный ориентированный граф, который определяет для программных компонентов разрешенные фазы и разрешенные фазовые переходы.
В вариантах осуществления настоящего изобретения программные компоненты подчиняются фазовому ограничению. Фазовое ограничение представляет собой статическое ограничение, которое ограничивает фазы, разрешенные в некотором программном контексте. Фазовое ограничение может применяться к определенному сегменту программы, обеспечивая соответствие последовательности выполнения фазе, соответствующей ограничению, при всяком выполнении этого сегмента программы. Для реализации фазового ограничения программный компонент может включать в себя структуру данных, которая образует атрибут фазового ограничения. Атрибут фазового ограничения может быть частью метаданных режима выполнения программного компонента.
В вариантах осуществления настоящего изобретения машиночитаемый носитель содержит множество компонентов, занимающих первую фазовую область. В некоторых вариантах осуществления первый поднабор программных компонентов занимает первую подфазовую область, а второй набор программных компонентов занимает вторую подфазовую область. В вариантах осуществления настоящего изобретения подфазами являются фазы, которые сгруппированы под родительской фазой.
В одном варианте осуществления настоящее изобретение обеспечивает способ разделения выполнения множества методов на фазы в программной системе. Сначала в способе осуществляется переход к первой фазе, которая может содержать две или более подфаз. Выполнение первого набора методов ограничено первой фазой. Затем компьютерная система переходит к одной или нескольким другим фазам, в которых выполнение одного или нескольких других наборов методов ограничено одной или несколькими другими фазами. Наконец, компьютерная система переходит к одной или нескольким другим фазам.
В вариантах осуществления настоящего изобретения предусматривается также программная система. Программная система содержит ведущий управляющий компонент, который управляет набором фаз для всей программной системы. Управляющий узел или Директор - это программная структура, которая управляет переходом фаз в фазовом пространстве. В некоторых вариантах осуществления наряду с ведущим директором регистрируется один или несколько поддиректоров, которые управляют одним или несколькими наборами подфаз. У этих одного или нескольких директоров регистрируются один или несколько компонентов, которые ограничены выполнением методов только во время этих одной или нескольких фаз.
Изобретение может быть реализовано в виде компьютерного процесса, вычислительной системы или в виде продукта производства, такого как компьютерный программный продукт. Компьютерный программный продукт может быть компьютерным носителем данных, считываемым компьютерной системой и кодирующим компьютерную программу, содержащую команды для выполнения компьютерного процесса. Компьютерный программный продукт может быть также сигналом, распространяющимся на носителе, который считывается компьютерной системой и кодирует компьютерную программу, содержащую команды для выполнения компьютерного процесса.
Более полное понимание настоящего изобретения и его модификаций может быть получено при обращении к прилагаемым чертежам, краткое описание которых приводится ниже, к нижеследующему подробному описанию вариантов осуществления изобретения и к прилагаемой формуле.
Краткое описание чертежей
Фиг. 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 смешанные результаты в зависимости от порядка следования методов, пытающихся изменить данные и обновить виды пользовательского интерфейса.
Хотя в описании настоящего изобретения используется терминология, относящаяся к определенным структурным особенностям, методологическим действиям и считываемым компьютером носителям, содержащим такие действия, должно быть понятно, что настоящее изобретение, определяемое прилагаемой формулой, необязательно ограничено определенной описанной здесь структурой, действиями или носителями. Специалисту в данной области техники должны быть понятны другие варианты осуществления и их модификации, которые не выходят за пределы объема и сущности изобретения. Поэтому определенная структура, действия или носители раскрыты в качестве примеров осуществления заявленного изобретения. Изобретение определяется прилагаемой формулой.
Claims (20)
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, в которой атрибут фазового ограничения содержит одно из следующего: ограничение обращения, ограничение конструирования и ограничение ссылки.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US67613705P | 2005-04-29 | 2005-04-29 | |
US60/676,137 | 2005-04-29 | ||
US70322005P | 2005-07-28 | 2005-07-28 | |
US60/703,220 | 2005-07-28 | ||
US11/360,455 | 2006-02-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2007139779A RU2007139779A (ru) | 2009-05-10 |
RU2439664C2 true RU2439664C2 (ru) | 2012-01-10 |
Family
ID=41019446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2007139779/08A RU2439664C2 (ru) | 2005-04-29 | 2006-04-20 | Модель фазирования прикладной среды |
Country Status (2)
Country | Link |
---|---|
US (3) | US7886269B2 (ru) |
RU (1) | RU2439664C2 (ru) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060245096A1 (en) * | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Application framework phasing model |
US7886269B2 (en) * | 2005-04-29 | 2011-02-08 | Microsoft Corporation | XML application framework |
US8132148B2 (en) | 2005-04-29 | 2012-03-06 | Microsoft Corporation | XML application framework |
US7581225B2 (en) * | 2005-04-29 | 2009-08-25 | Microsoft Corporation | Multithreading with concurrency domains |
US8418132B2 (en) * | 2005-04-29 | 2013-04-09 | Microsoft Corporation | Application description language |
US8275793B2 (en) * | 2005-04-29 | 2012-09-25 | Microsoft Corporation | Transaction transforms |
US7720872B1 (en) * | 2006-03-07 | 2010-05-18 | Sprint Communications Company L.P. | Software interface mapping tool |
US7823124B2 (en) | 2006-08-29 | 2010-10-26 | Sap Ag | Transformation layer |
US8065661B2 (en) | 2006-08-29 | 2011-11-22 | Sap Ag | Test engine |
US20080059537A1 (en) * | 2006-08-29 | 2008-03-06 | Juergen Sattler | Content subscription |
US7831568B2 (en) * | 2006-08-29 | 2010-11-09 | Sap Ag | Data migration |
US7908589B2 (en) | 2006-08-29 | 2011-03-15 | Sap Ag | Deployment |
US7912800B2 (en) | 2006-08-29 | 2011-03-22 | Sap Ag | Deduction engine to determine what configuration management scoping questions to ask a user based on responses to one or more previous questions |
US20080071839A1 (en) * | 2006-08-29 | 2008-03-20 | Juergen Sattler | Content authoring |
US8131644B2 (en) | 2006-08-29 | 2012-03-06 | Sap Ag | Formular update |
US7831637B2 (en) | 2006-08-29 | 2010-11-09 | Sap Ag | System on the fly |
US7827528B2 (en) * | 2006-08-29 | 2010-11-02 | Sap Ag | Delta layering |
US20080088877A1 (en) * | 2006-10-16 | 2008-04-17 | Michael Cacenco | System and Method for Updating Reference to a Data-Source In a Component-Based Application |
US8849746B2 (en) * | 2006-12-19 | 2014-09-30 | Teradata Us, Inc. | High-throughput extract-transform-load (ETL) of program events for subsequent analysis |
US20080163172A1 (en) * | 2006-12-29 | 2008-07-03 | Ncr Corporation | Creating a self-service application in a self-service terminal |
US8046742B1 (en) * | 2007-02-02 | 2011-10-25 | Sandia Corporation | Self-assembling software generator |
US8108799B2 (en) * | 2007-03-30 | 2012-01-31 | Microsoft Corporation | Remoting of windows presentation framework based applications in a non-composed desktop |
US8484611B2 (en) * | 2007-10-15 | 2013-07-09 | International Business Machines Corporation | Method and system for simplified assembly of information processing applications |
US8190987B2 (en) * | 2007-10-25 | 2012-05-29 | Microsoft Corporation | Private views of data and local calculations during real time collaboration |
US8281287B2 (en) * | 2007-11-12 | 2012-10-02 | Finocchio Mark J | Compact, portable, and efficient representation of a user interface control tree |
US8312426B2 (en) * | 2008-01-07 | 2012-11-13 | International Business Machines Corporation | Method and system for simplified service composition in web environment |
US8245122B2 (en) * | 2008-01-08 | 2012-08-14 | International Business Machines Corporation | Method and system for modeling user requests, applications and components used in dynamic application assembly |
US8239828B2 (en) * | 2008-01-08 | 2012-08-07 | International Business Machines Corporation | Method of recovering from software failures using replanning |
US8307329B2 (en) * | 2008-02-07 | 2012-11-06 | Microsoft Corporation | Implicit composition of component bindings |
US8201147B2 (en) * | 2008-02-08 | 2012-06-12 | Microsoft Corporation | Generic XAD processing model |
US8640149B2 (en) * | 2008-03-26 | 2014-01-28 | International Business Machines Corporation | Method and apparatus for dynamic web service composition and invocation |
US20090254879A1 (en) * | 2008-04-08 | 2009-10-08 | Derek Foster | Method and system for assuring data integrity in data-driven software |
US8082494B2 (en) | 2008-04-18 | 2011-12-20 | Microsoft Corporation | Rendering markup language macro data for display in a graphical user interface |
US8949140B2 (en) * | 2008-04-21 | 2015-02-03 | International Business Machines Corporation | Method and system for dynamic software reconfiguration triggered by component- or system- initiated events |
US8898624B2 (en) * | 2008-05-05 | 2014-11-25 | International Business Machines Corporation | Method and apparatus for simplified assembly of parametric information processing applications |
US20090288069A1 (en) * | 2008-05-15 | 2009-11-19 | One Microsoft Way | Dynamic Declarative Application Description |
US8055619B2 (en) * | 2008-06-05 | 2011-11-08 | Novell, Inc. | Mechanisms to support object-oriented version control operations |
US7917547B2 (en) * | 2008-06-10 | 2011-03-29 | Microsoft Corporation | Virtualizing objects within queries |
US8549475B1 (en) * | 2008-07-08 | 2013-10-01 | Adobe Systems Incorporated | System and method for simplifying object-oriented programming |
KR20110036580A (ko) * | 2008-07-24 | 2011-04-07 | 가부시키가이샤 유포 코포레숀 | 광반사체 및 그것을 사용한 면광원장치 및 조명장치 |
US8135659B2 (en) | 2008-10-01 | 2012-03-13 | Sap Ag | System configuration comparison to identify process variation |
US8805887B2 (en) | 2008-10-03 | 2014-08-12 | Microsoft Corporation | Packaging system to facilitate declarative model-driven development |
US8904276B2 (en) | 2008-11-17 | 2014-12-02 | At&T Intellectual Property I, L.P. | Partitioning of markup language documents |
US8396893B2 (en) | 2008-12-11 | 2013-03-12 | Sap Ag | Unified configuration of multiple applications |
US8255429B2 (en) | 2008-12-17 | 2012-08-28 | Sap Ag | Configuration change without disruption of incomplete processes |
US20100205225A1 (en) * | 2009-02-06 | 2010-08-12 | Siemens Aktiegesellschaft | Method and Apparatus for Transforming a Process |
US9253536B2 (en) * | 2009-03-18 | 2016-02-02 | Microsoft Technology Licensing, Llc | Updating data-consuming entities |
US8131676B2 (en) * | 2009-04-03 | 2012-03-06 | Microsoft Corporation | Updating media-location data for media-playing entities |
US9135091B2 (en) * | 2009-04-03 | 2015-09-15 | Microsoft Technology Licensing, Llc | Communicating events or data between application components |
US8392840B2 (en) * | 2009-05-22 | 2013-03-05 | Microsoft Corporation | Large sets of data |
US8250530B2 (en) * | 2009-05-27 | 2012-08-21 | Microsoft Corporation | Composite values for declarative language applications |
US8336027B2 (en) * | 2009-05-27 | 2012-12-18 | Microsoft Corporation | Hierarchical view state storage |
US8756515B2 (en) * | 2009-11-16 | 2014-06-17 | Microsoft Corporation | Dynamic editors for functionally composed UI |
US8661408B2 (en) * | 2009-11-23 | 2014-02-25 | Michael James Psenka | Integrated development environment and methods of using the same |
US8584087B2 (en) | 2009-12-11 | 2013-11-12 | Sap Ag | Application configuration deployment monitor |
US8370156B1 (en) * | 2010-01-20 | 2013-02-05 | The Mathworks, Inc. | Editing suggestions in different formalisms |
US9244651B2 (en) * | 2010-03-04 | 2016-01-26 | Autodesk, Inc. | Document revision control |
US20110289515A1 (en) * | 2010-05-19 | 2011-11-24 | Microsoft Corporation | Generating service-access activities for workflow applications |
US8499290B2 (en) * | 2010-06-15 | 2013-07-30 | Microsoft Corporation | Creating text functions from a spreadsheet |
US9286037B2 (en) * | 2010-12-29 | 2016-03-15 | Microsoft Technology Licensing, Llc | Platform for distributed applications |
US8819567B2 (en) | 2011-09-13 | 2014-08-26 | Apple Inc. | Defining and editing user interface behaviors |
US9164576B2 (en) | 2011-09-13 | 2015-10-20 | Apple Inc. | Conformance protocol for heterogeneous abstractions for defining user interface behaviors |
US20130063484A1 (en) * | 2011-09-13 | 2013-03-14 | Samir Gehani | Merging User Interface Behaviors |
CN102567482B (zh) * | 2011-12-20 | 2014-05-21 | 东软集团股份有限公司 | 面向客户的xml解析方法和装置 |
US8949429B1 (en) * | 2011-12-23 | 2015-02-03 | Amazon Technologies, Inc. | Client-managed hierarchical resource allocation |
US9569274B2 (en) | 2012-10-16 | 2017-02-14 | Microsoft Technology Licensing, Llc | Distributed application optimization using service groups |
US9286032B2 (en) | 2013-03-15 | 2016-03-15 | International Business Machines Corporation | Automated software composition |
US9626163B2 (en) * | 2013-04-26 | 2017-04-18 | Limited Liability Company “1C” | Method for automated application interface change |
US9032363B2 (en) * | 2013-08-19 | 2015-05-12 | Red Hat, Inc. | Providing a user interface library for building web-based applications |
US20160224202A1 (en) * | 2013-11-25 | 2016-08-04 | Yandex Europe Ag | System, method and user interface for gesture-based scheduling of computer tasks |
US10133586B2 (en) * | 2014-04-01 | 2018-11-20 | Henry Graber | Method to configure, control, and display data products from a user interface |
US10073604B2 (en) * | 2014-05-15 | 2018-09-11 | Oracle International Corporation | UI-driven model extensibility in multi-tier applications |
US9626183B1 (en) * | 2014-08-15 | 2017-04-18 | United Services Automobile Association (Usaa) | Device interrogation framework |
US10147158B2 (en) * | 2014-12-13 | 2018-12-04 | Microsoft Technology Licensing, Llc | Frame invalidation control with causality attribution |
US10761714B2 (en) * | 2015-11-23 | 2020-09-01 | Google Llc | Recognizing gestures and updating display by coordinator |
US10268753B2 (en) * | 2015-12-22 | 2019-04-23 | Opera Solutions Usa, Llc | System and method for optimized query execution in computerized data modeling and analysis |
US10783135B2 (en) * | 2016-02-03 | 2020-09-22 | Thomson Reuters Enterprise Centre Gmbh | Systems and methods for mixed consistency in computing systems |
US10587708B2 (en) | 2016-03-28 | 2020-03-10 | Microsoft Technology Licensing, Llc | Multi-modal conversational intercom |
US11487512B2 (en) * | 2016-03-29 | 2022-11-01 | Microsoft Technology Licensing, Llc | Generating a services application |
CN106445701B (zh) * | 2016-09-21 | 2018-01-09 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
US10572231B1 (en) * | 2018-01-05 | 2020-02-25 | Amazon Technologies, Inc. | Component grouping for application development |
US10684868B2 (en) * | 2018-01-18 | 2020-06-16 | Sap Se | Configuration for application using microservices |
US10983811B2 (en) | 2018-06-03 | 2021-04-20 | Apple Inc. | Multi-process model for cross-platform applications |
US10972567B2 (en) * | 2019-04-04 | 2021-04-06 | International Business Machines Corporation | Multi-dimensional tagging namespace for cloud resource management |
EP3748518A1 (en) * | 2019-06-06 | 2020-12-09 | Siemens Aktiengesellschaft | Designing and building an automation system to perform rule-based transformations on complex technical systems |
US11544082B2 (en) | 2020-06-09 | 2023-01-03 | UiPath, Inc. | Shared variable binding and parallel execution of a process and robot workflow activities for robotic process automation |
Family Cites Families (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US95650A (en) * | 1869-10-12 | Improvement in machines for bending sheet-metal for cornices | ||
US168183A (en) * | 1875-09-28 | Improvement in ice-wagons | ||
US150859A (en) * | 1874-05-12 | Improvement in clothes-pounders | ||
US253830A (en) * | 1882-02-21 | Hydraulic air-compressor | ||
US230945A (en) * | 1880-08-10 | Henry w | ||
US156294A (en) * | 1874-10-27 | Improvement in flour and middlings purifiers | ||
US34998A (en) * | 1862-04-15 | Improvement in coal-sifters | ||
US225034A (en) * | 1880-03-02 | George w | ||
US102615A (en) * | 1870-05-03 | Improved mold tor artificial teeth | ||
US306735A (en) * | 1884-10-21 | Ltjdwig heinbich feiedbueg | ||
US190105A (en) * | 1877-04-24 | Improvement in ornamental chains | ||
US4943932A (en) * | 1986-11-25 | 1990-07-24 | Cimflex Teknowledge Corporation | Architecture for composing computational modules uniformly across diverse developmental frameworks |
CA1331802C (en) * | 1987-08-21 | 1994-08-30 | Klaus Kuhlmann | Modularly structured digital communications system having operations-oriented and security-oriented components |
JPH0727505B2 (ja) * | 1990-02-12 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | インターフェース方法及びインターフェース・システム |
CA2061117C (en) * | 1991-12-02 | 1998-09-29 | Neta J. Amit | Apparatus and method for distributed program stack |
WO1993012488A1 (en) * | 1991-12-13 | 1993-06-24 | White Leonard R | Measurement analysis software system and method |
US5392430A (en) | 1992-10-30 | 1995-02-21 | International Business Machines | Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system |
US5519866A (en) | 1993-06-28 | 1996-05-21 | Taligent, Inc. | Method and apparatus of incrementally linking components of a modeled computer program |
US6035321A (en) | 1994-06-29 | 2000-03-07 | Acis, Inc. | Method for enforcing a hierarchical invocation structure in real time asynchronous software applications |
US5980096A (en) | 1995-01-17 | 1999-11-09 | Intertech Ventures, Ltd. | Computer-based system, methods and graphical interface for information storage, modeling and stimulation of complex systems |
US5709855A (en) * | 1995-09-22 | 1998-01-20 | Bockow; Barry I. | Compositions of spirulina algae and omega fatty acids for treatment of inflammation and pain |
US5805889A (en) * | 1995-10-20 | 1998-09-08 | Sun Microsystems, Inc. | System and method for integrating editing and versioning in data repositories |
US6721951B1 (en) | 1996-04-15 | 2004-04-13 | Microsoft Corporation | Data transfer utilizing single functionally independent data transfer mechanism |
US6760903B1 (en) * | 1996-08-27 | 2004-07-06 | Compuware Corporation | Coordinated application monitoring in a distributed computing environment |
US6721941B1 (en) | 1996-08-27 | 2004-04-13 | Compuware Corporation | Collection of timing and coverage data through a debugging interface |
US6104874A (en) * | 1996-10-15 | 2000-08-15 | International Business Machines Corporation | Object oriented framework mechanism for order processing including pre-defined extensible classes for defining an order processing environment |
US7054271B2 (en) | 1996-12-06 | 2006-05-30 | Ipco, Llc | Wireless network system and method for providing same |
US5951653A (en) * | 1997-01-29 | 1999-09-14 | Microsoft Corporation | Method and system for coordinating access to objects of different thread types in a shared memory space |
US5790855A (en) | 1997-01-31 | 1998-08-04 | Sun Microsystems, Inc. | System, method and article of manufacture for type checking appropriateness of port connection and variable type matching in connection with multiport object-oriented components |
US5842020A (en) * | 1997-01-31 | 1998-11-24 | Sun Microsystems, Inc. | System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application |
GB2329490B (en) | 1997-09-19 | 2002-06-05 | Ibm | Remote application design |
US6339775B1 (en) | 1997-11-07 | 2002-01-15 | Informatica Corporation | Apparatus and method for performing data transformations in data warehousing |
US5940828A (en) | 1997-11-18 | 1999-08-17 | International Business Machines Corporation | Locking contention resolution for shared resources |
US6256772B1 (en) | 1997-11-24 | 2001-07-03 | International Business Machines Corporation | Multilingual hierarchial scripting environment |
US6208336B1 (en) * | 1998-03-20 | 2001-03-27 | Sun Microsystems, Inc. | Dynamic graphical user interface feature-set configuration |
US6083276A (en) * | 1998-06-11 | 2000-07-04 | Corel, Inc. | Creating and configuring component-based applications using a text-based descriptive attribute grammar |
US6205465B1 (en) | 1998-07-22 | 2001-03-20 | Cisco Technology, Inc. | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information |
US6256780B1 (en) | 1998-09-10 | 2001-07-03 | Microsoft Corp. | Method and system for assembling software components |
US6272675B1 (en) | 1998-10-01 | 2001-08-07 | Unisys Corporation | Development system for automatically enabling a server application to execute with an XATMI-compliant transaction manager managing transactions within multiple environments |
US6336118B1 (en) | 1998-12-03 | 2002-01-01 | International Business Machines Corporation | Framework within a data processing system for manipulating program objects |
US6826553B1 (en) * | 1998-12-18 | 2004-11-30 | Knowmadic, Inc. | System for providing database functions for multiple internet sources |
US6424948B1 (en) | 1999-02-19 | 2002-07-23 | Guozhu Dong | Declarative workflow system supporting side-effects |
US6718533B1 (en) * | 1999-02-26 | 2004-04-06 | Real-Time Innovations, Inc. | Method for building a real-time control system with mode and logical rate |
US6415434B1 (en) * | 1999-06-18 | 2002-07-02 | Hewlett-Packard Company | Apparatus and method for a runtime method overloading resolver |
US6601233B1 (en) | 1999-07-30 | 2003-07-29 | Accenture Llp | Business components framework |
US6601234B1 (en) * | 1999-08-31 | 2003-07-29 | Accenture Llp | Attribute dictionary in a business logic services environment |
US6854107B2 (en) | 1999-12-29 | 2005-02-08 | Baker Hughes Incorporated | Method of and system for designing an N-tier software architecture for use in generating software components |
US6857008B1 (en) * | 2000-04-19 | 2005-02-15 | Cisco Technology, Inc. | Arrangement for accessing an IP-based messaging server by telephone for management of stored messages |
US7287259B2 (en) * | 2000-04-24 | 2007-10-23 | Microsoft Corporation | Isolating assembly versions for binding to application programs |
FR2810423A1 (fr) * | 2000-06-16 | 2001-12-21 | Suntech | Systeme informatique modulaire et procede associe |
US6670969B1 (en) | 2000-06-29 | 2003-12-30 | Curl Corporation | Interface frames for threads |
WO2002003198A2 (en) * | 2000-07-03 | 2002-01-10 | Oculus Technologies Corporation | Access control for a decentralized or emergent model on a computer network |
US6983464B1 (en) | 2000-07-31 | 2006-01-03 | Microsoft Corporation | Dynamic reconfiguration of multimedia stream processing modules |
WO2002013002A2 (en) * | 2000-08-04 | 2002-02-14 | Intrinsic Graphics, Inc. | Development of graphics hardware and software |
JP3750504B2 (ja) * | 2000-08-09 | 2006-03-01 | セイコーエプソン株式会社 | データ更新方法および情報処理装置 |
US6795868B1 (en) | 2000-08-31 | 2004-09-21 | Data Junction Corp. | System and method for event-driven data transformation |
US20020065950A1 (en) * | 2000-09-26 | 2002-05-30 | Katz James S. | Device event handler |
US9742614B2 (en) | 2000-09-28 | 2017-08-22 | Wellogix Technology Licensing, Llc | Data-type definition driven dynamic business component instantiation and execution framework |
US6823518B1 (en) * | 2000-10-17 | 2004-11-23 | Microsoft Corporation | Threading and communication architecture for a graphical user interface |
US7000219B2 (en) * | 2000-11-03 | 2006-02-14 | Wilde Technologies Limited | Software development process |
US7031968B2 (en) | 2000-12-07 | 2006-04-18 | Prev-U Israel Ltd. | Method and apparatus for providing web site preview information |
US7200838B2 (en) * | 2000-12-20 | 2007-04-03 | National Instruments Corporation | System and method for automatically generating a graphical program in response to a state diagram |
US7085773B2 (en) * | 2001-01-05 | 2006-08-01 | Symyx Technologies, Inc. | Laboratory database system and methods for combinatorial materials research |
US20030236925A1 (en) | 2001-05-17 | 2003-12-25 | Dusan Balek | Interactive portable object adapters support in an integrated development environment |
US7043481B2 (en) | 2001-06-01 | 2006-05-09 | Thought, Inc. | System, method and software for creating, maintaining, navigating or manipulating complex data objects and their data relationships |
US7984423B2 (en) | 2001-08-14 | 2011-07-19 | National Instruments Corporation | Configuration diagram which displays a configuration of a system |
US7076483B2 (en) | 2001-08-27 | 2006-07-11 | Xyleme Sa | Ranking nodes in a graph |
US8473922B2 (en) | 2001-09-19 | 2013-06-25 | Hewlett-Packard Development Company, L.P. | Runtime monitoring in component-based systems |
US20030063120A1 (en) * | 2001-09-28 | 2003-04-03 | Wong Hoi Lee Candy | Scalable graphical user interface architecture |
US7234111B2 (en) | 2001-09-28 | 2007-06-19 | Ntt Docomo, Inc. | Dynamic adaptation of GUI presentations to heterogeneous device platforms |
EP1298527A1 (en) * | 2001-09-28 | 2003-04-02 | Sony International (Europe) GmbH | A system for automatically creating a context information providing configuration |
US7559032B2 (en) * | 2001-10-12 | 2009-07-07 | National Instruments Corporation | System and method for enabling a graphical program to respond to user interface events |
US7032210B2 (en) * | 2001-11-11 | 2006-04-18 | International Business Machines Corporation | Method and system for generating program source code of a computer application from an information model |
US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US20030135825A1 (en) * | 2001-12-05 | 2003-07-17 | Matthew Gertner | Dynamically generated mark-up based graphical user interfaced with an extensible application framework with links to enterprise resources |
US6621295B1 (en) * | 2002-01-15 | 2003-09-16 | Xilinx, Inc. | Reconfigurable priority encoding |
US7228326B2 (en) * | 2002-01-18 | 2007-06-05 | Bea Systems, Inc. | Systems and methods for application deployment |
CN100483339C (zh) | 2002-02-13 | 2009-04-29 | 微软公司 | 连接实体与外貌特征模式中通用功能的系统与方法 |
US7240243B2 (en) * | 2002-03-28 | 2007-07-03 | International Business Machines Corporation | System and method for facilitating programmable coverage domains for a testcase generator |
US20040051739A1 (en) | 2002-06-20 | 2004-03-18 | Schmickley Michael J. | Alarm graphic editor with automatic update |
AU2003245660A1 (en) * | 2002-06-24 | 2004-01-06 | National Instruments Corporation | Task based polymorphic graphical program function nodes |
US7206827B2 (en) | 2002-07-25 | 2007-04-17 | Sun Microsystems, Inc. | Dynamic administration framework for server systems |
US7412497B2 (en) * | 2002-07-25 | 2008-08-12 | Sun Microsystems, Inc. | Generation of Administration framework for server systems |
US6704656B1 (en) | 2002-10-18 | 2004-03-09 | Schlumberger Technology Corporation | Method, apparatus and computer program product to allow automatic product composition |
US20040083238A1 (en) | 2002-10-24 | 2004-04-29 | General Electric Company | Method, system, and storage medium for integrating project management tools |
US7222332B2 (en) * | 2002-10-24 | 2007-05-22 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US7181744B2 (en) | 2002-10-24 | 2007-02-20 | International Business Machines Corporation | System and method for transferring data between virtual machines or other computer entities |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7290138B2 (en) | 2003-02-19 | 2007-10-30 | Microsoft Corporation | Credentials and digitally signed objects |
US7779405B2 (en) | 2003-03-14 | 2010-08-17 | At&T Intellectual Property I, L.P. | Run-time determination of application delivery |
US20040187090A1 (en) | 2003-03-21 | 2004-09-23 | Meacham Randal P. | Method and system for creating interactive software |
US7827524B2 (en) * | 2003-04-22 | 2010-11-02 | Computer Associates Think, Inc. | System and method for integrating object-oriented model profiles and object-oriented programming languages |
US7496574B2 (en) * | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7558841B2 (en) * | 2003-05-14 | 2009-07-07 | Microsoft Corporation | Method, system, and computer-readable medium for communicating results to a data query in a computer network |
US20040230945A1 (en) | 2003-05-15 | 2004-11-18 | Bryant Deborah E. | Integration of a configuration tool with a graphical program language |
US7240327B2 (en) * | 2003-06-04 | 2007-07-03 | Sap Ag | Cross-platform development for devices with heterogeneous capabilities |
JP4028444B2 (ja) | 2003-06-27 | 2007-12-26 | 株式会社東芝 | スケジューリング方法およびリアルタイム処理システム |
CA2476156A1 (en) | 2003-07-30 | 2005-01-30 | J2X Technologies Inc. | System, computer product and method for enabling wireless data synchronization |
US8397205B2 (en) | 2003-08-07 | 2013-03-12 | National Instruments Corporation | Graphically representing timing in a graphical program |
US7650589B2 (en) * | 2003-08-15 | 2010-01-19 | National Instruments Corporation | Signal analysis function blocks and method of use |
US7506307B2 (en) | 2003-10-24 | 2009-03-17 | Microsoft Corporation | Rules definition language |
US7526771B2 (en) * | 2003-11-12 | 2009-04-28 | Ntt Docomo, Inc. | Method and apparatus for configuring an application while the application is running |
US7324931B1 (en) | 2003-11-17 | 2008-01-29 | The Mathworks, Inc. | Conversion of model components into references |
US7194663B2 (en) | 2003-11-18 | 2007-03-20 | Honeywell International, Inc. | Protective bus interface and method |
US7287023B2 (en) | 2003-11-26 | 2007-10-23 | International Business Machines Corporation | Index structure for supporting structural XML queries |
US7676785B2 (en) | 2004-02-13 | 2010-03-09 | Microsoft Corporation | Hosted application as a designer in an integrated development environment |
US7570267B2 (en) | 2004-05-03 | 2009-08-04 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7836426B2 (en) | 2004-05-06 | 2010-11-16 | National Instruments Corporation | Automatic generation of application domain specific graphical programs |
US8063936B2 (en) | 2004-06-01 | 2011-11-22 | L-3 Communications Corporation | Modular immersive surveillance processing system and method |
US7788663B2 (en) | 2004-06-08 | 2010-08-31 | Covia Labs, Inc. | Method and system for device recruitment interoperability and assembling unified interoperating device constellation |
WO2006031640A2 (en) | 2004-09-10 | 2006-03-23 | Graphlogic Inc. | Object process graph application development system |
US7703027B2 (en) | 2005-01-13 | 2010-04-20 | National Instruments Corporation | Merging graphical programs |
US7987445B2 (en) * | 2005-01-13 | 2011-07-26 | National Instruments Corporation | Comparing a configuration diagram to an actual system |
US8051148B2 (en) * | 2005-01-13 | 2011-11-01 | National Instruments Corporation | Determining differences between configuration diagrams |
JP4348546B2 (ja) | 2005-01-20 | 2009-10-21 | ソニー株式会社 | 信号処理装置、信号処理プログラムおよび記録媒体 |
US7383285B1 (en) * | 2005-03-08 | 2008-06-03 | Unisys Corporation | Method for exposing hierarchical table structures and relationships to OLE DB applications |
JP4457925B2 (ja) | 2005-03-11 | 2010-04-28 | ヤマハ株式会社 | 編集装置、音響信号処理システム及びプログラム |
US7657868B2 (en) * | 2005-03-14 | 2010-02-02 | Research In Motion Limited | System and method for applying development patterns for component based applications |
JP4622611B2 (ja) | 2005-03-24 | 2011-02-02 | ソニー株式会社 | 信号処理装置 |
US7653903B2 (en) | 2005-03-25 | 2010-01-26 | Sony Corporation | Modular imaging download system |
US7559054B2 (en) * | 2005-04-19 | 2009-07-07 | Microsoft Corporation | Abstract interpretation with a congruence abstract domain and/or a heap succession abstract domain |
US20060247936A1 (en) * | 2005-04-28 | 2006-11-02 | International Business Machines Corporation | Business Activity Creation Using Business Context Services for Adaptable Service Oriented Architecture Components |
US8132148B2 (en) | 2005-04-29 | 2012-03-06 | Microsoft Corporation | XML application framework |
US8418132B2 (en) | 2005-04-29 | 2013-04-09 | Microsoft Corporation | Application description language |
US7739691B2 (en) * | 2005-04-29 | 2010-06-15 | Microsoft Corporation | Framework for declarative expression of data processing |
US7886269B2 (en) * | 2005-04-29 | 2011-02-08 | Microsoft Corporation | XML application framework |
US20060245096A1 (en) * | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Application framework phasing model |
US7581225B2 (en) | 2005-04-29 | 2009-08-25 | Microsoft Corporation | Multithreading with concurrency domains |
US8275793B2 (en) | 2005-04-29 | 2012-09-25 | Microsoft Corporation | Transaction transforms |
US20060253830A1 (en) * | 2005-05-06 | 2006-11-09 | Rajanala Arun K | Guiding application building using business constraint metadata |
US8510711B2 (en) * | 2006-05-30 | 2013-08-13 | Siemens Aktiengesellschaft | Central strategy management component for providing semantic-free administration functions for a system of applications |
US8863102B2 (en) * | 2007-04-02 | 2014-10-14 | International Business Machines Corporation | Method and system for assembling information processing applications based on declarative semantic specifications |
US8166465B2 (en) * | 2007-04-02 | 2012-04-24 | International Business Machines Corporation | Method and system for composing stream processing applications according to a semantic description of a processing goal |
US8087011B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Domain stretching for an advanced dual-representation polyhedral loop transformation framework |
US8056065B2 (en) * | 2007-09-26 | 2011-11-08 | International Business Machines Corporation | Stable transitions in the presence of conditionals for an advanced dual-representation polyhedral loop transformation framework |
US8087010B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework |
US8201147B2 (en) * | 2008-02-08 | 2012-06-12 | Microsoft Corporation | Generic XAD processing model |
US20090288069A1 (en) * | 2008-05-15 | 2009-11-19 | One Microsoft Way | Dynamic Declarative Application Description |
US8434053B2 (en) * | 2008-11-26 | 2013-04-30 | Red Hat, Inc. | Package review process workflow |
US8352914B2 (en) * | 2008-12-15 | 2013-01-08 | Accenture Global Services Limited | Impact analysis of software change requests |
US8302077B2 (en) * | 2009-03-13 | 2012-10-30 | Oracle America, Inc. | Method and system for configuring software modules to execute in an execution environment |
US8418165B2 (en) * | 2009-05-27 | 2013-04-09 | Microsoft Corporation | Package design and generation |
US8531451B2 (en) * | 2009-06-19 | 2013-09-10 | Microsoft Corporation | Data-driven visualization transformation |
US8843904B2 (en) * | 2010-01-26 | 2014-09-23 | International Business Machines Corporation | Automated building and retargeting of architecture-dependent assets |
-
2006
- 2006-02-23 US US11/360,448 patent/US7886269B2/en not_active Expired - Fee Related
- 2006-02-23 US US11/360,857 patent/US8799857B2/en not_active Expired - Fee Related
- 2006-02-23 US US11/360,851 patent/US8046737B2/en not_active Expired - Fee Related
- 2006-04-20 RU RU2007139779/08A patent/RU2439664C2/ru not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20060248450A1 (en) | 2006-11-02 |
US20060248448A1 (en) | 2006-11-02 |
US7886269B2 (en) | 2011-02-08 |
US8799857B2 (en) | 2014-08-05 |
US8046737B2 (en) | 2011-10-25 |
RU2007139779A (ru) | 2009-05-10 |
US20060248451A1 (en) | 2006-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2439664C2 (ru) | Модель фазирования прикладной среды | |
Scherzinger et al. | Managing schema evolution in NoSQL data stores | |
US9971596B2 (en) | Extensible change set conflict and merge gap detection | |
US8201147B2 (en) | Generic XAD processing model | |
JP5021627B2 (ja) | アプリケーションフレームワークのフェージングモデル | |
US7730495B2 (en) | Declaratively defined control actions | |
CN114930297A (zh) | 单位值集的无锁读取 | |
US10223163B2 (en) | Workflow-based object destruction | |
WO2018063923A1 (en) | Intents and locks with intent | |
Harel et al. | Non-intrusive repair of safety and liveness violations in reactive programs | |
Bouajjani et al. | Verifying robustness of event-driven asynchronous programs against concurrency | |
JP2023507709A (ja) | 統合された参照及び二次のマーキング | |
CN108399068B (zh) | 函数程序持久化的方法、电子设备及存储介质 | |
Schenker et al. | Getting Started with Containerization: Reduce the operational burden on your system by automating and managing your containers | |
Bakker et al. | Building Modular Cloud Apps with OSGi: Practical Modularity with Java in the Cloud Age | |
US11748117B2 (en) | Operating system partitioning of different users for single-user applications | |
US8793645B2 (en) | Replacement of data element in a graph | |
Buttfield-Addison et al. | Learning Cocoa with Objective-C: Developing for the Mac and IOS App Stores | |
Baker | The Official InstallShield for Windows Installer Developer's Guide | |
Orwick et al. | Developing Drivers with the Windows Driver Foundation: Dev Driver Win Driver Fou_p1 | |
Moemeka et al. | Leveraging Existing Code | |
Vennaro | iOS Development at Scale | |
Nasarre et al. | Windows via C/C++ | |
Bukovics | Dynamic Workflow Updates | |
Tuleuov et al. | Beginning C++ Compilers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150306 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20180421 |