Способы генерации ключей подписи и хранилища ключей

👁 182 просмотров
  1. Основные положения электронной подписи приложений
  2. Способы генерации ключей подписи и хранилища ключей
  3. Разница между хранилищами *.jks и *.keystore
  4. Ручная подписка APK
  5. Подписка APK на Google Play
  6. Соображения подписи, безопасности и удаление подписки из сборки APK
  7. Автоматизация процесса подписи на этапе сборки APK
  8. Автоматизация подписи гибридных приложений Android

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

Если вы решите управлять и защищать свой собственный ключ подписи приложения и хранилище ключей, вы подпишете свои APK с помощью своего ключа подписи приложения. Если вы решите использовать Google Play App Signing для управления и защиты своего ключа подписи и хранилища ключей, вы подпишете APK с помощью своего ключа загрузки.

Создание ключа и хранилища ключей при помощи встроенного мастера IDE Android Studio

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

  1. В панели меню нажать на Build > Generate Signed APK;
  2. Выбрать модуль из выпадающего меню и нажать Next;
  3. Нажать на Create new для создания нового ключа и хранилища ключей;
  4. В окне New Key Store предоставить информации о распространителе в лице вас, как разработчика

Keystore(Хранилище ключей)

  • Key store path: Выберите местонахождение, где было создано хранилище ключей;
  • Password: Создайте и подтвердите пароль безопасности для хранилища ваших ключей.

Key(ключ)

  • Alias: Введите идентификационное название для вашего ключа;
  • Password: Создайте и подтвердите пароль безопасности для вашего ключа. Этот пароль должен отличаться от пароля хранилища ключей в целях безопасности;
  • Validity (years): Установите длину времени в годах, в течении которого данный ключ будет валиден. Ваш ключ может иметь валидность до 25 лет. В течении этого времени у вас есть возможность выпускать обновления и подписывать приложение данным ключом и это служит жизненным циклом приложения.
  • Certificate: Введите некоторую информацию для вашего сертификата. данная информация не показывается в вашем приложении, но включается в ваш сертификат, как часть файла APK.
Создание нового хранилища ключей в Android Studio.
  • Закончив форму, нажмите «ОК».

Создание ключа и хранилища ключей при помощи консольных утилиты keytool в составе Java SDK

Для данного метода генерации ключа нам понадобится утилита keytool. Ее можно найти по адресу C:\Program Files\Java\jdk1.x.x_xxx\bin. Утилита может создавать новые ключи и показывать информацию о уже существующих ключах в файле хранилища ключей.

К примеру выясним, какие ключи есть в хранилище debug.keystore, который расположен по пути C:\Users\WebSofter\.android, используем команду list. С помощью параметров keystore и storepass укажем имя файла хранилища и пароль к хранилищу

keytool -list -keystore debug.keystore -storepass android

Замечание. Если команда keytool вызывает ошибку, что такая команда не найдена, то это значит, что путь к данной программе не добавлен в переменные среды Windows и это следует исправить.

Команда нам показывает, что в данном хранилище хранится один ключ с алиасом androiddebugkey, и создан он был 11.11.2016. Этот ключ и используется Android SDK для подписи нашего приложения, когда формируется debug — APK. Хранилище и ключ имеют одинаковый пароль — android.

Теперь создадим свой собственный ключ, которым мы могли бы подписать release — APK, т.е. unaligned — APK или иначе говоря, неподписанный релиз APK.

Для создания используется подкоманда genkey и к ней идут свои параметры

keytool -genkey -v -keystore keys.keystore -keyalg RSA -keysize 2048 -storepass spassword -alias keyname1 -keypass keypassword1 -dname “CN=John Doe O=WebSofter C=RU” -validity 10000

Параметры в данной команде имеют следующие предназначения:

  • keystore — имя файла хранилища
  • storepass — пароль к хранилищу
  • alias — алиас создаваемого ключа
  • keypass — пароль к ключу
  • dname — информация о владельце ключа
  • validity — срок действия ключа (в днях)

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

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

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

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

keytool -genkey -keystore keys.keystore -keyalg RSA -keysize 2048 -alias keyname2 -validity 10000

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

Команду list можно еще выполнить с параметром v. Этот параметр добавляет информативности

Как можно заметить, выводится полная информация о владельце сертификата, дата создания, дата истечения срока и т.д.

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

Другие методы создания и подписи

