Formørkingsrammer for formørkelse

Formørkingsrammer for formørkelse Beskrivelse av bildet Emf logo.png. Beskrivelse av Emf Compare.png-bildet. Informasjon
Utviklet av Eclipse Foundation
Siste versjon 2.12.0 (26. mai 2016)
Innskudd git.eclipse.org/c/emf/org.eclipse.emf.git
Skrevet i Java
Operativsystem Microsoft Windows , Linux og macOS
Miljø Java virtuell maskin
Type Architecture Model Driven
Software Engineering Workshop ( in )
Tillatelse Formørkelselisens
Nettsted www.eclipse.org/modeling/emf

I software engineering , den Eclipse Modeling Framework ( EMF er) prosjektet en modellering rammeverk , en kodegenerering infrastruktur og applikasjoner basert på strukturerte data modeller. Med utgangspunkt i en spesifikasjon som generelt er beskrevet i form av en modell i XMI , gir EMF verktøy som gjør det mulig å produsere Java-klasser som representerer modellen med et sett med klasser for å tilpasse elementene i modellen for å kunne visualisere dem, redigere dem med et kommandosystem og manipulere dem i en redaktør.

Historie og utvikling

EMF-prosjektet ble initiert av IBM med sikte på å forene utviklingsverktøy utviklet av IBM ved bruk av modeller basert på EMOF. Med utgivelsen av kildekoden til Eclipse- plattformen ga IBM Eclipse-stiftelsen EMF-prosjektet. I likhet med flertallet av Eclipse Foundation-prosjektene, er EMF tilgjengelig under EPL-lisensen. EMF er et prosjekt utviklet i Java og hvis kildekode er tilgjengelig på serverne til Eclipse foundation . Siden migrasjonen til Git av Eclipse-stiftelsesprosjektene, er EMF-kildekoden til noen EMF-delprosjekter tilgjengelig på Github-plattformen. EMF-prosjektet opprettholdes i dag innenfor Eclipse-stiftelsen. Den sterke adopsjonen av EMF innenfor prosjektene til Eclipse-stiftelsen tillater en sterk interoperabilitet mellom disse prosjektene som kan dele data i form av modeller.

Struktur av EMF-prosjektet

EMF-prosjektet kan deles i to hoveddeler, EMF Core og EMF Tooling Projects (EMFT).

EMF

Kjernen i EMF inneholder modelleringsrammeverket, samt infrastrukturen for kodegenerering og manipulering av EMF-modeller.

Modellering

EMF-prosjektet gjør det mulig å lage to typer modeller, på den ene siden modeller som definerer begreper, ofte kalt metamodellen , og på den annen side modeller som instantierer disse konseptene. Som eksempel kan vi definere en metamodell som definerer begreper som "Klasse", "Drift" og "Attributt" og deretter bruke denne metamodellen til å definere modeller som for eksempel inneholder et element av typen "Klasse". Bil "med en" operasjon "med navnet" kjøring "og et" attributt "med navnet" forbruk ". Enhver EMF-modell er en forekomst av en EMF-modell med Ecore-modellen levert av EMF som sin felles rot. EMF gjør det ikke bare mulig å lage en metamodell som representerer konseptene som ønsket av brukeren, men den lar deretter brukeren lage modeller fra denne metamodellen og manipulere dem med passende verktøy.

Modelleringseksempel

Det første trinnet innenfor rammen av en enkel bruk av EMF består i å lage et Java-prosjekt i Eclipse for å definere metamodellen ved å lage en ny fil av typen "ecore" ved hjelp av veivisere levert av EMF.

I denne EMF-modellen kan vi deretter lage en pakke, roten til en metamodell definert med EMF. "Egenskaper" -visningen til Eclipse lar deg definere navnet på denne pakken med prefikset og uri . Uri til en pakkeforekomst som kommer fra Ecore er en unik identifikator som brukes til å identifisere en metamodell.

