grafisko rīku būves platforma: koncepcija un pirmie rezultāti
DESCRIPTION
Grafisko rīku būves platforma: koncepcija un pirmie rezultāti. J.Bārzdiņš, A.Zariņš, K.Čerāns , S.Kozlovičs, L.Lāce, R.Liepiņš, E.Rencis, A.Sproģis Rīga, LU 2008. Problēmas nostādne. - PowerPoint PPT PresentationTRANSCRIPT
Grafisko rīku būves platforma: koncepcija un pirmie rezultāti
J.Bārzdiņš, A.Zariņš, K.Čerāns, S.Kozlovičs,L.Lāce, R.Liepiņš, E.Rencis, A.Sproģis
Rīga, LU 2008
Problēmas nostādneIzveidot universālu platformu modelēšanas rīku izstrādei, kas
balstīta uz iepriekšējo modelēšanas rīku izstrādes pieredzi (GRADE) unizmanto sasniegumus no MDA un modeļu transformāciju apgabaliem.
Izstrādāt konkrētu UML 2.0 standartam atbilstošu modelēšanas rīku, kas ietver iespējas darbam ar - klašu diagrammām- aktivitāšu diagrammām- lietojumu (use case) diagrammām- nodrošina UML 2.1. stereotipu atbalstu.
Sadarbībā ar potenciāliem platformas lietotājiem veidot specifiskus uz šo lietotāju vajadzībām orientētus rīkus.
Esošās pieejas un platformas grafisko rīku būvei: Eclipse GMF, Microsoft DSL, MetaEdit+, Pounamu/Marama, un citas ir spēcīgas, kad modelējamās struktūras ir tuvas to grafiskajai reprezentācijai.
Izmantojot MDA un modeļu transformāciju pieeju, iespējams pietiekami ērti veidot modelēšanas rīkus, kas nodrošina patvaļīgi sarežģītu atbilstību starp modelējamo struktūru un tās grafisko reprezentāciju.
Platforma: GrTPIzveidot universālu platformu modelēšanas rīku izstrādei, kas
balstīta uz iepriekšējo modelēšanas rīku izstrādes pieredzi (GRADE),izmanto sasniegumus no MDA un modeļu transformāciju apgabaliem,ir spējīga rīkos attēlot patvaļīgi sarežģītas atbilstības starp modelējamo struktūru un vizuālo prezentāciju.
GrTP: lieto MDA ne tikai platformneatkarīgo un platformai specifisko modeļu veidā, bet aprakstot pašus rīkus, izmantojot meta-modeļus, un lietojot modeļu transformācijas, lai grafiskajā rīkā sasaistītu modelējamo struktūru (domēna modeli) un vizuālo prezentāciju (prezentācijas modeli).
GrTP balstās:uz modeļu transformāciju valodām L0, L1, ..., Lx,uz GRADE rīku saimes ietvaros attīstītajiem grafu zīmēšanas algoritmiemuz efektīvu operatīvā atmiņā izvietojamu rīku repozitoriju.
GrTP: rīka arhitektūra(Konkrēts) GrTP rīks =
GrTP dzinējs + repozitorijs + transformāciju bibliotēka
Arhitektūra: ietver 3 līmeņu elementus:
Kodols (viens un tas pats kodols visiem GrTP rīkiem)
Rīka specifiskā daļa
Izpildes laika instances
GrTP: platformas kodolsGrTP kodols, kas ir kopējs visiem uz GrTP
veidotiem rīkiem sastāv no:(i) prezentācijas dzinējs (PE)(ii) repozitorija implementācija(iii) grafiskās saskarnes (interfeisa) meta-modelis (IMM)
IMM satur klases, kas atbilst šāda veida elementiem:
Konkrētas virsotnes, šķautnes, u.c. vizuālās prezentācijas elementi
Simbolu palete, elementu stili, izvēlnes – konkrētā grafiskā rīka vide
Notikumi un komandas – prezentācijas dzinēja un transformāciju sadarbības ietvars
Domēna meta-modelis, transformāciju bibliotēka – rīkam specifiskā daļa
GrTP rīks = kodols + specializācijaKodols:
(i) prezentācijas dzinējs (PE)(ii) repozitorija implementācija(iii)grafiskās saskarnes meta-modelis (IMM)
Specializācija:
(i) Domēna MM un sastatnes uz IMM[piemēram, “start” elements blokshēmu redaktorā ir attēlojams kā būdiņa]
(ii) Vizuālās prezentācijas elementu stili un tipi (kā instances saskarnes modelī IM)[IMM satur klases šiem stiliem un tipiem]
(iii) Transformāciju bibliotēka
Izpildes laiks:Konkrētais domēna modelis, konkrētie vizuālie elementi saskarnes modelī IM.
Saskarnes modelis: rīka definīcijas informācija (tipi, stili, paletes elementi, u.c.) + rīka izpildes laika informācija (konkrētas virsotnes un šķautnes, u.c.)
Saskarnes meta-modelis (vienkāršots)Command
attribute: StringOkMessage
RefreshOpen
CloseErrorMessage
Diagramname: String
GraphDiagrCurrentDiagrPointer
Nodelocation: String
Edgelocation: String
NCompartmentvalue: String
ECompartmentvalue: String
PalettePaletteElementname: Stringpicture: Stringnr: Integer
BoxLine
GraphDiagrTypetypeName: String
NodeTypenodeTypeName: StringnodeShape: Integer
EdgeTypeedgeTypeName: StringstartShape: IntegerendShape: Integer
NCompartmentTypename: Stringnr: Integer
ECompartmentTypename: Stringposition: Integer
PropertyDiagr
Row
NameFieldname: String
InputFieldvalue: String
NewEdge
NewNode
DeleteEdgeDeleteNode
SessionStart
EditNode
EditEdge
SessionEndEvent
attribute: String
Ok
Cancel
0..1
0..10..1
1
*
1
*
1
start1 sedge
*
end1 eedge
*
*
1
* 1
*1
1
1..*
*
1
*
1
start* sedge
*
end* eedge
*
*
1
1*
1
*
*
1
*
1
1*
1
*
11
110..1
0..1
0..1
0..1
enew
end1
snew
start1
11
0..1 0..1
0..10..1
0..1
0..1
1..*1
1
1
1
1
0..1
0..1
0..1
0..1
Saskarnes meta-modelis darbībā
Pilnais saskarnes meta-modelis
Rownr: Integersingle: Boolean
MenuItemvalue: String
MenuInputFieldvalue: String
NameFieldname: String
ActiveElementCmd
OkCmd
PasteCmd
Collection(selected elements)
GraphClipboard
GraphDiagramTypeID: Stringcaption: StringlayoutMode: IntegerlayoutAlgorithm: IntegerbkgColor: Integer
NewEdge
MouseClickclickType: Integer
CancelProperty(Cancel Button)
PopUpElementID: Stringcaption: Stringvisibility: Booleannr: Integer
MoveLineStartpoint
Port
MoveLineEndpoint ElemTypeisBaseType: BooleanID: Stringcaption: StringshapeCode: IntegershapeStyle: IntegerlineWidth: IntegerdashLength: IntegerbreakLenght: IntegerbkgColor: IntegerlineColor: Integer
EdgeTypelineType: IntegerstartShapeCode: IntegerstartLineWidth: IntegerstartDashLength: IntegerstartBreakLenght: IntegerstartBkgColor: IntegerstartLineColor: IntegerendShapeCode: IntegerendLineWidth: IntegerendDashLength: IntegerendBreakLength: IntegerendBkgColor: IntegerendLineColor: IntegermiddleShapeCode: IntegermiddleLineWidth: IntegermiddleDashLength: IntegermiddleBreakLength: IntegermiddleBkgColor: IntegermiddleLineColor: Integer
PropertyDiagramID: Stringcaption: StringautoOpen: Boolean = t
OkProperty(OK button or Enter)
PaletteElementID: Stringcaption: Stringpicture: Stringnr: Integer
Palette
GraphDiagramcaption: StringlayoutMode: IntegerlayoutAlgorithm: IntegerbkgColor: IntegerscreenZoom: IntegerprintZoom: Integer
Commandinfo: String
CloseDgrCmd
Eventinfo: String
PopUpDiagram
KeyStrokekeySymbol: String
ToolID: Stringcaption: Stringpicture: Stringvisibility: Booleannr: Integer
PopUpElemSelect
OpenPopUpCmd
UpdateDgrCmd
Toolbar
ToolSelect
ExecTransf
Eventinfo: String
CurrentDgrPointer
FirstCmdPointer
PasteClipboard
CopyCollection
DeleteCollection
ActiveDgrCmdSaveDgrCmd
Line
BoxNewNode
NewPortPin
Elementstyle: Stringlocation: String
Edge
Compartmentinput: Stringstyle: Stringnr: Integer
PortTypepicture: Stringwidth: Integeralignment: Integer NodeType
picture: StringpicWidth: IntegerpicHegth: IntegerpicPos: IntegerpicStyle: Integerwidth: Integerheigth: Integercontainer: Integer
CompartTypeID: String caption:Stringnr: Integer adornment:Integeralignment: Integer lineWidth:Integeradjustment: Integer lineColor:Integerpicture: String //default = Font:picWidth: Integer fontTypeFace:StringpicHeight: Integer fontCharSet:IntegerpicPos: Integer fontColor:IntegerpicStyle: Integer fontSize:IntegerfontPitch: Integer fontStyle:Integer
ChangeParent
Node
PropertyDgrCmd
MessageButtonname: String
MessageDiagramvalue: String
MessageButtonSelect
0..1 *
*
0..1
*
1
*
1
*
*
*
parentTypechildType * *
1
1
nEnd
end
1nStart
start
1
1
1
start
*
*
end
*
*
0..1
0..1
1
1 1
*
1 0..1
*
0..1
*
1
1
0..1
*
1..*
1
0..1
* 1
*
0..1
1
0..1
*
*
target
0..1
target
0..1
eEnd
end
*
1
*
*
0..1
0..1
1
0..1 1
0..1
*
1..*
0..1 1
nextprevious 0..1 0..1
0..1 1
1
1
forCollection *
0..1
forDiagram *
0..1
0..1
child
parent
*
source
1
1
1 1
1
0..1
eStart start
*
1
0..1
0..1
0..1
1
*
1
baseType
subType
1
*
*
0..1
*target 0..1
1..*
1
Kā iegūt domēnam specifisku rīkuSpecializācija:
(i) Domēna MM un sastatnes uz IMM(ii) Vizuālās prezentācijas elementu stili un tipi (kā instances saskarnes modelī IM)(iii) Transformāciju bibliotēka
Kā iegūt rīku:
(i) Ievadīt domēna meta-modeli;
tekstuālā sintaksē (transformāciju valodas kods)
grafiskā saskarne tiek veidota
imports no citiem rīkiem paredzēts tālākā perspektīvā
(ii) Izveidot vizuālās prezentācijas elementu tipus un stilus;
kods transformāciju valodā
konfigurators pieejama pamata funkcionalitāte
(iii) Uzrakstīt modeļu transformācijas, kas saista domēnu un prezentāciju:
Tekstuāla valoda L0+ un tās paplašinājums L3(+)
Principiāla iespēja lietot jebkuru modeļu transformāciju valodu
Iespējama praktiska integrācija ar grafisko MOLA vidi
Attīstīt konfiguratoru attēlojumiem izstrādes procesā
Pirmie eksperimenti un secinājumiPlatforma ir implementēta un notestēta uz vienkāršiem piemēriem:
- Vienkāršots klašu diagrammu redaktors
- UML-veida aktivitāšu diagrammu redaktors (strādā ar pilno UML 2.0 aktivitāšu diagrammu
meta-modeli).
Platforma tiek attīstīta, lai nodrošinātu plašākas konfigurēšanas iespējas un ērtāku transformāciju
rakstīšanu
Pilnais UML 2.0 klašu diagrammu redaktors ar stereotipu atbalstu – darbs, kas tiek turpināts
Esošās implementācijas parāda pieejas dzīvotspēju ātrdarbības terminos.
Eksperimentāla rīka radīšana (piemēram, UML aktivitāšu diagrammu redaktors) izmantojot zema
līmeņa transformāciju valodu L0, nelietojot grafiskus diagrammu zīmēšanas līdzekļus: daži
cilvēk-mēneši transformāciju rakstīšanai.
Procesa paātrināšanas iespējas:
- attīstītas konfigurēšanas iespējas un labas transformāciju bibliotēkas un
- augstāka līmeņa transformāciju valodas (piemēram, MOLA)
- objektorientēta transformāciju rakstīšana
Iecerētie platformas lietojumi
Izveidotā UML 2.0/2.1 modelēšanas rīka izmantošana (GRADE rīka vietā)
Latvijas Universitātē un citās augstskolās
Atvērt rīku būves platformu akadēmiskiem lietojumiem Latvijas augstskolās,
lai piedāvātu ietvaru, kādā IT studentiem apgūt MDA un modeļu
transformāciju jēdzienus
Attīstīt sadarbību ar Latvijas IT uzņēmumiem attiecībā uz platformas un uz tās
bāzes izveidoto rīku izmantošanu konkrētos projektos.
Rīka skatījums: viesnīcas rezervācija
Aktivitāši diagramma: vadības plūsma rīkā
Transformation Engine
Command
Perform event
Property Diagram Engine
Make event and call transformation
User activity in Property Diagram
Perform command
Event
Control Unit
Check command
Command Command
Graph Diagram EngineUser activity in Graph Diagram
Perform command
Check user activity
Make event and call transformation
Event
Perform graphical changes
[Only graphical]
[Semantic]
[GDE command]
[PDE command]
Vienkāršs klašu diagrammu meta-modelis
UML veida aktivitāšu diagrammu meta-modelis
Initial
ActivityFinal
ControlNode
ForkJoin
FlowFinal
objectisStream: Boolean = f
statename: String
DecisionMerge
UpperBoundvalue: String
Orderingvalue: String//FIFO//LIFO//ordered//unordered JoinSpec
value: StringPin
CallBehaviorAction
SendSignalAction AcceptTimeEventAction
AcceptEventAction
DecisionInputvalue: String
Performername: String
ActionisExternal: Boolean = fisMultiple: Boolean = f
ActivityNodename: Stringdescription: String
Swimlinename: String
Sortname: String
Signal
DataStoreCentralBuffer
ActivityParameterisException: Boolean = f
FlowisStream: Boolean = fisException: Boolean = fisInterruption: Boolean = fisMulticast: Boolean = fisMultireceive: Boolean = f
Selectionvalue: String
Guardvalue: String
Weightvalue: String
ActNotetext: String
InterruptRegion
Transformationvalue: String
Namevalue: String
Activity(ActivityDiagram)isSingleExecution: Boolean = f
0..1
0..1
*
*
*
0..1
*
0..1
target
* 1
0..1
0..1
1
*
0..1
end
*
1
start
*
1
*
*
interrupts *
0..1
*
0..1
*
*
0..1
0..1 *
0..1
*
* *
* * *
Paldies!
Jautājumi ?
Grafisko rīku būves platforma: koncepcija un pirmie rezultāti