Logo PTI
Polish Information Processing Society
Logo FedCSIS

Annals of Computer Science and Information Systems, Volume 9

Position Papers of the 2016 Federated Conference on Computer Science and Information Systems

Using LINQ as a universal tool for defining architectural assertions


DOI: http://dx.doi.org/10.15439/2016F587

Citation: Position Papers of the 2016 Federated Conference on Computer Science and Information Systems, M. Ganzha, L. Maciaszek, M. Paprzycki (eds). ACSIS, Vol. 9, pages 275282 ()

Full text

Abstract. We demonstrate that Microsoft LINQ can be used as a convenient tool to define architectural assertions. We introduce an abstract model of software based on a directed multi-graph and formalize the notion of software architecture and architectural assertions. We demonstrate how Microsoft Visual Studio can be harnessed to extract the architecture of a given software project and append it with assertions using LINQ notation. In particular we explain flow of data processing that takes place within Visual Studio engine. We follow with examples of assertions selected to demonstrate the expressive power of our approach. We conclude by showing subsequent areas of research worth following in order to deepen the research indicated in this paper.


  1. M. A. Babar and I. Gorton, editors. Software Architecture, 4th European Conference, ECSA 2010, Copenhagen, Denmark, August 23-26, 2010. Proceedings, volume 6285 of Lecture Notes in Computer Science. Springer, 2010.
  2. C. Bartoszuk, R. Dąbrowski, K. Stencel, and G. Timoszuk. On quick comprehension and assessment of software. In B. Rachev and A. Smrikarov, editors, CompSysTech, pages 161–168. ACM, 2013.
  3. K. Beck. Embracing change with extreme programming. IEEE Computer, 32(10):70–77, 1999.
  4. H. P. Breivold, I. Crnkovic, and M. Larsson. Software architecture evolution through evolvability analysis. Journal of Systems and Software, 85(11):2574–2592, 2012.
  5. N. Brown, R. L. Nord, I. Ozkaya, and M. Pais. Analysis and management of architectural dependencies in iterative release planning. In WICSA, pages 103–112, 2011.
  6. C. S. Collberg, S. G. Kobourov, J. Nagra, J. Pitts, and K. Wampler. A system for graph-based visualization of the evolution of software. In S. Diehl, J. T. Stasko, and S. N. Spencer, editors, SOFTVIS, pages 77–86, 212–213. ACM, 2003.
  7. R. Dąbrowski. On architecture warehouses and software intelligence. In T.-H. Kim, Y.-H. Lee, and W.-C. Fang, editors, FGIT, volume 7709 of Lecture Notes in Computer Science, pages 251–262. Springer, 2012.
  8. R. Dąbrowski, K. Stencel, and G. Timoszuk. Software is a directed multigraph. In I. Crnkovic, V. Gruhn, and M. Book, editors, ECSA, volume 6903 of Lecture Notes in Computer Science, pages 360–369. Springer, 2011.
  9. R. Dąbrowski, G. Timoszuk, and K. Stencel. One graph to rule them all software measurement and management. Fundam. Inform., 128(1-2):47–63, 2013.
  10. J. Derrick and H. Wehrheim. Model transformations across views. Sci. Comput. Program., 75(3):192–210, 2010.
  11. E. W. Dijkstra. Letters to the editor: go to statement considered harmful. Commun. ACM, 11(3):147–148, 1968.
  12. A. Egyed and P. Grünbacher. Automating requirements traceability: Beyond the record & replay paradigm. In ASE, pages 163–171. IEEE Computer Society, 2002.
  13. L. Fabresse, N. Bouraqadi, C. Dony, and M. Huchard. A language to bridge the gap between component-based design and implementation. Computer Languages, Systems & Structures, 38(1):29–43, 2012.
  14. R. Kaufmann and D. Janzen. Implications of test-driven development: a pilot study. In Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, OOPSLA ’03, pages 298–299, New York, NY, USA, 2003. ACM.
  15. R. Koschke. Software visualization for reverse engineering. In S. Diehl, editor, Software Visualization, volume 2269 of Lecture Notes in Computer Science, pages 138–150. Springer, 2001.
  16. I. Lytra, H. Tran, and U. Zdun. Constraint-based consistency checking between design decisions and component models for supporting software architecture evolution. 2011 15th European Conference on Software Maintenance and Reengineering, 0:287–296, 2012.
  17. V. Markovets, R. Dąbrowski, G. Timoszuk, and K. Stencel. Know thy source code. is it mostly dead or alive? In C. K. Georgiadis, P. Kefalas, and D. Stamatis, editors, Local Proceedings of the Sixth Balkan Conference in Informatics, Thessaloniki, Greece, September 19-21, 2013, volume 1036 of CEUR Workshop Proceedings, page 128. CEUR-WS.org, 2013.
  18. R. C. Martin. Agile Software Development: Principles, Patterns, and Practices. Prentice Hall PTR, Upper Saddle River, NJ, USA, 2003.
  19. J. McCarthy, M. I. of Technology. Computation Center, and M. I. of Technology. Research Laboratory of Electronics. Lisp one five programmer’s manual. Massachusetts Institute of Technology, 1965.
  20. R. L. Nord, I. Ozkaya, and R. S. Sangwan. Making architecture visible to improve flow management in lean software development. IEEE Software, 29(5):33–39, 2012.
  21. L. J. Osterweil. Software processes are software too. In W. E. Riddle, R. M. Balzer, and K. Kishida, editors, ICSE, pages 2–13. ACM Press, 1987.
  22. S. P. Reiss. Dynamic detection and visualization of software phases. ACM SIGSOFT Software Engineering Notes, 30(4):1–6, 2005.
  23. W. Royce. Managing the development of large software systems: Concepts and techniques. In WESCOM, 1970.
  24. P. Spacek, C. Dony, and C. Tibermacine. A component-based meta-level architecture and prototypical implementation of a reflective component-based programming and modeling language. In Proceedings of the 17th International ACM Sigsoft Symposium on Component-based Software Engineering, CBSE ’14, pages 13–22, New York, NY, USA, 2014. ACM.
  25. P. Spacek, C. Dony, C. Tibermacine, and L. Fabresse. Bridging the Gap between Component-based Design and Implementation with a Reflective Programming Language. Technical report, Laboratoire d’Informatique de Robotique et de Microélectronique de Montpellier - LIRMM , Unité de Recherche Informatique et Automatique - URIA, July 2013.
  26. P. Spacek, C. Dony, C. Tibermacine, and L. Fabresse. Wringing out objects for programming and modeling component-based systems. In Proceedings of the Second International Workshop on Combined Object-Oriented Modelling and Programming Languages, ECOOP’13, pages 2:1–2:6, New York, NY, USA, 2013. ACM.
  27. G. Spanoudakis and A. Zisman. Software traceability: a roadmap. Handbook of Software Engineering and Knowledge Engineering, 3:395–428, 2005.
  28. M. T. T. That, S. Sadou, and F. Oquendo. Using architectural patterns to define architectural decisions. In T. Männistö, A. M. Babar, C. E. Cuesta, and J. Savolainen, editors, WICSA/ECSA, pages 196–200. IEEE, 2012.
  29. C. Tibermacine, R. Fleurquin, and S. Sadou. A family of languages for architecture constraint specification. Journal of Systems and Software, 83(5):815–831, 2010.