Innenfor denne pakken kan vi definere de forskjellige konseptene i domenet vårt som vi ønsker å håndtere med EMF. I dette eksemplet kan vi se forekomster av klasser som kommer fra Ecore for å definere konseptene til et enkelt bibliotek. Bildet nedenfor viser derfor en forekomst av begrepet pakke, fire forekomster av begrepet klasser, en oppregningsforekomst og flere forekomster av referanser og attributter.

Når denne metamodellen er definert, kan vi bruke den med grunnleggende redigeringsprogram for "ecore" -filen for å lage en forekomst av "Bibliotek" -konseptet i metamodellen. Vi kan derfor se det følgende skjermbildet, den grunnleggende EMF-redaktøren med en forekomst av konseptene Bibliotek, Bok, Ansatt og Forfatter. Når du velger et element, kan du se og redigere dets attributter i "Egenskaper" -visningen.

Dette eksemplet representerer en veldig grunnleggende bruk av EMF. Det er for eksempel mulig å initialisere en "ecore" -modell fra en serie java-klasser eller fra en "xsd" -fil. EMF lar deg også velge serialisasjonen som skal brukes til en EMF-modell (som standard XMI).

Ecore

Alle modeller opprettet med EMF er koblet på en eller annen måte med Ecore. Ecore er en EMF-modell som definerer konseptene som kan håndteres i EMF. Disse begrepene, alltid foran en "E", er som følger:

  • EAattribute
  • EA-merknad
  • E-klasse
  • EKlassifiser
  • EDataType
  • EEnum
  • EEnumLiteral
  • EFactory
  • EModelElement
  • ENamedElement
  • EObject
  • E-drift
  • EPakke
  • EParameter
  • EReferanse
  • EStructuralFeature
  • ETypedElement
  • EStringToStringMapEntry
  • EGenericType
  • ETypeParameter

Ecore inneholder også mange datatyper for å initialisere EMF-modeller uten å måtte omdefinere gjeldende primitive typer (EString, EBoolean, EInt, EFloat, etc).

Kodegenerering Genererer modellkoden

EMF-prosjektet innebærer en serie kodegeneratorer beregnet for generering av Java-klasser fra en "ecore" -modell. Den tradisjonelle generasjonen er parameterisert av en EMF-modell som har utvidelsen "genmodel". "Genmodellen" lar deg konfigurere generasjonen ved å definere blant annet copyright til de genererte filene, deres plassering, navnekonvensjoner og versjonen av EMF som den genererte koden vil være kompatibel med. "Genmodel" -editoren gir tilgang til de forskjellige kodegenereringshandlingene der brukeren kan velge å generere Java-koden som tilsvarer metamodellen, samt koden for å generere java-klassene for å tilpasse elementene i metamodellene som skal vises dem, java-koden til en redaktør integrert i formørkelse, samt enhetstester for forekomster av metamodellen.

