grafisko rīku būves platforma: koncepcija un pirmie rezultāti

17
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

Upload: dava

Post on 27-Jan-2016

38 views

Category:

Documents


4 download

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 Presentation

TRANSCRIPT

Page 1: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 2: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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.

Page 3: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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.

Page 4: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 5: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 6: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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.)

Page 7: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 8: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

Saskarnes meta-modelis darbībā

Page 9: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 10: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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ā

Page 11: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

Page 12: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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.

Page 13: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

Rīka skatījums: viesnīcas rezervācija

Page 14: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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]

Page 15: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

Vienkāršs klašu diagrammu meta-modelis

Page 16: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

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

*

* *

* * *

Page 17: Grafisko rīku būves platforma: koncepcija un pirmie rezultāti

Paldies!

Jautājumi ?

Grafisko rīku būves platforma: koncepcija un pirmie rezultāti