Upload
eunapije
View
231
Download
0
Embed Size (px)
Citation preview
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
1/47
ZADATAK DIPLOMSKOGMASTER RADA
Zadatak rada je implementirati softverski alat za odravanje CIM modela definisanog uEnterprise Architect-u. Za realizaciju koristiti APIEnterprise Architect-a i standardno softversko
okruenje Microsoft Visual Studio i programski jezik C# kao i biblioteke koje nudi MicrosoftOffice.Omoguiti praenje razliitih verzija CIMmodela kao i generisanje CIMprofila na osnovuizabranih klasa i atributa. Za praenje razliitih verzija CIMmodela definisatiERemu, a podatkeo pojedinim verzijama CIMmodela smestiti u bazu podataka.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
2/47
SPISAK KORIENIH SKRAENICA
CIMCommon Information Model
IECInternational Electrotecnical Commission
EMSEnergy Management SystemEPRIElectric Power Research Institute
CCAPIControl Center Application Programming Interface
UMLUnified Modeling Language
XML eXtensible Markup Language
RDF Resource Descriptor Format
RDFSResource Descriptor Format Schema
OWLWeb Ontology Language
OMGObject Management Group
XMIMetadata Interchange
URIUniform Resource Identifier
CPSMThe Common Power System Model
DEWGData Exchange Working Group
ISOIndependent System Operator
RTORegional Transmission Organization
IOPInteroperability
LINQLanguage Integrated Query
ORMobject - relational mapping
ORDObject Relational Designer
DOMDocument Object Model
EAEnterprise Architect
EREntity-relationship
EAPEnterprise Architect Project
IDE Integrated Development Environment
CLRCommon Language Runtime
CLICommon Language Infrastructure
CILCommon Intermediate Language
ILIntermediate Language
W3CWorld Wide Web Consortium
NERCNorth American Electric Reliability Corporation
http://en.wikipedia.org/wiki/Entity-relationship_modelhttp://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.htmlhttp://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.htmlhttp://en.wikipedia.org/wiki/Entity-relationship_model7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
3/47
SADRAJ
1. UVOD .............................................................................................................................. 1
2. CIM ................................................................................................................................. 2
2.1 OSNOVE CIM-A ......................................................................................................... 2
2.1.1 Unified Modeling Language (UML) .................................................................... 2
2.1.2 eXtensible Markup Language (XML) .................................................................. 52.1.3 Ontologies ............................................................................................................. 6
2.1.4 Resource Descriptor Format (RDF) ..................................................................... 6
2.1.5 Web Ontology Language (OWL) ......................................................................... 8
2.2 CIMPROFIL ............................................................................................................... 8
2.3 MAPIRANJE CIM-A IZ UML-A NA RDFS ................................................................... 9
2.4 STRUKTURA CIM-A................................................................................................... 9
2.4.1 Osnovni paketi CIM-a .......................................................................................... 9
2.4.2 Osnovne klase CIM-a ......................................................................................... 10
2.4.3 Provodna oprema .................................................................................................11
2.4.4 Povezivanje provodne opreme ........................................................................... 12
3. OPIS KORIENIH TEHNOLOGIJA I ALATA .................................................... 14
3.1 MICROSOF VISUAL STUDIO I .NETFRAMEWORK.................................................... 14
3.2 LINQ(LANGUAGE INTEGRATED QUERY) ................................................................ 14
3.2.1 LINQ to SQL ...................................................................................................... 15
3.2.2 LINQ to XML ..................................................................................................... 17
3.3 ENTERPRISE ARHITECT (EA) ................................................................................... 17
3.3.1 Automation Interface .......................................................................................... 17
4. PRIKAZ REALIZOVANOG SOFTVERSKOG ALATA ......................................... 19
4.1 FORMULISANJE ZAHTEVA......................................................................................... 19
4.2 APLIKACIJA IDMAPPING......................................................................................... 194.2.1 Nibbles (n0-n15) ................................................................................................. 21
4.3 APLIKACIJA CIMPROFILE GENERATE...................................................................... 22
4.3.1 Manipulacija sa stablom ..................................................................................... 23
4.3.2 Export CIM modela (profila) u RDFS fajl ......................................................... 25
5. DETALJI IMPLEMENTACIJE SOFTVERSKOG ALATA ................................... 28
5.1 APLIKACIJA IDMAPPING......................................................................................... 28
5.1.1 Uitavanje CIM modela definisanog u Enterprise Architect-u .......................... 285.1.2 Generisanje Model Type (n0) ............................................................................. 29
5.1.3 Generisanje inheritance hierachy(n1-n7) ........................................................... 29
5.1.4 Generisanje DMS Type code(n8-n11) ................................................................ 325.1.5 Generisanje attribute sequence number(n12-n13) .............................................. 32
5.2 APLIKACIJA CIMPROFILE GENERATE...................................................................... 32
5.2.1 Model podataka CIM profile generate aplikacije ............................................... 33
5.2.2 Objektni model CIM modela prethodno uitanog iz EAP fajla........................ 345.2.3 uvanje uitanog modela................................................................................... 355.2.4 Brisanje i itanje modela(profila) iz baze........................................................... 355.2.5 Prikaz uitanog CIM modela(profila)................................................................ 365.2.6 Operacije nad stablom(dodavanje, izmena, brisanje vorova stabla)................. 365.2.7 Povezivanje modela iz baze i modela sauvanog u EAP fajlu........................... 385.2.8 Export CIM objektnog modela u RDFS fajl....................................................... 39
6. ZAKLJUAK.............................................................................................................. 42
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
4/47
7. LITERATURA ............................................................................................................. 43
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
5/47
1
1. UVOD
Jo od pojave elektrine energije, proizvoai su nastojali da usavre njen nainproizvodnje kako bi ostali konkurentni na tritu. Usavravanje se odnosilo i nasoftversku podrkuza elektroenergetske sisteme, za njihovu vizualizaciju i upravljanje. Za praenje elektroenergetskihsistema korien je softver koji je najee kupovan od softverskih kuaili je bio implementiran odsamih elektroenergetskih kompanija.
Razvojem elektroenergetskih sistema postojala je potreba za uvanjem i razmenominformacija u okviru same kompanije kao i izmeu razliitih kompanija. Aplikacije koje surazmenjivale informacije su najee bile nekompatibilne, rukovale su sa razliitim formatima
podataka, tako da je njihova komunikacija bila vrlo komplikovana. Da bi se omoguila nesmetanarazmena informacija izmeu aplikacija potrebno je ispotovati odreeni standard ili grupustandarda koje e aplikacije da koriste.
Jedna od vanih informacija koje se razmenjuju u ovoj komunikaciji, jeste modelelektroenergetske mree. Standard koji propisuje elemente i strukturu takvog modela se nazivaCIM (Common Information Model). Upravo drugo poglavlje govori o ovom standardu.
Kompanije, koje razvijaju sisteme za upravljanje prenosom elektrine energije, se u svom raduoslanjaju na CIM, a samim tim i na softverske alate koji omoguuju manipulacije CIMpodacima.U radu je opisan softverski alat koji se bavi manipulacijom CIMpodacima.
CIMmodel prati razvoj organizacije, te je sklon izmenama i javlja se potreba za uvanjemCIMmodela, ali sa svim izmenama koje su nad njih obavljene od poetka pa do njegovekrajnjerealizacije. Da bi se lake upravljalo razliitim verzijama CIM modela, potrebno ih je uvati uodreenom formatu. Jedan od najprikladnijihnaina jeste relaciona baza podataka. U ovom radu jerealizovan softverski alat koji omoguava uvanje CIMmodela razliitihverzija kao i generisanjeCIM modela/profila u RDFS format podataka tj. format podataka koji je zgodan za razmenu
informacija izmeu aplikacija.
Tree poglavlje opisuje tehnologije koje su korienje u realizaciji softverskih alata koji ebiti opisani.
U etvrtom poglavlju su prikazana dva softverska alata, realizovana u ovom radu, njihovgrafiki interfejs kao i opis njihove funkcionalnosti.
Peto poglavlje se odnosi na detalje implementacije aplikacija, sa akcentom na odreenespecifinosti koje su realizovane u ovom radu.
U poslednjem, estom poglavlju je dat kratak osvrt na reenje problema uz ukazivanje nanjegove dobre i loe strane kao i pravce daljeg istraivanja.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
6/47
2
2. CIM
Common information model(CIM) [2] je apstraktni model koji predstavlja sve bitne objekte
elektroenergetskog sistema. Koristei jednostavni model, preduzea i prodavci mogu smanjititrokove integracije, koji treba da omogui veu funkcionalnost za upravljanje i optimizacijuelektrinih sistema[1]. Ovaj model ukljuuje opis svih klasa i njihovih atributa, kao i meusobnih
veza izmeu razliitih klasa. Razvila ga je radna grupa 13 tehnikog komiteta 57 Meunarodneelektrotehnike komisije (IECInternational Electrotecnical Commission, Tehnical Committee 57,Work Group 13) i postao je meunarodni standard sa oznakom IEC 61970-301. Osnovna namenaCIM-a je da olaka integraciju postojeih sistema za upravljanje prenosom, EMS (Energy
Management System). Pre nastanka CIM-a, integracija sistema i razmena podataka izmeu sistemarazliitih elektroenergetskih kompanija je bila jako oteana. Svaka kompanija je koristila svoj,nestandardni, model podataka i imala sopstveni nain njegovog skladitenja. Ovakav nain rada jekupce softverskihproizvoda za elektroenergetske sisteme primoravao da kupuju celokupna reenjaod istog proizvoaa, dok je izgradnja sistema od vie softverskih modula razliitih proizvoaa
bila nezamisliva. Takva situacija je navela EPRI (Electric Power Research Institute) u Severnoj
Americi da zapone projekat pod nazivom CCAPI (Control Center Application ProgrammingInterface). Cilj CCAPIprojekta je bio razvoj standarda koji bi olakali integracijuEMSaplikacijarazliitih proizvoaa. Rezultat projekta je grupa standardaIEC 61970, iji deo je iIEC 61970-301standard koji se odnosi na modele elektroenergetskih sistema [20].
CIM je definisan tehnikama za objektno-orijentisano modelovanje. Specifikacija CIM-aje
data u UML (Unified Modeling Language) [3] notaciji. Modelovanje sistema pomou UML-aobezbeuje standardizovan nain za predstavljanje resursa elektroenergetskog sistema pomouklasa, njihovih atributa, i meusobnih veza izmeu klasa. Nain na koji su modelovani neki odosnovnih koncepata CIM-aje izloen u nastavku ovog poglavlja. Model podataka dat u oblikuUML notacije nije pogodan za itanje, odnosno obradu, od strane aplikacija. Reavanjem ovog
problema se bavi standard 501 [19] iz IEC 61970 grupe standarda, koji definie pravila za
formiranje mainski itljivog formata CIM-a.
2.1 Osnove CIM-a
CIMse naslanja na vie osnovnih tehnologija. Ovo poglavlje opisuje osnovne karakteristiketih tehnologija. Bie ukratko opisane svaka od njih, dovoljno da se shvate osnovni koncepti CIM-a.
Sledee tehnologije su osnova za razumevanje osnovaCIM-a :
Unified Modeling Language (UML)
eXtensible Markup Language (XML)
Ontologies
Resource Descriptor Format (RDF) Web Ontology Language (OWL)
2.1.1 Unif ied Mo delin g Langu age (UML)
UMLje formalni opisni jezik koji objedinjuje nekoliko metodologija najee korienih odstrane softver inenjera za modelovanje sistema. To je jezik a ne samo tehnika za crtanjedijagrama. Koristi se za definisanje, vizuelizaciju, kreiranje i dokumentovanje softverskih sistema.
UMLje zvanino definisan od strane Object Management Group(OMG) i zvanino je ukljuen umeunarodni standard[4].
UML dijagram je grafika reprezentacija modela sistema. itav model ne sadri samodijagrame ve i pisane dokumente.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
7/47
3
UML dijagrami se koriste da obezbede tri razliita pogleda modela:
Funkcionalni zahtevi
Statika struktura Dinamiki izgled
UML[1] modeli mogu da se razmenjuju izmeuUMLalata i softverskih sistema koristeiXML Metadata Interchange (XMI) format podataka. Metapodaci obezbeuju podatke o
podacima (tj. opisuju karakteristike i kontekst podataka u informacionom modelu). Metapodacisadre tehnike karakteristike, sadraj i prirodu informacija entiteta, veze izmeu entiteta i veze sadrugim podacima.
UMLdefinie notaciju i sintaksu za trinaest razliitih tipovadijagrama, koji su kategorisaniu tri grupe:
Strukturni dijagrami:
Dijagram klasa (Class Diagram)
Dijagram komponenti (Component Diagram)
Objektni dijagram (Object Diagram)
Kompozitni strukturni dijagram (Composite Structure Diagram)
Dijagram rasporeda (Deployment Diagram)
Dijagram paketa (Package Diagram)
Dijagrami zasnovani na izgledu:
Dijagram aktivnosti (Activity Diagram)
Dijagram sluajeva korienja(Use Case Diagram)
Dijagrami interakcije:
Dijagrami sekvence (Sequence Diagrams)
Interaction Overview Diagram
Dijagrami za komunikaciju (Communication Diagram)
Dijagrami zasnovani na vremenu (Timing Diagram)
Radi boljeg razumevanja koncepata CIM-a u nastavku e biti objanjeni dijagrami klasa.Dijagrami klasa vizuelno predstavljaju hijerarhiju klasa i relacija. Hijerarhija klasa je model
sistema koji predstavlja svaku komponentu kao odvojenu klasu. Potujui uobiajene principemodelovanja, hijerarhija klasa bi trebala da predstavi realnu strukturu sistema.
UML dijagrami klasa mogu biti podeljeni u odvojene grupe klasa. Takve grupe klasapredstavljene su paketima. U dijagramima klasa, one su grupisane po direktorijumima. Svaki paket
ima svoje ime koje opisuje grupu klasa koje se nalaze u tom paketu. Kao sadraj direkto rijuma ufajl sistemu, klase u direktorijumima bi trebale biti povezane, i razliiti paketi bi trebali biti opisanina nain kojibi pomogao onome ko ih ita darazume grupisanje.
Klase (Classes) predstavljaju specifine tipove stvari koje se modeluju. U UMLdijagramuklasa, klase su rasporeene po dijagramima kao kutije (boxes) koje imaju ime klase na samomvrhu. Svaka klasa pripada posebnom paketu. Jedan od uspeha pri modelovanju, jeste izbor prave
grupe klasa, koje e se malo menjati pod uticajima novih zahteva, koji se postavljaju.
Jedan od naina da se smanji uticaj promena na sistem je da se koristi koncept pod nazivom
generalizacija ili nasleivanje (inheritance). U UML-u nasleivanje se predstavlja linijom sastrelicom koja polazi od klase koja nasleuje, a zavrava se na klasi koju nasleuje data klasa.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
8/47
4
Klase koje nasleuju neku klasu se nazivaju deca(child classes), dok se klasa koju nasleuju zoveroditeljska (parent class). Klase koje nemaju decu se nazivaju listovi (leaf).
Slika 2.1.1.1 Primer nasleivanja klasa sa njihovim atributima
Klase poseduju svoje elemente koji se nazivaju atributima (attributes). Svaka klasa
poseduje vie instanci klase koje se nazivaju objektima(objects). Svaki objekat ima isti broj i istetipove atributa, ali svaki atribut ima svoju internu vrednost za svaki objekat. U UMLdijagramima
klasa, atributi svake klase su predstavljeni u okviru date klase. Svaki atribut je opisan svojim
imenom i tipom. Ono to treba napomenuti jeste da nisu svi atributi klase koji je opisuju prikazaniu kutiji. Ukoliko neka klasa nasleuje neku drugu klasu, atribute koje nasleuje iz nje se ne
prikazuju u njoj. Na slici 2.1.1.1 se moe videti primer dijagrama klasa na kome se vidi
nasleivanje,kao i atributi klasa koje su predstavljene na dijagramu.
Klase takoe poseduju i veze koje opisuju kako je objekat povezan sa nekim drugimobjektom. Ove veze se nazivaju asocijacijama (associations) u UML-u. Kao i atributi, svaka
instanca klase ima isti broj i tip asocijacija ali sa svojim internim vrednostima. Postoje tri vrste
asocijacija. Prva se naziva jednostavna asocijacija (simple association), druga je specijalan tip
asocijacija koji se naziva agregacija (aggregation), i traa vrsta se naziva kompozicija(composition).
Jednostavna asocijacija se koristi za modelovanje udruivanja dve ravnopravne klase(klasena istom nivou). Ona je u UML-u predstavljena kao obina linija koja spaja dve klase (klasaVehiclei Owner, slika 2.1.1.2)
Agregacija je vrsta asocijacije koja modeluje odnos celina-delovi, pri emu su delovisamostalne klase ije instance mogu da ive i nezavisno od klase koja ih agregira. Ona je uUML-u predstavljena kao obina linija koja se na jednom kraju zavrava praznim rombom (klaseMotorcylei HandleBar,slika 2.1.1.2).
Kompozicija je vrsta asocijacije koja takoe modeluje odnos celina-delovi, pri emu sudelovi slabi objekti koji ne mogu samostalno da postoje bez osnovne klase, odnosno, prilikom
oslobaanja osnovne klase, potrebno je osloboditi i delove. Ona je u UML-u predstavljena kaoobina linija koja se na jednom kraju zavrava ispunjenim rombom (klase Buldingi Room, slika2.1.1.2).
Asocijacije poseduju osobine (properties) koji reprezentuju broj moguih veza izmeuobjekta i objekata sa kojim je taj objekat u vezi. Ta osobina se naziva kardinalitet (multiplicity).
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
9/47
5
Kardinalitet je predstavljen u UML-u kao broj ili par brojeva na svakom kraju linije koja
predstavlja vezu. Broj predstavlja minimum i maksimum moguih veza. Na primer broj 1 znai daveza, od objekta ka objektu sa kojim je dati objekat spojen, moe biti jedna i samo jedna.Na slici2.1.1.2 je predstavljen dijagram klasa sa svim tipovima veza koje su opisane.
Slika 2.1.1.2 Primer dijagrama sa vezama izmeu klasa
2.1.2 eXtensib le Markup Langu age (XML)
XML je skraenica za Extensible Markup Language, odnosno proirivi (metajezik) zaoznaavanje (markup) tekstualnih dokumenata. XML je standardizovan jezik za iju sestandardizaciju brine W3C. Ideja je bila da se stvori jezik koji e i ljudi i raunarski programi moi
jednostavno da itaju. XML definie optu sintaksu za oznaavanje podataka pomouodgovarajuih tagova (tags) koje imaju poznato ili lako razumljivo znaenje. Format kojiobezbeujeXMLza raunarske elemente moe se prilagoditi najrazliitijim oblastima, kao to suelektronska razmena podataka, uvanje podataka, odvajanje podataka od prezentacije, vektorskagrafika, sistemi glasovne pote, izrada novih specijalizovanih jezika za oznaavanje.
XML omoguava stvaranje dugotrajnih formata podataka koji su nezavisni od platforme. esto se dokumenti pisani na jednoj platformi ne mogu itati na drugim platformama, niti urazliitim programima na istoj platformi, ak ni u ranijoj verziji jednog programa na istoj
platformi. UXMLdokumentima tekstualni su ne samo podaci ve i tagovikoji su smeteniu samojXML datoteci. To znai da ih moe itati svaki alat kojije u stanju da ita tekstualne datoteke. Takose podaci mogu prenositi sa jednog sistema na drugi.
Za potrebe CIM-a, XMLse moe upotrebiti za definiciju ontologija, ukljuujui ResourceDescription Framework (RDF) i Web Ontology Language(OWL), koji e biti opisani u narednimpoglavljima [6].
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
10/47
6
2.1.3 Ontolo gies
Ontologija je definisanje pojmova i njihovih veza u okviru odreene oblasti. Domen semoe posmatrati kao jedno polje, ili oblast specijalnosti, poput elektrotehnike. Ontologija
predstavlja posebno znaenje termina u zavisnosti na koji se domen primenjuje.
Definicija koncepta ontologije poinje sa definicijom klase, atributa i veze koje mogu bitidefinisane u UML dijagramu, ali ide i dalje i definie sledee dodate pojmove:
Ogranienja : formalni opis ta mora biti ispunjeno da bi za neke tvrdnje bioprihvaen ulaz Pravila: if-theniskaz
Aksiome: uslove i pravila koji zajedno ine ukupnu teoriju u domenu Dogaaji: menjanje atributa ili veza.
Dodatne konstrukcije, kao to su pravila i ogranienja ine korienje ontologija bogatijimalatom za definisanje modela podataka. Ontologije se najee kodiraju korienjem ontologije
jezika. RDF i OWLkoje e biti opisane u naredna 2 poglavlja su dve ontologije jezika koje sekoriste u CIMstandardu i CIMsoftverskim alatima [1].
2.1.4 Resou rce Desc ripto r Format (RDF)
RDF [1]je nain definisanja modela podataka koji je opisan u W3Cspecifikaciji.RDFjezasnovan na ideji davanja iskaza o resursima u obliku subjekat predikat objekat izraza.Ovakav izraz se uRDFterminologiji naziva tripletom (triple), gde subjekat predstavlja resurs,objekat oznaava svojstvo ili atribut koji se pripisuje subjektu, dok predikat izraava vezu izmeusubjekta i objekta.
Subjekat, odnosno resurs, je imenovan svojim jedinstvenim identifikatorom, URI-jem
(Uniform Resource Identifier). URIje tekstualna vrednost koja jedinstveno identifikuje dati resurs.
Mada je uobiajeno da URIresursa referencira stvarne podatke na World Wide Web-u, u sluajuRDF-a, on ne mora obavezno dapredstavlja referencu za pristup resursu. Objekat i predikat
tripleta takoe predstavljaju resurse. Ovakvimtripletima mogu da se formiraju sintaksnekonstrukcije oblika automobil ima etiri toka ili ovek ima ime. Kolekcija RDF iskaza
predstavljaoznaen, usmeren multi-graf. RDF model podataka je, za reprezentaciju odreenihvrsta znanja, pogodniji odrelacionog modela ili drugih ontolokih modela.
Potrebno je napomenuti da seRDFmodel moe izraziti u dva formata:XMLiN3(Notation3). XML format se jednostavno naziva RDF-om, jer je uveden kao deo W3C specifikacija koje
definiuRDF. Pri tome,XMLformat ne treba poistovetiti sa apstraktnim RDFmodelom. Drugi,N3format, je uveden za potrebelakeg pisanja i razumevanja podataka, jer njegova tabelarna notacija
prua bolju preglednostRDFtripletaodXMLzapisa. CIMzajednica takoe koristi Turtle format(Terse RDF Triple Language) koji predstavlja minimalnu (saetu) formuN3formata.
RDF Schema (RDFS) fajlovi opisuju klase, atribute i relacije informacionog modela i
najee koriste .rdfs format. RDF fajlovi koji predstavljaju instance opisuju instance objekata iobino koriste .xmlili .rdfformat.
U okviruRDFiliRDFSfajlova se koriste sledei objekti:
ema(Schema) fajl
Class: oristi se uRDFemi za definisanje nove klase
Resource: Korenska klasa za sve resurse
Property: Klasa svih svojstava
Datatype: Identifikuje tipove podataka subClassOf: Specijalizuje klasu
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
11/47
7
range: Ograniava vrednosti svojstava
type: Identifikuje klasu pojedinanog resursa
about: Opisuje postojei resurs
Description: Koristi se za osobine/vrednosti koje se odnose na resurs
Fajl koji predstavlja instancu
ID: Identifikuje novi resurs about: Opisuje postojei resurs
Description: Koristi se za osobine/vrednosti koje se odnose na resurs
Najznaajnije prednostiRDFS-a se ogledaju u mogunosti proirivanja opisa resursa novimsvojstvima, i u slobodi izbora tehnike kojom e znaenje resursa nekog domen-specifinog renika
biti opisano.
RDF ema moe se proiriti da podri neke od koncepata UML-a koji su znaajni zakorienje u CIM-u. Postoje sledea proirenjaRDFS-a:
Kardinalitet veze (yltiplicity)Jedna od znaajnih informacija koje UML [19] notacija obezbeuje, jeste kardinalitet uloge
u asocijaciji izmeu dve klase.RDFSse proiruje definisanjem novog svojstva, cims:multiplicity,ietiri imenovana resursa, koji, respektivno, predstavljaju kardinalitet uloge, odnosno moguevrednosti kardinaliteta sa nazivima: M:0..1 (najvie jedan), M:1..1 (tano jedan), M:0..n (nula ilivie) i M:1..n (barem jedan). Mada za atribut klase nije uobiajeno razmatrati kardinalitet, priRDFS definisanju atributa, moe da se koristi ovde opisano svojstvo kako bise naglasilo da li jedati atribut klase opcion (M:0..1) ili obavezan (M:1..1).
Inverzna uloga veze (I nverse Rolename)
Poto asocijacija izmeu dve klase ima dve strane tj. uloge, da bi se u okviru jedneobezbedio podatak za navigaciju do suprotne uloge, za resurs se definie novo svojstvocims:inverseRoleName, kojim se odreuje suprotna strana asocijacije.
Sadravanje(isAggregate)
Neke od asocijacija u CIM-u su specificirane kao agregacije, odnosno kompozicije.
Definisanjem svojstva cims:isAggregatei postavljanjem vrednosti na true, ono definie resurs kaokontejnersku ulogu asocijacije.
Stereotip (Stereotype)
CIMkoristi UMLstereotipove da oznai da su neke klase primitivni tipovi ili enumeracije.Definisanjem svojstva cims:stereotypese iskazuje stereotip funkcije. Pored ove primarne namene,
data konstrukcija se u praksi koristi da blie oznai i druge tipove resursa (ne samo klase).
Tipovi podataka (Data type)
Svaki atribut UML klase ima definiciju svog tipa. U CIM modelu, tipovi podataka su
definisani kao klase. Definisanje tipova podataka atributa klase se referenciraju na korespondentne
tipove podataka klasa. Tipovi podataka mogu biti: string, enumeration, float, integeri drugi. Tip
podataka se opisuje svojstvom cims:dataType.
Profil (Profile)
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
12/47
8
Deo klasa, atributa i asocijacija u UML modelu mogu biti definisani kroz profil. Svaki
profil poseduje ime. Profil se opisuje sa cims:profilesvojstvom. Kao vrednost ovog svojstva
navodi se ime profila.
Kategorija klase(Class category)
CIM UMLmodel klasa koristi kategorije za strukturiranje klasa. Kategorije su npr: Coreili
Domain. Svojstvo cims:ClassCategory definie kategoriju. Ime kategorije je definisano u
rdf:aboutsvojstvu.
Pripadnost kategoriji (Belongs To Category)
Svaka klasa u UMLmodelu pripada nekoj kategoriji. Svojstvo cims:BelongsToCategory se
referencira na kategoriju klase kojoj pripada.
2.1.5 Web Ontolog y Lang uage (OWL)
OWLje jezik zasnovan naRDF-u koji je sposoban da u potpunosti izraava ontologije, zarazliku od UML dijagrama klasa ili standardnog RDF-a. OWL je namenjen kada je informacije
sadrane u dokumentima potrebno obraditi od strane aplikacije, za razliku od situacija u kojima
sadraj treba da bude predstavljen ljudima [7]. OWLse moe koristiti za eksplicitno predstavljanjeznaenje rei u reenicama i odnosa izmeu pojmova u reenici. OWL ima vie mogunosti zaizraavanje znaenja i semantike negoXML, RDF iRDFS, a time prevazilazi ove jezike za razlikuod kojih moe da predstavi mainsku interpretaciju sadraja na internetu.
OWLkoriste neki CIM alati da odrede podskupove celog modela podataka, koji se nazivaju
profili (opisano u poglavlju 2.2). CIM model podataka je definisan u UML-u i najee serazmenjuju korienjemXMI-a.
Zvanino, CIM standard opisuje profile samo kao tekstualne dokumente. Meutim,upotreba na engleskom jeziku, kao definicija sintakse u ovim dokumentima ograniava preciznost izahteva nekoga da tumai jezik. Najverovatnije da e zvanini standard pratiti neki od CIMalata i
biti u mogunosti da opie OWLu bliskoj budunosti[1].
2.2CIMprofil
Profil (profile) se definie kao skup klasa, njihovih atributa i meusobnih veza kojipredstavlja podskup svih klasa, atributa i veza definisanih u nekoj postojeoj emi. Dakle, datiprofil predstavlja podskup sebi nadreene eme. Obino se svakom profilu dodeljuje naziv iodreeni imenski prostor (namespace). Profili se koriste za definisanje kontekst-zavisnih ilidomenskih modela. Profili mogu da se realizuju u razliitim formatima, kao to su RDF , XMLSchema, tekst dokument iliHTML[1].
CPSMprofil (The Common Power System Model) definie podskup klasa, njihovih atributa
i meusobnih veza neophodnih za izvravanje elektroenergetskihEMSaplikacija. CPSMprofil jeoriginalno definisan od strane NERC, radne grupe DEWG, ali ga je IECkasnije proirio. CPSM
profili se uobiajeno koriste za razmenu modela prenosnih mrea izmeu severnoamerikih ISO(Independent System Operator), odnosnoRTO(Regional Transmission Organization) organizacija
i drugih distributivnih i prenosnih kompanija. Upotreba CPSMprofila je iroko zastupljena, jerNERCzahteva njegovu upotrebu, pa se iz tih razloga ponekad naziva iNERCprofilom.
CPSMprofil je definisan u standarduIEC61970-452. Osnovna namena ovog standarda je
postizanje sledeih ciljeva: unapreenje preciznosti modela elektroenergetskih sistema korienih ukritinim sistemima, postizanje konzistentnosti meu modelima korienim od strane razliitih
sistema koji igraju ulogu u radu ili planiranju interkonekcije, smanjenje ukupne cene odravanjakritinih modela koji se koriste u radu ili planiranju interkonekcije.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
13/47
9
Testiranje CPSM profila se vri kao deo godinjih testova interoperabilnosti, IOP(Interoperability), koje sponzorieEPRI. U okviru ovih testova se izmeu velikihEMSkompanijarazmenjuju uzorci modela i profili u CPSM formatu i zatim se rezultati uporeuju kako bi seutvrdilo jesu li modeli ispravno tumaeni od straneEMSaplikacija.
2.3 Mapiranje CIM-a iz UML -a na RDFS
ProirivanjemRDFS [19] jezika prethodnoje omogueno potpuno mapiranje CIMmodelapredstavljenog u UML notaciji, u njegovu mainski-itljivu XML reprezentaciju korienjemRDFS-a. (poglavlje 2.1.4)
UML paketi se mapiraju na cims:ClassCategory resurs, klase se mapiraju na rdfs:Class
resurse. Atributi se mapiraju na rdf:Property resurse. Vrednost enumeracije se mapiraju na
rdf:Descriptionresurs. Uloga asocijacije se mapira na rdf:Propertyresurs.
Za resurs dobijen iz paketa, definiu se svojstva: rdfs:label i rdfs:comment.
Za resurs dobijen iz klase, definiu se svojstva: rdfs:label, rdfs:comment, rdfs:subClassOf,cims:stereotypei cims:belongsToCategory.
Za resurs dobijen iz atributa, definiu se svojstva: rdfs:label, rdfs:comment, rdfs:domain irdfs:range.
Za resurs dobijen iz uloge asocijacije, definiu se ista svojstva kao i za atribut, kao idodatna svojstva: cims:inverseRoleName, cims:multiplicity i cims:isAggregate.
Za resurs dobijen iz vrednosti enumeracije, definiu se svojstva: rdfs:label, rdfs:commentirdf:type.
2.4 Struktura CIM-a
2.4.1 Osnovni paketi CIM-a
CIM je definisan objektno-orijentisanim modelom u UMLnotaciji, koja CIMdefinie kaoskup paketa (Slika 2.4.1.1). Paketi predstavljaju nain za grupisanje srodnih, logiki povezanihklasa, tako da olakavaju razumevanje i korienje modela. Klase opisuju elektroenergetski sistem,tj. proizvodnju elektrine energije, njen prenos i distribuciju. Paketi su dalje organizovani u grupe,ije specifikacije predstavljaju zasebne standarde.
U daljem tekstu bie navedeni osnovi paketi CIM modela kao i klase koje im pripadaju.
Core paket sadri osnovne klase koje su potrebne EMS aplikacijama, kao to suIdentifiedObject,PowerSystemResource,EquipmentContainer, ConductingEquipment, i Terminal .
Corepaket ne zavisi od ostalih paketa, ali veina ostalih paketa su zavisni od njega.
Topologypaket proiruje navedeni Corepaket, tako to zajedno sa Terminal klasommodeluje konektivnost, tj. fiziku povezanost opreme - izgraenostmree. Osim toga on modelujei topologiju, logiku povezanost opreme preko zatvorenih prekidaa.
Wires paket proiruje Core i Topology pakete, modelujui informacije o elektrinimkarakteristikama prenosnih i distribucionih mrea.
Outagepaket proiruje Core i Wirespakete i modeluje informacije o tekuim i planiranimkonfiguracijama mree.
Protectionpaket proiruje Core i Wirespakete, i sadri modele zatitne opreme, poputreleja.
Measpaket sadri modele merne opreme.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
14/47
10
LoadModelpaket se sastoji od modela potroaa i krivih potroaa. Specijalne okolnostikoje mogu uticati na optereenje, kao to su sezona, tip dana (ponedeljak, utorak, ... , praznik), sutakoe ukljueni u ovaj paket.
Generation se sastoji iz dva podpaketa Production i GenerationDynamics paketa.
Productionpaket sadri modele raznovrsnih generatora. Pored toga modeluje i cenu proizvodnje.GenerationDynamicspaket sadri modele pogonskih motora, kao to su turbine i bojleri.
SCADApaket sadri modele svih podataka vezanih za daljinsko upravljanje.
Slika 2.4.1.1. Struktura CIMmodela
2.4.2 Osnovne klase CIM-a
Pod osnovnim klasama se podrazumevaju one klase koje modeluju osnovne vrste entiteta
koji mogu da se nau u okviru elektroenergetskog sistema modelovanog CIM-om. Dijagramodnosa ovih klasa je prikazan na slici 2.2.
KlasaIdentifiedObjectse nalazi na samom vrhu hijerarhije. Iz nje je izvedena veina CIMklasa [20], a sadri atribute za imenovanje entiteta. Klasa koja se smatra osnovnom, jeste
PowerSystemResource. Ona predstavlja jedan resurs elektroenergetskog sistema. Resurs moe dase nalazi u vlasnitvu jedne ili viekompanija, gde je kompanija predstavljena klasom Company.Klasom Equipmentje predstavljena sva provodna i ostala oprema elektroenergetskog sistema.
KlasomEquipmentContainersu predstavljeni svi objekti koji na neki nain grupiu opremu. KlasaConductingEquipmentpredstavlja provodnu opremu, tj. deo opreme koja moe da provodielektrinu energiju, kao to su: prekidai, sabirnice, itd. Posebnu namenu u modelu ima klasa
PSRType, ija glavna uloga je da klasifikuje primerke iste klase, odnosno da omogu i manjenestandardne modifikacije CIM-a, bez potrebe da se menja model. Dakle, svi entiteti koji se mogu
nai u okviru elektroenergetskog sistema modelovanog CIM-om, mogu da se podele u sledeepodskupove:
Core
Domain
Wires Meas
Topology
LoadModel OutageGeneration SCADAProtection
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
15/47
11
provodna opremasve klase izvedene iz ConductingEquipment; bilo koja opremaklase izvedene izEquipment; entiteti za grupisanje, odnosno skladitenje opreme klase izvedene iz
EquipmentContainer;
ostali tipoviklase izvedene izPowerSystemResource.
Slika 2.4.2.1 Osnovne klase CIMmodela
2.4.3 Provodna oprema
Provodnu opremu u okviru CIM-a modeluju sve klase izvedene iz klase
ConductingEquipment. Slika 2.4.3.1 prikazuje dijagram klasa provodne opreme, gde se lako moeuoiti specijalizacija razliitih tipova ove opreme.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
16/47
12
Slika 2.4.3.1. Provodna oprema CIM-a
2.4.4 Povezivanje provodne opreme
Za modelovanje elektroenergetskih sistema nije dovoljno predstaviti samo elemente koji
postoje u sistemu, ve u obzir moraju da se uzmu i elektrine veze izmeu njih. Da bi CIMmodelelektroenergetskog sistema bio potpun, potrebno je obezbediti mehanizme za povezivanje
provodne opreme. Konektivnost u sistemu CIM modeluje pomou posebnih klasa: TerminaliConnectivityNode. Ove klase ne modeluju resurse elektroenergetskog sistema, ve imaju ulogu daobezbede informacije o fizikoj povezanosti elemenata. Dakle provodna oprema u CIM-u se ne
povezuje direktno, nego iskljuivo putem ove dve klase. Dijagram klasa prikazan na slici 2.4.4.1.ilustruje nain na koji CIMomoguava povezivanje provodne opreme.
Klasa ConductingEquipment, koja predstavlja provodnu opremu, je u vezi sa klasom
Terminal, koja predstavlja pristupne take preko kojih se provodna opremapovezuje u mreu.Provodna oprema u mrei moe da ima jedan ili vie Terminal-a. Dva Terminal-a ima sledeaoprema: ACLineSegment, DCLineSegment, Jumper, Fuse, Breaker, Disconnector i
LoadBreakSwitch, dok sva ostala provodna oprema ima jedan Terminal.
Da bi se obavilo logiko povezivanje provodne opreme, uvedena je klasaConnectivityNode. Instance ove klase predstavljaju vorove mree i slue za grupisanje Terminal-akoji su povezani preko nulte impedanse. Na primer, ukoliko je u modeliranom sistemu elemenat A
u direktnoj vezi sa elementom B, onda se njihova veza u CIM-u modeluje tako to se Terminalelementa A i Terminal elementa B poveu istim ConnectivityNode-om. Dakle, ConnectivityNodemoe da referencira vie Terminal-a, dok Terminal moe da referencira samo jedanConnectivityNode.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
17/47
13
Slika 2.4.4.1. Prikaz dela modela povezivanja opreme
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
18/47
14
3. OPIS KORIENIH TEHNOLOGIJA I ALATA
U ovom radu je korieno Microsoft Visual Studio 2008 razvojno okruenje i .NETFramework . Za implementaciju aplikacija korien je C# programski jezik. Za uvanje CIMmodela (profila) koriena je Microsoft-ova baza podataka (Microsoft SQL Server 2005 Express
Edition). Za komunikaciju sa bazom korien je LINQ. Generisanje MicrosoftExcel fajlovaomogueno je korienjem standardnih biblioteka .NETFramework-a, dok je komunikacija sa
EnterpriseArhitectomomoguena prekoAutomationInterface-a tj.Interop.EA.dllfajla.
U daljem tekstu bie opisanineki od alata i tehnologija koje su koriene u radu.
3.1 Mi cro so f Visual Studioi .NET Framewor k
Microsoft Visual Studio 2008 je verovatno jedno od najnaprednijih integrisanih razvojnih
okruenja (Integrated Development Environment-IDE) dostupno za programere danas. Bazirano jena dugoj istoriji programskih jezika i interfejsa [17].
Microsoft .NET Framework je platforma za razvijanje softvera fokusirana na
objedinjavanju razvoja svih Microsoft aplikacija. Osnovne ideje su platformska nezavisnost i
mrena transparentnost. Ako je suditi po Microsoft-u, .NET ukljuuje brojne tehnologijedizajnirane da omogue brzi razvoj interneta i intranet aplikacija.
Dve glavne komponente .NET-a su Common Language Infrastructure (CLI) i Common
Language Runtime (CLR). CLI je skup specifikacija za runtime okruenje, ukljuujui commontype system, base class libraryi machine-independent intermediate codeili Common Intermediate
Language(CIL). CLRobezbeuje platformu za izvravanje CLIkoda; pre nego toCILmoe bitiizvren, CLRga mora prevesti (obinoputemjust-in-time kompajlera) u nativni mainski kod.
Jo jedan bitan deo .NET-a je i programski jezik stvoren za njega C#. Za razliku oddrugih jezika, on ne poseduje sopstvene biblioteke tj. nema stdio.hili iostreamniti ita slino.To je tako jer je osmiljen kao jezik koji bi koristio .NETbiblioteke kao svoje sopstvene. Dok je,zbog ovoga, istovremeno C# vrlo zavisan od .NET-a, on sam nije deo .NET-a. Ne igra nikakvu
specifinu ulogu u .NETsvetu - i on se kompajlira uIL(Intermediate Language) kao i svaki drugi -i ima sline mogunosti kao i svi ostali jezici.
3.2 LINQ( Lang uage Integ rated Query)
LINQpredstavlja novi dodatak C#programskog jezika. Pojavljuje se u verziji C# 3.0. LINQ
reava problem manipulacije sa velikim kolekcijama objekata, gde je potrebno izdvojiti deokolekcije tokom zadatka za koji se program izvrava.
Ranije, ovakva vrsta posla zahtevala je pisanje velike koliine koda, kao to su sortiranje iligrupisanje, dok danas LINQ to sam odrauje. LINQ obezbeuje elegantan upitni jezik koji
poseduje veliki broj funkcija koje omoguavaju brzo sortiranje, grupisanje i izraunavanjestatistike nad rezultatima upita. LINQ takoe omoguava upite nad bazama podataka ilikompleksnimXMLdokumentima u kojima treba manipulisati ili pretraiti milione ili ak milijardeobjekata [8] . Tradicionalno, ovaj problem je uglavnom reen sa specijalizovanim bibliotekamaklasa, pa ak i pomou razliitih jezika, kao to su SQLupitni jezik za baze podataka.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
19/47
15
Slika 3.1.1 ArhitekturaLINQ-a
Na slici 3.1.1 je predstavljena arhitekturaLINQ-a (preuzeto sa [12]).
Visual Studio 2008dolazi sa nekoliko varijantiLINQ-a koji omoguava postavljanje upitaza razliite tipove podataka:LINQ to Objects, LINQ to SQL, LINQ to XML.
LINQ to Objects - Obezbeuje upite nad bilo kojom vrstom C# objekata u memoriji, kaoto su nizovi, liste, i ostale vrste kolekcija.
LINQ to SQL - Obezbeuje upite nad relacionim bazama podataka koje koriste standardniSQLupitni jezik, kao to jeMicrosoft SQL Server, Oraclei drugi. Ranije, da bi pristupili uz pomoC#ovim bazama podataka korisnik je morao da zna SQL, ali danas mogunosti upitnog jezika suugraenje u okviru C# programskog jezika i kroz LINQ lako se dozvoljava LINQ to SQL daupravlja SQLprevodu za vas.
LINQ to XML - Obezbeuje kreiranje i manipulaciju XML dokumentima koristei istusintaksu i opste mehanizme upita kao ostale varijanteLINQ-a.
U nastavku teksta bie detaljnije objanjene neko od varijanti LINQ-a koje su i korieneovom radu prilikom implementacije.
3.2.1 LINQ to SQL
LINQ to SQL [9]je komponenta .NET Frameworkkoja obezbeuje run-timeinfrastrukturuza mapiranje objekata na relacioni bazu podataka i obratno (eng. object - relational mapping
(ORM)).
LINQ to SQL model podataka relacione baze mapira na objektni model predstavljen u
programskom jeziku. Kada se aplikacija pokrene,LINQ to SQLvri upite nad objektnim modelom,prevodi ih u SQLi alje ka bazi podataka na izvravanje. Kada baza podataka vrati rezultat,LINQto SQLga prevodi u objekte sa kojim programer lako moe da radi u svom programskom jeziku.
Microsoft Visual Studio sadri Object Relational Designer [10] koji slui za generisanjeobjektnog modela u aplikaciji, koji se mapira na objekte u bazi podataka. Takoese generie strogo
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
20/47
16
definisan DataContext [14] ija je namena slanje i primanje podataka izmeu klasa i bazepodataka.
Slika 3.1.2 ORM mapiranje
Na slici 3.1.2 se moe videti jedan primer ORM mapiranja. Sa leve strane slike moe sevideti objektni model tj. 3 objekta koja su meusobno povezana (Customer object, Order object,Product object). Sa desne strane se nalazi relacioni model (Customer Table, Order Table, Product
Table). Sredinji deo slike (Object/Relational Mappint Layer) predstavlja LINQ to SQL koji je
posrednik u mapiranju iz objektnog modela u relacioni i obratno.
Ono to treba napomenuti jesu dve komponente koje su sastavni deo LINQ to SQLkomponente [13]. To suDBML Extractori Code Generator.
DBML Extractorpreuzima metapodatke iz baze podataka kao ulaz i kreira DBML fajl na
izlazu. Slika 3.1.3 moe ilustrovati sekvencu operacija.
Slika 3.1.3DBML Extractor
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
21/47
17
Code Generatorprevodi DBML fajlove u Visual Basic, C# iliXML fajlove za mapiranje.
Slika ispod moe ilustrovati sekvencu operacija koje se izvravaju.
Slika 3.1.4 Code Generator
Ukratko, dovoljno je da je kreirana ema baze, i na osnovu njenih metapodataka moe da seizgenerie DBML fajl koji se dalje prevodi u programski kod, u ovom radu konkretno C#
programski kod. Taj kod ujedno predstavlja objektni model baze podataka.
3.2.2 LINQ to XML
Kao to je ranije napomenuto LINQ to XMLslui za rad sa XMLdokumentima. LINQ toXML ne postoji da zameni standardne XML API-je kao to su XML DOM (Document ObjectModel), Xpath, Xquery, XSLT i ostale. LINQ to XML dopunjava ove standarde XML klasama i
omoguava laki rad sa XML dokumentima. On daje vrhunske mogunosti za kreiranje ipostavljanje upita nad XML podacima, a rezultat je jednostavan kod i brz razvoj za mnoge
jednostavne situacije, posebno ako je korisnik ranije koristio LINQ to Objects ili LINQ to SQLu
ostalim delovima programa.
Prednosti LINQ to XML u odnosu na XPath su sto XPath ne dozvoljava projekciju novih
tipova. On moe samo da vrati kolekciju vorova stabla, za razliku od kogaLINQ to XMLmoe daizvri upit i projekciju objekata grafa iliXML stabla u novom obliku.LINQ to XMLupiti su mnogofunkcionalniji i moniji od XPath izraza. C# kompajler ne parsira XPath izraze u vremekompajliranja. Sa druge strane, LINQ to XML upiti se parsiraju i kompaliraju od strane C#
kompajlera. Kompajler je u mogunosti da obradi veliki broj greaka koje mogu da se deseprilikom postavljanja upita.
3.3 Enterpr ise Arh itect (EA)
Enterprise Arhitect (EA) [21] je alat za dizajn i analizu UML-a, koji pokriva sve aspekterazvojnog ciklusa softvera od prikupljanja zahteva, preko analize, projektovanja modela, testiranja,
podrke pri implementaciji.EA je baziran na poslednjoj verziji UML 2.1 specifikacije (pogledati www.omg.org).
Karakteriu ga visoko performanse, intuitivan interfejs koji omoguava napredni nivomodelovanja. To je vie-korisniki vizuelni alat sa velikim skupom funkcija, koji pomaeanalitiarima, ljudima koji testiraju sistem, projekt-menaderima, ljudima koji vre kontrolukvaliteta. UMLdefinie vizuelni jezik kojise koristi za modelovanje jednog dela domena sistema(poglavlje 2.1.1).
3.3.1 Au tom ation Interface
Automation Interfaceomoguava pristup unutranjosti EA-og modela. U nastavku su dati
samo neki primeri zadataka koji se mogu obaviti korienjemAutomation Interface:
http://www.omg.org/http://www.omg.org/http://www.omg.org/7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
22/47
18
Obavljanje poslova koji se ponavljaju, kao to je numerisanje verzija elemenata umodelu
Generisanje korisnikih izvetaja IzvravanjeAd hocupita nad modelom
Sva razvojna okruenja koja mogu da generiu ActiveX Comklijente trebali bi da budu ustanju da se poveu saEnterprise Architect Automation Interface-om.
Dodaci (add-ins) omoguavaju dodavanje funkcionalnosti Enterprise Arhitect-u.Zahvaljujui njemu mogue je proirenje korisnikog interfejsa EA-a. Dodaci pruaju nekolikokljunih prednosti u odnosu na samostalnu automatizaciju klijenta, ukljuujui mogunostdefinisanja dodatnih EA menija i primanja obavetenja o raznim EA dogaajima od stranekorisnikog interfejsa, kao to su klik na menije ili selekcija od strane korisnika.
Takoe je omoguena integracija EA u okviruMicrosof Visual Studio 2008. To omoguavakorisniku prikaz i editovanje UML modela u okviru Visual Studio okruenja. Na taj nain jeomoguen veliki broj operacijaEA-a koje su podrane u samom Visual Studiookruenju.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
23/47
19
4. PRIKAZ REALIZOVANIH SOFTVERSKIH ALATA
U ovom poglavlju je dat opis softverskih alata koji su nastali kao posledice zahteva, koji su
formulisani za njihovu realizaciju.
4.1 Formulacija zahtevaOsnovni zahtevi koji su postavljeni pre implementacije postojeih aplikacija su sledei:
o Omoguiti generisanje konfiguracionog fajla, na osnovu izvornog CIM modeladefinisanog u Enterprise Arhitect-u, u Excel format, potujui osnovni izgledgenerisanog fajla.
o Definisanje ER (Entity-relationship) eme za smetanje CIM modela (profila)definisanih uEnterprise Arhitect-u.
o Omoguiti brisanje modela(profila) iz baze podataka na zahtev korisnika.
o Omoguiti vizuelnu reprezentaciju modela (profila), i operacije dodavanja, izmene i
brisanja nad elementima (klasa, atribut, veza) modela.
o Omoguiti uvanje izmena koje su izvrene nad modelom (profilom) u vedefinisanu bazu podataka.
o Omoguiti generisanje CIM profila na osnovu izabranih klasa, atributa u RDFSformat
o Omoguiti sinhronizaciju CIM modela (profila) smetenog u bazi sa CIMmodelom(profilom) definisanim uEAPfajlu.
Treba napomenuti da je prvi zahtev formulisan za aplikacijuID generator, dok su preostali
formulisani za aplikaciju CIM manager. U nastavku e biti vie rei o navedenim aplikacijama.
4.2 Aplikacija ID generato r
ID generatorpredstavlja aplikaciju koja slui za generisanje konfiguracionog fajla ijanamena e biti opisana kasnije. Fajl se uva u Excel fajlu (.xls). Aplikacija je realizovana u
programskom jeziku C#kao GUIaplikacija pod Visual Studio 2008okruenjem.
http://en.wikipedia.org/wiki/Entity-relationship_modelhttp://en.wikipedia.org/wiki/Entity-relationship_model7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
24/47
20
Slika 4.2.1 Glavni prozor aplikacije I D generator
Na slici 4.2.1 je prikazana glavna forma aplikacije. File inputpolje predstavlja putanju do
EAP (Enterprise Architect Project ) fajla, u kome se nalazi objektni model, zatim polje Model
namepredstavlja ime modela za koji elimo da generiemo konfiguraciju, kao i Root class namekoje predstavlja klasu koja se za izabrani model nalazi na vrhu hijerarhije (klasa koja ne nasleujeni jednu drugu klasu). Pritiskom dugmeta GENERATE Excel posle nekog vremena kreira sekonfiguracioni fajl ija je struktura prikazana na slici 4.2.2.
Svaka kartica (eng. Sheet) generisanog fajla predstavlja jedan paket EAP fajla. Svaka
kartica sadri klase odgovarajueg paketa, a svaka klasa sadri svoje atribute. U nastavku edetaljno biti objanjena struktura generisanog fajla.Na slici 4.2.2 je prikazan konfiguracioni fajlSCADApaketa.
Slika 4.2.2 Primer generisanog konfiguracionog fajla u .xls formatu
Prvih 16 kolona koje su oznaene razliitim bojama predstavljaju niblove (eng. nibble)[11].Nibblepredstavlja polovinu bajta tj. 4 bita. Kako prvih 16 kolona predstavljaju 16 nibble-ova,
tako svaki niz od 16 nibble-ova ini jednu 64-bitnu re. Svaka 64-bitna re opisuje jedan red ugenerisanom fajlu.
KolonaNamekoristi se za C#enumeracije iliDB(Data Base)imena kolona.
Kolona Class/Attribnameopisuje imena klasa i njihovih atributa.
Kolona Type Additional Infose koristi kao dodatna informacija za enumeracije.
KolonaDescriptionpredstavlja kratak opis klase ili njenog atributa.
http://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.htmlhttp://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.htmlhttp://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.htmlhttp://www.convert-extensions.com/format/EAP-Enterprise-Architect-Project.html7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
25/47
21
4.2.1 Nibbles (n0-n15)
Kao to je ranije navedeno u generisanom fajlu prvih 16 markiranih kolona predstavljajunibble-vi koji su oznaeni od n0-n15. Ono to treba napomenuti jeste da su itljivi i ljudima a nesamo raunaru. U nastavku detaljno e biti opisani svaki od njih.
n0 - Predstavlja model type tj. tip modela za koji e fajl biti generisan. Svaki model imasvoje ime i kod koji ga opisuje. U ovom primeru generisan je fajl za Network modeli on je kodiran
sa 1, to se moe videti u prikazu generisanog fajla. Imena modela zajedno sa kodovima su
smeteni u konfiguracionom fajlu i o tome e kasnije biti rei.
n1 - n7 - Su nibble-ovi koji predstavljaju inheritance hierachy tj. deo koda koji opisuje
poloaj klase u hijerarhiji nasleivanja. Kasnije e biti detaljno objanjen nain na koji se kodovidodeljuju klasama u hijerarhiji.
n8 - n11- Su nibble-ovi koji predstavljaju DMS type code tj. deo koda koji se odnosi na
klase koje su listovi (eng. leaf) u hijerarhiji. Svaki DMS type codeje jedinstven za svaku klasu, za
svaki paket i model. Ukoliko postoji klasa sa istim imenom u dva modela, DMS type codece biti
razliit za te dve klase iako se isto zovu.
n12 - n13 - Su nibble-ovi koji predstavljaju attr ibute sequence number tj. redne brojeve
atributa za svaku klasu posebno.n14 Predstavlja nibble koji daje informaciju o tome da li je atribut single value ili
sequence of values. Ukoliko je single valuekodira se kao 0, u sluaju da je sequence of valueskodira se kao 1.
n15- Predstavljaproperty type tj tip atributa. Svaki tip se kodira na nain predstavljen utabeli 4.1.1.1.
Tabela 4.2.1.1 Kodiranje tipova podataka
Kod Tip atributa
0 empty
1 bool2 byte
3 int32
4 int64
5 float
6 double
7 string
8 datetime
9 cross-reference
a(10) enum
b(11) struct
c(12) timespan
d(13) complex
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
26/47
22
4.3 Aplikacija CIM manager
Aplikacija CIM manager predstavlja alat za uvanje, manipulaciju, i generisanje CIMmodela i CIM profila. Model se iz EAP fajla transformie i uva u relacionu bazu podataka(Microsoft SQL). Aplikacija je takoe realizovana u programskom jeziku C#kao GUIaplikacija
pod Visual Studio 2008okruenjem.
Na slici 4.3.1 je prikazana glavna forma aplikacije.
Na samom vrhu moe se primetiti glavna traka sa alatima (eng. Tool Strip) . Prvaikonica se koristi za brisanje selektovanog modela iz baze. Druga ikonica predstavlja dodavanje
kopije CIMmodela (profila) u bazu podataka. Ta opcija je korisna ukoliko korisnik eli da kreiranovi profil nad kojim moe da radi izmene. Klikom na treu ikonicu omoguava se povezivanjeizmenjenog CIMmodela (profila) iz baze podataka i CIMmodela (profila) koji je sauvan uEAPfajlu. To je vrlo korisna opcija posebno ukoliko korisnik nema instaliran Enterprise Arhitect kod
sebe, tako da ne zavisi od njega. Sve izmene koje obavi nad modelom u bazi podataka e seprilikom povezivanja saEAPfajlom obaviti i u samomEAP-u.
Slika 4.3.1 Glavni prozor aplikacije CIM manager
Edit polje F il e namepredstavlja putanju do EAPfajla. Klikom na dugme otvara se
forma za izborEAPfajla ijim izborom se popunjava dato polje.
Model namepredstavlja ime modela koji e se sauvati u relacionoj bazipod tim imenom.
Versionpredstavlja verziju modela,dok je Creation datedatum kreiranja EAP fajla.
Klikom na dugme izabraniEAPmodel se uva u relacionu bazu.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
27/47
23
U svakom trenutku je mogue videti spisak modela(profila) koji se trenutno nalaze u bazi.To se moe videti na glavnoj formi. Modeli su prikazani u tabeli i u ovom primeru se vidi ,da bazasadri samo jedan model.
Da bi se lake manipulisalo sa modelom (profilom) potrebna je njegova vizuelnareprezentacija. U svakom momentu model je mogue prikazati kao stablo(eng. Tree View) to se
moe videti na formi. Klikom na dugme trenutno izabrani model se prikazuje kao stablo.
Iznad stabla se nalazi traka sa alatima (eng. Tool Strip) ija je osnovna namena manipulacijasa stablom. U nastavku je data tabela svih akcija koje mogu da se izvre nad stablom.
Tabela 4.3.1 Prikaz operacija koje mogu da se izvre nad stablom
4.3.1 Manipulacija sa stablom
Kao to je ve ranije reeno, nad vorovima stabla mogue je izvriti odreen skup
operacija.Paket je u stablu predstavljen sa: , klasa sa: , atribut: , dok je veza predstavljena kao
iliu zavisnosti od smera orjentacije.
Ukoliko korisnik eli da doda novu klasu, potrebno je da selektuje paket u koji eli da dodaklasu. Klikom na otvara se forma prikazana na slici 4.3.1.1.
Potrebno je popuniti polja: Name (ime klase), Stereotype (stereotip), Parent class (klasa
koju nasleuje) i Description (opis koji karakterise datu klasu).
Ukoliko je korisnik prilikom unosa sluajno pogreno uneo podatke koji opisuju datu klasu,u mogunosti je da je obrie klikom na , ili ukoliko eli da promeni podatke o njoj potrebno je da
je selektuje u stablu i da klikom na izvri potrebne izmene.
Izmena klase
Izmena atributa
Izmena relacije (veze) izmeu dve klase
Dodavanje nove klase
Dodavanje novog atributa klase
Brisanje klase Brisanje atributa klase
Brisanje relacije(veze) izmeu dve klase
Dodavanje relacije izmeu dve klase
Oznaavanje svih elemenata stabla Deselekcija svih elemenata stabla
Prikaz elemenata stabla koji su oznaeni
Export CIM modela(profila) u RDFS
format
uvanje izmena u bazu
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
28/47
24
Dodavanje atributa klase se moe obaviti na slian nain s tim to korisnik prethodno morada oznai klasu kojoj eli da doda atribut i klikom na otvorie se forma za dodavanje novogatributa.(Slika 4.3.1.2)
Slika 4.3.1.1 Dijalog za kreiranje nove klase
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
29/47
25
Slika 4.3.1.2 Dijalog za kreiranje novog atributa
Potrebno je popuniti polja: Name (ime atributa), Stereotype(stereotip), Type (tip atributa) ,
Myltiplicity(donja i gornja granica) i Description (opis koji karakterie datu klasu).
Ukoliko je korisnik prilikom unosa sluajno pogreno uneo podatke koji opisuju datiatribut, u mogunosti je da ga obrie klikom na , ili ukoliko eli da promeni podatke o njemu
potrebno je da ga selektuje i da klikom na izvri potrebne izmene.Dodavanje relacije (veze) izmeu dve klase je malo drugaije. Relaciju je mogue dodati
klikom na pri emu e se otvoriti dijalog prikazan na slici 4.3.1.3.
Potrebno je popuniti polja: Type (tip veze:agregacija,asocijacija), Name(ime veze), Source
class (ime klase od koje veza poinje), Target class (ima klase na kojoj se veza zavrava),Myltiplicity source (kardinalitet Source klase), Myltiplicity target (kardinalitet Target klase) i
Description (opis koji karakterie datu klasu).
Ukoliko je korisnik prilikom unosa sluajno pogreno uneo podatke koji opisuju daturelaciju, u mogunosti je da je obrie klikom na , ili ukoliko eli da promeni podatke o njoj
potrebno je da je selektuje i da klikom na izvri potrebne izmene.
Slika 4.3.1.3 Dijalog za kreiranje nove relacije
4.3.2 Export CIMmodela (profila) u RDFSfajl
U prethodnom podpoglavlju napomenuto je da je jedna od namena alata CIM manager i
generisanje CIM profila. CIMprofil se generie klikom na iznad stabla. Izborom lokacije inaziva , generie seRDFSfajl na osnovu ekiranih elemenata u stablu. Primer generisanog fajla je
dat u listingu 4.3.2.1.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
30/47
26
Contains the core PowerSystemResource and
ConductingEquipment entities shared by all applications plus common collectionsof those entities.
CoreCollection of BaseVoltages which is used to verify
that the BusbarSection rdfs:comment>BaseVoltageThe PowerSystemResource's base
voltage.nominalVoltage
Use association to ConductingEquipment only when
there is no VoltageLevel container used.ConductingEquipment
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
31/47
27
Listing 4.2.2.1 Primer generisanogRDFSdokumenta
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
32/47
28
5. DETALJI IMPLEMENTACIJE SOFTVERSKOG ALATA
U prethodnom poglavlju su opisane aplikacije na nain koji bi omoguio lake razumevanjeod strane obinog korisnika. U ovom poglavlju e biti vie rei o samim detaljima implementacije.
5.1 Aplikacija ID generato rNa slici 5.1.1 je prikazana uproena arhitektura aplikacije I D generator.
Aplikacija I D generator uitava CIM model/profil definisan u EAP fajlu. Na osnovuuitanog modela i konfiguracionog fajla (ConfigurationXML) kreira se objektni model (poglavlje5.1.1). Iz objektnog modela se generie XLS fajl koji predstavlja krajnji rezultat izvrenjaaplikacije.
Slika 5.1.1 Uproena arhitektura aplikacijeID generator
U nastavku e biti vie rei o samoj realizaciji nekih od funkcija koje su zaduene zatransformaciju informacija dobijenih izEAP-a i generisanjeXLSfajla. Akcenat e biti stavljen nagenerisanje nibble-ova (poglavlja 5.1.2-5.15) koji predstavljaju jedinstveni kod za svaku klasu i za
svaki generisani atribut iz fajla.
5.1.1 Uitavanje CIMmodela definisanog u Enterprise Architect-u
Glavna klasa koja transformie uitani model, definisan uEAPfajla, u objektni model jesteCModelReader. Kada se dobije objektni model, lako je izgenerisati potrebanXLS.
Objektni model je organizovan hijerarhijski. Postoji vie klasa koje zajedno ine objektnimodel modela definisanog u EAP fajlu. CObjectModel je klasa koja sadri listu paketa
(CPackage klasa) kao i ime modela. Klasa CPackagesadri listu klasa(CClass klasa), dok CClasssadri listu atributai relacija (CAttribute klasa).
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
33/47
29
Samo uitavanje EAP modela je jednostavno. Potrebno je instancirati RepositoryClassklasu Interop.EA API-ja, u okviru CModelReaderklase, i pozvati metodu openFileiji je jediniargument putanja do EAP fajla, i model e biti uitan u memoriju. Kada je klasa instanciranamogue je pristupiti bilo kojem elementu modela programski. Ono to je sledei korak jestekreiranje objektnog modela (CObjectModel) na osnovu uitanogEAPfajla.
Poto je EAP uitan, prolaskom kroz sve elemente fajla, kreira se objektni model kojireprezentuje klasa CObjectModel.MetodaDoPackageklase CModelReaderomoguava prolazak
kroz sve pakete uitanog fajla i kreiranje CPackage objekta za svaki paket iz EAP-a. MetodaCollectClassse poziva iz metode DoPackagei na osnovu nje se za svaku klasu iz EAP-a formiraCClassobjekat. Metoda CollectAttributesse poziva iz metode CollectClass, i za svaki atribut klase
i vezu ka drugoj klasi izEAP-a se formira CAttributeobjekat.
5.1.2 Generisanje Model Type (n0)
U zavisnosti od modela za koji treba da se generie fajl, zavisi i vrednost nibble(n0). Potoje model podloan promenama, tako je mogue i da mu se promeni ime. Zbog toga su imenamodela i kodovi smeteni u konfiguracionom fajlu Modeltype.txt. Svaki red fajla reprezentuje imemodela nakon ega se navodi njegov kod. Vrednosti kodova su proizvoljni, ali nakon dodele
moraju ostati isti od verzije do verzije. Poto je samo jedan nibble dodeljen kodovanju modela, toznai da je maksimalan broj modela koji moe da se kodira 15.
5.1.3 Generisanje inheri tance hierachy (n1-n7)
Samo generisanje n1-n7 nije previe komplikovano. Meutim, potrebno je jednomgenerisani kod odravati od verzije do verzije pod uslovom da klasa, za koju se generie kod, ne
promeni poziciju u hijerarhiji nasleivanja. Ukolikoklasa promeni poziciju u hijerarhiji potrebnojoj je pravilno dodeliti n1-n7 ali pod uslovom da ne narui kodove koji su generisani za klase kojesu i pre bile na tom hijerarhijskom nivou.
Da bi se podrala mogunost uvanja prethodnog stanja, tj hijerarhije nasleivanja u
prethodnoj verziji, u implementaciju je uveden konfiguracioni fajl Configuration.xml. Na slici5.1.3.1 je data ema konfiguracionog fajla. ema sadri i druge informacije, koje e biti naknadnoobjanjene u narednim poglavljima.
Korenski element generisanog XML-a je predstavljen kao Configuration. Konfiguracioni
fajl moe da sadri vie razliitih modela(element Model). Model sadri atribut name kojipredstavlja ime modela za koji se generiu kodovi. Svaki Modelsadri sekvencu paketa (elementPackage). Package je opisan imenom paketa(atribut name) i sadri sekvencu klasa(elementClass). Atributi koji opisuju Class elemenat su ime klase(name), pozicija klase na istom
hijerarhijskom nivou (inheritance_position), generisani nibble-ovi za njenu roditeljsku
klasu(parent_inheritance), ime roditeljske klase(parent_name), kao i DMScode(4.2.1).
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
34/47
30
Slika 5.1.3.1 ema konfiguracionog fajla Configuration.xml
CIMmodel je opisan tako da postoji samo jedna klasa koja se nalazi na vrhu hijerarhije.
Svaka klasa moe da nasledi jednu klasu, to znai da ne postoji viestruko nasleivanje. Slika5.1.3.2 ilustrativno pokazuje nain na koji se generiu nibble-ovi n1-n7.
Slika 5.1.3.2 Nain generisanja nibble-ova n1-n7
ClassApredstavlja klasu na vrhu hijerarhije i kao takva uvek se koduje sa 0000000. Klase
koje se nalaze na drugom nivou hijerarhije se koduju tako sto se prvi nibblemenja u zavisnosti od
broja klasa koje se na tom nivou nalaze (prava klasa dobija vrednost n0=1, druga klasa n0=2,
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
35/47
31
petnaesta i svaka naredna n0=f). Na treem nivou hijerarhije menjaju se prva dva nibble-a, naetvrtom prva tri (ClassG)
Na slici 5.1.3.3 je prikazana situacija kada se hijerarhije u modelu menja, i kada se dodaje
nova klasa u hijerarhiju (ClassH). Ukoliko se uporedi sa prethodnom slikom moe se videti da suklase koje su zadrale istu poziciju u hijerarhiji zadrale i svoje kodove tj nibble-ove n1-n7. Klasekoje su promenile hijerarhiju dobile su nove kodove (ClassE, ClassF, ClassG)
Slika 5.1.3.3 Nain generisanja nibble-ova n1-n7 pri promeni hijerarhije
Do sada je bilo rei o situacijama o kojima treba voditi rauna prilikom dodeljivanjakodova za nasleivanje. U nastavku je dat pseudokod algoritma koji dodeljuje kodove klasama.Dodeljivanje kodova je realizovano kao rekurzija. Prilikom dodeljivanja kodova potrebno je
funkciji proslediti parent klasu, koja e dobiti lista njenih naslednika. Za svakog naslednika,pozivae se ista funkcija kojoj se prosleuje konkretan naslednik koji ujedno predstavlja parenta zaneke druge klase ukolikopostoje. Funkcija e se izvravati dok god ima klasa u hijerarhiji.
setClassInheritance(classParent){childs = getChilds(classParent.name);foreach(child in childs){
Get generated inheritance InhersetChildInheritance(child.name,Inher);
setClassInheritance(child);}
}
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
36/47
32
5.1.4 Generisanje DMS Type c ode (n8-n11)
DMS Type code je jednistven za svaku klasu. Jednom izgenerisan on treba da ostane isti
dok god postoji i klasa za koju je generisan. Kodovi se uvaju u Configuration.xml fajlu ija jeema ve data na slici 5.1.3.1. Element LastCodeNumberpredstavlja brojaDMSkodova, tj. uvaredni broj poslednjeg generisanog koda. Ta informacija je vrlo bitna, da bi se prilikom generisanja
koda za neku novu klasu mogao izgenerisati naredni kod. Svaki Classelement iz eme opisan jeatributom DMScodekoji predstavlja kod date klase. Ukoliko klasa nije leafu hijerarhiji, tada je
njen kod 0000.Prilikom generisanja koda za novu klasu, prvo se proverava da li je on ve izgenerisan,
proverom u konfiguracionom fajlu. Ukoliko se ne pronae kod za tu klasu, generie se novi naosnovu informacije o poslednjem generisanom kodu. Poto je broj nibble-ova koji opisuju dati kod4, maksimalan broj klasa tj. leaf-ovakoji mogu dobiti kod je 65535.
5.1.5 Generisanje at tr ibu te sequence numb er (n12-n13)
Ovaj deo koda predstavlja redni broj atributa klase. Takoe je bitno da jednom izgenerisaniredni broj atributa ostane isti od verzije do verzije ukoliko i atribut ostane isti. Promena imena se
evidentira kao brisanje atributa i dodavanje novog. Istorija se takoe uva u konfiguracionom fajlu
Configuration.xml.Elementom Attributese opisuju atributi: namekoji oznaava ime atributa, kaoi sequence_numberkoji predstavlja redni broj atributa.(Slika 5.1.3.1)
Prilikom generisanja atributa treba voditi rauna o tome da li se redni broj generie po prviput, i da li je redni broj ve ranije izgenerisan. Ukoliko se redni broj generie po prvi put njemu sedodeljuje prvi slobodan redni broj za datu klasu. Ukoliko ve postoji, njemu se dodeljuje redni brojkoji je ve izgenerisan tj onaj redni broj koji se ve nalazi u konfiguracionom fajlu.
5.2 Aplikacija CIM manager
U ovom poglavlju e biti opisana implementacija alata CIM manager. Na slici 5.2.1 je
prikazana uproena arhitektura aplikacije.
Slika 5.2.1 Uproena arhitektura aplikacije CIM manager
Aplikacija CIM manager omoguava uitavanje (poglavlje 5.1.1) CIM modela/profila
definisanog u EAP fajlu. Uitani fajl se transformie u objektni model (poglavlje 5.2.2) koji sezatim uva u bazipodataka (poglavlja: 5.2.1 i 5.2.3). Objektni model je mogue menjati(poglavlje
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
37/47
33
5.2.6) i sve izmene koje se obave nad modelom se mogu uvati u bazi. Aplikacija omoguavaitanje modela/profila iz baze i njegov export u RDFS fajl (poglavlje 5.2.8). Jedna od korisnihfunkcija jeste sinhronizacija objektnog modela iz baze i modela definisanog u EAPfajlu (poglavlje
5.2.7).
5.2.1 Model podataka CIM manageraplikacije
Kao to je ranije reeno jedan od zadataka ovog rada jeste praenje verzija CIM
modela/profila. To je omogueno uz pomo baze podataka. Na slici 5.2.1.1 je dat konceptualnimodel eme baze koriene za praenje verzijaCIMmodela/profila.
Model predstavlja CIMmodel ili profil koji je opisan imenom (Model name), njegovom
verzijom (Version), i datumom kada je kreiran (Creation date). Poto se u bazi uvaju modeli iprofili, ono to omoguava da se meusobno pravi razlika izmeu njih jeste ime(Model name).
Svaki model moe da sadri vie paketa (Package). Svaki paket ima svoj jedinstveniidentifikator (Package ID), identifikator nadreenog paketa (parentPackage), identifikator kojiga jedinstveno opisuje uEnterprise Arhitect-u (Package_EA_ID), ime paketa (Package name), i
opis (Description).
Svaki paket moe sadrati vie klasa(Class). Svaka klasu opisuje jedinstveni identifikator(Class ID), identifikator klase koju nasleuje(parentClass), ime klase (Name), tip klase (Type), injen opis (Description).
Svaka klasa moe sadrati vie atributa (Attribute) kao i veze (Relationship) sa drugimklasama.
Svaki atribut je opisan sa jedinstvenim identifikatorom (AttributeI D), identifikatorom koji
ga jedinstveno opisuje uEnterpriseArhitect-u (Attribute_EA_ID), imenom (Name), tipom (Type),
stereotipom (Stereotype), kardinalitetom (Myltiplicity), i opisom (Description).
Svaka relacija izmeu klasa je opisana jedinstvenim identifikatorom (Relationship I D),identifikatorom koji je jedinstveno opisuje u Enterprise Arhitect-u (Relationship_EA_ID),
imenom (Name), kardinalitetom klase od koje veza poinje (Myltiplicitysource), kardinalitetomklase na kojoj se veza zavrava(Myltiplicitytarget), tip veze (Type), i opisom (Description).
Ono to se moe primetiti jeste da je Modelpovezan sa svim ostalim entitetima (Package,Class, Attribute, Relationship). Ta veza je modelovana sa ciljem postizanja veih performansiupita, jer s vremenom se poveava broj modela i profila koji se smetaju u bazu. Na osnovu imenamodela i njegove verzije lako se mogu dobiti podaci iz ostalih tabela jer svaki red u tabeli sadriinformaciju kojem modelu pripada.
Atribut isDeletedu tabelama: Class, Attribute i Relationshippredstavlja identifikator da
je neka klasa, atribut ili relacija obrisana iz aplikacije. Ukoliko je vrednost atributa isDeletedtrue,
znai da je atribut obrisan iz aplikacije. Ta informacija je potrebna prilikom povezivanja CIM
modela iz baze i modela definisanog uEAPfajlu. O tome e vie rei biti u poglavlju 5.2.7.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
38/47
34
Slika 5.2.1.1 Model baze u koju se smetaju CIMmodeli/prfili
5.2.2 Objektni model CIMmodela prethodno uitanog iz EAP fajla
Prilikom realizacije ove aplikacije nije koriena CObjectModel klasa kao u poglavlju5.1.1, ali je uitavanje samog modela ostalo isto. Ovde je korien objektni model koji jeautomatski izgenerisan na osnovu eme baze.
Klasa ReadTransformCIM uitava EAP fajl, i na osnovu isitanih elementa setujevrednosti atributa objektnog modela generisanog od strane Microsoft Visual Studio okruenja.Potrebno je instancirati CIM_ModelDataContextklasu koja nasleuje DataContextklasu.
DataContextklasa je izvor za sve entitete koji su mapirani preko konekcije sa bazom. Ona
prati promene koje su napravljene nad svim preuzetim entitetima i odrava identitekea(identitycashe) koji garantuje da su entiteti koji su preuzeti vie od jednog puta predstavljeni istominstancom objekta. U principu DataContext instanca je dizajnirana da traje za samo jednu
jedinicu rada. DataContext je jednostavna i nije skupa za kreiranje. Tipina LINQ to SQLaplikacija kreira DataContext instance na nivou funkcije ili kao lan klasa koje kratko ive,
predstavljajui tako logiki skup povezanih operacija baze podataka [14].
Klase: Model, Package, Class, Attribute, Relationshipsu automatski izgenerisane. Svaku
je potrebno posebno instancirati u zavisnosti koliko EAP fajl sadri paketa, koliko svaki paket
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
39/47
35
sadri klasa, klasa atributa i relacija sa drugim klasama. Nakon instanciranja potrebno je setovatiatribute kreiranih instanci.
5.2.3 uvanje uitanog modela
Kada je model uitan u memoriju i kada je formiran objektni model, vrlo je jednostavnosauvati ga u bazu. Klasa koja je zaduena za uvanje modela u bazu jeste StoreModel.Konstruktoru ove klase je potrebno proslediti instancu CIM_ModelDataContext klase i instancu
Model klase. Pozivom dve metode,LINQobjektni model uva u bazu. To se moe videti iz kodakoji je dat u listingu 5.2.3.1.
public StoreModel(Model objectModel, CIM_ModelDataContext dataCont){
dataContext.Models.InsertOnSubmit(objectModel);dataContext.SubmitChanges()
}
Listing 5.2.3.1 Konstruktor klase StoreModel
Metoda InsertOnSubmit samo priprema entitet za unos u bazu podataka, stavljajui ga ulistu, sve dok se ne pozove metoda SubmitChanges() koja e izvriti izmene nad bazom.
5.2.4 Brisanje i itanje modela(profila) iz baze
Sauvani model(profil) je mogue obrisati ili uitati iz baze na zahtev korisnika. KlasaReadOrRemove model poseduje dve metode:getModel()i removeModel(). Prva metoda ita modeliz baze, dok ga druga brie. Kao argumenti i jedne i druge metode navode se ime i verzija modela.U nastavku su dati listinzi ove dve metode.
public Model getModel(String modelName,String modelVersion){
var queryModel = from model in dataContext.Modelswhere ((model.Model_name == modelName) &&
(model.Version == modelVersion))select model;
foreach (var mod in queryModel){
return (Model)mod;}return null;
}
Listing 5.2.4.1 Uitavanje modela iz baze
public void removeModel(String modelName,String modelVersion){
Model model = getModel(modelName, modelVersion);dataContext.Attributes.DeleteAllOnSubmit(model.Attributes);dataContext.Relationships.DeleteAllOnSubmit(model.Relationships);dataContext.Classes.DeleteAllOnSubmit(model.Classes);
dataContext.Packages.DeleteAllOnSubmit(model.Packages);dataContext.Models.DeleteOnSubmit(model);
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
40/47
36
//Promjena u bazidataContext.SubmitChanges();
}
Listing 5.2.4.2 Brisanje modela iz baze
5.2.5 Prikaz uitanog CIMmodela (profila)
Da bi sa modelom(profilom) moglo nesmetano da se radi, potrebna je vizuelna
reprezentacija onoga to se nalazi u bazi. Za prikaz je implementirana klasa CIMTreeView kojanasleuje klasu TreeViewkoja predstavlja standardnu klasu Windows Formsaplikacija. TreeView
prikazuje elemente kao hijerarhijsko stablo. Svaki element opisuje TreeNodeklasa. Elementi koji
su predstavljeni kao TreeNode su: paketi, klase, atributi i veze. Metoda addModelToTree() je
zaduena za prikazivanje modela u vidu stabla. Kao argument metode navodi se instanca Modelklase(opisana u poglavlju 5.2.2). U nastavku je dat pseudokod ove metode:
addModelToTree(Model model)
{List packageNodeList = new List();
foreach (Package p in model.Packages){
Create new package node
foreach (Class c in p.Classes){
Create new class node
foreach (Attribute a in c.Attributes){
Create new attribute node}foreach (Relationship r in c.Relationships)
{ Create new relationship node}
Add class node to package node}
Add package to packageNodeList}makeTreeView(packageNodeList);
}
Listing 5.2.5.1 Pseudokod metode za prikaz modela
5.2.6 Operacije nad stablom (dodavanje, izmena i brisanje vorova stabla)
Ve je ranije bilo rei o operacijama koje mogu da se izvode nad stablom(poglavlje 4.3.1).Ovde e vie rei biti o samoj implementaciji funkcija koje su zaduene za: dodavanje, izmenu i
brisanje elemenata stabla. Treba napomenuti da izvravanje ovih operacija direktno utie napromenu objektnog modela ija ja vizelna reprezentacija stablo.
Dodavanjepredstavlja jednu od operacija koja moe da se obavi nad stablom. Mogue jedodati: klasu, atribut ili vezu (relaciju) izmeu dve klase.
Prilikom dodavanja klase, instancira se objekat klase Class, ije se vrednosti promenljivihsetuju vrednostima unesenim sa forme. Zatim se poziva funkcija addClassNodeunesenim (klasa
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
41/47
37
CIMTreeView), koja novu klasu dodaje u stablo, kao i u objektni model. Prilikom dodavanja klase
u stablo potrebno je funkciji proslediti trenutno selektovani vor, koje ujedno predstavlja parenta zaklasu, tj paket u koji e klasa biti dodata.
Prilikom dodavanja atributa, instancira se objekat klase Attribute, ije vrednostipromenljivih se setuju vrednostima unesenih sa forme. Poziv funkcije addAttributeNode (klasa
CIMTreeView), koja novi atribut dodaje u stablo i u objektni model. Funkcija addAttributeNode
prima kao parametar instancu klase Attribute kao i trenutno selektovani vor, koji predstavlja
klasu u koju e se dodati atribut.Prilikom dodavanja veze, instancira se objekat klase Relationship, ije se vrednosti
promenljivih setuju vrednostima unesenih sa forme. Poziv funkcije addRelationship (klasa
CIMTreeView), obavlja dodavanje vora, koji predstavlja vezu, u stablo kao i u objektni model.vor koji reprezentuje vezu u stablu se dodaje na dva mesta i to: kao dete vora koji predstavlja
sourceklasu, i kao dete vora koji predstavlja targetklasu.
Izmenapredstavlja operaciju koju je mogue obaviti nad vorovima stabla.Funkcije kojeobavljaju izmenu vorova su updateClassNode, updateAttributeNode, updateRelationshipNode.Kao parametri funkcija prosleuju se objekti klase koji reprezentuju dati vor, kao i selektovanivor tj vor nad kojim se obavljaju izmene. Kao rezultat ovih funkcija, vre se izmene u stablu kao
i izmene u objektnom modelu.Brisanjeje jo jedna operacija koja je podrana u ovoj aplikaciji.
Brisanje atributa se obavlja funkcijom removeAttributeNode. Kao rezultat izvrenjafunkcije brie se atribut iz stabla, a u objektnom modelu se oznaava kao obrisan, tj vrednostatributa isDeletedse postavlja na true(poglavlje 5.2.1).
Brisanje veze izmeu dve klase se obavlja funkcijom removeRelationshipNode. Kaorezultat izvrenja funkcije, brie se veza izmeu dve klase iz stabla, a u objektnom modelu seoznaava kao obrisan, tj. vrednost atributa isDeletedse postavlja na true.
Brisanje klase je neto komplikovanije. Ukoliko korisnik obrie izabranu klasu iz stabla,
potrebno je obrisati i svu decu vora koji reprezentuje klasu(atribute i relacije). Metoda zaduenaza brisanje vora koji predstavlja klasu u stablu je removeClassNode. U nastavku je dat pseudokodove metode (listing 5.2.6.1). Ukoliko se neka klasa obrie ona moe da bude roditelj nekoj od klasau objektnom modelu. Ukoliko se uspostavi da jeste, potrebno je anulirati sve atribute klasa iz
modela koji predstavljaju ime parent klase. To obavlja metoda removeParentFromClass iz listinga.
removeClassNode(classNode,dataContext){
List relationshipForRemove = new List();foreach (TreeNode child in classNode.Nodes){
If child is attribute{
Set attribute isDeleted=true;}else if relationship{
Set relationsip isDeleted=true;Add relatinship for remove in relationshipForRemove list
}}foreach (TreeNode node in relationshipForRemove)
node.Remove();
removeParentFromClass(classToRemove);Set class isDeleted= true;
Remove class and attributes from treeView}
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
42/47
38
Listing 5.2.6.1 Pseudokod funkcije za brisanje klase iz stabla
Sve izmene koje se deavaju na stablu nee prouzrokovati promene modela u bazipodataka. Izmene e biti validne samo ukoliko se obavi akcija za uvanje izmena u bazi (Tabela4.2.1). To e se obaviti pozivom jednelinije koda:
dataContext.SubmitChanges();//sve izmjene ce se desiti u bazi.
5.2.7 Povezivanje modela iz baze i modela sauvanog u EAPfajlu
Klasa zaduena za povezivanje modela iz baze i modela definisanog u EAP fajlu jesteUpdateEAP. Listing 5.2.7.1 predstavlja pseudokod metode updateEAP klase UpdateEAP koja
obavlja proces sinhronizacije saEAPmodelom.
updateEAP(Model model)
{foreach (Class clasin model.Classes){if (clas.isDeleted == true)
Delete clas from EAP;else{try
{Get classID from clas;If classID is in EAP update class from EAP;
}catch (Exception e){
If classID is not in EAP;Create class and add to package in EAP;
}
foreach (Attribute attribute in clas.Attributes){if (attribute.isDeleted==true)
Delete attribute from EAP;else{try{
Get attributeID from attribute;If attributeID is in EAP update attribute from EAP;
}catch (Exception e){
If attributeID is not in EAP;Create new attribute and add to class;
}}}
Change eap with changed class;}}
foreach (Relationship rel in model.Relationships){
if (rel.isDeleted==true)Delete rel from EAP;
else{
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
43/47
39
try{
If rel.ID is in EAP;Update rel;
}catch (Exception e){
Get source class;
Get target class;Create relationship and link source and target class;Update eap with new relationship;
}}
}Close repository of eap file.
}
Listing 5.2.7.1 Pseudokod za sinhronizaciju saEAPfajlom
Kao jedini parametar funkcije updateEAPprosleuje se Modeltj. objektni model koji e semapirati na relacionu bazu (poglavlje 5.2.2). Prolaskom kroz klase modela dobija se IDklase koji
se uporeuje saID-em uEAPfajlu. Ukoliko se pronae klasa sa traenim ID-om znai da ona vepostoji u njemu i rade se samo izmene property-ja klase koje su uraene u aplikaciji a nisu u EAPfajlu. Ukoliko se ne pronae traena klasa, to znai da ne postoji i da je treba dodati u EAP fajl.Slina je situacija i za atribute i relacije izmeu klasa.
Ono to setakoeproverava jeste da li je vrednost atributa isDeletedtrue. Ako jeste znaida je data klasa, atribut ili relacija obrisana iz aplikacije, i da je treba obrisati i iz EAPfajla. Ovo
predstavlja jednostavan nain da se utvrdi koja je klasa, atribut ili relacija obrisana iz aplikacije.Ukoliko u bazi ne bi postojao atribut isDeleted, ne bi imali informaciju o tome koja klasa, atribut,
ili relacija je obrisana. Jedini nain da se to proveri jeste da se prolazi kroz sve elem enteEAPfajlai da se na osnovu njihovog IDpronalaze odgovarajui elementi u modelu iz baze. Ukoliko se dati
elemenat ne pronae u modelu iz baze, to bi znailo da je on obrisan iz aplikacije. Meutim to jevremenski zahtevniji proces i ovo reenje predstavlja jednostavniju varijantu. Nakon svakog
povezivanja sa EAPfajlom, svaka klasa, atribut i relacija ija je vrednost isDeleteatributa truesebriu iz baze podataka. Takoe svaki elemenat koji je dodat iz aplikacije, u bazi ne posedujeIDizEAP-a. Prilikom povezivanja sa EAP fajlom, svaki takav element dobija svoj EAPID i takve
izmene se evidentiraju u bazi.
5.2.8 Export CIMobjektnog modela u RDFSfajl
CIM model je u memoriji predstavljen kao objektni model i kao takav je pogodan za
manipulaciju unutar same aplikacije. Lako se vizuelno moe predstaviti kao stablo o emu je ranije
bilo rei. Za razmenu podataka preko mree pogodno je prebaciti podatke u format pogodan za brzi jednostavan prenos podataka koji je ujedno itljiv od strane ljudi i aplikacija. Zbog toga jepotrebno izvriti eksport podataka iz objektnog modela CIMmodela u tekstualnu formu, odnosno uRDF Schema (RDFS ) format.
Aplikacije sa internom ili eksternom podrkom za CIMmogu izvriti uitavanje podataka izCIM XMLdokumenta. Zavisno od implementacije CIM-a u aplikacijama sa internom podrkom zaCIMuitae se samo podaci koji opisuju objekte klasa podranih konkretnom implementacijom.Aplikacije koje imaju eksternu podrku za CIMpri uitavanju podataka moraju izvriti konverziju
podataka u svoj interni model.
Klasa koja je zaduena za eksport CIMobjektnog modela uRDFSformat je CreateRDFS.
Proces exporta je dat je pseudokodom opisanim u listingu 5.2.8.1.
7/25/2019 Razvoj Softverskog Alata Za Odravanje CIM Modela Definisanog u Enterprise Arhitect
44/47
40
List entities = GetCheckedEntities();
foreach (Entity e in entities)
{
WriteToFile(e.ToRDF());
SEQUENCE attributes = GetCheckedAttributes(e);
foreach (Attribute attr in attributes)
WriteToFile(attr.ToRDF());
}
Listing 5.2.8.1 Pseudokod generisanja(eksporta) CIMobjektnog modela uRDFSformat
Za svaki element u CIM-u preuzima se skup njegovih atributa [15]. Po RDF-u, svaki
element predstavlja resurs i opisan je atributima i njihovim vrednostima. Zato se svaki objekat u
CIM-u eksportuje u poseban XML element, a njegovi atributi u njegove podelemente u XML
dokumentu.