RU2439664C2 - Модель фазирования прикладной среды - Google Patents

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

Info

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
Application number
RU2007139779/08A
Other languages
English (en)
Other versions
RU2007139779A (ru
Inventor
Аршад Ф. АХМАД (US)
Аршад Ф. АХМАД
Брэд М. ОЛЕНИК (US)
Брэд М. ОЛЕНИК
Клеменс А. ШИПЕРСКИ (US)
Клеменс А. ШИПЕРСКИ
Дэвид Г. ХАНТ (US)
Дэвид Г. ХАНТ
Грегори Л. ХЬЮЗ (US)
Грегори Л. ХЬЮЗ
Симеон КРЭН (US)
Симеон КРЭН
Уилльям А. МАНИС (US)
Уилльям А. МАНИС
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2007139779A publication Critical patent/RU2007139779A/ru
Application granted granted Critical
Publication of RU2439664C2 publication Critical patent/RU2439664C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring 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, в которой атрибут фазового ограничения содержит одно из следующего: ограничение обращения, ограничение конструирования и ограничение ссылки.
RU2007139779/08A 2005-04-29 2006-04-20 Модель фазирования прикладной среды RU2439664C2 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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