Современные подходы и методы моделирования изменяемых программных систем (1187429), страница 6
Текст из файла (страница 6)
w = weightTA(e, f, extent(f)) - weightTA(e, f, exclusion(f))}.
3.3.3 Сравнение текстов
Так же используется сравнение текстов, чтобы извлечь рекомендации, которые не были обнаружены системой типов и топологическим анализом.
Основной идеей является вычисление похожести различных подстрок со словарем данной feature.
recommendTC = {(e, f, weightTC(e, vocb(extent(f)), vocb(exclusion(f))))}.
3.3.4 Интеграция подходов
Для каждого элемента кода извлекается приоритет рекомендации посредством слияния приоритетов всех трех рекомендательных механизмов. Используется оператор wa wb = wa + wb - wa wb для слияния приоритетов. Таким образом, фрагменты, рекомендованные несколькими механизмами имеют высший приоритет. Итоговый приоритет вычисляется как wTS wTA wTC
4. Вычислительный эксперимент
4.1 Итоговый алгоритм
Приоритет каждой рекомендации строится на основе всех 3-х рекомендательных механизмов.
Данное Variability mining решение – система зависимостей, система типов, топологический анализ и текстовое сравнение – реализовано в виде плагина для Eclipse.
Для разработки нового Product Line кода используются следующие шаги:
1. Описывание необходимых features и их взаимосвязей.
2. Выделение стартовых точек, которые относятся к необходимым features.
3. Расширение feature кода, следуя рекомендациям системы LEADT. LEADT предоставляет список приоритезированных рекомендаций для каждой feature.
4. Переписывание аннотированного кода для дальнейшего построения вариабельной системы для данного Product Line.
4.2 Численная оценка рекомендательной системы
Чтобы оценить качество LEADT рекомендации численно, измеряется полнота и точность в заданных условиях. Полнота – это процент найденного признаками кода в сравнении с общим размером кода, измеряемого в строчках. Точность – это процент правильных рекомендаций в сравнении с общим числом рекомендаций в системе.
4.2.1 Общее описание
Критическим элементом эксперимента измерения полноты и точности является эталонный код (содержащий правильное сопоставление кусков кода к соответсвующим features). Неправильный эталонный код привел бы к неправильным результатам как для полноты, так и для точности. Чтобы оценка качества системы была обьективной – эталонный код самостоятельно не разрабатывается, так как это могло бы повлиять на результат эксперимента. Вместо этого берутся программы, которые были ранее декомпозированы другими разработчиками.
После выбора эталонного кода, оценка происходит следующим образом. Сначала создается модель вариабельности, переиспользуются имена и зависимости из эталонного кода. Затем добавляются стартовые точки для каждого признака. После этого начинается процесс Variability mining всех признаков по очереди. Используются рекомендации с наивысшим приоритетом, а в случае равного приоритета, берется рекомендация, которой соотетствует наибольший фрагмент кода. Если в соответствии с эталонным кодом рекомендуемый фрагмент принадлежит признаку – аннотация добавляется, иначе добавляется отрицательная аннотация. Процесс итеративно повторяется до тех пор, пока рекомендации не закончатся, или пока не наступит какой-то другой критерий остановки. После остановки определяется полнота, сравниваются результирующие аннотации с эталонным кодом и точность, сравнения числа правильных и неправильных рекомендаций.
Существуют разные стратегии определения стартовых точек. В данной работе предлагается стратегия, исключающая влияние экспериментатора. Применяется средство информационного извлечения FLAT (Feature Location and Textual Tracing Tool), чтобы определить стартовую точку поиска кода для данного признака. Затем запускается очередь с названием признака, а FLAT возвращает список полей и методов, из которых выбирается первый правильный результат.
Требуется определить, когда остановить процесс mining для признака (критерий остановки). Так как разработчик не может провести сравнение с эталонным кодом, то возможными индикаторами остановки являются: низкий приоритет оставшихся рекомендаций или много неправильных рекомендаций подряд. В нашем случае, процесс Variability mining останавливается после 10 неправильных рекомендаций подряд.
4.2.2 Эталонный код
В качестве эталонного кода, по которому можно проверить эффективность алгоритма, в работе используется open source библиотека Prevayler, которая была вручную декомпозирована на признаки.
4.2.3 Результаты эксперимента
Оценка качества в рекомендательной системе LEADT состоит в определении полноты и точности предоставленных рекомендаций.
Полнота в среднем равнялась - 98%, а точность - 78%.
Результат стабильный и не зависит от эталонного кода. Высокий результат полноты показывает, что можно находить большинство признаков почти полностью, даже с текущим подходом выбора одной стартовой точки для каждого признака. Исследуя ненайденный алгоритмом код, становится понятно, что эти фрагменты не связаны с остальным кодом, то есть являются мертвым кодом.
Полученная точность является достаточно высокой, что сильно облегчает работу разработчика.
4.2.4 Вывод и дальнейшие перспективы
Таким образом, была построена рекомендательная система, которая помогает моделировать новую вариабельную систему с помощью переиспользования Legacy-кода.
Эксперименты показали, что данная рекомендательная система может направлять разработчиков в процессе Variability mining в больших реальных кодах.
Эксперименты предоставили много идей о дальнейшей доработке LEADT.
Заключение
-
Исследованы и проанализированы теоретические и прикладные подходы и методы моделирования вариабельности в программных системах и их семействах.
-
Описан процесс создания вариабельных систем современных софтварных продуктов с учетом их вариабельности и конфигурирования из компонент повторного использования.
-
Предложен подход к извлечению вариабельности из Legacy-кода. Поставлена цель создания рекомендательной системы, которая бы помогала разработчику в извлечении вариабельности из Legacy-кода для дальнейшего создания модели вариабельности. Проведен полный анализа качеств, которыми должна обладать данная рекомендательная система. Проведены эксперименты, которые численно показали эффективность и перспективность данного подхода к переиспользованию существующего кода.
ЛИТЕРАТУРА
1. Чернецки К., Айзенекер У. Порождающее программирование. Методы, инструменты, применение.– Издательский дом Питер. – М.– СПб. – Харьков. – Минск.– 2005.– 730 с.
2. Pohl K., Böckle G., Linden F.J. Software Product Line Engineering: Foundations, Principles and Techniques. – New York: Springer–Verlag. – 2005. – 437 p.
3. G. Lenz, C. Wienands. Practical Software Factories in .NET, 2006.
4. D. Gasevic, D. Djuric, V. Devedzic. Model Driven Architecture and Ontology Development. Springer, 2006.
5. M. Simos, D. Creps, C. Klinger, L. Levine, and D. Allemang. Organization domain modelling (ODM) guidebook version 2.0. Technical Report STARS-VC-A025/001/00, Synquiry Technologies, Inc, 1996.
6. K. C. Kang, S. G. Cohen, J. A. Hess, W. E. Novak, and A. S. Peterson. Feature-oriented domain analysis (FODA) feasibility study. Technical Report CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, 1990.
7. J. Coplien, D. Hoffman, and D. Weiss. Commonality and variability in software engineering. IEEE Software, pages 37-45, November/December 1998.
8. J.-M. DeBaud and K. Schmid. A systematic approach to derive the scope of software product lines. In 21st International Conference on SE, ICSE-99, pages 34-43. ACM, 1999.
9. R. R. Macala, L. D. Sutckey, and D. C. Gross. Managing domain-specific product-line development. IEEE Software, 13, May 1996.
10. P. Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4es), December 1996.
11. J. K. Ousterhout. Scripting: Higher level programming for the 21st century. IEEE Computer, March, 1998.
12. Holger Knublauch, Ray W. Fergerson, Natalya F. Noy, and Mark A. Musen. The Protege OWL Plugin: An open development environment for semantic web applications. In 3rd International Semantic Web Conference (ISWC 2004), Hiroshima, Japan, 2004.
13. Czarnecki K., Antklevicz M. Multilevel Customization in Application Engineering//Communication of the ACM.-№12.-2006.-pp.61-65
14. J. Bergey, L. O’Brian, and D. Smith. Mining existing assets for software product lines. Technical Report Technical Report CMU/SEI-2000-TN-008, SEI, Pittsburgh, PA, 2000.
15. Trinidad P., Benavides D., Ruiz–Cort´es A. Improving Decision Making in Software Product Lines Product Plan Management // in: Proc. of the ADIS 2004 Workshop on Decision Support in SE, CEUR Workshop Proceedings. – 2004. – Vol. 120. – P. 51–58.
16. Sinnema M., Deelstra S. Classifying Variability Modeling Techniques //Elsevier J. on Inf. and Software. Technology. – 2007. – 49.
17. Asikainen T., Männistö T., Soininen T. A Unified Conceptual Foundation for Feature Modelling //in Proc. of the 10th Int. Software Product Line Conf. (SPLC 2006). – 2006. – P. 31 – 40.
18. Липаев В.В. Программная инженерия сложных заказных программных продуктов. Учебное пособие.-Мак-Пресс, Москва, 2014.-308с.
19. Грищенко В.Н., Лаврищева Е.М. Методы и средства компонентного программирования // Кибернетика и системный анализ.– 2003.– №1.– С. 39–43.
20. Лаврищева Е.М., Грищенко В.Н. Сборочное программирование. Основы индустрии программных продуктов. – К.: Наук. думка, 2009. – 372 с.
21. Лаврищева Е.М., Петрухин В.А. Методы и средства инженерии программного обеспечения. – М.: МОН РФ, 2007. – 415 с.
22. Лаврищева Е.М., Слабоспицька О.А., Коваль Г.І., Колесник А.А. Теоретические аспекты управления вариабельностю в семействах программных систем. – Весник КНУ, серия физ.–мат.наук. – 2011. – №1. – С. 151–158.
23. Daniel Oberle, Andreas Eberhart, Steffen Staab, and Raphael Volz. Developing and Managing Software Components in an Ontology-based Application Server
24. Елманова Н. Введение в Data Mining. Компьютер Пресс, 2003.
25. Sanjay Soni, Zhaohui Tang, Jim Yang. Performance Study of Microsoft Data Mining Algorithms.
26. Лаврищева Е.М. Software Engineering компьютерных систем. Парадигмы, Технологии, CASE-средства программирования.-Наук. Думка, 2014.-284с.
27. Лаврищева Е.М. Парадигмы программирования сборочного типа в программной инженерии.- Межд. Конференция –УкрПРОГ-2014, Сборник трудов.-с.76-92.
28. Лаврищева Е.М. Теория объектно-компонентного моделирования программных систем. 48 с.
29. Лаврищева Е.М. Программная инженерия. Учебно-методическое пособие в 3-х частях. М.: МФТИ.
30. Christian Kastner, Alexander Dreiling, Klaus Ostermann. Variability Mining with LEADT