Som standard inkluderer koden generert av EMF grensesnittene som representerer konseptene til metamodellen (i pakken org.eclipse.emf.model.library i eksemplet), implementeringsklassene til disse grensesnittene (i pakken org. Eclipse .emf.model.library.impl) samt to nytteklasser inkludert en "xxxFactory" -klasse som implementerer designmønsteret "Factory" . Koden generert av EMF inkluderer mange mekanismer som standard, for eksempel et varslingssystem for eventuelle modifikasjoner når du bruker en metode for tilgang til klassens attributter, samt metoder som gjør det enkelt å manipulere de genererte klassene av reflekterende ("eGet" og " spesielt eSet). Det er således mulig å enkelt kjenne beholderen til en forekomst takket være "eContainer ()" -metoden (i vårt eksempel vil beholderen til en enhet av typen "Book" være rotenheten av typen "Bibliotek").

Eclipse Modeling-prosjektet inneholder prosjekter beregnet for kodegenerering ved bruk av EMF-modeller og målrettet mot mer varierte plattformer enn java-objekter som representerer modellen, for eksempel Acceleo.

Visualisering

EMF tillater også å generere Java-koden for å visualisere en EMF-modell takket være "genmodellen". Denne genererte koden gjør det enkelt å tilpasse metamodellobjektene for å gi tekst og et bilde for å vise elementet. Standardikoner er også gitt, så vel som internasjonaliserte standardbeskrivelser.

Redigering

EMF gjør det mulig å generere Java-koden til en veiviser og en enkel EMF-editor beregnet for manipulering av metamodellen.

Tester

Til slutt tillater EMF å generere strukturen til enhetstestene som gjør det enkelt å teste koden til metamodellen.

EMFT

Den andre delen av EMF-prosjektet inkluderer alle verktøyene som gjenbruker kjernen i EMF og gjør det mulig å forbedre bruken av EMF. Innenfor dette EMFT-prosjektet ligger det derfor mange forskjellige delprosjekter som skal forbedre et bestemt punkt i EMF-verktøyet.

Sammenligning av modeller

EMFT-prosjektet inneholder et prosjekt beregnet på sammenligning av modeller laget med EMF kalt EMF Compare. EMF Compare gjør det mulig å sammenligne forskjellene mellom EMF-modeller samt å beholde sammenhengene i EMF-modellene under visse operasjoner, for eksempel håndtering med EGit versjonsstyringssystem. Hvis flere modeller er gjensidig avhengige, vil EMF sammenligne sørge for at brukeren ikke kan lagre en del av disse modellene på versjonsstyringssystemet uten å lagre resten i tilfeller der delvis lagring vil føre til et problem med konsistensen mellom modellene. EMF Compare lar deg også utføre en grafisk sammenligning mellom EMF-modeller.

Samarbeidsredigering

EMFT-prosjektet inneholder prosjekter beregnet på samarbeidsmanipulering av EMF-modellen som CDO. CDO er et rammeverk som lar verktøy som håndterer EMF-modeller administrere dem i samarbeid. Et verktøy som integrerer CDO kan således tillate at disse brukerne kan jobbe med den samme modellen samtidig ved å forhindre visse konflikter, ved å kunne låse en del av modellen og ved å administrere et versjonssystem som et versjonsadministrasjonssystem.

CDO gir et EMF-modell vedvarende system med transaksjonell tilgang for flere brukere. Denne transaksjonskapasiteten gjør det mulig å definere låser på hele eller deler av modellen, samt lagre poeng slik at modellen kan gjenopprettes fra en tidligere tilstand. Innen CDO kan en modell utvikle seg parallelt med et forgreningssystem som ligner versjonskontrollsystemer som SVN og Git. CDO tilbyr også lat lasting av EMF-modeller, og laster bare inn elementene i den forespurte modellen i minnet, takket være denne mekanismen tillater CDO å laste applikasjoner basert på EMF. Til slutt tilbyr CDO muligheten til å jobbe frakoblet, samt funksjonalitet som gjør det mulig å motstå feil som et re-tilkoblingssystem.

Generering av grafisk grensesnitt

EMFT-prosjektet inneholder også EEF-prosjektet som har som mål å tillate generering av grafisk grensesnitt rikere enn den grunnleggende EMF-redigereren for å redigere modeller opprettet med EMF. Dermed med EEF kan vi generere veivisere, redaktører eller visninger for Eclipse beregnet for redigering av EMF-modeller. EEF-prosjektet inneholder også en alternativ EMF-generasjon basert på Acceleo .

EMF-prosjektet og Eclipse Modelling

Populariteten til EMF har gitt opphav til mange tiltak som gjenbruker EMF innen Eclipse-stiftelsen i Eclipse Modeling-prosjektet, som grupperer prosjekter beregnet på MDA.

Sammenslåing

Amalgamation-prosjektet styrer konstruksjonen av Eclipse-variasjonen beregnet på Eclipse Modeling. Denne variasjonen er tilgjengelig på Eclipse-nedlastingssiden, og den inneholder et sett med verktøy utviklet i Eclipse-fundamentet for å danne et utviklingsmiljø ment for MDA-tilnærmingen. For utgivelsen av Eclipse 3.7 Indigo inneholder variasjonen fra Amalgamation-prosjektet, i tillegg til kjernen i Eclipse-plattformen, følgende verktøy:

  • org.eclipse.amalgam.discovery (funksjoner som er spesifikke for denne variasjonen)
  • org.eclipse.cvs (verktøy for CVS versjonsadministrasjonssystem)
  • org.eclipse.egit (verktøysett for Git versjonskontrollsystem)
  • org.eclipse.emf.cdo.epp (CDO, rammeverk for samarbeid om EMF-modeller)
  • org.eclipse.emf.compare.sdk (EMF Compare, modell sammenligning rammeverk)
  • org.eclipse.emf.ecoretools.sdk (Ecore Tools, verktøy for EMF)
  • org.eclipse.emf.eef.codegen.ecore (EEF, GUI generasjon for redigering av EMF-modeller)
  • org.eclipse.emf.query.sdk (EMF-spørring, spørreramme på EMF-modeller)
  • org.eclipse.emf.sdk (EMF, modelleringsrammeverk)
  • org.eclipse.emf.transaction.sdk (EMF Transaaction, rammeverk for transaksjonsstyring for EMF)
  • org.eclipse.emf.validation.sdk (EMF Validation, EMF Model Validation Framework)
  • org.eclipse.gmf.runtime.sdk (GMF, grafisk modelleringsrammeverk for EMF)
  • org.eclipse.mylyn (Mylyn, verktøy for oppgavebehandling)
  • org.eclipse.ocl.all.sdk (OCL, referanseimplementering av OMG OCL-språket, brukt blant annet for å definere begrensninger og spørsmål på EMF-modeller)
  • org.eclipse.uml2.sdk (UML, implementering av UML-metamodellen laget med EMF og tilhørende verktøy)
  • org.eclipse.xsd.sdk (XSD, XSD filmanipuleringsverktøy)

UML

Eclipse Modelling-prosjektet er vert for en implementering av UML-standarden basert på EMF. Denne implementeringen inneholder en metamodell av UML-standarden med redaktører som gjør det mulig å definere klassediagrammer, aktivitetsdiagrammer, bruk case-diagrammer etc.

Transformasjon fra modeller til modeller

Blant prosjektene som finnes i Eclipse Modeling, er det ATL- prosjektet for transformasjon av modeller til modeller. ATL er inspirert av QVT- standarden opprettet av OMG .

Kodegenerering

Eclipse Modelling-prosjektet inneholder en seksjon beregnet på prosjekter for generering av kode fra EMF-modeller. I denne kategorien kan vi finne Acceleo- prosjektet som implementerer standard OMG modell-til-tekst-transformasjonsspråk (MOFM2T). I motsetning til kodegenerering tidligere sett, kan Acceleo generere kode for ethvert teknologisk mål (java, scala, ruby, etc.). Kompatibilitet med modellene som er definert av EMF gjør det mulig å generere hvilken som helst type kode fra hvilken som helst metamodell (UML, SysML, en metamodell beregnet på et domene som eksempelvis "Bibliotek", etc.).

Grafisk modellering

Eclipse Modeling-prosjektet inneholder også prosjekter beregnet på grafisk manipulering av EMF-modeller som Graphical Modeling Framework (GMF) og Graphiti.

Fremtiden for EMF

Eclipse 4-plattformen

Etter den sterke bruken av EMF innen Eclipse Foundation-prosjektene, er EMF en del av kjernen i den nye Eclipse 4-plattformen.

Merknader og referanser

  1. "  Eclipse Foundation  " , på GitHub (åpnet 25. august 2020 ) .
  2. http://www.eclipse.org/cdo/

Se også

Relaterte artikler

EMF-baserte Eclipse Foundation-prosjekter

Eksterne linker