Preview

Труды Института системного программирования РАН

Расширенный поиск

Контекстно-ориентированная модель для разметки сквозной функциональности в исходном коде

https://doi.org/10.15514/ISPRAS-2016-28(2)-4

Аннотация

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

Об авторах

М. С. Малеванный
Донской Государственный Технический Университет
Россия


С. С. Михалкович
Южный Федеральный Университет
Россия


Список литературы

1. M. Eaddy, A. Aho, and G. C. Murphy, “Identifying, assigning, and quantifying crosscutting concerns” in Proceedings of the First International Workshop on Assessment of Contemporary Modularization Techniques, ser. ACoM ’07. Washington, DC, USA: IEEE Computer Society, 2007, p. 2. DOI: 10.1109/ACOM.2007.4.

2. A. J. Ko, B. A. Myers, M. J. Coblenz, and H. H. Aung, “An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks” IEEE Trans. Softw. Eng., vol. 32, no. 12, pp. 971–987, Dec. 2006. DOI: 10.1109/TSE.2006.116.

3. G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold, “An overview of AspectJ” in Proceedings of the 15thEuropean Conference on Object-Oriented Programming, ser. ECOOP’01. London, UK, UK: Springer-Verlag, 2001, pp. 327–353. (http://dl.acm.org/citation.cfm?id=646158.680006)

4. D. Batory, V. Singhal, J. Thomas, S. Dasari, B. Geraci, and M. Sirkin, “The genvoca model of software-system generators” IEEE Softw., vol. 11, no. 5, pp. 89–94, Sep. 1994. DOI: /10.1109/52.311067.

5. D. Batory, J. N. Sarvela, and A. Rauschmayer, “Scaling step-wise refinement” in Proceedings of the 25th International Conference on Software Engineering, ser. ICSE ’03. Washington, DC, USA: IEEE Computer Society, 2003, pp. 187–197. (http://dl.acm.org/citation.cfm?id=776816.776839).

6. S. Apel, C. Kastner, and C. Lengauer, “Featurehouse: Language independent, automated software composition” in Proceedings of the31st International Conference on Software Engineering, ser. ICSE ’09.Washington, DC, USA: IEEE Computer Society, 2009, pp. 221–231. DOI: 10.1109/ICSE.2009.5070523.

7. I. Schaefer, L. Bettini, F. Damiani, and N. Tanzarella, “Delta-oriented programming of software product lines” in Proceedings of the 14th International Conference on Software Product Lines: Going Beyond, ser. SPLC’10. Berlin, Heidelberg: Springer-Verlag, 2010, pp. 77–91. (http://dl.acm.org/citation.cfm?id=1885639.1885647).

8. W. Harrison and H. Ossher, “Subject-oriented programming: A critique of pure objects” in Proceedings of the Eighth Annual Conference on Object-oriented Programming Systems, Languages, and Applications, ser. OOPSLA ’93. New York, NY, USA: ACM, 1993, pp. 411–428. DOI: 10.1145/165854.165932.

9. M. C. Chu-Carroll, J. Wright, and A. T. T. Ying, “Visual separation of concerns through multidimensional program storage” in Proceedings of the 2nd International Conference on Aspect-oriented Software Development, ser. AOSD ’03. New York, NY, USA: ACM, 2003, pp. 188–197. DOI: 10.1145/643603.643623.

10. A. Bragdon, R. Zeleznik, S. P. Reiss, S. Karumuri, W. Cheung, J. Kaplan, C. Coleman, F. Adeputra, and J. J. LaViola, Jr., “Code bubbles: A working set-based interface for code understanding and maintenance” in Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, ser. CHI ’10. New York, NY, USA: ACM, 2010, pp. 2503–2512. DOI: 10.1145/1753326.1753706.

11. S. Chiba, M. Horie, K. Kanazawa, F. Takeyama, and Y. Teramoto, “Do we really need to extend syntax for advanced modularity?” in Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development, ser. AOSD ’12. New York, NY, USA: ACM, 2012, pp. 95–106. DOI: 10.1145/2162049.2162061.

12. C. Kästner, S. Apel, and M. Kuhlemann, “Granularity in software product lines” in Proceedings of the 30th International Conference on Software Engineering, ser. ICSE ’08. New York, NY, USA: ACM, 2008, pp. 311–320. DOI: 10.1145/1368088.1368131.

13. М.С. Малеванный, С.С. Михалкович, Реализация поддержки аспектов программного кода в интегрированных средах разработки. Современные информационные технологии: тенденции и перспективы развития, 2015, стр. 351–353.

14. M. P. Robillard and F. Weigand-Warr, “Concernmapper: Simple view-based separation of scattered concerns” in Proceedings of the 2005OOPSLA Workshop on Eclipse Technology eXchange, ser. eclipse ’05.New York, NY, USA: ACM, 2005, pp. 65–69. DOI: 10.1145/1117696.1117710.

15. М.С. Малеванный, Легковесный парсинг и его использование для функций среды разработки. Информатизация и связь, том 3, стр. 89–94, 2015.

16. ANSI C grammar. (http://www.quut.com/c/ANSIC-grammar-y.html)

17. PascalABC.NET. http://pascalabc.net/

18. В. И. Левенштейн. Двоичные коды с исправлением выпадений, вставок и замещений символов. Доклады Академий Наук СССР, 1965. 163.4, стр. 845–848.

19. R. A. Wagner and M. J. Fischer, “The string-to-string correction problem” J. ACM, vol. 21, no. 1, pp. 168–173, Jan. 1974. DOI: 10.1145/321796.321811.

20. Бондарев И. В., Белякова Ю. В., Михалкович С. С. Система программирования PascalABC.NET — 10 лет развития // XX Научная конференция «Современные информационные технологии: тенденции и перспективы развития». Материалы конференции. Ростов н/Д, 2013. С. 69–71.


Рецензия

Для цитирования:


Малеванный М.С., Михалкович С.С. Контекстно-ориентированная модель для разметки сквозной функциональности в исходном коде. Труды Института системного программирования РАН. 2016;28(2):63-78. https://doi.org/10.15514/ISPRAS-2016-28(2)-4

For citation:


Malevannyy M.S., Mikhalkovich S.S. Context-Based Model for Concern Markup of a Source Code. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2016;28(2):63-78. https://doi.org/10.15514/ISPRAS-2016-28(2)-4



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)