Пожалуй, сюда можно добавить такие инструменты, как:

  • apk-signer — простой инструмент командной строки для подписи apk
  • APK Signing Tool — этот инструмент с оконным интерфейсом позволяет вам подписать APK с вашим хранилищем ключей. Вы можете переопределить хранилище демо-версий и использовать свое собственное хранилище ключей перед загрузкой приложения в Google Play.
  • APK Signer — инструмент с оконным интерфейсом упрощает создание файла хранилища ключей.

Что дальше? Дальше — подписать APK

Продолжайте вручную подписывать APK по статье «Ручная подписка APK», если вы хотите сгенерировать APK, подписанный вашим новым ключом, нажав «Ok», или нажмите «Cancel», если вы хотите только генерировать ключ и хранилище ключей и не подписывать APK.

Если вы хотите использовать подписку на Google Play по статье «Подписка APK на Google Play», перейдите к разделу «Управление ключами подписи приложения» и следуйте инструкциям по настройке подписки на Google Play.

Основные положения электронной подписи приложений

👁 99 просмотров
  1. Основные положения электронной подписи приложений
  2. Способы генерации ключей подписи и хранилища ключей
  3. Разница между хранилищами *.jks и *.keystore
  4. Ручная подписка APK
  5. Подписка APK на Google Play
  6. Соображения подписи, безопасности и удаление подписки из сборки APK
  7. Автоматизация процесса подписи на этапе сборки APK
  8. Автоматизация подписи гибридных приложений Android

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

Сертификаты и хранилища ключей

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

Когда файл APK подписывается, то инструмент подписи прикрепляет сертификат публичного ключа к приложению с расширением APK. Сертификат публичного ключа обслуживается также, как и отпечаток пальца(«fingerprint» ), который уникально ассоциируется с распространяемым приложением APK и с соответствующему приватному ключу владельца APK. Это помогает Android гарантировать, что будущие обновления приложения с форматом APK можно будет аутентифицировать(владелец может авторизироваться к учетной записи Google Play) и что все изменения приложения придут от оригинального автора, который это приложение разработал. Ключ, используемый для создания сертификата называется ключом подписи приложения.

Хранилище ключей или так называемый keystore — это бинарный файл. который содержит один или нескольких приватных ключей.

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

 

Подписка отладочной сборки APK (debug build APK)

Когда проект запускается в режиме отладки, то среда Android Studio или Cordova автоматически подписывает наш файл APK с debug — сертификатом, который генерируется инструментами Android SDK. В первый раз, когда запускается проектируемое приложение в режиме debug в Android Studio или через консоль Cordova, то Android SDK автоматически создает хранилище debug — ключей и в него сертификаты ключей, задав им свои пароли. Данное хранилище расположено по пути $HOME/.android/debug.keystore.

Из-за того, что debug — сертификаты созданы инструментами построения и они небезопасны для проектирования полноценного приложения, то большинство магазинов приложений, включая и Google Play не принимают APK — файлы, подписанные с debug — сертификатом для публикации.

Android Studio и Cordova автоматически сохраняет вашу информацию debug — подписки в конфигурации подписки приложения, поэтому вам не нужно вводить его каждый раз, когда вы отлаживаете приложение. Конфигурация подписки — это объект, содержащий всю необходимую информацию для подписания APK, включая путь к хранилищу ключей, пароль к хранилищу ключей, имя ключа и пароль к ключу. Вы не можете напрямую редактировать конфигурацию debug — подписки, но вы можете конфигурировать то, как вы смогли бы подписывать релиз(release) — построение.

Release — конфигурация, при котором приложение не подписывается по умолчанию после построения. APK, полученное в процессе данной конфигурации необходимо настроить на подпись сертификатом подписи, который мы создаем, как распространитель приложения. Debug — это конфигурация, которая подписывается по умолчанию debug-сертификатом автоматически в процессе построения и отладки, поэтому, вы могли бы заметить, что приложение построенное в конфигурации debug при прошествии некоторого времени перестает работать, хотя, вы его год или два назад построили — это все дело подписки. Время debug — подписки ограничено временем разработки и отладки приложения и это время может быть разным у каждого SDK.

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

Истечение срока действия отладочного сертификата

Ваш собственный сертификат используется для подписи вашего же APK и для него можно индивидуально установить время истечения срока жизненного цикла приложения, после чего приложения нельзя будет устанавливать на мобильные устройства, а вот что касается сертификата debug, то его дата истечения около 365 дней с даты его сборки. Когда дата данного сертификата истекает, то выбрасывается ошибка построения приложения.

Для того, чтобы решить проблему истечения времени debug — сертификата просто нужно удалить файл debug.keystore, который расположен по пути:

  • ~/.android/ на OS X и Linux
  • C:\Documents and Settings\<user>\.android\ на Windows XP
  • C:\Users\<user>\.android\ на Windows Vista и Windows 7, 8, и 10

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

