Современные подходы и методы моделирования изменяемых программных систем (1187429)
Текст из файла
Министерство образования и науки Российской Федерации
МОСКОВСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет)
ФАКУЛЬТЕТ УПРАВЛЕНИЯ И ПРИКЛАДНОЙ МАТЕМАТИКИ
КАФЕДРА ИНФОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ
Специализация 011600 «Прикладные физика и математика»
“СОВРЕМЕННЫЕ ПОДХОДЫ И МЕТОДЫ МОДЕЛИРОВАНИЯ ИЗМЕНЯЕМЫХ ПРОГРАММНЫХ СИСТЕМ”
Выпускная квалификационная работа
(магистерская диссертация)
Выполнила:
студентка 176 группы Газизуллина Р.К.
Научный руководитель:
д.ф.-м.н., профессор Лаврищева Е.М.
Москва – 2017
Содержание
Введение ………………………………………………………………….. 3
Глава 1. Анализ подходов к созданию вариабельных систем .…….….. 5
1.1 Моделирование вариабельности в требованиях с помощью
диаграмм характеристик …………………………………………………. 6
1.2 Моделирование вариабельности в требованиях с помощью механизмов UML ……………………………………………………... 6
1.3 Модель К. Похла SPLE ………………………………………………. 7
1.4 Система генерирующего программирования K.Chetrnetski …….… 9
1.5 Система конфигурационной сборки Grid ……………………….…. 12
1.6 Конвейерная сборка разнородных объектов ………………….…… 14
Глава 2. Моделирование вариабельной системы………………………. 16
2.1 Функции управления вариабельностью…………………………….. 17
2.2 ОКМ моделирование программных систем и их семейств ……….. 20
2.3 Технология изготовления программного продукта ……………….. 26
2.4 Процесс обеспечения вариабельности……………………………… 29
Глава 3. Извлечение вариабельности из Legacy-кода…………………. 31
3.1 Цель работы…………………………………………………………... 31
3.2 Сущность подхода Variability Mining……………………………… 33
3.3 Базовая модель……………………………………………………….. 34
Глава 4. Вычислительный эксперимент………………………………... 37
4.1 Итоговый алгоритм………………………………………………….. 37
4.2 Численная оценка рекомендательной системы………………….... 37
Заключение ……………………………………………………………… 40
Список использованной литературы …………………………………... 41
ВВЕДЕНИЕ
Программные системы начали разрабатываться в 80–годах прошедшего столетия для организации вычислений математических, экономических и других задач на ЭВМ. Базовым элементом таких систем были отдельные программы, подпрограммы и др. Ранее разработанные модули и программы становились готовыми для использования и накапливались в библиотеках стандартных программ или в банках модулей.
В эти годы Эдсгер Дейкстра впервые ввел термин семейство программ. Он означал совокупность программ, которые обладают общими функциональными характеристиками, каждая из которых может изменяться независимо друг от друга. Программы и модули семейства описывались в языках программирования и собирались из них с использованием процедур, функций, подпрограмм и т.п. Изменения вносились в любые элементы программ семейства на интуитивном уровне, а затем они повторно объединялись в одну систему.
Одновременно возникло понятие программная система, как совокупность отдельных программных объектов, которые реализуют взаимосвязанные функции некоторого программного обеспечения для выполнения в заданной операционной среде. А так же понятие - семейство программных систем – это совокупность программных систем, которые определяются общим множеством понятий и свойств, присущих всему семейству, и множеством отдельных специальных свойств, которые присущи каждому отдельному члену семейства предметной области.
С начала 2000–х годов институт программной инженерии (SEI) США ввел термин семейство программных продуктов или продуктовая линия (Product Lines). Эти термины идентичны и определены в словаре ISO/IEC FDIS 24765:2009(E) – Systems and Software Engineering Vocabulary как «группа продуктов или услуг, которые имеют общее управляемое множество свойств, удовлетворяющих потребностям определенного сегмента рынка или вида деятельности».
Таким образом, классическое определение семейства программных систем эволюционировало к семейству продуктов, изготовляемых на продуктовых, технологических линиях фабрик производства программных систем из готовых продуктов, которые накапливаются в библиотеках.
Многолетние исследования проблем индустрии программных продуктов и их семейств, показал, что одной из ключевых проблем обеспечения работоспособности и качества программных продуктов является сопровождение продукта с целью выполнения и обнаружения различных ошибок и внесения изменений с сохранением функциональности продукта. Особенно остро этот вопрос стоит в системах, которые изготовлены старыми традиционными способами и не ориентированы на развитие новых возможностей.
В связи с этим крупные производители общесистемных и коммерческих программных продуктов подошли вплотную к реализации проблемы создания изменяемых, так называемых, вариабельных программных продуктов.
Для обеспечения изменчивости отдельных элементов семейства программных продуктов Клаус Похл ввел понятие вариабельности. Вариабельность – это свойство продукта (системы) к расширению, изменению, приспособлению или конфигурированию с целью использования в определенном контексте и обеспечения последующей его эволюции.
Понятие вариабельности начало широко применяться при создании программных продуктов, программных систем и их семейств, а также при совершенствовании работающих Legacy-systems, в том числе операционных систем (Unix, Linux и др.). Вопросам формализации понятия вариабельности для класса указанных систем, подходам к интеллектуализации (представления и извлечения знаний из готовых действующих систем) и методам реализации программных систем и их семейств с помощью готовых ресурсов и reuses посвящена данная работа.
Глава 1. АНАЛИЗ ПОДХОДОВ К СОЗДАНИЮ ВАРИАБЕЛЬНЫХ СИСТЕМ
Производители общесистемных и коммерческих программных продуктов подошли вплотную к реализации проблемы создания вариабельных программных продуктов. Эта проблема стоит в центре внимания разработчиков и научных специалистов. Появились много статей и сделанных докладов на конференциях (SPLE – Software Product Line Engineering, 2004 –2014; ICTERI, 2006 –2013; Reusebility, 1994–2013, Vamos, 2005-2014 и др.), посвященных новым подходам к созданию вариабельных систем разного рода и интенсивно используемых систем типа операционных систем.
Многолетние исследования проблем индустрии программных продуктов показали, что одной из ключевых проблем обеспечения работоспособности и качества программных продуктов является сопровождение продукта с целью выполнения и обнаружения различных ошибок и внесения изменений с сохранением функциональности продукта. Особенно остро этот вопрос стоит в системах, которые изготовлены старыми традиционными способами и не ориентированы на развитие новых возможностей.
В связи с этим крупные производители общесистемных и коммерческих программных продуктов подошли вплотную к реализации проблемы создания изменяемых, или другими словами, вариабельных программных продуктов. Эта проблема стала в центре внимания разработчиков и научных специалистов. Появились статьи и доклады, которые обсуждались на разных научных конференциях, посвященных новым подходам к индустрии программных продуктов и вариабельности в частности (SPLE – Software Product Line Engineering, 2004 –2014; ICTERI, 2006 –2013; Reusebility, 1994–2014 и др.).
В рамках исследований в области индустрии программных продуктов изучались методы и процессы производства программных продуктов, программных систем и их семейств на продуктовых линиях (Product Lines), а также механизмы вариабельности для управления введением и реализацией вариантов артефактов семейства программных систем (Software Product Line) [1]. Проводился анализ новых подходов и методов SPLE к построению программных продуктов на основе модели характеристик (Feature Model) продукта из артефактов, компонент повторного использования, а также отдельных приложений в составе семейства программных систем [2–5].
Анализ показал, что работы по созданию систем, их версий из вариантов артефактов, компонент повторного использования и характеристик модели вариабельности программного продукта, в мировой индустрии ведутся по следующим основным направлениям.
1.1. Моделирование вариабельности в требованиях с помощью диаграмм характеристик
Данное моделирование осуществлено в системе FODA [6], которая базируется на подходах featureRSEB, Forfamel, RequiLine, CBFM и др.
FODA (Feature-oriented domain analysis) является основоположником в сфере создания вариабельных систем и является простой моделью с признаками, которые организованы с использованием “состоит из” и “обобщение/специализация” отношений, используя И/ИЛИ граф. Модель разделяется на пространство задач и решений, которые в свою очередь используют цель, контекст использования и атрибуты качества; способности, рабочую среду и конструктивные особенности (Рис. 1).
Рис.1. Схема моделирования программных систем в FODA
1.2. Моделирование вариабельности c помощью механизмов UML
UML (Unified Modeling Language) включает сценарии использования (use cases) [7, 8]. Этот язык был первоначально реализован в Rational Rose, а затем оформлен как стандарт IBM Rational и консорциума OMG (Object Management Group) в виде объектной модели. UML начали применять многие фирмы-производители программного обеспечения. UML – это диаграммный язык документирования и моделирования систем. В нем графовая модель системы задается набором Use Case диаграмм вида: варианты использования (use case diagrams); классы (class diagrams); поведение (behavior diagrams); взаимодействие (interaction diagrams); состояние (statechart diagrams); деятельности (activity diagrams), реализации (implementation diagrams) и др. Модель системы – это архитектура системы, которую трансформируют к программным текстам отдельных элементов в языках С++, Pascal, Basic и др. Фактически промышленных продуктов средствами UML не было создано, а только некоторые экспериментальные системы.
1.3. Модель К. Похла SPLE
Технология SPLE (Software Product Line Engineering) обеспечивает производство вариабельных программных продуктов и их семейств. Она формировалась более 8 лет и экспериментально отработана на ряде коммерческих продуктов. Технология SPLE представлена в базовой работе К. Похла и 12 соавторов [1] в институте SEI USA. Отдельные аспекты индустрии систем, касающиеся производства вариабельных продуктов, нашли отражение в статьях и докладах специалистов на научно-технических конференциях SPLE (2006–2013), ICTERI (2007–2013), Reusebility (1998–2013) и др.
Клаус Похл ввел понятие вариабельности в виде модели характеристик (Feature Model) для элементов системы, помечаемых вариантными точками для изготовления программного продукта.
Модель характеристик FM формируется в процессе разработки программного продукта аналитиками и разработчиками и включает общие функциональные и нефункциональные характеристики элементов системы (рис.2), которые используются членами семейства при решении соответствующих задач. Она имеет несколько видов представления – в домене (семействе) и в отдельных приложениях этого семейства.
Задача обеспечения вариабельности программного продукта базируется на методах разработки и конфигурирования продукта (product configuration) из готовых reuses и процессов управления конфигурацией (configuration management), направленных на определение и внедрение эффективных процедур разработки и эволюции систем, а также их адаптации к новым условиям функционирования в современных гетерогенных средах [2].
Рис.2 – Структура и связи в модели характеристик
К главным аспектам обеспечения вариабельности программного продукта и систем отнесены:
– моделирование вариабельности на наивысшем уровне характеристик объектов, которые имеют вариантные характеристики. Целью подходов моделирования является представление вариабельности таким способом, который улучшает понимание задач и функций системы и возможность управлять ими;
– реализация вариабельности архитектуры системы посредством механизмов вариабельности на уровнях ее реализации (или она будет реализована в момент определения архитектуры программной системы или во время процессов разработки продукта). Соответствующее решение принимается аналитиками и разработчиками программной системы с учетом их собственного опыта, задач домена и механизмов теории обеспечения вариабельности;
– управление вариабельностью связано с планированием, контролем и регуляцией в ходе жизненного цикла объектов и системы в целом, которые ориентированы на изменяемость.
SPLE подход обеспечивает процесс создания программного продукта из базовых элементов, которые называют, компонентами повторного использования. К ним относятся – reuses, assets, application и др.
Данный SPLE подход направлен на производство программного продукта из отдельных элементов семейства программных продуктов и компонентов повторного использования с вариантами, на снижение стоимости и увеличение производительности труда разработчиков программной системы за счет компонентов повторного использования и внесения изменений, как в отдельные элементы, так и в саму систему. При производстве программных продуктов из готовых элементов и компонент повторного использования, используется метод систематического изменения компонент повторного использования по модели характеристик FM для варьирования ими в структуре программного продукта. Данный метод стал эффективным средством для поддержки адаптивности программной системы.
1.4 Система генерирующего программирования K.Chetrnetski Данная система [13] осуществляет моделирование архитектуры системы в пространстве проблем и решений (рис.3) средствами feature-oriented подхода. Его основу составляют характеристики семейства, которые отображаются в модели характеристик его членов (компоненты повторного использования, программные системы, reuses и др.) и семейства в целом.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.