<?xml version="1.0" encoding="utf-8"?>
<Gradivo ID="187358" NadgradivoID="0" NRID="29237460" OceID="0" DomainUrl="https://repozitorij.uni-lj.si/" IzpisPolniUrl="https://repozitorij.uni-lj.si/IzpisGradiva.php?lang=slv&amp;id=187358" StOgledov="88" StPrenosov="18" StOcen="0" VsotaOcen="0" DatumIzvoza="2026-09-19 22:40:33" OcenaSkupna="0" StPodgradiv="0" StudijskiProgramEvsID="1000468" JeIndeksirano="0" JeVecAvtorjev="0" DovoliZahtevkeZaDostop="0">
  <PID Url="http://hdl.handle.net/20.500.12556/RUL-187358">20.500.12556/RUL-187358</PID>
  <Naslov>Detekcija načrtovalskih vzorcev v kodi z uporabo ontologije in LLM</Naslov>
  <Podnaslov></Podnaslov>
  <TujJezik_Naslov>Design Pattern Detection in Source Code Using an Ontology and Large Language Models</TujJezik_Naslov>
  <TujJezik_Podnaslov></TujJezik_Podnaslov>
  <Opis>Načrtovalski vzorci opisujejo ponavljajoče se rešitve pri načrtovanju program-
ske opreme. V nalogi razvijemo program za zaznavanje načrtovalskih vzorcev
v kodi C#. Kodo s platformo Roslyn pretvorimo v graf dejstev v obliki
osebek–povedek–predmet, poizvedbe pa v njem iščejo kandidate za vseh 23
načrtovalskih vzorcev skupine Gang of Four. Neobvezna semantična stopnja
z velikim jezikovnim modelom presodi, ali kandidat izraža razločevalni na-
men načrtovalskega vzorca. Najdbe vsebujejo vloge udeležencev v zaznanem
načrtovalskem vzorcu in mesta v kodi, izvoziti pa jih je mogoče v več strojno
berljivih oblikah. Sistem ovrednotimo na 40 ročno označenih enotah iz sedmih
resničnih odprtokodnih projektov v jeziku C#, objavljenih na GitHubu, za
katere je vnaprej določeno, katere načrtovalske vzorce vsebujejo. Strukturni
detektorji pri ločenem preverjanju na 23 lastnih in 22 zunanjih učbeniških
primerih dosežejo popoln rezultat, na evalvacijskem korpusu označenih prime-
rov pa mikrooceno F1 = 0,667. Ko strukturne kandidate na isti kodi dodatno
preveri veliki jezikovni model, se mikroocena F1 zviša na 0,828. Rezultat
naloge je uspešen prikaz koncepta hibridnega zaznavanja načrtovalskih vzorcev
in je lahko osnova za njegov nadaljnji razvoj.</Opis>
  <TujJezik_Opis>Design patterns describe recurring solutions to software design problems.
