ДВЕСТИ И К
......рае ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
VjyiOPCKOrO И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
DOI: 10.21821/2309-5180-2018-10-4-880-887
STRUCTURAL APPROACH TO IMPROVING THE RELIABILITY OF THE SOFTWARE OF INFORMATION SYSTEMS
K. P. Goloskokov1, M. Yu. Chirkova2
1 — Admiral Makarov State University of Maritime and Inland Shipping,
St. Petersburg, Russian Federation
2 — Saint Petersburg State University of Economics,
St. Petersburg, Russian Federation
The problems discussed in the article are mainly related to the provision of specified performance and reliability indicators of projected software packages for ship information systems through a structural approach to the main stages of the software life cycle. The relevance of this class of software is determined by the wide spread of such systems. Distinctive features of the software package, for ship information systems, are their large information and logical complexity, significant amounts ofprograms, work in a limited amount of computing resources, with high demands on the efficiency and reliability of their operation, as well as the pronounced industrial and technical nature of the software at all stages of the life cycle. The main problem associated with the creation of complex software systems is to increase the reliability of programs. One of the most promising ways to solve the problem is the implementation of a detailed regulated technological process. At the same time, the necessary level of regulation is achieved as a result of the structural approach to ensuring reliability at different stages of software life. Among the known ways to improve the reliability of software in this article, special attention is paid to the progressive methods of creating programs and the extensive use of automation tools. Because the underlying technology and its instrumental support is a structural approach to software development. The role and influence of the corresponding structural methods on reliability characteristics of the software functioning is shown. In general, the structural approach allows to increase the efficiency of work with software based on the implementation of the three provisions; ordering and unification of the structural construction of the software complex; ordering the work to eliminate errors; creation of conditions for effective application of technology of assembly programming on the basis of software reserve.
Keywords: ship information systems, reliability, efficiency, software, quality, structure, technological process, integrated indicator, objective function, errors, probability offailures.
For citation:
Goloskokov, Konstantin P., and Marina Yu. Chirkova. " Structural approach to improving the reliability of the software of information systems." Vestnik Gosudarstvennogo universiteta morskogo i rechnogo flota imeni admirala S. O. Makarova 10.4 (2018): 880-887. DOI: 10.21821/2309-5180-2018-10-4-880-887.
УДК 681.3.06
СТРУКТУРНЫЙ ПОДХОД К ПОВЫШЕНИЮ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ
К. П. Голоскоков1, М. Ю. Чиркова2
1 — ФГБОУ ВО «ГУМРФ имени адмирала С. О. Макарова», Санкт-Петербург, Российская Федерация
2 — Санкт-Петербургский государственный экономический университет, Санкт-Петербург, Российская Федерация
Рассматриваемая в статье проблематика в основном связана с обеспечением заданных показателей эффективности и надежности проектируемых комплексов программных средств для судовых информационных систем путем структурного подхода к основным стадиям жизненного цикла программного обеспечения. Актуальность этого класса программного обеспечения определяется широким распространением таких систем. Отличительными особенностями комплекса программ для судовых информационных систем являются их большая информационно-логическая сложность, значительные объемы программ, работа в условиях ограниченного объема ресурсов вычислительных средств при высоких требованиях к эффек-
ВЕСТНИК^Г
ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА ШЧГ^.
МОРСКОГО И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
тивности и надежности их функционирования, а также ярко выраженный производственно-технический характер программных средств на всех стадиях жизненного цикла. Основная проблема, связанная с созданием сложных программных систем, заключается в повышении надежности программ. Одним из перспективных путей решения проблемы является реализация детально регламентированного технологического процесса. При этом необходимый уровень регламентации достигнут в результате структурного подхода к обеспечению надежности на различных стадиях жизни программного обеспечения. Среди известных путей повышения надежности программного обеспечения в настоящей статье особое внимание уделяется прогрессивным методам создания программ и широкому использованию средств автоматизации, поскольку в основе рассматриваемой технологии и ее инструментальной поддержки лежит структурный подход к созданию программного обеспечения. Показана роль и влияние соответствующих структурных методов на характеристики надежности функционирования программного обеспечения. В целом структурный подход позволяет повысить эффективность работы с программным обеспечением на основе реализации трех положений: упорядочивания и унификации структурного построения программного комплекса; упорядочивания работ по устранению ошибок; создания условий для эффективного применения технологии сборочного программирования на основе программного задела.
Ключевые слова: судовые информационные системы, надежность, эффективность, программное обеспечение, качество, структура, технологический процесс, интегрированный показатель, целевая функция, ошибки, вероятность отказов.
Для цитирования:
Голоскоков К. П. Структурный подход к повышению надежности программного обеспечения информационных систем / К. П. Голоскоков, М. Ю. Чиркова // Вестник Государственного университета морского и речного флота имени адмирала С. О. Макарова. — 2018. — Т. 10. — № 4. — С. 880887. DOI: 10.21821/2309-5180-2018-10-4-880-887.
Введение (Introduction)
Проблема надежности программного обеспечения приобретает особое значение для эксплуатируемых в течение длительного периода времени в условиях экстремальных нагрузок судовых информационных систем реального времени. В них, в первую очередь, выделяются задачи, связанные с выбором и практическим определением показателей качества и критериев оценки качества, задачи анализа сложности программ и создания методов целевого управления сложностью и качеством программ, а также создание методов управления разработкой программ. Опыт создания судовых информационных систем и их эксплуатации привел к формированию такого направления, как надежность программного обеспечения.
Несмотря на общность основных положений надежности программного обеспечения и аппаратурной надежности, имеется принципиальная разница в причинах нарушения работоспособности программ [1] - [3]. Применительно к программному обеспечению данная причина заключается в том, что реальные данные, подлежащие обработке, не могут быть обработаны конкретной программой, ориентированной на этот вид обработки. Это связано с тем, что исходные данные, находясь в области допустимых значений, тем не менее, не попали в область, проверенную при тестировании и испытаниях. Под первичной ошибкой, как правило, понимается [4], [5] отклонение исходного текста программы от формализованного эталонного и требований заказчика. Искажения в программе — это те его элементы, которые подлежат корректировке. Первичная ошибка проявляется при сравнении результатов выполнения программ с каким-либо эталоном.
Основные задачи надежности программного обеспечения судовых информационных систем заключаются [6] - [8] в следующем:
- формирование основных понятий, используемых при исследовании показателей и параметров надежности программного обеспечения;
- выявление и исследовании основных факторов, определяющих характеристики надежности программ;
- исследование характеристик искажений исходных данных от различных типов источников и их влияние на надежность функционирования программ;
- исследование типов ошибок в программах и динамики изменения их количества при отладке;
РО
о
8
ДВЕСТИ И К
......рае ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
VjyiOPCKOrO И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
- разработка и исследование методов проектирования и структурного построения сложных программ, способствующих повышению надежности функционирования;
- исследование средств и методов контроля и защиты от искажений вычислительного процесса путем ввода различных видов избыточности и помехозащищенности, обеспечивающих автоматическое восстановление до исходного состояния;
- разработка методов прогнозирования характеристик надежности.
Методы и материалы (Methods and Materials)
С понятием надежности программ тесно связано понятие ошибок в программах. Результаты анализа ошибок в программах [9], [10] показали, что сложное программное обеспечение не может существовать в абсолютно отлаженном состоянии. Источниками снижения надежности программ являютсяошибки[П],[12],[13],вносимыевпрограммыприпроектировании,разработкеивнедрении. На стадии структурного проектирования возможны ошибки в определении структуры программ.
Взаимосвязь числа ожидаемых и оставшихся по окончании технологического цикла ошибок с системными показателями надежности определяется зачастую спецификой области использования программ. В общем случае системный показатель надежности программ — это вероятность безотказной работы в течение интервала времени t, т. е. до возникновения первого отказа:
P(t) = P(T > t). (1)
Вероятность безотказной работы позволяет определить следующие системные показатели:
- вероятность отказов
e(t) = 1 - P(t); (2)
- частоту отказов
a(t) = e(t) = 1 - P'(t); (3)
- интенсивность отказов
Ц0 = a(t)/[P(t)] = d lnP(t)/d(t). (4)
С этими системными показателями связано большинство показателей, конкретизированных по отдельным компонентам программного обеспечения и технологическим операциям.
Использование различных математических моделей надежности, предназначенных для оценки показателей надежности программ (например, числа ошибок, оставшихся невыявленными; времени, необходимого для выявления очередной ошибки; времени, необходимого для выявления всех ошибок с заданной вероятностью и др.), позволяет более обоснованно подходить к планированию отладки и испытания программ, глубже понимать природу ошибок и методы их предотвращения, методы эффективного использования избыточности. Каждая из этих моделей базируется на некоторых допущениях и ориентирована на определенный класс программ.
Среди указанных видов ошибок, снижающих надежность программ, особое место занимают первичные ошибки, являющиеся искажениями в исходном тексте программы. Так как первичные ошибки в программах вносятся в их исходные тексты, особое место для оценки надежности программного обеспечения отводится методу, основанному на анализе и контроле статистических характеристик исходных текстов программ.
Результаты (Results)
Использование структурного подхода как основы регламентации технологического процесса и конструктивной организации программ имеет двоякий характер. С одной стороны, структурирование приводит к повышению надежности программ. С другой стороны, структурирование приводит к увеличению затрат и связано с определенными потерями в характеристиках программ, что отрицательно сказывается на их надежности. Для сравнительной оценки и сопоставления двух
направлений действия структуризации предлагается упрощенная модель взаимосвязи структуризации программ и их надежности, позволяющая на качественном уровне сделать вывод о характере этой зависимости.
Считая, что общее приращение числа элементов программы при структуризации равномерно распределено среди каждых М модулей, обозначим среднее приращение на модуль как А:
А = Ш / М,
где ДЛ^ — увеличение числа элементов программы за счет структуризации.
Примем для упрощения распределения ошибок по всем элементам программы равномерной и норму ошибок К на один элемент программы постоянной, т. е.
К = п / N = сога^
где п — число ошибок в монолитном комплексе программ.
Введем понятие длины поиска ошибок Ь, считая, что для поиска ошибок необходимо просмотреть все N элементов комплекса программ. Тогда длина поиска п ошибок составит
Ь = N • п = Л2К.
Длину структурированного комплекса программ считаем равномерно распределенной на М модулей, длина каждого модуля равна (Л + АМ) / М. Число ошибок в структурированном комплексе программ составит (Л + АМ)К, тогда число ошибок на каждый модуль будет в среднем равно (Л+АМ)К / М.
Поиск ошибок, приходящихся на каждый модуль, происходит только внутри модуля. Это предположение основано на том, что структуризация преследует цель максимальной автоматизации каждого модуля. Таким образом, длина поиска Ьс всех ошибок в структурированном комплексе программ определяется соотношением
_ N + АМ (N + АМ)КМ _ (N+АМ)2К
Ьс — —
с ММ М
характеризующим взаимосвязь длины поиска полного количества ошибок.
С увеличением общего числа элементов при структуризации и, соответственно, числа ошибок, в комплексе программ М и А приобретают такие значения, при которых длина поиска ошибок в структурированном комплексе меньше длины поиска ошибок в монолитном комплексе программ. Для определения условий, при которых Ьс < Ь, можно ввести характеристику длины программного модуля Ло = N / М.
Решая систему уравнений:
Ьс = М N + А)2 К;
ь = т 2М,2
получаем, что Ьс < L, когдаМ > (1 + ДN / N12. Отсюда следует, что даже при увеличении в два раза объема структурированного программного комплекса его длина будет меньше.
Технологический процесс создания программ можно представить в виде совокупности операций, полученной в результате детализации регламентированной последовательности этапов и стадий применительно к конкретным условиям использования технологии. Такая регламентация и детализация технологического процесса создания программных средств направлена, в первую очередь, на достижение заданных технических показателей качества. В общей технологической схеме можно представить цель каждого этапа и операции в реализации тех или иных составляющих показателей качества, а затем сформировать интегрированный показатель. Такой интегрированный показатель качества создаваемого программного средства может быть определен в виде соотношения П = ^(Пг), где I = 1 ... т — номер показателя; Пг — значение 1-го показателя качества; т — число используемых показателей. Учитывая вклад и роль каждого технологического этапа или операции в достижении заданного пока-
шВЕСТНИК
...... ШШШ ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
МОРСКОГО И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
зателя, можно вывести соотношение для определения каждого 1-го показателя качества в виде П = F(П~l), где I = 1 ... k — текущий номер; k — количество этапов и операций. Цель технологического процесса заключается в оптимизации по некоторому заранее заданному критерию значения интегрального показателя качества:
Ц = ор^Ф(П(Ц))]; I = 1 ... т; I = 1 ... к.
Конкретный вид функций F и Ф определяется видом соответствующих показателей и особенностями технологии. Степень достижения целевой функции технологии определяет ее качество.
Введенные формализованные соотношения позволяют проводить количественные оценки при выборе конкретных технологий для создания программных средств. При этом системный показатель надежности — вероятность безотказной работы программы Р1 — определяется соотношением
Р = пц) = П ри 1=1
т. е. произведением вероятностей безотказной работы, рассчитываемых по формуле (1), достигаемых на каждом технологическом этапе. Применительно к рассматриваемым показателям качества целевая функция приобретает вид
к
Ц = тах[ П Р^,
где Рвычисляются по формуле (1). Аналогично для каждого технологического этапа можно рассчитать остальные показатели надежности Э(/), а(/), соответственно по формулам (2) - (4).
При использовании детализированных по технологическим операциям показателей надежности целевая функция учитывает интегрированность системного показателя. Показано, что все ошибки могут быть отнесены к четырем классам имеющихся в комплексах программ. На рисунке представлены эти классы и их процентное соотношение, а также указаны основные группы ошибок, предотвращаемых за счет методологии структурирования.
40%
30%
20%
Организация Пропускная
вычислительных способность
процессов
Группы ошибок, предотвращаемых структурным проектированием
ВЕСТНИК«
ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
МОРСКОГО И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА^
Обсуждение (Discussion)
Все технологии и средства автоматизации, поддерживающие процесс создания программного обеспечения судовых информационных систем, должны ориентироваться на решение проблемы повышения надежности функционирования. В настоящее время достигнуты значительные результаты в исследовании этих проблем, которые позволяют выделить пути повышения надежности программ указанного класса:
- разработка методологической теории надежности программного обеспечения, включающая исследования методов анализа надежности программ, выбор и обоснование критериев, исследование видов ошибок, причин их появления и законов распределения;
- разработка и внедрение программных методов проектирования сложных программ;
- разработка методов оценки и прогнозирования характеристик надежности, особенно на ранних стадиях создания программного обеспечения, методов своевременного предупреждения и локализации ошибок, методов измерения статистических характеристик, определяющих устойчивость функционирования и надежность программ;
- разработка методов сопровождения программ и их модернизации в условиях длительной эксплуатации.
Основным результатом проведенного авторами исследования является структурирование видов ошибок программного обеспечения. В результате структурного подхода к проектированию определен интегрированный показатель качества программного обеспечения и сформулирована цель технологического процесса, которая заключается в оптимизации по некоторому заранее заданному критерию значения интегрального показателя качества.
Заключение (Conclusion)
В статье сформированы основные принципы, используемые при исследовании показателей и параметров надежности программного обеспечения судовых информационных систем. Разработана и исследована методология проектирования и структурного построения сложных комплексов программ, способствующих повышению надежности их функционирования. Определена структурная надежность как степень достижения вероятности безотказной работы программ, обеспечиваемой на технологических этапах, поддерживающих структурный подход к созданию программ.
Результаты исследования необходимы при разработке сложных комплексов программного обеспечения судовых информационных систем. Представленная в статье методология структурного проектирования сложного комплекса программных средств уже на стадии проектирования позволяет предотвратить значительное количество ошибок за счет детализации по технологическим операциям показателей надежности.
СПИСОК ЛИТЕРАТУРЫ
1. Буторов В. В. Оценка надежности клиент-серверных приложений корпоративной системы управ ления предприятием / В. В. Буторов, С. В. Тынченко, Р. Ю. Царев // Фундаментальные исследования. — 2015. — № 5-3. — C. 488-492.
2. Кузнецов А. С. Многоэтапный анализ архитектурной надежности и синтез отказоустойчивого про граммного обеспечения сложных систем: монография / А. С. Кузнецов, С. В. Ченцов, Р. Ю. Царев. — Крас ноярск: Изд-во Сибирского федерального ун-та, 2013. — 143 с.
3. Любицын В. Н. Необходимость разработки надежного программного обеспечения как вызов совре менности / В. Н. Любицын // Вестник Южно-Уральского государственного университета. Серия: Компью терные технологии, управление, радиоэлектроника. — 2012. — № 23. — С. 26-29.
4. Царев Р. Ю. Модель анализа надежности распределенных вычислительных систем / Р. Ю. Царев А. Н. Пупков, М. А. Огнерубова [и др.] // Вестник Сибирского государственного аэрокосмического универ ситета им. академика М. Ф. Решетнева. — 2013. — № 1 (47). — С. 86-91.
вывести и к
......ШЩ- ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
МОРСКОГО И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
5. Павловская О. О. Статические методы оценки надежности программного обеспечения / О. О. Павловская // Вестник Южно-Уральского государственного университета. Серия: Компьютерные технологии, управление, радиоэлектроника. — 2009. — № 26 (159). — С. 35-37.
6. Гражданцев Е. В. Практическая реализация надежностного анализа архитектуры программной системы / Е. В. Гражданцев, М. А. Русаков, О. И. Завьялова, Р. Ю. Царев // Вестник Сибирского государственного аэрокосмического университета им. академика М. Ф. Решетнева. — 2008. — № 1 (18). — С. 37-40.
7. Царев Р. Ю. К проблеме оценки надежности сложных программных систем / Р. Ю. Царев, Е. Н. Штарик, А. В. Штарик // Журнал Сибирского федерального университета. Серия: Техника и технологии. — 2015. — Т. 8. — № 1. — С. 33-47.
8. Царев Р. Ю. Методология многоатрибутивного формирования мультиверсионного программного обеспечения сложных систем управления и обработки информации: монография / Р. Ю. Царев. — Красноярск: Изд-во Красноярского гос. аграрного ун-та, 2011. — 210 с.
9. Avizienis A. On the implementation of N-version programming for software fault-tolerance during program execution / A. Avizienis, L. Chen // Proc. IEEE Comput Soc Int Comput Software & Appl Conf, COMPSAC '77. — 1977. — Pp. 149-155.
10. Hac A. Using a software reliability model to design a telecommunications software architecture / A. Hac // IEEE Transactions on Reliability. — 1991. — Vol. 40. — Is. 4. — Pp. 488-494. DOI: 10.1109/24.93771.
11. Голоскоков К. П. Прогнозирование технического состояния изделий судовой электронной техники / К. П. Голоскоков. — СПб.: ПаркКом 2007. — 148 с.
12. Голоскоков К. П. Прогнозирование и оценка технического состояния сложных систем / К. П. Голо-скоков // Научно-технические ведомости Санкт-Петербургского гос. политехн. ун-та. — 2008. — № 53. — С. 164-168.
13. Голоскоков К. П. Формирование информационной базы для прогнозирования качества продукции / К. П. Голоскоков // Инновации. — 2009. — № S1. — С. 91-94.
REFERENCES
1. Butorov, V.V., S .V. Tynchenko, and R.Y. Tsarev. "Estimation of the reliability of client-server aplications for a corporate enterprise management system." Fundamental research 5-3 (2015): 488-492.
2. Kuznetsov, A.S., S.V. Chentsov, and R.Yu. Tsarev. Mnogoetapnyi analiz arkhitekturnoi nadezhnosti i sintez otkazoustoichivogo programmnogo obespecheniya slozhnykh sistem: monografiya. Krasnoyarsk: Sibirskii federal'nyi universitet, 2013.
3. Lyubitsyn, Vladimir Nickolaevich. "The necessity of reliable software development as a challenge of modern age." Bulletin of the South Ural State University. Series: Computer Technologies, Control, Radio Electronics 23 (2012): 26-29.
4. Tsarev, R.Yu., A.N. Pupkov, M.A. Ognerubova, M.V. Serzhantova, and N.A. Beschastnaya. "Model of analysis of distributed computing systems reliability." Vestnik Sibirskogo gosudarstvennogo aerokosmicheskogo universiteta im. akademika M.F. Reshetneva 1(47) (2013): 86-91.
5. Pavlovskaya, Olga Olegovna. "Static methods of assessment of software." Bulletin of the South Ural State
^ University. Series: Computer Technologies, Control, Radio Electronics 26(159) (2009): 35-37.
* 6. Grazhdantsev, E.V., M.A. Rusakov, O.I. Zavyalova, and R.Ju. Tsarev. "Practical realization of reliability
0
analysis of software architecture." Vestnik Sibirskogo gosudarstvennogo aerokosmicheskogo universiteta im. aka-
1 demika M.F. Reshetneva 1(18) (2008): 37-40.
g 7. Tsarev, Roman Yu., Elena N. Shtarik, and Andrey V. Shtarik. "Toward the Problem of Estimation of the
co Complex Software System Reliability." Journal of Siberian Federal University 8.1 (2015): 33-47.
8. Tsarev, R.Yu. Metodologiya mnogoatributivnogo formirovaniya mul'tiversionnogo pro-grammnogo obe-| specheniya slozhnykh sistem upravleniya i obrabotki informatsii: monografiya. Krasnoyarsk: Krasnoyar. gos. agrar.
un-t, 2011.
9. Avizienis, A., and L. Chen. "On the implementation of N-version programming for software fault-tolerance during program execution." Proc. IEEE Comput Soc Int Comput Software & Appl Conf, COMPSAC '77. 1977. 149-155.
10. Hac, Anna. "Using a software reliability model to design a telecommunications software architecture." IEEE Transactions on Reliability 40.4 (1991): 488-494. DOI: 10.1109/24.93771.
N
ВЕСТНИК*Г
ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА fiËBQ^^V
МОРСКОГО И РЕЧНОГО ФЛОТА ИМЕНИ АДМИРАЛА С. О. МАКАРОВА
11. Goloskokov, K.P. Prognozirovanie tekhnicheskogo sostoyaniya izdelii sudovoi elektronnoi tekhniki. SPb.,
2007.
12. Goloskokov, K. P. "Prognozirovanie i otsenka tekhnicheskogo sostoyaniya slozhnykh system." Nauch-no-tekhnicheskie vedomosti Sankt-Peterburgskogo gosudarstvennogo politekhnicheskogo universiteta 53 (2008): 164-168.
13. Goloskokov, Konstantin Petrovich. "Formation the information base for predicting product quality." Innovations S1 (2009): 91-94.
ИНФОРМАЦИЯ ОБ АВТОРАХ
INFORMATION ABOUT THE AUTHORS
Голоскоков Константин Петрович —
доктор технических наук, профессор ФГБОУ ВО «ГУМРФ имени адмирала С.О. Макарова»
198035, Российская Федерация, Санкт-Петербург,
ул. Двинская, 5/7
e-mail: [email protected]
Чиркова Марина Юрьевна —
кандидат экономических наук, доцент
Санкт-Петербургский государственный
экономический университет
191023, Российская Федерация, Санкт-Петербург,
ул. Садовая, 21
e-mail: [email protected]
Goloskokov, Konstantin P. —
Doctor of Technical Sciences, professor Admiral Makarov State University of Maritime and Inland Shipping
5/7 Dvinskaya Str., St. Petersburg, 198035,
Russian Federation
e-mail: [email protected]
Chirkova, Marina Yu. —
PhD, associate professor
Saint Petersburg State University
of Economics
21 Sadovaya Str., St. Petersburg, 191023, Russian Federation e-mail: [email protected]
Статья поступила в редакцию 14 июня 2018 г.
Received: June 14, 2018.