Odabrana poglavlja programskih arhitektura i automatskog programiranja
Odabrana poglavlja programskih arhitektura i automatskog programiranja 2024/2025
7ECTSa
Doktorski studij Informacijske znanosti 1.1 (PDDSIZ)
Katedra za informatičke tehnologije i računarstvo
NN
1. semestar
Osnovne informacijemdi-information-variantIzvođači nastavemdi-account-groupNastavni plan i programmdi-clipboard-text-outlineModel praćenjamdi-human-male-boardIspitni rokovimdi-clipboard-check-outlineRasporedmdi-calendar-clockKonzultacijemdi-account-voice
Studenti će dobiti uvid u recentna instraživanja i razvoj softverskih arhitektura i automatskog programiranja. Kolegij pokriva ponovno korištene programske artefakte uključujući uzorke dizajna, integracije, programske komponente, objektno orijentirane aplikacijske okvire i arhitektonske uzorke. Kolegij istražuje progranske koncepte koji promoviraju ponovno korištenje programskih arhitektura te upravljanje znanjem o arhitekturi. Također se razmatra utjecaj objektne tehnologije na dizajn softvera i ponovno korištenje. Tijekom kolegija studenti će analizirati koncepte na kojima se temelji konstrukcija korisničkog grafičkog sučelja, centraliziranih, web i distribuiranih aplikacija, servisne arhitekture i dr. Predstaviti aktualno stanje razvoja koncepata, teorijskih modela, tehnologija i alata automatskog programiranja (AP). Teorijski i praktični pristup izgradnji generatora i SPL (Software Product Lines). Perspektive razvoja i projekti u području AP-a: tehnologije temeljene na okvirima (XVCL, SCT), transformacije programskog koda (GenVoca, CodeWorker), metaprogramiranje (UniFrame), aspektno orijentirano programiranje (Spring, AspectJ, AspectC++). Predstaviti pregled relevantne znanstvene literature, trendove razvoja AP i mogućnosti znanstvenih istraživanja u području AP.
Ponovno korištenje Pregled ponovnog korištenja. Dizajn ponovno korištenog softvera, ponovno korištenih komponenata, modeliranje domene, softverske arhitekture specifičnih domena. Ponovno korištenje: generalizacijom i kompozicijom.
Uzorci Programska apstrakcija. Metaprogramiranje. Uzorci dizajna. Kategorije uzoraka (integracijski, SOA, sigurnost, sučelje, web i dr.). Formalna specifikacija uzoraka. Metode prepoznavanja i otkrivanja uzoraka. Refaktoriranje u uzorke dizajna. Programske proizvodne linije.
Aplikacijski okviri Aplikacijski okviri. Vrste aplikacijskih okvira. Pristupi razvoju aplikacijskih okvira. Odnos uzoraka i okvira.
Uvod u AP Područje bavljenja i aktualni dosezi AP. Discipline u bazi AP, ciljevi i težnje AP. Proizvodne linije softvera (eng. Software Product Lines, SPL). Generativno programiranje (GP) i povezane discipline: objektno orijentirano programiranje (OOP), generičko programiranje, metaprogramiranje, domenski inženjering, aspektno orijentirano programiranje. Paralelni i srodni pristupi GP: razvoj temeljen na komponentama (eng. component-based development), modeliranje svojstava (eng. feature modelling), programiranje orijentirano na svojstva (eng. feature-oriented programming), intencionalno programiranje (eng. intentional programming), softversko inženjerstvo temeljeno na modelima (eng. model-based software engineering), objektno-orijentirano dizajniranje (eng. object-oriented design), polimorfizam, programske transformacije, refleksija.
Trendovi razvoja automatskog programiranja Napredne tehnike OOP. Generičke programske tehnike: predlošci funkcija i klasa u C++ i C++11 (STL- Standard Template Library), generičke klase u Java i C#. Dinamički polimorfizam, refleksija, statičko generiranje koda. Trendovi razvoja OOP i nasljedne discipline. Ciljevi, pristupi i tehnike generativnog programiranja (GP). Teorijski pristup izgradnji generatora i SPL. Perspektive razvoja i projekti u području AP-a: tehnologije temeljene na okvirima (XVCL, SCT), transformacije programskog koda (GenVoca, CodeWorker), metaprogramiranje (UniFrame), aspektno orijentirano programiranje (Spring, AspectJ, AspectC++).
Modeli generiranja i primjeri sustava AP Definicije i koncepti generatora programskog koda: aspekti, separacija pogleda (eng. Separation of concerns), domenski jezik, specifikacija, konfiguracija i metaprogrami. SCT (Specification, Configuration, Templates) model generatora izvornog koda: arhitektura i koraci izgradnje, primjeri aplikacija. Primjeri sustava AP temeljeni na različitim modelima. Aktualni problemi i istraživanja u području AP. Teme za seminarske radove.
Sadržaj seminara/vježbi
Ishodi učenja kolegija
Ishodi učenja programa
Osnovna literatura
E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable of Object-Oriented Design. Addison-Wesley, Reading, MA, 1995.
Buschmann, F, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture: A System of Patterns. Addison-Wesley, Reading, MA, 1996.
Fayad, M. E., D. C. Schmidt, R. E. Johnson (editors). Building Application Frameworks. John Willey and Sons, 1999.
Fayad, M. E., R. E. Johnson (editors). Domain-Specific Application Frameworks. John Willey and Sons, 2000.
Buschmann,F., Henney, K., Schmidt,D.C. Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages, Addison-Wesley, 2007.
Fowler, M. Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
Hohpe, G., Woolf, B. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, Addison-Wesley, 2003.
J. Arnoldus, M. Brand, A. Serebrenik, J.J. Brunekreef: Code Generation with Templates, Atlantis Press, 2012.
Ghosh D.: DSLs in Action, Manning, 2011.
Kelly S., Tolvanen, J.P.: Domain-Specific Modelling, John Wiley & Sons, 2008.
Herrington J.: Code Generation in Action, Manning, 2003.
Bien,A. Real World Java EE Patterns-Rethinking Best Practices, lulu.com, 2012.
Erl, T. SOA Design Patterns, Prentice Hall, 2009.
Kerievsky, J. Refactoring to Patterns, Addison-Wesley, 2004.
Dopunska literatura
I. Magdalenić, D. Radošević, and T. Orehovački, “Autogenerator: Generation and execution of programming code on demand”, Expert Systems with Applications, 2013, http://dx.doi.org/10.1016/j.eswa.2012.12.003
R. Heradio, D. Fernandez-Amoros, L. de la Torre, and I. Abad, “Exemplar driven development of software product lines”, Expert Systems with Applications, vol. 39, no. 17, pp. 12885–12896, December 2012.
D. Radošević, and I. Magdalenić, “Source Code Generator Based on Dynamic Frames”, Journal of Information and Organizational Sciences, vol. 35, no. 1, pp. 73-91, July 2011.
Blair J., and Batory D. A Comparison of Generative Approaches: XVCL and GenVoca. Technical report, The University of Texas at Austin, Department of Computer Sciences, December 2004.
S. Jarzabek, P. Bassett, H. Zhang, W. Zhang: XVCL: XML-based variant configuration language Proceedings of the international conference on software engineering, IEEE Computer Society, Los Alamitos, CA, USA (2003), pp. 810–811
Slični kolegiji
Washington University in St. Louis, Advanced Object-Oriented Software Development with Patterns and Frameworks
Aarhus University, Advanced Topics in Software Architecture
San Francisco State University, Advanced Topics in CS: Software Architecture
George Mason University, Advanced Software Design: Reusable Software Architectures
From Aspect-Oriented Programming to Program Generation, University of Southampton, United Kingdom
Automatic Programming, University of Texas at Austin, Texas, United States
Aspect-Oriented Software Development (Advanced Software Development), Northeastern University, College of Computer and Information Science, Boston, Massachusetts, United States
Topics in Software Engineering, University of North Texas, Department of Computer Science, Denton, Texas,United States
Automated Software Design, University of Texas at Austin, Texas, United States
Generative software development, University of Kopenhagen, Dennmark
Object-Oriented Systems and Languages, Virginia Polytechnic Institute and State University, Blacksburg, Virginia, United States
Redoviti studentiIzvanredni studenti
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.