In this thesis, we develop a tool for detecting design patterns in C# code.
Using the Roslyn platform, the code is transformed into a graph of facts
represented as subject–predicate–object triples, which is then queried to find
candidates for all 23 Gang of Four patterns. An optional semantic stage
uses a large language model to determine whether a candidate expresses
the intent that distinguishes the pattern. The findings identify the roles of
participants in the detected pattern and their locations in the code, and can
be exported in several machine-readable formats. We evaluate the system on
40 manually labelled units from seven real-world open-source C# projects
published on GitHub. In separate correctness checks, the structural detectors
achieve a perfect result on 23 bundled and 22 external textbook examples; on
the evaluation corpus of manually labelled examples, they achieve a micro
F1 score of 0.667. When the structural candidates from the same code are
additionally verified by a large language model, the micro F1 score increases
to 0.828. The thesis presents a successful proof of concept for hybrid design
pattern detection and provides a foundation for its further development.</TujJezik_Opis>
  <KljucneBesede>
    <Beseda>načrtovalski vzorci</Beseda>
    <Beseda>statična analiza kode</Beseda>
    <Beseda>SPARQL</Beseda>
    <Beseda>RDF</Beseda>
    <Beseda>ontologije</Beseda>
    <Beseda>Roslyn</Beseda>
    <Beseda>veliki jezikovni modeli</Beseda>
  </KljucneBesede>
  <TujJezik_KljucneBesede>
    <Beseda>design patterns</Beseda>
    <Beseda>static code analysis</Beseda>
    <Beseda>SPARQL</Beseda>
    <Beseda>RDF</Beseda>
    <Beseda>ontologies</Beseda>
    <Beseda>Roslyn</Beseda>
    <Beseda>large language models</Beseda>
  </TujJezik_KljucneBesede>
  <Potrjeno>true</Potrjeno>
  <JeZaklenjeno>false</JeZaklenjeno>
  <JeRecenzirano>false</JeRecenzirano>
  <Zaloznik></Zaloznik>
  <Izvor></Izvor>
  <Jezik ID="1060" ISO639-3="slv">Slovenski jezik</Jezik>
  <TujJezik ID="1033" ISO639-3="eng">Angleški jezik</TujJezik>
  <Povezave></Povezave>
  <Pokrivanje></Pokrivanje>
  <CasovnoPokritje></CasovnoPokritje>
  <AvtorskePravice></AvtorskePravice>
  <VrstaGradiva ID="mb11" DRIVER="info:eu-repo/semantics/bachelorThesis">Diplomsko delo/naloga</VrstaGradiva>
  <DatumVstavljanja>2026-09-10 11:35:13</DatumVstavljanja>
  <DatumObjave>2026-09-10 11:35:21</DatumObjave>
  <DatumSpremembe>2026-09-12 03:29:42</DatumSpremembe>
  <DatumTrajnegaHranjenja>0000-00-00 00:00:00</DatumTrajnegaHranjenja>
  <LetoIzida>2026</LetoIzida>
  <LetoIzidaDo>0</LetoIzidaDo>
  <KrajIzida></KrajIzida>
  <LetoIzvedbe>0</LetoIzvedbe>
  <KrajIzvedbe></KrajIzvedbe>
  <Opomba></Opomba>
  <StStrani></StStrani>
  <StevilcenjeNivo1></StevilcenjeNivo1>
  <StevilcenjeNivo2></StevilcenjeNivo2>
  <Kronologija></Kronologija>
  <Patent_Stevilka></Patent_Stevilka>
  <Patent_DatumVeljavnosti>0000-00-00</Patent_DatumVeljavnosti>
  <VerzijaDokumenta>NiDoloceno</VerzijaDokumenta>
  <StatusObjaveDrugje>NiDoloceno</StatusObjaveDrugje>
  <VrstaStroskaObjave>NiDoloceno</VrstaStroskaObjave>
  <DatumPoslanoVRecenzijo>0000-00-00</DatumPoslanoVRecenzijo>
  <DatumSprejetjaClanka>0000-00-00</DatumSprejetjaClanka>
  <DatumObjaveClanka>0000-00-00</DatumObjaveClanka>
  <EmbargoDo>1970-01-01</EmbargoDo>
  <VrstaEmbarga ID="1" Naziv="Takojšnja javna objava" OpenAIREDostop="openAccess"></VrstaEmbarga>
  <Osebe>
    <Oseba ID="165578" Ime="Urban" Priimek="Gajšek" AltIme="" VlogaID="70" VlogaNaziv="Avtor" ConorID="" Afiliacija="" ArrsID="0" ORCID=""></Oseba>
    <Oseba ID="24089" Ime="Marko" Priimek="Poženel" AltIme="" VlogaID="991" VlogaNaziv="Mentor" ConorID="55311459" Afiliacija="" ArrsID="23953" ORCID=""></Oseba>
  </Osebe>
  <Identifikatorji>
    <Identifikator ID="16" Sifra="VisID" Naziv="VisID" URL="">38924</Identifikator>
  </Identifikatorji>
  <Datoteke>
    <Datoteka ID="246973" DatotekaNRID="14784440" NamenDatotekeID="2" NamenDatoteke="Predstavitvena datoteka" FormatDatotekeID="2" FormatDatoteke=".pdf" MIME="application/pdf" IkonaFormata="pdf.png" IkonaFormataPolniUrl="https://repozitorij.uni-lj.si/teme/rulDev/img/fileTypes/pdf.png" VelikostDatoteke="1134893" VelikostDatotekeKratko="1,08 MB" DatumVstavljanja="2026-09-10 11:35:21" JeZbrisana="false" JeJavnoVidna="true" JeIndeksirana="false" JeVidno="true" VidnoOd="01.01.1970" Zaporedje="0">
      <Naziv>Gajsek_Urban_-_Detekcija_nacrtovalskih_vzorcev_v_kodi_z_uporabo_ontologije_in_LLM.pdf</Naziv>
      <OrgNaziv>Gajsek_Urban_-_Detekcija_nacrtovalskih_vzorcev_v_kodi_z_uporabo_ontologije_in_LLM.pdf</OrgNaziv>
      <URL></URL>
      <Opis></Opis>
      <OpisTujJezik></OpisTujJezik>
      <UrlObdelave></UrlObdelave>
      <FrekvencaAzuriranjaID>1</FrekvencaAzuriranjaID>
      <Verzija></Verzija>
      <MD5>708889481B5D1DADAAA94B9346ED4E8F</MD5>
      <SHA256>a0f5d9be2170d92f835d4076575ff14c55d61f49fdde09bacaca1155b78d95f4</SHA256>
      <UUID>eaacb63c-acfa-11f1-8bc5-0050569b8976</UUID>
      <PID></PID>
      <PrenosPolniUrl>https://repozitorij.uni-lj.si/Dokument.php?lang=slv&amp;id=246973</PrenosPolniUrl>
      <Vsebine>
      </Vsebine>
    </Datoteka>
  </Datoteke>
  <Organizacije>
    <Organizacija OrganizacijaID="25" Kratica="FRI" ZavodEvsID="0000066" Logo="" LogoPolniUrl="https://repozitorij.uni-lj.si/teme/rulDev/img/logo/">Fakulteta za računalništvo in informatiko</Organizacija>
  </Organizacije>
  <OrganizacijeVira>
  </OrganizacijeVira>
  <MetodeZbiranjaPodatkov>
  </MetodeZbiranjaPodatkov>
  <TipologijaDela ID="0" Koda="0" Naziv="Ni določena" SchemaOrg="CreativeWork"></TipologijaDela>
  <Ostalo>
    <StIrodsDatotek>0</StIrodsDatotek>
    <StDatotekPodTrajnimEmbargom>0</StDatotekPodTrajnimEmbargom>
    <StDatotekZOmejenimDostopom>0</StDatotekZOmejenimDostopom>
  </Ostalo>
</Gradivo>