Управление вашими ключами подписки

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

Использование подписи Google Play App для добавления и обновления приложений APK

При использовании Google Play Signing вы будете иметь 2 ключа: ключ подписи приложения(app signing key) и ключ выгрузки(upload key). Google управляет и защищает ключи подписи приложения у себя на сервере и держит при себе ключ выгрузки и использует его для авторизации разработчика в сервисе Google Play Store для выгрузки приложения.

Когда вы выбираете подписку на Google Play, вы экспортируете и шифруете ключ подписи приложения, используя инструмент «Зашифровать секретный ключ», предоставляемый Google Play, а затем загружайте его в инфраструктуру Google. Затем вы создаете отдельный ключ для загрузки и регистрируете его в Google. Когда вы будете готовы к публикации, вы подписываете свое приложение с помощью загружаемого ключа и загружаете его в Google Play. Затем Google использует сертификат загрузки, чтобы подтвердить вашу личность, и повторно подписывает APK с вашим ключом подписи приложения для распространения, как показано ниже на рисунке . (Если у вас еще нет ключа подписи приложения, вы можете сгенерировать его во время процесса подписывания).

Подписание приложения с подпиской на Google Play
Подписание приложения с подпиской на Google Play

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

Дополнительные сведения о том, как выбрать приложение для входа в Google Play, см. В разделе Управление ключами подписи приложения.

Управление своим собственным хранилищем ключей

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

Если вы сами управляете собственными ключами подписки приложения и хранилищем ключей, когда вы подписываете ваш APK, то вы должны подписать его локально на вашем ПК, используя ваши ключи подписки приложений и загрузить подписанный APK прямо в Google Play Store для распространения сторонним пользователям, как показано на картинке

Подписание приложения при управлении собственным ключом подписи приложения
Подписание приложения при управлении собственным ключом подписи приложения

 

 

При составлении данной статьи использовался официальный ресурс Android Studio по ссылке.

Инструменты подписания приложений Android

👁 54 просмотров

В данном посте рассмотрим 2 инструмента, которые будут необходимы для подписания приложений на Android. Первым рассмотрим встроенный Wizard в Android Studio, а во втором — консольный вариант этого приложения, поставляемый в составе JDK.

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

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

Встроенный инструмент разработки Android Studio

Чтобы соз

 

Процесс публикации приложения Android в Google App Play

👁 34 просмотров

В этой ленте постов будут рассмотрены шаги, необходимые для настройки инструментов подписи, шаги процесса подписи и публикации приложений Android в Google Play.

  1. Основные положения электронной подписи приложений
  2. Способы генерации ключей подписи и хранилища ключей
  3. Разница между хранилищами *.jks и *.keystore
  4. Ручная подписка APK
  5. Подписка APK на Google Play
  6. Соображения подписи, безопасности и удаление подписки из сборки APK
  7. Автоматизация процесса подписи на этапе сборки APK
  8. Автоматизация подписи гибридных приложений Android

Создание новой области для виджета в WordPress

👁 50 просмотров

Если вы знакомы с темами WordPress, то вы знаете, что у многих тем есть виджетная боковая панель. Это означает, что вы можете добавлять, удалять и переупорядочивать виджеты на своем веб-сайте WordPress, используя раздел «Виджет» на панели инструментов WordPress.

В данном посте место для виджета создается в боковой панели, но это не обязательно может быть боковая панель, это может быть любой областью нашей темы.

Наличие виджетной боковой панели очень полезно, но вы можете также виджетировать другие части своей темы WordPress. Это очень легко сделать, и как только ваша тема будет изменена, вам будет легко или администратор WordPress просто поменять виджеты на разных частях веб-сайта.

Шаг 1: Добавляем код вывода виджета в теме

Первым шагом является добавление следующей строки кода к той части вашей темы, которую вы хотите активизировать. Обязательно измените «Name of Widget Area» на имя, которое имеет смысл для вас. Вам нужно будет сделать это с помощью редактора кода, а затем загрузить файл через FTP-клиент.

<?php
 
if ( is_active_sidebar( 'slider-widget' ) ) : ?>
    <div id="slider-widget-area" class="slider-widget-area widget-area" role="complementary">
    <?php dynamic_sidebar( 'slider-widget' ); ?>
    </div>
     
<?php endif; ?>

Шаг 2: Реадактируем файл functions.php

