Aspect-Oriented Software Development
This subject will held as in the previous year, but more applied and focused on aspect-oriented software product lines. Abstracting in this direction brings practical experience and reduces some of the previous information. In this subject, students will learn advanced software modularization techniques, especially those based on aspect-oriented programming. Some of their applications include aspect-oriented intrinsic patterns that do not exist in an object-oriented world, which separate crosscutting concerns and even follow up on developing systems using pattern languages. The applications of techniques are presented through the software development lifecycle, including requirements specification (use case modeling, themes), design (themes), implementation (aspect-oriented languages and extensions), and testing (aspect-oriented languages and extensions). Additionally, this will include practices and knowledge from complex systems showing how aspects and aspect-oriented programming are applied in software product lines, especially not forgetting old aspect-oriented languages such as CeasarJ, which are used to refine hierarchical features. The course will remain research-oriented and focused primarily on students' projects that should bring methodological contributions based on presented techniques for advanced modularization, software product lines, and aspect-oriented programming.
Taught by:
Doc. Ing. Ján Lang, PhD., Ing. Jakub PerdekAsistent:
Ing. Jakub Perdek, Ing. Viktor MatovičStudy type:
Master'sStudy program:
Intelligent Software SystemsTerm:
WinterWeekly hours (lectures–exercises):
2-2Completion:
ExamCredits:
6
Source: https://sites.google.com/site/sites/system/errors/WebspaceNotFound?path=%2Fjavatouch%2Fintroductiontoaop
Literature and Links
General
Aspect-Oriented Software Association: https://aosd.net/
Programming conference: https://programming-conference.org/
Lecture Notes in Computer Science (LNCS): https://www.springer.com/gp/computer-science/lncs
AspectJ
Home page of AspectJ: https://eclipse.dev/aspectj/
AspectJ Development Tools (AJDT) plugin for Eclipse: https://www.eclipse.org/ajdt/
Aspect Oriented Programming: Radical Research in Modularity: Kiczales' Gregor Lecture at Google
Capabilities, Basics, Advanced topics and Application of AspectJ: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Modelling in Analysis and Design
Application of Themes approach: Bc. Pavol Michalco: PRÍPADY POUŽITIA A TÉMY V PRÍSTUPE THEME/DOC
AMPLE Project home page (Aspect-Oriented, Model-Driven Product Line Engineering: Web page Rashid, A., Royer, J.C., Rummler, A. (eds.): Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way (09 2011)
The DiVA Project - Dynamic Variability in Complex, Adaptive Systems Web page
Guidelines for using aspects in product lines: Article J. Kohut and V. Vranić, "Guidelines for using aspects in product lines," 2010 IEEE 8th International Symposium on Applied Machine Intelligence and Informatics (SAMI), Herlany, Slovakia, 2010, pp. 183-188, doi: 10.1109/SAMI.2010.5423741.
Software Product Lines
Providing software and resolving conflicts in heterogeneous devices: T. J. Young and B. Math. Using AspectJ to Build a Software Product Line for Mobile Devices. page 73, 1999.
Aspect-oriented Lightweight Software Product Lines With Automated Product Derivation: J. Perdek and V. Vrani´c, “Lightweight aspect-oriented software product lines with automated product derivation,” in New Trends in Databases and Information Systems: ADBIS 2023 ADBIS 2023 Short Papers, Doctoral Consortium and Workshops: AIDMA, DOING, K-Gals, MADEISD, PeRS, Modern Approaches in Data Engineering and Information System Design, MADEISD 2023, a workshop at 27th European Conference on Advances in Databases and Information Systems, ADBIS 2023, vol. CCIS 1850. Barcelona, Spain: Springer, 2023, pp. 499–510.
Complexity of In-code Variability - Evaluating Complexity of Cariability Management Constructs: Perdek, Jakub, and Valentino, Vranić. "Complexity of In-Code Variability: Emergence of Detachable Decorators.", In Reuse and Software Quality (pp. 51–71). Springer Nature Switzerland, 2024.
Framed Aspects: Loughran, N., Rashid, A.: Framed aspects: Supporting variability and configurability for AOP. In: Proceedings of 8th International Conference on Software Reuse, ICSR 2004. LCNS 3107, Springer, Madrid, Spain (2004)
Supporting Product Line Evolution With Framed Aspect: Loughran, N., Rashid, A., Zhang, W., Jarzabek, S.: Supporting product line evolution with framed aspects p. 5 (2004)
Aspect-Oriented Approaches
CaesarJ: https://caesarj.org/
Product Line Implementation with ECaesarJ: Rashid, A., Royer, J.C., Rummler, A. (eds.): Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way (09 2011)
Aspect-oriented/Adaptive programming with Demeter: https://www2.ccs.neu.edu/research/demeter/
Adaptive Object-Oriented Software The Demeter Method: PDF Karl J. Lieberherr, Adaptive Object-Oriented Software:The Demeter Method with Propagation Patterns.PWS Publishing Company, Boston, 1996.
Dynamic Aspect-Oriented Programming in Java: The HotWave Experience: https://link.springer.com/chapter/10.1007/978-3-642-35551-6_3
DJ: Dynamic Adaptive Programming in Java: Web page D. Orleans and K. Lieberherr. DJ: Dynamic Adaptive Programming in Java. REFLECTION 2001, 3rd International Conference on Metalevel Architectures and Separation of Crosscutting Concerns Kyoto, Japan, September 25-28, 2001
JaSCo: http://ssel.vub.ac.be/jasco/
Aspect-Oriented Patterns
Aspect-oriended recreation of design patterns, application of patterns: R. Miles, AspectJ cookbook, 1st ed. Sebastopol, CA; Farnham: O’Reilly Media, 2004.
Aspect-oriented recreation of Observer design pattern: E. Piveta and L. Zancanella, “Observer pattern using aspect-oriented programming,” Proceedings of the Third Latin American Conference on Pattern Languages of Programming, p. 12, 12 2003
Composition and Categorization of Aspect-Oriented Design Patterns: Web page R. Menkyna, V. Vranić, and I. Polášek. Composition and Categorization of Aspect-Oriented Design Patterns. In Proc. of 8th International Symposium on Applied Machine Intelligence and Informatics, SAMI 2010, January 2010, Herľany, Slovakia, IEEE.
Aspect-Oriented Change Realization
Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling Article Radoslav Menkyna and Valentino Vranić. Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling. In Proceedings of 4th IFIP TC2 Central and East European Conference on Software Engineering Techniques, CEE-SET 2009, Revised Selected Papers, LNCS 7054, October 2009, Krakow, Poland, Springer, 2012.
Aspect-Oriented Change Realizations and Their Interaction Article V. Vranić, R. Menkyna, M. Bebjak, and P. Dolog. Aspect-Oriented Change Realizations and Their Interaction. e-Informatica Software Engineering Journal, 3(1):43-58, 2009
Developing Applications with Aspect-Oriented Change Realization: Article Valentino Vranić, Michal Bebjak, Radoslav Menkyna, and Peter Dolog. Developing Applications with Aspect-Oriented Change Realization. In Proceedings of 3rd IFIP TC2 Central and East European Conference on Software Engineering Techniques, CEE-SET 2008, Revised Selected Papers, LNCS 4980, October 2008, Brno, Czech Republic, Springer, 2011
Lectures
The scheduled lectures prepared for this subject with available materials and references are:
Good to read before lecture sources:
Capabilities, Basics, Advanced topics and Application of AspectJ - 1-3. chapters: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Alves, V., Jr, P.M., Borba, P.: An Incremental Aspect-Oriented Product Line Method for J2ME Game Development p. 3 (Jan 2004)
FILMAN, Robert E a Daniel P FRIEDMAN. Aspect-Oriented Programming is Quantification and Obliviousness. 2001.
Sources:
CaesarJ: https://caesarj.org/
Product Line Implementation with ECaesarJ: Rashid, A., Royer, J.C., Rummler, A. (eds.): Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way (09 2011)
Aspect-oriended recreation of design patterns, application of patterns: R. Miles, AspectJ cookbook, 1st ed. Sebastopol, CA; Farnham: O’Reilly Media, 2004.
Aspect-oriented recreation of Observer design pattern: E. Piveta and L. Zancanella, “Observer pattern using aspect-oriented programming,” Proceedings of the Third Latin American Conference on Pattern Languages of Programming, p. 12, 12 2003
Complexity of In-code Variability - Evaluating Complexity of Cariability Management Constructs: Perdek, Jakub, and Valentino, Vranić. "Complexity of In-Code Variability: Emergence of Detachable Decorators.", In Reuse and Software Quality (pp. 51–71). Springer Nature Switzerland, 2024.
Framed Aspects: Loughran, N., Rashid, A.: Framed aspects: Supporting variability and configurability for AOP. In: Proceedings of 8th International Conference on Software Reuse, ICSR 2004. LCNS 3107, Springer, Madrid, Spain (2004)
Supporting Product Line Evolution With Framed Aspect: Loughran, N., Rashid, A., Zhang, W., Jarzabek, S.: Supporting product line evolution with framed aspects p. 5 (2004)
YOUNG, Trevor J a B MATH, 1999. Using AspectJ to Build a Software Product Line for Mobile Devices. 1999, s. 73.
ZHANG, Tao, Lei DENG, Jian WU, Qiaoming ZHOU a Chunyan MA, 2008. Some Metrics for Accessing Quality of Product Line Architecture. V: 2008 International Conference on Computer Science and Software Engineering: 2008 International Conference on Computer Science and Software Engineering [online]. Wuhan, China: IEEE, s. 500–503. ISBN 978-0-7695-3336-0. Dostupné na: doi:10.1109/CSSE.2008.500
Hallsteinsen, S., Hinchey, M., Park, S., Schmid, K.: Dynamic software product lines. IEEE Computer 41, 93–95 (01 2008). Paper
Good to read before lecture sources:
Capabilities, Basics, Advanced topics and Application of AspectJ - 4.-5. as primary 6.-7. chapters as side: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
KUMAR, Ravi a Munishwar RAI, A Comparative Study of AOP Approaches: AspectJ, Spring AOP, JBoss AOP. 2019
Sources:
Capabilities, Basics, Advanced topics and Application of AspectJ: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Dynamic Aspect-Oriented Programming in Java: The HotWave Experience: https://link.springer.com/chapter/10.1007/978-3-642-35551-6_3
CARDOSO, João M.P., Tiago CARVALHO, José G.F. COUTINHO, Wayne LUK, Ricardo NOBRE, Pedro DINIZ a Zlatko PETROV, 2012. LARA: an aspect-oriented programming language for embedded systems. V: Proceedings of the 11th annual international conference on Aspect-oriented Software Development - AOSD ’12 [online]. Potsdam, Germany: ACM Press, s. 179. ISBN 978-1-4503- 1092-5. Dostupné na: doi:10.1145/2162049.2162071
RASHID, Awais, Ana MOREIRA a Joāo ARAÚJO, 2003. Modularisation and composition of aspectual requirements. V: the 2nd international conference: Proceedings of the 2nd international conference on Aspect-oriented software development - AOSD ’03 [online]. Boston, Massachusetts: ACM Press, s. 11–20. ISBN 978-1-58113-660-9. Dostupné na: doi:10.1145/643603.643605
SÁ LOUREIRO FERREIRA DA SILVA, Ricardo. Aspect-Oriented Programming for Javascript using the Lara Language. Porto. Dissertation thesis. Universidade do Porto, 2019
WASHIZAKI, Hironori, Yoichi NAGAI, Rieko YAMAMOTO, Atsuto KUBO, Tomohiko MIZUMACHI, Kazuki EGUCHI, Yoshiaki FUKAZAWA, Nobukazu YOSHIOKA, Hideyuki KANUKA, Toshihiro KODAKA a Nobuhide SUGIMOTO, 2009. AOJS: aspect-oriented javascript programming framework for web development. V: Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software - ACP4IS ’09 [online]. Charlottesville, Virginia, USA: ACM Press, s. 31. ISBN 978-1-60558-450-8. Dostupné na: doi:10.1145/1509276.1509285
TOLEDO, Rodolfo, Paul LEGER a Éric TANTER, 2010. AspectScript: expressive aspects for the web. V: Proceedings of the Eighth International Conference on AspectOriented Software Development - AOSD ’10 [online]. Rennes and Saint-Malo, France: ACM Press, s. 13 [cit. 18.5.2022]. ISBN 978-1-60558-958-9. Dostupné na: doi:10.1145/1739230.1739233
SOARES, Sérgio, Paulo BORBA a Eduardo LAUREANO, Distribution and persistence as aspects. Software: Practice and Experience [online]. 2006, roč. 36, č. 7, s. 711–759. ISSN 0038-0644, 1097-024X. Dostupné na: doi:10.1002/spe.715
SOARES, Sergio, Eduardo LAUREANO a Paulo BORBA. Implementing distribution and persistence aspects with aspectJ. ACM SIGPLAN Notices [online]. 2002, roč. 37, č. 11, s. 174–190. ISSN 0362-1340, 1558-1160. Dostupné na: doi:10.1145/583854.582437
HUANG, Wenhao, Chengwan HE a Zheng LI. A Comparison of Implementations for Aspect-Oriented JavaScript. 2015, Dostupné na: doi:10.2991/csic-15.2015.9
Flanagan, D.: canto-js: An improved api for the html canvas tag (2010)
Aspect-oriended recreation of design patterns, application of patterns: R. Miles, AspectJ cookbook, 1st ed. Sebastopol, CA; Farnham: O’Reilly Media, 2004.
Good to read before lecture sources:
Patterns in AspectJ - 8. chapter: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Aspect-oriented recreation of Observer design pattern: E. Piveta and L. Zancanella, “Observer pattern using aspect-oriented programming,” Proceedings of the Third Latin American Conference on Pattern Languages of Programming, p. 12, 12 2003
Sources:
Aspect-oriended recreation of design patterns, application of patterns: R. Miles, AspectJ cookbook, 1st ed. Sebastopol, CA; Farnham: O’Reilly Media, 2004.
HANNEMANN, Jan a Gregor KICZALES, Design Pattern Implementation in Java and AspectJ. 2002, s. 13.
Good to read before lecture sources:
Application of Themes approach: Bc. Pavol Michalco: PRÍPADY POUŽITIA A TÉMY V PRÍSTUPE THEME/DOC
D. Stein. Join Point Designation Diagrams: A Visual Design Notation for Join Point Selections in Aspect-Oriented Software Development. PhD. thesis, Universität Duisburg-Essen, 2010.
E. Baniassad and S. Clarke, "Theme: an approach for aspect-oriented analysis and design," Proceedings. 26th International Conference on Software Engineering, Edinburgh, UK, 2004, pp. 158-167, doi: 10.1109/ICSE.2004.1317438.
Sources:
AMPLE Project home page (Aspect-Oriented, Model-Driven Product Line Engineering: Web page Rashid, A., Royer, J.C., Rummler, A. (eds.): Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way (09 2011)
Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling Article Radoslav Menkyna and Valentino Vranić. Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling. In Proceedings of 4th IFIP TC2 Central and East European Conference on Software Engineering Techniques, CEE-SET 2009, Revised Selected Papers, LNCS 7054, October 2009, Krakow, Poland, Springer, 2012.
Aspect-Oriented Change Realizations and Their Interaction Article V. Vranić, R. Menkyna, M. Bebjak, and P. Dolog. Aspect-Oriented Change Realizations and Their Interaction. e-Informatica Software Engineering Journal, 3(1):43-58, 2009
Pointcut Language in AspectJ For Analogies: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Perdek, Jakub, and Valentino, Vranić. "Lightweight Aspect-Oriented Software Product Lines with Automated Product Derivation." In New Trends in Database and Information Systems (pp. 499–510). Springer Nature Switzerland, 2023.
D. Stein, S. Hanenberg, and R. Unland. Query Models. In Proceedings of 7th International Conference on the Unified Modeling Language (UML 2004) – The Language and Its Applications, Lisbon, Portugal, October 2004, LNCS 3273, Springer.
Good to read before lecture sources:
Use Cases: Cockburn, A.. Writing Effective Use Cases.Addison-Wesley, 2001
OOram framework: Reenskaug, Trygve; P. Wold; O. A. Lehne (1996). Working with Objects: The OOram Software Engineering Method. Manning/Prentice Hall.
OOram and Aspects: Vranić, V., Laslop, M.: Aspects and Roles in Software Modeling: A Composition Based Comparison. Computer Science and Information Systems, Vol. 13, No. 1, 199–216. (2016), https://doi.org/10.2298/CSIS151207065V
DCI: Reenskaug, T., Coplien, J.O.: The DCI architecture: A new vision of object-oriented programming. http://www.artima.com/articles/dci_vision.html (3 2009)
Are themes and use cases the same? Vranic, V., Michalco, P.: Are themes and use cases the same? Information Sciences and Technologies, Bulletin of the ACM Slovakia, Special Section on Early Aspects at AOSD 2010 2(1),66–71 (2010)
Aspect-Oriented Software Development with Use Cases: Jacobson, I., Ng, P.W.: Aspect-Oriented Software Development with Use Cases. AddisonWesley (2004)
Sources:
Application of Themes approach: Bc. Pavol Michalco: PRÍPADY POUŽITIA A TÉMY V PRÍSTUPE THEME/DOC
HANNEMANN, Jan a Gregor KICZALES, Design Pattern Implementation in Java and AspectJ. 2002, s. 13.
Good to read before lecture sources:
FIGUEIREDO, Eduardo, Nelio CACHO, Claudio SANT’ANNA, Mario MONTEIRO, Uira KULESZA, Alessandro GARCIA, Sergio SOARES, Fabiano FERRARI, Safoora KHAN, Fernando FILHO a Francisco DANTAS, Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. 2008, s. 10.
Perdek, Jakub, and Valentino, Vranić. "Complexity of In-Code Variability: Emergence of Detachable Decorators.", In Reuse and Software Quality (pp. 51–71). Springer Nature Switzerland, 2024.
Framed Aspects: Loughran, N., Rashid, A.: Framed aspects: Supporting variability and configurability for AOP. In: Proceedings of 8th International Conference on Software Reuse, ICSR 2004. LCNS 3107, Springer, Madrid, Spain (2004)
Supporting Product Line Evolution With Framed Aspect: Loughran, N., Rashid, A., Zhang, W., Jarzabek, S.: Supporting product line evolution with framed aspects p. 5 (2004)
Perdek, Jakub, and Valentino, Vranić. "Lightweight Aspect-Oriented Software Product Lines with Automated Product Derivation." In New Trends in Database and Information Systems (pp. 499–510). Springer Nature Switzerland, 2023.
Sources:
BACHMANN, Felix a Len BASS, Managing Variability in Software Architectures. 2001, s. 7.
Chen, L., Ali Babar, M., Ali, N.: Variability management in software product lines: A systematic review. In: Proceedings of the 13th International Software Product Line Conference. pp. 81–90 (Jan 2009)
Galster, M., Weyns, D., Tofan, D., Michalik, B., Avgeriou, P.: Variability in software systems - a systematic literature review. IEEE Transactions on Software Engineering 40(3), 282–306 (2014)
Cardoso, J.: How To Use Decorators in TypeScript (Sep 2021)
Good to read before lecture sources:
Product Line Implementation with ECaesarJ: Rashid, A., Royer, J.C., Rummler, A. (eds.): Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way (09 2011)
Description and application of JaSCo: http://ssel.vub.ac.be/jasco/
Description and application of CaesarJ: https://caesarj.org/
Sources:
Capabilities, Basics, Advanced topics and Application of AspectJ: The AspectJ in Action Laddad, Ramnivas, 2003. AspectJ in action: practical aspect-oriented programming. Greenwich, CT: Manning. ISBN 978-1-930110-93-9.
Good to read before lecture sources:
Perdek, Jakub, and Valentino, Vranić. "Lightweight Aspect-Oriented Software Product Lines with Automated Product Derivation." In New Trends in Database and Information Systems (pp. 499–510). Springer Nature Switzerland, 2023.
Perdek, Jakub, and Valentino, Vranić. "Complexity of In-Code Variability: Emergence of Detachable Decorators.", In Reuse and Software Quality (pp. 51–71). Springer Nature Switzerland, 2024.
Framed Aspects: Loughran, N., Rashid, A.: Framed aspects: Supporting variability and configurability for AOP. In: Proceedings of 8th International Conference on Software Reuse, ICSR 2004. LCNS 3107, Springer, Madrid, Spain (2004)
Supporting Product Line Evolution With Framed Aspect: Loughran, N., Rashid, A., Zhang, W., Jarzabek, S.: Supporting product line evolution with framed aspects p. 5 (2004)
Sources:
FIGUEIREDO, Eduardo, Nelio CACHO, Claudio SANT’ANNA, Mario MONTEIRO, Uira KULESZA, Alessandro GARCIA, Sergio SOARES, Fabiano FERRARI, Safoora KHAN, Fernando FILHO a Francisco DANTAS, Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. 2008, s. 10.
ALVES, Vander, Pedro MATOS, Leonardo COLE, Alexandre VASCONCELOS, Paulo BORBA a Geber RAMALHO, Extracting and Evolving Code in Product Lines with Aspect-Oriented Programming: Awais RASHID a Mehmet AKSIT, ed. Transactions on Aspect-Oriented Software Development IV [online]. Berlin, Heidelberg: Springer Berlin Heidelberg, Lecture Notes in Computer Science, s. 117–142. ISBN 978-3-540-77041-1. Dostupné na: doi:10.1007/978-3-540-77042- 8_5
Cardoso, J.: How To Use Decorators in TypeScript (Sep 2021)
Flanagan, D.: canto-js: An improved api for the html canvas tag (2010)
Blair, L., Pang, J.: Aspect-Oriented Solutions to Feature Interaction Concerns using AspectJ p. 17 (2003)
Hallsteinsen, S., Hinchey, M., Park, S., Schmid, K.: Dynamic software product lines. IEEE Computer 41, 93–95 (01 2008). Paper
Hinchey, M., Park, S., Schmid, K.: Building Dynamic Software Product Lines. Computer 45(10), 22–26 (Oct 2012). Paper
Good to read before lecture sources:
Trygve Reenskaug and James O. Coplien: The DCI Architecture: A New Vision of Object-Oriented Programming March 20, 2009
Savkin: Data Context Interaction: The Evolution of the Object Oriented Paradigm
Sources:
Perdek, Jakub, and Valentino, Vranić. "Lightweight Aspect-Oriented Software Product Lines with Automated Product Derivation." In New Trends in Database and Information Systems (pp. 499–510). Springer Nature Switzerland, 2023.
FIGUEIREDO, Eduardo, Nelio CACHO, Claudio SANT’ANNA, Mario MONTEIRO, Uira KULESZA, Alessandro GARCIA, Sergio SOARES, Fabiano FERRARI, Safoora KHAN, Fernando FILHO a Francisco DANTAS, Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. 2008, s. 10.
JACOBSON, Ivar, Martin GRISS a Patrik JONSSON, 1997. Software Reuse: Architecture, Process and Organization for Business Success. USA: ACM Press/Addison-Wesley Publishing Co. ISBN 0-201-92476-5.
KOHUT, Jan a Valentino VRANIC, Guidelines for using aspects in product lines: 2010 IEEE 8th International Symposium on Applied Machine Intelligence and Informatics (SAMI) [online]. Herlany: IEEE, s. 183–188 [cit. 30.9.2021]. ISBN 978-1-4244-6422-7. Dostupné na: doi:10.1109/SAMI.2010.5423741
Developing Applications with Aspect-Oriented Change Realization: Article Valentino Vranić, Michal Bebjak, Radoslav Menkyna, and Peter Dolog. Developing Applications with Aspect-Oriented Change Realization. In Proceedings of 3rd IFIP TC2 Central and East European Conference on Software Engineering Techniques, CEE-SET 2008, Revised Selected Papers, LNCS 4980, October 2008, Brno, Czech Republic, Springer, 2011
Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling Article Radoslav Menkyna and Valentino Vranić. Aspect-Oriented Change Realization Based on Multi-Paradigm Design with Feature Modeling. In Proceedings of 4th IFIP TC2 Central and East European Conference on Software Engineering Techniques, CEE-SET 2009, Revised Selected Papers, LNCS 7054, October 2009, Krakow, Poland, Springer, 2012.
Aspect-Oriented Change Realizations and Their Interaction Article V. Vranić, R. Menkyna, M. Bebjak, and P. Dolog. Aspect-Oriented Change Realizations and Their Interaction. e-Informatica Software Engineering Journal, 3(1):43-58, 2009
Content:
- Mass Customisation, Platform / Masová Kustomizácia, Platforma
- Software Variability and Its Modelling / Variantnosť Softvéru a Jej Modelovanie
- Applying SPL in Agile Development / Využitie SPL v Agilnom Vývoji
- Benefits And Drawbacks of SPLs in Software Development / Výhody a Nevýhody SPL vo Vývoji Softvéru
Projects
The semestral project with a smaller mini-project significantly contributes to the points that can be gained for the semester. Project form helps students to think in an aspect-oriented way while specifying, designing, and finally implementing their solution. It can be a new approach or methodology for observing, comparing, or evaluating something. Additionally, students are free to choose the area with which they are familiar. Aspects and/or aspect orientation should occur in their project, but this is insufficient. Students must propose or modify (and express and discuss) a method/approach or its modification/adaptation to bring a methodological contribution. This is mandatory. A research contribution will be highly praised with points and can lead to publications at international conferences.
Your project have to be presented and discussed as your seminar topic.
A List of Submissions and deadlines
You have to submit during semester following items:
[up to 21.10.2024]
Project objective: 200-300 words can be more[up to 03.11.2024]
Mini project: Aspect-oriented software development using Theme, patterns, and AspectJ[up to 23.12.2024]
Report in research article template (not mandatory but recommended) as PDF containing at least 8 pages.[up to 23.12.2024]
Artifacts created during project (everything what is created to support final outcomes as code, diagrams, figures, graphs, etc.)
Project Objective
Mention the base idea containing the methodological contribution in the area of aspect-oriented programming. In a few sentences try to support this idea with the information about the way how it will be realized and what it brings. The mothodological contribution can lie in some kind of experiment such as measurement or evaluation of particularly chosen representation. You can descirbe it more widely and narrow it later during realization. Do not waste space with many descriptive sentences taken from work of others that are not directly describing your intention such as "Aspects allows to separate crosscutting concerns and improve modularization.". Based on your described intention give your project initial title by exactly capturing the substance of your main contribution. The novelty of methodology or chosen representation for further evaluation, new approaches, or ideas, are welcome and highly prized. The methodological contribution can be analytical even without including code, but key activities should be described. Be specific as you would like and content can be narrowed later. Sometimes can help to first write research questions and then formulate your intention based on them. Each such question should be measurable and thus evaluable.
Mini project: Aspect-oriented software development using Theme, patterns, and AspectJ
Specify, desing and implement small aspect-oriented project with Themes patterns and AspectJ primarily as part of your semestral project if it is feasible:
5 points
- 1. The basic view as an annalytic model Themes/DOC that captures themes and relationships. Two themes are sufficient.
1 point
- 2. The transformation from basic view (previous point) into crosscutting view inn Themes/DOC notation.
1 point
- 3. The design model in Themes/UML notation with specified relation between themes. You may use the indirect relationships known from the JPDD notation.
3 points
5 points
- 1. The aspect with all necessary classes provided as Mock. The code has to be compillable.
2 points
- 2. The application of autochtonous (native) aspect-oriented design pattern.
2 points
- 3. Explanation of the applied pattern. The contradicting forces and the way how are resolved should be mentioned.
1 point
Write all things up! - Report structure
Students should take into account the following recommendations for writing up their report (Taken from Valentino Vranić's page):
- Choose the title of your report to reflect the main contribution of your project. You may need to adjust the title as you progress in writing your report and you are free to do this.
- Write an abstract first. Just a few sentences. You'll probably need to rewrite it in the end, but it will help you understand your objective more clearly.
- Express the top-level structure of your report: name your sections. Do not go into subsections at this point, as that will distract you from paying attention to name your topmost sections appropriately. Remember that section titles are the second most exposed part of your report. You want them to sound good.
- The report starts with an obligatory section commonly (practically always) named Introduction. It ends with another obligatory section typically called Conclusion, Conclusions, Conclusions and Future Work, or Conclusions and Further Work.
- It may come as a surprise, but it's best to write the introduction in the end. The introduction should present some motivation, mention some state of the art (which may be further elaborated in one or several sections following the introduction). At the end of the introduction, you want your readers to know what they may expect from the rest of the paper. Consequently, you should explicitly and by section describe the structure of your report (usually a short sentence per section is sufficient).
- Right after the introduction, you may need to address the motivation and the state of the art in one or several sections. Avoid generic titles such as Motivation as much as possible.
- Present what you've achieved separately from the state of the art. Typically, several sections are needed for this. Again, avoid generic titles such as Results or Approach as much as possible.
- You should address how's what you've done related to others have done in that area, either similarly, or differently. It's best to this in a separate section. Typically, this section is called Related Work and it occurs just before the concluding section.
- The conclusion is a recapitulation of your report, but don't do this sequentially. Put your main contributions ahead. Also, despite you're probably not going to continue with your project, indicate possible directions of further work.
- The concluding section may be followed by one or several appendices.
- What comes at the very end are references (bibliography). Only such references you actually refer to in the text should be included in this list (hence the name). Take care of providing sufficient data on your references using a consistent style (here's where LaTeX and BibTeX help a lot).
- Figures and tables are typically introduced as floating objects: they float somewhere in the text (where they fit). They should have captions which include some kind of numbering. You must refer to figures and tables from the text using their numbers.
Regular/Final Project Presentations
Students should verify if their proposed solution and report meet minimum requirements and consult their work regularly if necessary. In one seminar, a student presents and discusses his/her work before class according to schedule.
The last two lectures are intended for final project demonstrations where each student presents and demonstrates his/her project only to the teacher without students. This should help detect plagiarism and evaluate a particular student's work more precisely. Again, it is recommended not to rely on this last presentation and consult your work regularly.
Project Assessment
50 points
will be assessed according to following criteria:- Project objective –
5 points
- Part on aspect-oriented software development using Theme, patterns, and AspectJ –
10 points
- Project report and acompanying artifacts –
35 points
- Results (what have you actually done) –
15 points
- Scope (the problem you've chosen shouldn't be trivial) –
4 points
- Presentation (how well are the results presented in the report) –
4 points
- Interpretation (how well you explained the meaning of what you've done) –
6 points
- Comparison (how well you compared your results to what others have done in that area) –
6 points
- Results (what have you actually done) –
Seminars
Seminars should help students to improve their skills and knowledge with aspect-oriented programming, prepare them for a small project, but primarily supervise or assist them during iterative work on their semestral project. Semestral work is discussed, presented, defended and finally submitted in form of research paper and optionally with associated demonstrative code. Discussions thus intend to lead student to bring methodologial contribution in area of aspect-oriented programming, software product lines, or advanced modularization. Students are expected to bring their own ideas, design, and implement representative parts, support them with appropriate literature. At least, some form of comparison to fullfill requirements is necessary. Seminars includes the presentation of student progress in a class. Discussants then ask questions to get more details about presented work, boundaries of provided solution, and even help to provide further hints for possible improvements.
Seminar Presentations - Demonstrate Progress of Your Work!
The length of your presentation is restricted to 12 minutes. Ten minutes is usually enough, but a presentation that is too short can result in omitting essential parts. The content is determined by the actual week of the semester. The later you present, the more content, such as your implementation, diagrams, and results are expected.
The presentation itself and discussion can be in Slovak or English.
Please submit your presentation to AIS a day before you present, and notify your discussants, at least with the abstract of your work, to acquaint them with the topic that will be presented.
The context of the presentation should include:
- The overview of a current state in the focused area/about solved problem.
- How does your intended contribution/chosen topic relate to this subject (aspect-oriented programming and/or software product lines).
- Present your own contribution/ideas. (recommended in all project phases - highly praised)
- Show the supporting code (if any) and/or application for the introduced contribution.
- Visualize what is done. Use diagrams, tables, use cases, etc. (later phases).
- Provide evaluation of the results, capabilities, and outcomes. Do not forget to discuss them.
- Compare your work to what others have done if it is possible.
- Do not forget to mention what your methodological contribution lies in. Additionally, prepare research questions (two are enough).
- State how your semestral work will continue - future work. (You can check if what you will provide/provided is enough.)
Total:
15 pointsDiscussions After Presentations
Discuss weak and strong aspects of the presented work! Recommend improvements or further direction.
Each seminar presentation will have at least two discussants asking for more details, discussing weak and strong aspects of the presented work, and recommending improvements.
The content of a discussion is assessed according to the occurrence of the following cases:
- The adequate addressability of a discussed topic.
- Following and extending discussed ideas if possible.
- Taking into account alternative directions in solving/handling presented problems or getting more details about them.
- At least three high-quality questions, including adequate addressability and reactions during the discussion.
- Inclusion of aspect-oriented topics such as weaving, obliviousness and quantification, separation of crosscutting concerns, pointcuts, etc., into questions.
- Questions should not be too familiar or subjective.
- Points out possibilities for evaluating presented contributions.
Do not forget to participate also in the following general discussion. Comment and ask about presented topics.
Each discussion:
3,5 points
Number of discussions:
2 times
Total:
7 points
Assessment Summary
The maximum number of points for presentations and discussions is the following:
Presentation - document:
6 points
Presentation - oral:
7 points
Discussions:
7 points
For inspiration
The list of project names from previous years (and how they changes during the semester):
Initial name | Final name |
Plagiarism
Taking each other's work, which is not yours as your own, is known as plagiarism. It's a forbidden practice. Cases, where such practices are detected will be sent for further investigation and resolution by a disciplinary commission according to valid rules. These rules apply in this subject and disciplinary process.
Resolving Plagiarism Cases In This Subject
Cheating on tests:
Disqualification from the test and assigning zero points.Cheating on exams:
Disqualification from the exam and granting FX from the whole subject.The parts of unreferenced work in the project which are not authors':
Rejection of submitted project and granting FX if elaboration of the project is mandatory from the whole subject. Plagiarism is not tolerated in any range.
Disciplinary Commision
Disciplinary violation will include the participation of the dean of faculty in its negotiations and resolution with a disciplinary commision of this faculty. The disciplinary commission then optionally in accordance with taken conclusions, gives recommendations to the dean to:
- give a guilty student a rebuke
- conditionally disqualify a guilty student from the faculty
- disqualify a guilty student from the faculty
Prevention/Guidelines
Guidelines such as UC Davis demonstrate actions and practices to get around plagiarism. The most important of them are:
- Work continuosly and independently.
- Check your work after some time (two days or a week) and improve formulations.
- Do not use ChatGPT or any artificial intelligence for paraphrasing.
- Take brief notes from other materials along with used sources.
- Reference paraphrased work with reference in each sentence where it is used. Reference others' work correctly in a way that is recognizable from yours (references at the end of the block probably do not conform to this).
- Share information about your work to such an extent that some details will not be provided. For example, talk about code but not show all its fragments or provide the whole project to others.
- Do not apply minor/cosmetic changes to other's work (replacing words with their synonyms, changing the order of sentences, etc.) or give credit to it if the work is the same in substantial aspects as yours.
- Do not cheat and respond to others on tests, except to the personnel from the subject.
Final Exam
The final exam will be held on 18th December 2024 at 13:30 FIIT Aula Minor. Tools for writing are only required. You can gain 30 points divided into two parts, each for 15 points. The first one will contain content taught in previous years. The second one will test the application of aspects, especially for advanced modularization in the area of software product lines as newly introduced content. One question for 10 points in each abovementioned part will be opened where you can demonstrate the answer on your examples. The remaining 10 points will be divided into these two parts, where a student will answer the simple question with a few words or select an option from the provided options.
Held exams:
Example of opened question:
T (SK):
Poskytnite príklad doménovo-špecifickej zmeny a jej generalizácie všeobecne aplikovateľná zmena pre následné vyhľadanie v katalógu a získanie implementačnej schémy. Zakreslite svoje riešenie prostredníctvom UML. Inšpirujte sa pomôckou v ktorej dosaďte jednotlivé časti z Vami poskytnutých príkladov za XXX, YYY prípadne aj za AAA a ZZZ ak je to vhodné. Riešenie ako aj jednotlivé elementy a ich význam popíšte. 10bT (EN):
Please provide an example of domain-specific change and its generalization, known as generally applicable change, used during a search in a respective catalog to obtain an implementation scheme. Draw your solution using the UML notation. Inspire yourself with a diagram where you have to substitute specific elements with the examples you provided. Specifically, substitute XXX, YYY, or even AAA and ZZZ if it is appropriate with entities from your examples. 10 points

Example of question with a short answer:
Q (SK):
Uveďte konštrukt ktorým v jazyku bodových prierezov možno zrealizovať zmenu na zmenu ktorá bola zrealizovaná pomocou aspektov (pre odchytenie pretínajúcej akcie)? 2bQ (EN):
Provide construct from pointcut language which can be used to changing a change which has been previously realized with help of aspects so far (to capture an intercepted action)? 2 points
Answer
adviceexecution()
+ pointcuts can be annotated with custom @annotation() or withincode() or within() to restrict its effects on specific types or methods that can be used.