Context-based model for concern markup of a source code
Автор: Malevannyy M.S., Mikhalkovich S.S.
Журнал: Труды Института системного программирования РАН @trudy-isp-ran
Статья в выпуске: 2 т.28, 2016 года.
Бесплатный доступ
In this paper we describe our approach to representing concerns in an interface of an IDE to make navigation across crosscutting concerns faster and easier. Concerns are represented as a tree of an arbitrary structure, each node of the tree can be bound to a fragment of code. It allows one to quickly locate fragments in the source code and makes switching between software development tasks easier. We describe a model which specifies data structures used to store the information about these code fragments and algorithms used to find the code fragment in original or modified source code. The model describes the information about code fragments as a set of contexts. Another important feature of the model is language independency. The model supports different programming, mark-up, DSL-languages and any structured text, such as a documentation. Main goal is to keep concern tree consistent with evolving source code. Search algorithm is designed to work with a modified source code, where the code fragment may change. The model is implemented as a tool, which supports different programming languages and integrates into different editors and integrated development environments. Source code analysis is performed by a set of lightweight parsers. In case of significant changes if the code fragment may be not found automatically the tool helps a programmer to find one by suggesting possible places in the source code based on the stored information.
Concerns, separation of concerns, program comprehension, integrated development environments
Короткий адрес: https://sciup.org/14916347
IDR: 14916347 | DOI: 10.15514/ISPRAS-2016-28(2)-4
Контекстно-ориентированная модель для разметки сквозной функциональности в исходном коде
В данной статье описывается подход к упрощению работы со сквозной функциональностью в исходном коде за счет добавления к среде разработки средств разметки сквозной функциональности. Разметка представлены в виде дерева, отдельные узлы которого могут быть привязаны к блокам кода, обеспечивая быструю навигацию по фрагментам кода, реализующим сквозную функциональность. Привязка узлов дерева к коду осуществляется за счет сохранения в дереве набора информации о фрагментах кода. Сохраняемая информация содержит имя и тип фрагмента кода, а также несколько видов контекстов, которые позволяют однозначно найти фрагмент в коде. Эти контексты позволяют в рамках одной модели работать с кодом на различных языках, как программирования, так и языках разметки, DSL-языках, а также с любым структурированным текстом, например, документацией. Реализация алгоритмов поиска фрагмента по сохраненной информации учитывает возможность внесения изменений в код в процессе разработки, что обеспечивает устойчивость привязки. При небольших изменениях исходного кода фрагмент может быть найден автоматически. В случае более серьезных изменений реализован полуавтоматический поиск при минимальном участии программиста. Исходный код анализируется легковесными парсерами, не полагаясь на инфраструктуру среды разработки. За счет этого достигается возможность работать с широким спектром языков, а также интеграция инструмента в различные среды разработки с минимальными усилиями. В статье представлена модель хранения данных, алгоритмы поиска, а также обзор инструмента, реализующего данную модель.
Список литературы Context-based model for concern markup of a source code
- 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
- 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
- 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)
- 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
- 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).
- 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
- 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).
- 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
- 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
- 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
- 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
- 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
- M. Malevannyy and S. Mikhalkovich, , in Sovremennye informatsionnye tekhnologii: tendentsii i perspektivy razvitiya: materialy konferentsii , 2015, pp. 351-353.
- 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
- M. Malevannyy, . Informatizatsiya i svyaz’ , vol. 3, pp. 89-94, 2015,.
- ANSI C grammar. (http://www.quut.com/c/ANSIC-grammar-y.html)
- PascalABC.NET. http://pascalabc.net/
- V. Levenshtein, “Binary codes capable of correcting deletions, insertions and reversals” Soviet Physics -Doklady, vol. 10, no. 8, pp. 707-710,1965,.
- 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
- I. V. Bondarev, Y. V. Belyakova, and S. S. Mikhalkovich, , in ”XX Nauchnaya konferentsiya Sovremennye informatsionnye tekhnologii: tendentsii i perspektivy razvitiya. Materialy konferentsii , 2013, pp.69-71,.