Razvoj Softverskog Alata Za Održavanje CIM Modela Definisanog u Enterprise Arhitect

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_model
  • 7/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_model
  • 7/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.html
  • 7/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.