Fakultet organizacionih nauka, Univerzitet u Beogradu

Katedra za elektronsko poslovanje

Alati i metode softverskog inženjerstva – odabrana poglavlja

STUDIJSKI PROGRAMNAZIV PREDMETANASTAVNIK/NASTAVNICISTATUS PREDMETABROJ ESPB
Informacioni sistemi i tehnologijeAlati i metode softverskog inženjerstva – odabrana poglavljaĐurić O. Dragan, Ševarac V. Zoran, Tomić B. BojanIzborni10

Cilj predmeta

Cilj ovog predmeta je osposobljavanje studenata za obavljanje samostalnog naučno-istraživačkog rada u oblasti alata i metoda softverskog inženjerstva, i primenu rezultata istraživanja na razvoj i unapređenje softverskih alata i metoda. Poseban cilj je da se studenti osposobe za pisanje naučnih radova i učešće na konferencijama radi prezentacije postignutih rezultata.

Ishod predmeta

Studenti su upoznati sa aktuelnim istraživačkim pravcima vezanim za metode i alate softverskog inženjerstva.
Studenti su sposobni da samostalno planiraju, sprovode, i prezentuju rezultate naučnih istraživanja u oblasti alata i metoda softverskog inžnjerstva.
Studenti su sposobni da uspešno koriste razne metodologije i alate za razvoj softvera, unapređuju postojeće, i razvijaju nove alate za razvoj softvera, primenjujući saznanja dobijena istraživanjem.

Sadržaj predmeta

Metodologija naučno-istraživačkog rada u oblasti alata i metoda softverskog inženjerstva. Upoznavanje sa otvorenim istraživačkim problemima i aktuelnim pravcima istraživanja kroz sistematičan pregled literature: časopisa, zbornika radova i monografija iz oblasti softverskog inženjerstva, uz fokus na alate i metode softverskog inženjerstva. Analiza uglednih radova.
Pregled istraživanja alata za prikupljanje softverskih zahteva (alati za dokumentovanje i specifikaciju zahteva, upravljanje procesom prikupljanja zahteva, kreiranje domenski specifičnih jezika za opis zahteva, itd.). Aktuelni pravci u razvoju alata za projektovanje softvera. Alati za konstrukciju softvera (editori, kompajleri, kod generatori, interpreteri, debageri). Alati za testiranje softvera (softverske biblioteke, alati za kontinualnu integraciju, alati za automatsko generisanje testova, automatsko generisanje podataka za testiranje, itd.). Alati za održavanje softvera i podršku procesu upravljanja održavanjem. Alati za konfigurisanje softvera (domenski specifični jezici, softverske biblioteke, automatizacija). Istraživački pravci vezani za alate za upravljanje softverskim projektima i praćenje softverskog procesa. Alati za upravljanje kvalitetom softvera.
Primena softverskih alata zasnovanih na veštačkoj inteligenciji i mašinskom učenju za unapređenje alata za softversku podršku raznim fazama razvoja softvera.
Heurističke metode zasnovane na strukturi, podacima, objektima i specifičnom domenu. Formalne metode. Prototipske metode. Pregled rezultata novih istraživanja koji se odnose na agilni razvoj softvera. Кontinualna integracija softvera. Pravci u razvoju i primeni iterativno-inkrementalnog pristupa razvoju softvera. Trendovi u primeni brzog razvoja softvera zasnovanog na prototipovima.
Upoznavanje sa softverskim bibliotekama i alatima relevantnim za svaku od oblasti obuhvaćenih predmetom. Upoznavanje sa procesom koji se koristi za istraživanja u ovoj oblasti.
Definisanje teme, planiranje i sprovođenje istraživanja. Pisanje naučnog rada i prezentacija rezultata.

Metode izvođenja nastave

Klasična predavanja ili mentorski rad, zavisno od broja prijavljenih studenata. Samostalni istraživački rad. Obavezna je izrada samostalnog istraživačkog projekta koji se realizuje uz konsultacije sa nastavnikom i sadrži pregled literature i istraživanje u izabranoj oblasti.

Literatura

  1. Stol, Klaas-Jan, and Brian Fitzgerald “The ABC of software engineering research”, ACM Transactions on Software Engineering and Methodology (TOSEM), vol. 27, no. 3, pp. 1-51, 2018
  2. D. Djuric, V. Devedzic, “Incorporating the Ontology Paradigm Into Software Engineering: Enhancing Domain-Driven Programming in Clojure/Java”, IEEE Transactions of Systems, Man, and Cybernetics, Part C:Applications and Reviews, vol. 42, no. 1, pp 1 – 13, 2012. http://ieeexplore.ieee.org/xpl/tocresult.jsp?reload=true&isnumber=6104267
  3. Maurice H. ter Beek, Alessandro Fantechi, Laura Semini, ”From Software Engineering to Formal Methods and Tools, and Back”, Springer Nature, 2019, 978-3-030-30985-5
  4. Mazzara, Manuel, et al., eds., Software Technology: Methods and Tools: 51st International Conference, TOOLS 2019. Proceedings. Vol. 11771. Springer Nature, 2019.
  5. Ma, Yuxing, AudrisMockus, Russell Zaretzki, Bogdan Bichescu, and Randy Bradley, “A Methodology for Analyzing Uptake of SoftwareTechnologies Among Developers”, IEEE Transactions on Software Engineering, vol. 48, no.2, pp. 485 – 501, 2022.
  6. Edison, Henry, Xiaofeng Wang, and Kieran Conboy, “Comparing methods for large-scale agile software development: A systematic literature review”, IEEE Transactions on Software Engineering 2021.
  7. Leal, Gislaine Camila Lapasini, Rafael Prikladnicki, Christof Ebert, Renato Balancieri, and Leandro Bento Pompermaier, “Practices and tools for software start-ups”, IEEE Software, vol.37, no. 1, pp.72-77, 2019
  8. Panach, Jose Ignacio, Oscar Dieste, Beatriz Marín, Sergio España, Sira Vegas, Oscar Pastor, and Natalia Juristo, “Evaluating model-driven development claims with respect to quality: a family of experiments”, IEEE Transactions on Software Engineering, vol. 47, no. 1, 130-145, 2018.
  9. LaToza, Thomas D. “Information Needs: Lessons for Programming Tools”, IEEE Software, vol.37, no. 6, pp.52-57, 2020.
  10. Bogart, Chris, Christian Kästner, James Herbsleb, and FerdianThung, “When and how to make breaking changes: Policies and practices in 18 open source software ecosystems”, ACM Transactions on Software Engineering and Methodology (TOSEM), vol.30, no. 4,pp.1-56, 2021.
  11. .Jackson, Victoria, André van der Hoek, Rafael Prikladnicki, and Christof Ebert, “Collaboration Tools for Developers”, IEEE Software, vol.39, no. 2,pp. 7-15, 2022.
  12. Thomson, Patrick, “Static Analysis: An Introduction: The fundamental challenge of software engineering is one of complexity”, Queue vol. 19, no.4, pp. 29-41,  2021.
  13. Maudoux, Guillaume, and Kim Mens, “Correct, efficient, and tailored: The future of build systems”, IEEE Software vol.35, no. 2,pp. 32-37, 2018.
  14. Chatterjee, Preetha, et al., “Exploratory study of slack q&a chats as a mining source for software engineering tools”, 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR), pp. 490-501, 2019.
  15. Hickey, Rich, “A history of Clojure”, Proceedings of the ACM on programming languages 4.HOPL, pp. 1-46, 2020
  16. Costa Silva, Camila Mariane, “Reusing software engineering knowledge from developer communication”, Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering,  2020.