КОНФИГУРИРУЕМЫЕ ПОЛЬЗОВАТЕЛЕМ БИБЛИОТЕКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
USER CONFIGURABLE SOFTWARE LIBRARIES

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение в целом относится к компьютерам и имеющим отношение к компьютерам технологиям. Более точно, настоящее изобретение относится к конфигурируемым пользователем библиотекам программного обеспечения.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Компьютерные и коммуникационные технологии продолжают продвигаться быстрыми шагами. Действительно, компьютерные и коммуникационные технологии вовлечены во многие аспекты повседневной жизни человека. Например, многочисленные устройства, используемые потребителями сегодня, содержат компьютер внутри устройства. Эти небольшие компьютеры входят в употребление в варьирующихся размерах и степенях изощренности. Эти небольшие компьютеры включают в себя все - от одного микроконтроллера до полнофункциональной завершенной компьютерной системы. Например, эти небольшие компьютеры могут быть однокристальным компьютером, таким как микроконтроллер; бортовым типом компьютера, таким как контроллер, типичным настольным компьютером, таким как совместимый с ПК фирмы IBM, и т.п.
Компьютеры типично содержат один или более процессоров в основе компьютера. Процессор(ы) обычно взаимосвязаны с разными внешними устройствами ввода и устройствами вывода и функционируют, чтобы управлять конкретным компьютером или устройством. Например, процессор в термостате может быть присоединен к клавишам, используемым для выбора температурных настроек, к отопительному котлу или воздушному кондиционеру для изменения температуры и к датчикам температуры для считывания и отображения текущей температуры на дисплее.
Многие приборы, устройства и т.п. включают в себя один или более небольших компьютеров. Например, термостаты, отопительные котлы, системы воздушного кондиционирования, холодильники, телефоны, пишущие машинки, автомобили, торговые автоматы и многочисленные разные типы промышленного оборудования, в настоящее время, типично содержат небольшие компьютеры или процессоры внутри них. Компьютерное программное обеспечение работает на процессорах этих компьютеров и выдает команды процессорам, каким образом выполнять определенные задачи. Например, компьютерное программное обеспечение, работающее в термостате, может предписывать воздушному кондиционеру останавливать работу, когда достигнута конкретная температура, или может предписывать нагревателю включаться, когда необходимо.
Одним из аспектов компьютерной технологии, который имеет большую важность, являются библиотеки программного обеспечения. Библиотеки программного обеспечения по существу являются предварительно скомпонованным программным кодом, который программист может включать в компьютерную программу во время выполнения (динамическое подключение библиотеки) или когда программа компилируется в машиночитаемый код (статическое подключение библиотеки). Библиотеки программного обеспечения являются дорогостоящими, так как они дают пользователю возможность создавать программное обеспечение быстрым образом. Программист не должен создавать каждый взятый в отдельности алгоритм, используемый в конкретной программе.
К сожалению, есть много проблем с современными библиотеками программного обеспечения. Например, библиотеки программного обеспечения часто распространяются в виде «черного ящика», так что программист не понимает, каким образом алгоритм в библиотеке выполняет рассматриваемую задачу. Как результат, программист не может полностью постичь ограничения или возможности алгоритма в библиотеке.
Более того, библиотеки типично не могут модифицироваться. Как результат, программист вынужден использовать функции, как они есть в библиотеке. Программист не может переделать библиотеку для удовлетворения конкретной ситуации. Это может создавать значительные проблемы и ограничения в определенных обстоятельствах. Например, при программировании для встроенных устройств, которые часто имеют значительные ограничения по памяти и обработке, программисты крайне обеспокоены размером конкретной функции, используемой программой. Функции из библиотек, которые значительны по размеру, просто не могут использоваться со встроенными устройствами, хотя эти функции могут содержать много кодовых сегментов, которые просто необходимы для программирования рассматриваемой задачи. Однако, так как программист не может изменять, заимствовать или даже видеть программный код в библиотеке, алгоритмы не могут использоваться для многих задач программирования.
В дополнение, когда библиотеки программного обеспечения распространяются и редактируемы, значительные проблемы могут создаваться, когда распространяются более новые версии библиотек. Например, когда версия 1 библиотеки программного обеспечения была отредактирована пользователем, может быть почти невозможным или по меньшей мере отнимающим очень много времени включать изменения или переделки, произведенные в отношении версии 1, в версию 2 библиотеки программного обеспечения.
Panagiotis С., "UNIX man pages: ar()", GNU Development Tools, 09.06.2001, стр.1-5, относится к способу обеспечения библиотеки программного обеспечения. Согласно данному документу библиотека программного обеспечения проектируется конфигурируемой в том плане, что файлы можно добавлять в эту библиотеку или удалять из нее.
Соответственно общий полезный результат может быть реализован усовершенствованными системами и способами для пользовательского конфигурирования библиотек программного обеспечения. В материалах настоящей заявки описаны некоторые примерные системы и способы для конфигурируемых библиотек программного обеспечения.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Раскрыт способ обеспечения конфигурируемой библиотеки программного обеспечения. Принимается пользовательский ввод для задания целевой настройки для по меньшей мере одной конфигурируемой настройки базовой библиотеки программного обеспечения наряду с требуемым целевым языком для комментариев. Базовая библиотека программного обеспечения спроектирована конфигурируемой и содержит читаемый человеком программный код. Идентифицируется по меньшей мере один кодовый сегмент, который должен добавляться в или удаляться из базовой библиотеки программного обеспечения на основании целевой настройки и требуемого целевого языка для комментариев. Модифицированная библиотека программного обеспечения создается изменением базовой библиотеки программного обеспечения в соответствии с целевыми настройками автоматическим образом с использованием компьютерной программы. Комментарии в модифицированной библиотеке программного обеспечения имеют место на требуемом целевом языке. Модифицированная библиотека программного обеспечения может содержать читаемый человеком программный код.
Способ дополнительно может содержать определение конфигурируемых настроек базовой библиотеки программного обеспечения. К тому же, базовая библиотека программного обеспечения может выводиться из первой библиотеки программного обеспечения. В одном из вариантов осуществления базовая и модифицированная библиотеки программного обеспечения могут содержать программный код для встроенного устройства. Целевая настройка может быть сконфигурирована для удаления по меньшей мере одного кодового сегмента из базовой библиотеки программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения.
Целевая настройка может быть сконфигурирована для добавления по меньшей мере одного кодового сегмента в базовую библиотеку программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения. Дополнительный кодовый сегмент, например, может содержать вызов во внешнюю библиотеку программного обеспечения или кодовый сегмент, который задает константы для использования в модифицированной библиотеке программного обеспечения.
Также раскрыта компьютерная система для выполнения вышеизложенных способов. Система может включать в себя процессор; память в электронной связи с процессором; и команды, хранимые в памяти для исполнения вышеизложенных способов. Также раскрыт машиночитаемый носитель, включающий в себя команды для выполнения вышеизложенных способов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Примерные варианты осуществления изобретения будут становиться более очевидными из последующего описания и прилагаемой формулы изобретения, взятых в соединении с прилагаемыми чертежами. С пониманием, что эти чертежи изображают только примерные варианты осуществления и, потому, не должны рассматриваться ограничивающими объем изобретения, примерные варианты осуществления изобретения будут описаны с дополнительной спецификой и детализацией посредством использования прилагаемых чертежей, на которых:
фиг.1 - структурная схема, иллюстрирующая один из вариантов осуществления системы для подготовки конфигурируемой библиотеки программного обеспечения;
фиг.2 - структурная схема, иллюстрирующая альтернативный вариант осуществления системы для подготовки конфигурируемой пользователем библиотеки программного обеспечения;
фиг.3 - структурная схема системы для подготовки конфигурируемой пользователем библиотеки программного обеспечения, в которой кодовые сегменты удаляются из базовой библиотеки программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения;
фиг.4 - структурная схема системы для подготовки конфигурируемой пользователем библиотеки программного обеспечения, в которой программные комментарии на определенном языке удаляются из базовой библиотеки программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения;
фиг.5 - структурная схема системы для подготовки конфигурируемой пользователем библиотеки программного обеспечения, в которой определения констант вставляются в базовую библиотеку программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения;
фиг.6 - структурная схема системы для подготовки конфигурируемой пользователем библиотеки программного обеспечения, в которой вызовы для инициализации внешних библиотек вставляются в базовую библиотеку программного обеспечения, чтобы создавать модифицированную библиотеку программного обеспечения;
фиг.7 - блок-схема последовательности операций, иллюстрирующая один из вариантов осуществления способа обеспечения конфигурируемой библиотеки программного обеспечения; и
фиг.8 - структурная схема, иллюстрирующая основные компоненты аппаратных средств, типично используемые в компьютерной системе.
НАИЛУЧШИЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Различные варианты осуществления изобретения далее описаны со ссылкой на чертежи, где одинаковые номера ссылок указывают идентичные или функционально подобные элементы. Варианты осуществления настоящего изобретения, которые в общих чертах описаны и проиллюстрированы на чертежах, могли бы быть скомпонованы и сконструированы в широком многообразии разных конфигураций. Таким образом, последующее более подробное описание нескольких примерных вариантов осуществления настоящего изобретения, которые представлены на чертежах, не подразумевается ограничивающим объем изобретения, который определяется формулой изобретения, а только является представляющим варианты осуществления изобретения.
Слово «примерный» используется в материалах настоящей заявки, исключительно чтобы означать «служащий в качестве примера, отдельного случая или иллюстрации». Любой вариант осуществления, описанный в материалах настоящей заявки как «примерный», необязательно должен истолковываться как предпочтительный или преимущественный над другими вариантами осуществления. Несмотря на то что различные аспекты вариантов осуществления представлены на чертежах, чертежи необязательно начерчены для представления в определенном масштабе, если не указано специально.
Многие признаки вариантов осуществления, раскрытых в материалах настоящей заявки, могут быть реализованы в качестве компьютерного программного обеспечения, электронных аппаратных средств или комбинации обоих. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные компоненты, как правило, будут описаны в показателях своих функциональных возможностей. Реализованы ли такие функциональные возможности в виде аппаратных средств или программного обеспечения, зависит от конкретного применения и проектных ограничений, накладываемых на всю систему. Специалисты могут реализовать описанные функциональные возможности отличающимися способами для каждого конкретного применения, но такие реализационные решения не должны интерпретироваться в качестве служащих причиной выхода за рамки объема настоящего изобретения.
В тех случаях, когда описанные функциональные возможности реализованы в качестве компьютерного программного обеспечения, такое программное обеспечение может включать в себя любой тип компьютерной команды или исполняемого компьютером кода, расположенных в пределах устройства памяти и/или передаваемых в виде электронных сигналов по системной шине или сети. Программное обеспечение, которое реализует функциональные возможности, ассоциированные с компонентами, описанными в материалах настоящей заявки, может содержать одиночную команду или многочисленные команды и может быть распределено по нескольким разным кодовым сегментам, среди разных программ и по нескольким устройствам памяти.
В качестве используемого в материалах настоящей заявки термин «вычислительное устройство» относится к любому типу электронного устройства, содержащего процессор, который типично выполняет арифметические или логические операции. Вычислительное устройство может включать в себя память (например, оперативное запоминающее устройство (ОЗУ, RAM), флэш-память и/или устройство хранения данных на жестких дисках). Вычислительное устройство может обрабатывать команды, хранимые в памяти. Вычислительное устройство, по выбору, может включать в себя другие компоненты, такие как интерфейсы связи (например, сетевая карта или модем), для поддержания связи с другими устройствами, устройства ввода для приема пользовательского ввода (например, клавиатуру, сенсорную панель или мышь) или устройства вывода (например, устройства звукового вывода, дисплейный экран) для предоставления информации пользователю. Дополнительно, должно быть отмечено, что вычислительное устройство может быть воплощено в качестве разных типов устройств, таких как настольный компьютер, сервер, планшетный ПК (персональный компьютер, PC), блокнотный компьютер, персональный цифровой секретарь (PDA), сотовый телефон или встроенное устройство.
Фиг.1 - структурная схема, иллюстрирующая альтернативный вариант осуществления системы 100 для подготовки конфигурируемой пользователем библиотеки программного обеспечения. В проиллюстрированном варианте осуществления конфигурируемая пользователем библиотека программного обеспечения показана в качестве «базовой библиотеки программного обеспечения», 104. Базовая библиотека 104 программного обеспечения может быть воплощена различными способами. Например, базовая библиотека 104 программного обеспечения может содержать исходный или читаемый человеком код. В качестве альтернативы базовая библиотека 104 программного обеспечения могла бы содержать двоичный или машиночитаемый код.
Базовая библиотека 104 программного обеспечения спроектирована конфигурируемой и может включать в себя или быть связанной с настройками или элементами управления программированием для аспектов редактирования базовой библиотеки 104 программного обеспечения. Базовая библиотека 104 программного обеспечения может изменяться пользователем для создания новой или модифицированной библиотеки 108 программного обеспечения. В одном из вариантов осуществления базовая библиотека 104 программного обеспечения распространяется в формате только для чтения из условия, чтобы ее содержимое могло просматриваться, но не редактироваться. В таком варианте осуществления пользователь библиотеки может модифицировать базовую библиотеку 104 программного обеспечения только посредством создания новой, модифицированной библиотеки 108 программного обеспечения.
Раскрытая система 100 дополнительно включает в себя компонент 112 пользовательского ввода для приема пользовательского ввода и формирования целевых настроек 114 для конфигурирования базовой библиотеки 104 программного обеспечения. Целевые настройки 114 управляют созданием модифицированной библиотеки 108 программного обеспечения с использованием базовой библиотеки 104 программного обеспечения. Пользовательский ввод может приниматься многочисленными способами компонентом 112 пользовательского ввода. Например, пользовательский ввод может содержать файл, сформулированный для управления конфигурируемыми настройками базовой библиотеки 104 программного обеспечения. В качестве альтернативы, целевые настройки 114 могут формироваться в ответ на взаимодействие пользователя с дисплейным экраном или другим устройством пользовательского интерфейса. Целевые настройки 114, сформированные посредством компонента 112 пользовательского ввода, принимаются в компоненте 116 конфигурируемых настроек.
Система 100 также включает в себя компонент 116 конфигурируемых настроек. Компонент 116 конфигурируемых настроек определяет (то есть идентифицирует), какие аспекты базовой библиотеки 104 программного обеспечения являются конфигурируемыми. Определение конфигурируемых аспектов базовой библиотеки 104 программного обеспечения может выполняться некоторым количеством разных способов. Например, может быть осуществлен доступ к файлу или компиляции данных, включающим в себя такую конфигурационную информацию. Компиляция данных может быть внутренней или внешней по отношению к базовой библиотеке 104 программного обеспечения. В качестве еще одного примера базовая библиотека 104 программного обеспечения может анализироваться для идентификации соответствующих метаданных, ключевых слов или переключателей, чтобы идентифицировать, какие аспекты базовой библиотеки 104 являются конфигурируемыми. Компонент 116 конфигурируемых настроек также может определять местоположение отдельных кодовых сегментов или областей программного кода базовой библиотеки 104 программного обеспечения, которая должна изменяться, например посредством номера строки или смещения в байтах.
Компонент 116 конфигурируемых настроек, в одном из вариантов осуществления, может осуществлять связь с компонентом 112 пользовательского ввода, чтобы указывать пользователю, какие настройки могут конфигурироваться, например через устройство отображения. Компоненты 112, 116 пользовательского ввода и конфигурируемых настроек могут быть интегрированы с базовой библиотекой 104 программного обеспечения или могут быть программами, отдельными друг от друга, 112, 116, и от базовой библиотеки 104 программного обеспечения.
Многие разные аспекты базовой библиотеки 104 программного обеспечения могут быть конфигурируемыми пользователем. В качестве примера, базовая библиотека 104 программного обеспечения могла бы содержать библиотеку функций для предоставления возможности связи между двумя электронными устройствами. В этом случае конфигурируемые настройки могли бы управлять количеством допустимых сокетов связи для программного обеспечения, которое должно создаваться.
В ответ на прием целевых настроек 114 компонент 116 конфигурируемых настроек формирует данные 118 модификации. Данные 118 модификации могут идентифицировать кодовые сегменты (например, программный код или комментарии в коде), которые могут добавляться в или удаляться из базовой библиотеки 104 программного обеспечения. Данные 118 модификации могут быть воплощены различными способами. Данные 118 модификации могли бы идентифицировать кодовые сегменты, которые должны удаляться, например идентифицируя диапазон номеров строк, которые должны быть удалены. В качестве альтернативы, данные 118 модификации могли бы идентифицировать отдельные кодовые сегменты, которые должны быть вставлены, при определенном смещении в байтах, внутри базовой библиотеки 104 программного обеспечения. В дополнение, данные 118 модификации могли бы идентифицировать кодовые сегменты, ассоциированные с конкретными метаданными, тегами или переключателями в пределах базовой библиотеки 104 программного обеспечения для удаления. Данные 118 модификации также могут включать в себя кодовые сегменты (в текстовом или двоичном виде) для включения в модифицированную библиотеку 108 программного обеспечения. Кодовые сегменты, которые должны быть добавлены, могут формироваться компонентом 116 конфигурируемых настроек или могут приниматься непосредственно от пользователя компонентом 112 пользовательского ввода.
Компонент 120 создания использует базовую библиотеку 104 программного обеспечения для создания модифицированной библиотеки 108 программного обеспечения в соответствии с данными 118 модификации. Модифицированная библиотека 108 программного обеспечения является модифицированной версией базовой библиотеки 104 программного обеспечения, специально приспособленной к проекту, для которого создавалась модифицированная библиотека 108 программного обеспечения. Модифицированная библиотека 108 программного обеспечения может содержать читаемый человеком или машиночитаемый программный код.
После создания модифицированной библиотеки 108 программного обеспечения программный код 126, который ссылается на модифицированную библиотеку 108 программного обеспечения, может быть скомпилирован с использованием компонента 130 компиляции, чтобы создавать машиночитаемый код 134. Модифицированная библиотека 108 программного обеспечения может динамически или статически подключаться к машиночитаемому коду.
Раскрытая система 100 обеспечивает существенные преимущества над традиционными системами. Во-первых, пользователь не вынуждается использовать базовую библиотеку 104 программного обеспечения при компилировании кода. Пользователь может приспосабливать библиотеку 104 для удовлетворения определенных потребностей рассматриваемой задачи программирования. Например, программист может удалять ненужный код из базовой библиотеки 104 программного обеспечения, чтобы рационализировать создаваемый машиночитаемый код 134. Пользователю не требуется включать в состав обширное количество алгоритмов и функций, которые просто не будут использоваться в машиночитаемом коде 134. Это может быть очень важным, особенно когда машиночитаемый код 134 должен использоваться со встроенным устройством, которое типично имеет ограниченный объем памяти и вычислительной мощности.
Во-вторых, сохраняется целостность базовой библиотеки 104 программного обеспечения. В одном из вариантов осуществления базовая библиотека программного обеспечения может распространяться в формате только для чтения из условия, чтобы она могла просматриваться, но не редактироваться программистом. Более того, создатель базовой библиотеки 104 программного обеспечения, в одном из вариантов осуществления, может управлять тем, какие аспекты базовой библиотеки 104 программного обеспечения могут модифицироваться конечными пользователями для создания модифицированной библиотеки 108 программного обеспечения. В дополнение, в одном из вариантов осуществления, пользователю может быть позволено просматривать код базовой библиотеки 104 программного обеспечения, чтобы точно понимать процедуры, используемые в ней. Возможность просматривать программный код в пределах базовой библиотеки 104 программного обеспечения дает пользователям библиотеки возможность лучше понимать выполняемый алгоритм и то, является ли он хорошо приспособленным для рассматриваемой задачи программирования.
В-третьих, модификация базовой библиотеки 104 программного обеспечения может быстро выполняться простым выбором конфигурируемых пользователем настроек. Посредством изменения нескольких простых конфигурируемых пользователем настроек могут производиться основательные и значительные изменения в отношении базовой библиотеки программного обеспечения. Соответственно настройки или изменения в отношении базовой библиотеки 104 программного обеспечения могут легко тиражироваться, если код для базовой библиотеки 104 программного обеспечения усовершенствован или модифицирован иным образом.
Фиг.2 - структурная схема, иллюстрирующая альтернативный вариант осуществления системы 200 для подготовки конфигурируемой пользователем библиотеки 204 программного обеспечения. Эта система 200 функционирует до некоторой степени подобно системе 100, показанной на фиг.1. В частности, целевые настройки 214 передаются из компонента 212 пользовательского ввода в компонент 216 конфигурируемых настроек. В ответ, данные 218 модификации передаются из компонента 216 конфигурируемых настроек в компонент 220 создания для управления созданием модифицированной библиотеки 208 программного обеспечения.
Однако в варианте осуществления, показанном на фиг.2, первая библиотека 222 программного обеспечения преобразуется 224 в базовую библиотеку 204 программного обеспечения. В этом случае базовой библиотекой 204 программного обеспечения, например, могут быть одна или более динамически подключаемых библиотек (DLL), созданных из первой библиотеки 222 программного обеспечения во время последовательности 224 операций предварительного преобразования. Как указано выше, базовая библиотека 204 программного обеспечения может содержать читаемый человеком или машиночитаемый код. В одном из вариантов осуществления базовые библиотеки 204 программного обеспечения, которые были созданы посредством последовательности 224 операций преобразования, могут распространяться по пользователям библиотек из условия, чтобы программный код для базовой библиотеки 204 программного обеспечения не раскрывался и не был непосредственно видимым пользователям библиотеки. В качестве альтернативы, базовые библиотеки 204 программного обеспечения, созданные последовательностью 224 операций преобразования, также могут формулироваться, чтобы предоставлять библиотеку программного обеспечения, которая более дружелюбна к пользователю или легче доступна пользователям библиотеки.
Как с предыдущим вариантом осуществления, базовая библиотека 204 программного обеспечения используется с компонентом 220 создания и данными 218 модификации для создания модифицированной библиотеки 208 программного обеспечения. Кроме того, компонент 230 компиляции может использоваться подобным образом, чтобы компилировать машиночитаемый код 234 с использованием модифицированной библиотеки 208 программного обеспечения и исходного кода 226, ссылающегося на такую библиотеку. Хотя базовая библиотека 204 программного обеспечения может распространяться в двоичном формате, видимость кода по-прежнему может присутствовать в модифицированной библиотеке 208 программного обеспечения. Это дает преимущество легкой доступности и дружественности по отношению к пользователю без удаления преимуществ способности просматривать источник библиотеки, как представлено в модифицированной библиотеке 208 программного обеспечения.
Фиг.3-6 раскрывают альтернативные варианты осуществления систем 300, 400, 500, 600 для подготовки конфигурируемых библиотек 304, 404, 504, 604 программного обеспечения. Эти альтернативные варианты осуществления описывают примеры типов модификаций или преобразований, которые могут выполняться над базовой библиотекой 304, 404, 504, 604 программного обеспечения. Примеры, раскрытые в материалах настоящей заявки, не являются ограничивающими, а только иллюстрируют типы модификаций, которые могут выполняться с использованием систем и способов, раскрытых в материалах настоящей заявки.
В каждой из этих систем 300, 400, 500, 600, как показано на фиг.1 и 2, компонент 312, 412, 512, 612 пользовательского ввода формирует целевые настройки 314, 414, 514, 614, которые принимаются компонентом 316, 416, 516, 616 конфигурируемых настроек. В свою очередь, компонент 316, 416, 516, 616 конфигурируемых настроек формирует данные 318, 418, 518, 618 модификации, которые принимаются компонентом 320, 420, 520, 620 создания. Компонент 320, 420, 520, 620 затем выпускает модифицированную библиотеку 308, 408, 508, 608 программного обеспечения на основании данных 318, 418, 518, 618 модификации и базовой библиотеки 304, 404, 504, 604 программного обеспечения. Как проиллюстрировано на фиг.2, базовая библиотека 304, 404, 504, 604 программного обеспечения могла бы выводиться из первой библиотеки 222 программного обеспечения. Для простоты программный код 226, ссылающийся на модифицированную библиотеку 208 программного обеспечения, компонент 230 компиляции и получающийся в результате машиночитаемый код 234 были изъяты из фиг.3-6.
Более точно, со ссылкой на фиг.3, раскрыта система 300 для создания модифицированной библиотеки 308 программного обеспечения, у которой определенные кодовые сегменты 340b-d были удалены из базовой библиотеки 304 программного обеспечения. В варианте осуществления, показанном на фиг.3, базовая библиотека программного обеспечения включает в себя четыре примерных кодовых сегмента 340a-d: алгоритм A 340a передачи, алгоритм B 340b передачи, алгоритм C 340c передачи и алгоритмы 340d защиты. Конфигурируемые настройки проиллюстрированного варианта осуществления включают в себя возможность включать в состав или удалять каждый один из этих кодовых сегментов.
В проиллюстрированной системе 300 целевые настройки 314 задают, что алгоритм A 340a передачи будет включен в модифицированную библиотеку 308 программного обеспечения, но что алгоритм B 340b передачи, алгоритм C 340c передачи и алгоритмы 340d защиты будут удалены из модифицированной библиотеки 308.
Получающиеся в результате данные 318 модификации идентифицируют отдельные строки кода, которые должны быть включены или удалены из базовой библиотеки 304 программного обеспечения. В альтернативном варианте осуществления только строки кода, которые должны удаляться, идентифицированы в данных 318 модификации.
Система 300 для удаления отдельных кодовых сегментов из базовой библиотеки 304 программного обеспечения может быть воплощена различными способами вне раскрытого варианта осуществления. Вариант осуществления, показанный на фиг.3, является только примером способа для достижения этого с использованием раскрытых систем и способов. Например, данные 318 модификации могут быть воплощены различными способами для идентификации конкретных кодовых сегментов. Кодовые сегменты 340 могут идентифицироваться, только в качестве примеров, смещением в байтах или метаданными, переключателями, тегами или ключевыми словами, идентифицирующими кодовые сегменты. Кроме того, должно быть понятно, что алгоритм A 340a передачи может включать в себя ссылки на другие кодовые сегменты 340b-d. Последовательность операций удаления других кодовых сегментов также может влечь за собой удаление этих ссылок или создание других модификаций в отношении алгоритма A 340a передачи.
Система 400, показанная на фиг.4, более точно иллюстрирует локализацию базовой библиотеки 404 программного обеспечения. Базовая библиотека 404 программного обеспечения включает в себя программные комментарии 440a-c на различных языках. В частности, она включает в себя комментарии 440a на английском, комментарии 440b на японском и комментарии 440c на китайском. Базовая библиотека 404 программного обеспечения включает в себя программный код 440d, ассоциированный с комментариями 440a-c.
Как показано, целевые настройки 414 задают, что комментарии 440a на английском и программный код 440d будут включены в модифицированную библиотеку 408 программного обеспечения. Целевые настройки 414, кроме того, задают, что комментарии 440b на японском и комментарии 440c на китайском будут исключены из модифицированной библиотеки программного обеспечения.
Данные 418 модификации ссылаются на метатеги в пределах базовой библиотеки 404 программного обеспечения, которые идентифицируют конкретный кодовый сегмент 440. Как указано, кодовые сегменты 440 (для включения или исключения) могли идентифицироваться, например, с использованием метатегов, номеров строк или смещений в байтах.
Раскрытая система 400 дает эффективный способ, чтобы пользователь удалял комментарии на определенных языках, которые могли бы только загромождать и затруднять понимание функций, определенных модифицированной библиотекой 408 программного обеспечения. Конечно, так как комментарии 440a-c программного обеспечения не включены в машиночитаемый код, базовая библиотека 404 программного обеспечения и модифицированная библиотека 408 программного обеспечения могли бы быть в удобном для восприятия пользователем формате в проиллюстрированном варианте осуществления.
Система, раскрытая на фиг.4, является только пояснительной для одного из способов локализации базовой библиотеки 404 программного обеспечения с использованием раскрытых систем и способов. В качестве примера, базовая библиотека 404 программного обеспечения может включать в себя многие разные типы языков, и комментарии на одном или более таких языков могут быть включены в модифицированную библиотеку 408 программного обеспечения. В дополнение, комментарии на предусмотренном языке, например комментарии 440a на английском, могли бы переводиться на новый язык с использованием доступной службы перевода, такой как служба перевода, предусмотренная всемирной поисковой системой Google из Mountain View, штат Калифорния, и включенная в модифицированную библиотеку программного обеспечения. Кроме того, программный код 440d потенциально мог бы переводиться, чтобы добавлять новый язык или иметь многочисленные варианты выбора языков, включенные в базовую библиотеку 404 программного обеспечения. Конечно, этот перевод может не быть ограниченным только комментариями, но потенциально мог бы переводить идентификаторы и символьные строки языка программирования, которые являются частью библиотеки, фактически давая возможность полной автоматической локализации библиотеки программного обеспечения.
В системе 500, показанной на фиг.5, компонент 516 конфигурируемых настроек принимает целевые настройки 514, определяющие константы 502 («переменные» с постоянным значением), которые формируют данные 518 модификации. В этом случае определяемыми константами являются «пи» и «е».
Константы 502 должны вставляться при определенном смещении 506a-b в байтах от принимаемого во внимание начала заданного файла в пределах базовой библиотеки 504 программного обеспечения. Соответственно базовая библиотека 504 программного обеспечения могла бы быть в двоичном виде. Если базовая библиотека программного обеспечения в двоичном виде, вставляемые постоянные 502 могли бы преобразовываться в двоичный вид компонентом 516 конфигурируемых настроек перед вставкой в модифицированную библиотеку 508 программного обеспечения. Смещение 506 в байтах могло бы определяться пользовательским вводом или посредством компонента 516 конфигурируемых настроек.
Модифицированная библиотека программного обеспечения, таким образом, включает в себя программный код 540a, найденный в базовой библиотеке 504 программного обеспечения, и, к тому же, включает в себя определения 540b констант, созданные на основании пользовательского ввода 512.
Еще раз, вариант осуществления, показанный на фиг.5, является только показательным для команд, которые могут вставляться в модифицированную библиотеку 508 программного обеспечения с использованием раскрытых систем и способов. Например, могли бы задаваться многие разные типы констант, код конфигурирования для создания локальных или глобальных переменных или других программных команд или функций мог бы вставляться в модифицированную библиотеку 508 программного обеспечения.
Фиг.6 иллюстрирует сценарий, где новый код, который не был частью программного кода 640a в базовой библиотеке 604 программного обеспечения, добавляется в модифицированную библиотеку 608 программного обеспечения, чтобы фактически добавлять новый код в библиотеку, который не был там изначально. Например, когда изготовитель писал базовую библиотеку 604 программного обеспечения, изготовитель не знал, что другие библиотеки могли бы быть в распоряжении конечного пользователя-разработчика. Однако, когда конечный пользователь-разработчик получает базовую библиотеку 604 программного обеспечения, он или она будет осведомлен о специальных библиотеках 650a-b, которые имеются в наличии в системе или целевом приемнике конечного пользователя. С настоящими системами и способами конечный пользователь-разработчик затем будет способен добавлять новый код в базовую библиотеку 604 программного обеспечения, который взаимодействует со специальными библиотеками 650a-b. Например, он или она могут добавлять новый код, который инициализирует специальные библиотеки 650a-b. В качестве альтернативы, когда последовательность операций создания инициирована компонентом 620 создания, другие имеющие отношение модули могут обнаруживаться системой 600. В таком случае система 600 создавала бы новый код для инициализации таких модулей и включения такого вновь созданного кода в модифицированную библиотеку 608 программного обеспечения.
Более точно - в системе 600, показанной на фиг.6, прием целевых настроек 614 в компоненте 616 конфигурируемых настроек дает начало созданию программного кода для инициализации внешней библиотеки программного обеспечения, библиотеки A 650a из модифицированной библиотеки 608 программного обеспечения. Типично, библиотека будет включать в себя специальные процедуры, которые будут инициализировать библиотеку для использования. Эти процедуры могли бы идентифицироваться в качестве части базовой библиотеки 604 программного обеспечения, которая порождает библиотеку A 650a. Когда модуль 616 конфигурируемых настроек принимает запрос для включения в состав инициализации библиотеки A 650a, он может запрашивать базовую библиотеку 604 программного обеспечения, которая создает библиотеку A 650a, и запрашивать имя процедуры инициализации. Это имя процедуры затем включается в данные 618 модификации. В качестве альтернативы, базовая библиотека 604 программного обеспечения для библиотеки A 650a могла бы включать в себя список других данных 618 модификации, которые должны применяться.
Создание этого нового кода могло бы инициироваться системой 600 или могло бы инициироваться в ответ на пользовательский ввод. Например, пользовательский ввод мог бы задавать, что библиотеки определенного типа будут инициализироваться, специальные библиотеки будут инициализироваться или будут инициализироваться библиотеки, найденные на заданном устройстве хранения данных или в отдельном подкаталоге.
В проиллюстрированном сценарии доступны две внешние библиотеки: библиотека A 650a и библиотека B 650b. Таким образом, внешние библиотеки 650 могут быть в том же устройстве хранения данных, что и система 600, или могут быть доступными по сети или другому каналу электронной связи.
После этого компонент 616 конфигурируемых настроек создает программный код для инициализации внешней библиотеки A 650a. Этот программный код включен в данные 618 модификации. Данные 618 модификации дополнительно включают в себя точку вставки в виде номера строки. Точка вставки могла бы задаваться пользователем или могла бы определяться или идентифицироваться компонентом 616 конфигурируемых настроек.
В раскрытом варианте осуществления компонент 616 конфигурируемых настроек, таким образом, создает полностью новый код 640b, который не был представлен в базовой библиотеке 604 программного обеспечения или предусмотрен пользователем в прямой форме.
Вариант осуществления, показанный на фиг.6, является только иллюстративным для одного из способов обеспечения вновь созданного программного кода в модифицированную библиотеку 608 программного обеспечения. Компонент 616 конфигурируемых настроек может быть воплощен многими разными способами для создания разных типов программного кода на основании конфигурации базовой библиотеки 604 программного обеспечения или типов библиотек, которые доступны, либо других факторов. Например, добавление кодовых сегментов 640 или других библиотек в модифицированную библиотеку 608 программного обеспечения может давать начало модификациям других кодовых сегментов 340 или библиотек. Например, включение в состав библиотеки для поддержки отладки могло бы инициировать другие библиотеки или кодовые сегменты 640, чтобы модифицировать их самих для включения в состав поддержки отладки. Подобным образом, если модуль поддержки отладки удаляется, то поддержка отладки автоматически удаляется из других библиотек или кодовых сегментов 640.
Как указано выше, иллюстрации различных систем, показанных на фиг.3-6, не являются ограничением раскрытого изобретения. Взамен они подразумеваются предоставляющими иллюстрации гибкости и возможности раскрытых систем и способов. Многие разные типы модификаций или преобразований базовой библиотеки программирования в модифицированную программную библиотеку подпадают под объем раскрытых систем и способов. Один из выдающихся признаков этого изобретения состоит в том, что могут использоваться многие разные типы преобразований из условия, чтобы модифицированная библиотека программирования могла подгоняться к конкретным сценариям программирования.
Фиг.7 - блок-схема последовательности операций способа, иллюстрирующая один из вариантов осуществления способа 700 для подготовки конфигурируемой библиотеки 604 программного обеспечения. Сначала определяются 702 конфигурируемые настройки для базовой библиотеки 604 программного обеспечения. Настройки могут определяться 702 различными способами. Например, база данных или другое объединение данных, внешние или внутренние по отношению к базовой библиотеке программного обеспечения, могут включать в себя такие настройки и могут подвергаться извлечению информации для выработки такого определения 702. В качестве альтернативы, конфигурируемые настройки могут определяться 702, например, посредством анализа метаданных, тегов, переключателей или ключевых слов в пределах базовой библиотеки программного обеспечения.
Как пояснено выше, базовая библиотека 604 программного обеспечения может включать в себя читаемый человеком или машиночитаемый код. Базовая библиотека программного обеспечения может выводиться из первой библиотеки 222 программного обеспечения (показанной на фиг.2) и, например, может быть воплощена в качестве динамически подключаемой библиотеки.
Пользовательский ввод затем принимается 704, чтобы задавать целевые настройки 614 для конфигурируемых настроек базовой библиотеки программного обеспечения. Пользовательский ввод может приниматься с использованием одного или более из ведущих узлов систем пользовательского ввода. Например, конфигурируемые настройки могут отображаться на экране, и пользовательский ввод может приниматься с помощью клавиатуры, шарового манипулятора, сенсорного экрана или мыши. В качестве дополнительного примера, команды распознавания голоса могут использоваться для формирования пользовательского ввода.
Идентифицируется 706 по меньшей мере один кодовый сегмент, который должен добавляться в или удаляться из базовой библиотеки программного обеспечения. Кодовый сегмент, который должен добавляться, мог бы формироваться с использованием компонента конфигурируемых настроек или мог бы поставляться пользователем, как проиллюстрировано в связи с фиг.5 и 6. Кодовый сегмент мог бы удаляться, как проиллюстрировано в связи с фиг.3 и 4. Конечно, пользовательский ввод может задавать как добавление определенных кодовых сегментов, так и удаление других кодовых сегментов. В качестве используемого в материалах настоящей заявки термин «кодовые сегменты» не ограничен программным кодом, но может включать в себя комментарии или другие текстовые материалы в пределах базовой библиотеки программного обеспечения.
После этого модифицированная библиотека программного обеспечения создается 708 посредством изменения базовой библиотеки программного обеспечения в соответствии с целевыми настройками. Модифицированная библиотека 608 программного обеспечения создается компьютерной программой автоматическим образом, то есть вслед за приемом пользовательского ввода, никакого дополнительного вмешательства пользователя не требуется для создания модифицированной библиотеки 608 программного обеспечения.
Как пояснено в связи с фиг.1 и 2, машиночитаемый код 234 может компилироваться 710 с использованием программного кода (то есть исходного кода), который ссылается на модифицированную библиотеку программного обеспечения.
Фиг.8 - структурная схема, иллюстрирующая основные компоненты аппаратных средств, типично используемые в компьютерной системе 801. Проиллюстрированные компоненты могут быть расположены в одной и той же физической конструкции или в отдельных корпусах или конструкциях.
Компьютерная система 801 включает в себя процессор 803 и память 805. Процессор 803 управляет работой компьютерной системы 801 и может быть воплощен в виде микропроцессора, микроконтроллера, цифрового сигнального процессора (ЦСП, DSP) или другого устройства, известного в данной области техники. Процессор 803 типично выполняет логические и арифметические операции на основании команд программного кода, хранимых в памяти 805.
В качестве используемого в материалах настоящей заявки термин память 805 в общих чертах определен как любой электронный компонент, допускающий хранение электронной информации, и может быть воплощен в качестве постоянного запоминающего устройства (ПЗУ, ROM), оперативного запоминающего устройства (ОЗУ, RAM), магнитных дисковых запоминающих носителей, оптических запоминающих носителей, устройств флэш-памяти в ОЗУ, внутриплатной памяти, заключенной процессором 803, памяти СППЗУ (EPROM, стираемого программируемого ПЗУ), памяти ЭСППЗУ (EEPROM, электрически стираемого программируемого ПЗУ), регистров и т.п. Память 805 типично хранит команды программного кода и другие типы данных. Команды программного кода могут выполняться процессором 803 для реализации некоторых или всех способов, раскрытых в материалах настоящей заявки.
Компьютерная система 801 типично также включает в себя один или более интерфейсов 807 связи для осуществления связи с другими электронными устройствами. Интерфейсы 807 связи могут быть основаны на технологии проводной связи, технологии беспроводной связи или обеих. Примеры разных типов интерфейсов 807 связи включают в себя последовательный порт, параллельный порт, универсальную последовательную шину (USB), адаптер сети Ethernet, интерфейс шины стандарта IEEE 1394, интерфейс шины интерфейса малых компьютерных систем (SCSI), порт связи с передачей в инфракрасном диапазоне (IR), адаптер беспроводной связи технологии Bluetooth и так далее.
Компьютерная система 801 типично также включает в себя один или более устройств 809 ввода и одно или более устройств 811 вывода. Примеры разных видов устройств 809 ввода включают в себя клавиатуру, мышь, микрофон, устройство дистанционного управления, клавишу, джойстик, шаровой манипулятор, сенсорную панель, световое перо и т.п. Примеры разных видов устройств 811 вывода включают в себя динамик, принтер и т.п. Один из отдельных типов устройства вывода, которое типично включено в компьютерную систему, является устройство 813 отображения. Устройства 813 отображения, используемые с вариантами осуществления, раскрытыми в материалах настоящей заявки, могут использовать любую пригодную технологию проецирования изображений, такую как электронно-лучевая трубка (ЭЛТ, CRT), жидкокристаллический индикатор (ЖКИ, LCD), светоизлучающий диод (СИД, LED), газоразрядная плазма, электролюминесценция или тому подобное. Контроллер 815 дисплея также может быть предусмотрен для преобразования данных, хранимых в памяти 805, в текст, графику и/или движущиеся изображения, (надлежащим образом) показанные на устройстве 813 отображения.
Конечно, фиг.8 иллюстрирует только одну из возможных конфигураций компьютерной системы 801. Могут использоваться различные другие архитектуры и компоненты.
Компьютерная система 801 может быть воплощена различными способами, такими как персональный компьютер, портативный компьютер, сервер, планшетный ПК или встроенное устройство. Компьютерная система 801, работающая в соединении с программным обеспечением или встроенной программой, может использоваться для выполнения систем и способов, раскрытых в материалах настоящей заявки.
Информация и сигналы могут быть представлены с использованием любой из многообразия разных технологий и методик. Например, данные, инструкции, команды, информация, сигналы, биты, символы и символы псевдошумовой последовательности, которые могут упоминаться по всему вышеприведенному описанию, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами или любым их сочетанием.
Различные иллюстративные логические блоки, компоненты, модули, схемы и этапы алгоритмов, описанные в связи с вариантами осуществления, раскрытыми в материалах настоящей заявки, могут быть реализованы в виде электронных аппаратных средств, компьютерного программного обеспечения или сочетаний обоих. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше, как правило, в показателях их функциональных возможностей. Реализованы ли такие функциональные возможности в виде аппаратных средств или программного обеспечения, зависит от конкретного применения и проектных ограничений, накладываемых на всю систему. Специалисты могут реализовать описанные функциональные возможности отличающимися способами для каждого конкретного применения, но такие реализационные решения не должны интерпретироваться в качестве служащих причиной выхода за рамки объема настоящего изобретения.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с вариантами осуществления, раскрытыми в материалах настоящей заявки, могут быть реализованы или выполнены с помощью процессора общего назначения, цифрового сигнального процессора (ЦСП), специализированной интегральной схемы (ASIC), сигнального устройства программируемой пользователем вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретной вентильной или транзисторной логики, дискретных компонентов аппаратных средств или любого их сочетания, предназначенного для выполнения функций, описанных в материалах настоящей заявки. Процессором общего применения может быть микропроцессор, но в альтернативном варианте процессор может быть любым традиционным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также может быть реализован в виде комбинации вычислительных устройств, например сочетания ЦСП и микропроцессора, множества микропроцессоров, одного или более микропроцессоров в соединении с ЦСП-ядром, или любой другой такой конфигурации.
Этапы способа или алгоритма, описанные в связи с вариантами осуществления, раскрытыми в материалах настоящей заявки, могут быть воплощены непосредственно в аппаратных средствах, в программном модуле, выполняемом процессором, или в сочетании этих двух. Программно-реализованный модуль может находиться в памяти ОЗУ, флэш-памяти, памяти ПЗУ, памяти СППЗУ, памяти ЭСППЗУ, регистрах, на жестком диске, съемном диске, CD-ROM (ПЗУ на компакт диске) или любой другой разновидности запоминающего носителя, известной в данной области техники. Примерный запоминающий носитель присоединен к процессору из условия, чтобы процессор мог считывать информацию с и записывать информацию на запоминающий носитель. В альтернативном варианте запоминающий носитель может быть интегральным по отношению к процессору. Процессор и запоминающий носитель могут находиться в ASIC. ASIC может находиться в пользовательском терминале. В альтернативном варианте процессор и запоминающий носитель могут находиться, в виде дискретных компонентов, в пользовательском терминале.
Способы, раскрытые в материалах настоящей заявки, содержат один или более этапов или действий для выполнения описанного способа. Этапы и/или действия способа могут взаимно обмениваться один с другим, не выходя за рамки объема настоящего изобретения. Другими словами, пока определенный порядок этапов или действий не требуется для надлежащей работы варианта осуществления, порядок и/или использование определенных этапов и/или действий могут модифицироваться, не выходя за рамки объема настоящего изобретения.
Несмотря на то что были проиллюстрированы и описаны отдельные варианты осуществления и применения настоящего изобретения, должно быть понятно, что изобретение не ограничено точной конфигурацией и компонентами, раскрытыми в материалах настоящей заявки. Различные модификации, изменения и варианты, которые будут очевидны специалистам в данной области техники, могут производиться в компоновке, работе и деталях способов и систем по настоящему изобретению, раскрытому в материалах настоящей заявки, не выходя за рамки сущности и объема изобретения.