В папке темы WordPress должен быть файл functions.php. Если этого не происходит, просто создайте новый файл и назовите его «functions.php». В файле functions.php добавьте следующий код:

function wpb_widgets_slider_init() {
 
    register_sidebar( array(
        'name'          => 'Slider Widget Area',
        'id'            => 'slider-widget',
        'before_widget' => '<div class="slider-widget">',
        'after_widget'  => '</div>',
        'before_title'  => '<h2 class="slider-title">',
        'after_title'   => '</h2>',
    ) );
 
}
add_action( 'widgets_init', 'wpb_widgets_slider_init' );

Код выше должен быть обернут в PHP открытым и закрытым тегами (<? Php и?>, Соответственно). Если у вас уже есть файл functions.php, те теги уже будут там. Если вы создали его самостоятельно, вам придется добавить их.

Обязательно измените имя функции (в данном случае это «Name of Widget Area»), чтобы оно соответствовало имени, которое вы дали ему на шаге 1.

Параметры «before_widget» и «after_widget» позволяют указать, какой код вы хотите разместить до и после каждого виджета. В этом случае я добавляю div с классом для стилизации.

Параметры «before_title» и «after_title» позволяют вам обернуть заголовки виджетов в коде. В этом случае я завернул заголовок в тегах <h3> и </ h3> соответственно.

Шаг 3. Добавление виджетов

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

Теперь вы должны увидеть раздел «Name of Widget Area» в правой части экрана. Теперь просто нажмите и перетащите виджеты в окно, как ваша боковая панель!

Заставка видео в виде фона

👁 61 просмотров

Для решения данной задачи есть свободный плагин Vide по ссылке на гитхаб. В данном примере показан способ задать заставку в виде фона средствами html, jQuery и css

Второй вариант использования — более продвинутый. Здесь мы рандомно и программно показываем список видеоклипов по отдельности

Динамическое перемещение навигации вверх при скроллинге

👁 48 просмотров

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

 

Перспективы развития методологии функционального моделирования IDEF0

👁 58 просмотров
  1. Введение в IDEF0
  2. Концепция IDEF0
  3. Основные понятия методологии и языка IDEF0
  4. Синтаксис графического языка IDEF0
  5. Семантика языка IDEF0
  6. Свойства диаграм IDEF0
  7. Отношения между блоками диаграммы и другими диаграммами (окружающей средой)
  8. Правила построения диаграм
  9. Ссылочные номера (коды)
  10. Методика разработки функциональных моделей в среде IDEF0
  11. Организация процесса функционального моделирования и управления проектом
  12. Перспективы развития методологии функционального моделирования IDEF0

Из знакомства с IDEF0 следует, что эта методология представляет собой четко формализованный подход к созданию функциональных моделей — структурных схем изучаемой системы. Схемы строятся по иерархическому принципу с необходимой степенью подробности и помогают разобраться в том, что происходит в изучаемой системе, какие функции в ней выполняются и в какие отношения вступают между собой и с окружающей средой ее функциональные блоки. Совокупность схем (IDEF0 — диаграмм) образует модель системы. Эта модель носит качественный, описательный, декларативный характер. Она принципиально не может ответить на вопросы о том, как протекают процессы в системе во времени и в пространстве, каковы их характеристики и в какой мере удовлетворяются (или не удовлетворяются) требования, предъявляемые к системе. Все эти вопросы с неизбежностью возникают после того, как достигнут нижний уровень декомпозиции, т.е. обозначены « … функции нижнего уровня, с помощью которых и работает система».

В этом случае рекомендуется переходить к другим моделям — математическим, имитационным моделям, описывающим процессы в функциональных блоках IDEF0 — модели . По терминологии, принятой в исследовании операций, IDEF0 — модели относятся к классу концептуальных. Именно концептуальные модели являются основой построения математических моделей . Пытаться «нагрузить» концептуальную модель количественными соотношениями не следует — это разные уровни абстракции. Видимо, этим объясняется существование специальной методологии IDEF2, предназначен-ной для моделирования динамических процессов в функциональных моделях.

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

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

Распределительные модели могут найти применение в тех случаях, когда требуется оптимальное распределение ресурсов, например, финансовых или трудовых, необходимых для выполнения некоторого подмножества операций IDEF0 — модели. Модели теории массового обслуживания и управления запасами могут оказаться наиболее применимыми, поскольку многие процессы в организационно – экономических и производственно-технических системах — это процессы получения и обслуживания заявок на работы (услуги), а также процессы накопления, расходования, хранения и пополнения запасов, причем и те, и другие процессы необходимо вести с максимальной эффективностью.

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

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

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