Transcript Ievads

Modelēšana un rīku būve
(specseminārs)
Agris Šostaks, Elīna Kalniņa
2012
Šodien
• Saimnieciskie jautājumi (Kas, Kur, Kad, Kā ???)
• Ievads modelēšanas rīku būvē
– Kas ir modelēšana, modeļi, modelēšanas valodas
– Kas ir Domēn Specifiskas Valodas (DSL – Domain
Specific Languages)
– Rīku būves platformu apskats
• Demo
Saimnieciskie I
• Kas?
– LU DF docents, LU MII vadošais pētnieks Agris
Šostaks
– LU DF pasniedzēja, LU MII pētniece Elīna Kalniņa
– LU DF bakalaura programmas studenti
Saimnieciskie II
• Kad?
– Trešdienās, 16:30
• Kur?
– Raiņa 29-404
• Kā sazināties?
– E-pasts: [email protected]
– Skype: agrissh
– E-pasts (rezerves): [email protected]
Saimnieciskie III
• Ko darīsim?
– Pasniedzēji izstāstīs metamodelēšanas pamatus
un parādīs vairākas rīku būves platformas.
– Studenti izvēlēsies kādu rīku būves platformu un
uzbūvēs rīku:
• Pasniedzēja ieteiktai modelēšanas valodai
• Pašu izvēlētai modelēšanas valodai
Saimnieciskie IV
• Par ko dos kredītpunktus?
– Semināru apmeklējumu un aktīvu piedalīšanos
– Patstāvīgu modelēšanas rīka izstrādi un atrādīšanu
seminārā
Kas ir modelēšana?
• “Modeling in its broadest sense is the cost−effective use of
something in place of something else for some purpose. It
allows us to use something that is simpler, safer, or cheaper
than reality instead of reality for some purpose. A model
represents reality for the given purpose; the model is an
abstraction of reality in the sense that it cannot represent all
aspects of reality.”
/Jeff Rothenberg/
Kāpēc modelēt?
• Lai saprastu pasauli
• Lai simulētu, t.i., paredzētu notikumus
• Lai palīdzētu uzbūvēt sarežģītas lietas
– arī lai tās vēlāk varētu saprast
– arī lai vēlāk simulētu, t.i., pārbaudītu vai kaut kas
derīgs iznāks
Kas ir modelis?
• “A model is a simplification of a system built with an
intended goal in mind. The model should be able to answer
questions in place of the actual system.”
/Jean Bézivin/
Modeļa piemērs
“Sistēma”
Modelis
“Sistēma”
Vēl divi modeļu piemēri
Vēlētāju aktivitāte
Modelis 1
Modelis 2
Modeļa piemērs – Parīzes metro 1
Modeļa piemērs – Parīzes metro 2
Modeļi programmatūras izstrādē?
• Lai uzbūvētu/saprastu sarežģītu programmatūras sistēmu, arī
tiek būvēti modeļi, kas apraksta sistēmas dažādus aspektus
dažādās detalizācijas pakāpēs
–
–
–
–
–
–
–
–
–
–
Sistēmas prasību specifikācija
Informācijas plūsmas modelis
Sistēmas konceptuālais modelis
Biznesa procesu modelis
Sistēmas projektējuma modelis
Datu modelis
Lietotāja saskarnes modelis
Sistēmas uzvedības modelis
...
Programmatūras kods
Modelēšanas valodas
•
•
Modelēšanas valodas nepieciešamas, lai pierakstītu modeļus un lai citi šos
modeļus varētu saprast.
Piemēri:
– ER diagrammas
•
•
•
Čena sintakse
“Vārnu kāju” sintakse
...
– Datu plūsmu diagrammas (DPD)
– UML
•
•
•
•
•
•
–
–
–
–
•
klašu diagramma
aktivitāšu diagramma
secības diagramma
stāvokļu diagramma
komponenšu diagramma
lietojumu diagramma
BPMN (apraksta biznesa procesus)
SysML
SQL (arī to var uzskatīt par modelēšanas valodu!)
...
Modelēšanas valodas var būt gan grafiskas, gan tekstuālas! Modelis nav tikai
bildīte! Svarīgs ir MĒRĶIS, ar kādu modelis ir veidots!
Modelēšanas valodu piemēri
•
•
•
•
•
•
Lietojumu diagramma
Aktivitāšu diagramma
Komponenšu diagramma
Secības diagramma
Klašu diagramma
Biznesa procesu modelis
sd Brow se an offer and reserv e - basic path
«interface»
«interface»
Reservations::IBrowseAnOfferAndReserve
CustomersServices::ICustomer
User Interface::UserInterface
class Architecture
act Brow se an offer and reserv e
Customer
User Interface
IUserInterface
ActivityInitial
UserInterface
(from User Interface)
wants to make facility
(Customer) w ants to make :
reservation()
wantToMakeFacilityReservation()
«inv oke/insert»
facility reserv ation
[rejoin]
Change display criteria
showReservableFacilityList()
selects facility()
Change display criteria
selectFacility()
Application Logic
(System) show s :
information message
IRegisterACustomer
selects facility reservation
time from time table()
uc Reserv ations
[list is empty]
askToSelectFacilityReservationTime()
IBrowseAnOfferAndReserve
(Customer) selects : facility
[rejoin]
selectFacilityReservationTimeFromTimetable()
Message: "No facilities found
according to the given criteria"
Common
Brow se an offer
(from Common)
confirms facility
reservation()
Change display
criteria
«invoke»
{user
Businessintervention}
Logic
(System) asks to select :
facility reserv ation time
askToConfirmFacilityReservation()
Reserv ations
time table
showFacilityReservationSummary()
ICustomer
(from Common)
CustomersServ ices
(System) asks to confirm :
facility IFacility
reserv ation
(Customer) confirms :
facility reserv ation
FacilitiesServ ices
(System) reserv es : facility
: for : customer
«use»
Data Access Layer
Brow se an offer and
reserv e
ICustomerDataDAO
ICustomerDAO
CustomersDataAccess
(Customer) discards :
facility reserv ation
(Customer) selects : facility
confirmFacilityReservation()
reserv ation time : from :
(from Actors)
(from Actors)
«inv oke/request»
(System) show s :
reserv able facility list
IUserInterface
IChangeDisplayCriteria
Customer
«Pre-condition»
{Customer must be
logged in}
(System)
show s : facility
IFacilityDAO
reserv ation summary
FacilitiesDataAccess
success
reserveFacility(CustomerDTO,
FacilityDTO)
Modelēšanas rīki
• Modelēšanas rīki palīdz pierakstīt un izveidot modeļus, kuri
nepieciešami izstrādes gaitā. Parasti tie ir paredzēti veidot
modeļus kādā noteiktā valodā(s).
• Var lietot zīmēšanas rīkus (t.i. rīkus, kas ļauj ievadīt patvaļīgu
tekstu vai zīmējumu), piemēram, PowerPoint, LibreOffice,
Visio, utml. ...
– Ar šādiem rīkiem var uzzīmēt jebko – viegli uzzīmēt savu
modeli savā valodā! Kas vēl to sapratīs?
– Šādos rīkos ir ierobežotas iespējas pārbaudīt izveidotā
modeļa korektību. Kā noķert kļūdas?
Modelēšanas rīku raksturiezīmes
• Ļauj veidot modeļus tikai noteiktā modelēšanas
valodā(s)
• Veic sintakses pareizības pārbaudes
• Veic modeļu validāciju
• Veic papildus modeļu apstrādi
– Veic modeļu pārveidojumus (transformācijas)
– Ģenerē programmatūras koda fragmentus
– Veic simulāciju (ja tiek modelēti, piem., biznesa
procesi)
Rīku būve
Domēna specifiskas valodas
• Specifiskos problēmu apgabalos tiek lietotas
specializētas modelēšanas valodas - domēna
specifiskas valodas (DSL – Domain Specific
Language), kuras ir paredzētas kādas
konkrētas uzdevumu grupas veikšanai.
DSL aplikāciju būvei telefoniem
Nokia, Symbian/S60
DSL valodas
•
•
•
•
Orientēta uz konkrētu problēmu apgabalu
Lietotāji var operēt ar pazīstamiem jēdzieniem
Var būt gan grafiskas, gan tekstuālas
Programmēšanas, definēšanas, aprakstīšanas
valoda
DSL īpašības
• Lai DSL būt praktiska jēga jābūvē kompilators
• No DSL modeļiem var iegūt:
– Kodu, kas integrējams platformā
– Izpildāmu aplikāciju,
– Testa piemērus,
– Dokumentāciju,
– ....
Tekstuālu DSL piemēri
•
•
•
•
•
•
SQL
HTML
UNIX shell scripts
Rīkos Maple un Mathematica lietotās valodas
BNF
....
SQL
SELECT a1.Name, a1.Sales, SUM(a2.Sales) Running_Total
FROM Total_Sales a1, Total_Sales a2
WHERE
a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
HTML
<html>
<body>
<p> Each table starts with a table tag. </p>
<h4>One column:</h4>
<table border="1">
<tr><td>100</td><td>200</td></tr>
<tr><td>300</td><td>400</td></tr>
<tr><td>500</td><td>600</td></tr>
</table>
</body>
</html>
Grafisku DSL piemēri
•
•
•
•
•
•
•
•
•
MOLA
WebUML
OpenMusic
Microsoft Visual Programming Language
CODE
DRAKON
webMethods Flow
Labview
....
OpenMusic
http://recherche.ircam.fr/equipes/repmus/OpenMusic/
MOLA
Microsoft Visual Programming
Language
http://msdn2.microsoft.com/en-us/library/bb483088.aspx
CODE
http://www.cs.utexas.edu/users/code/code2.2a3-screenshot.gif
FLOW
http://www1.webmethods.com/images/products/screenshots/wm_ESP_BI_2.jpg
DSL aplikāciju būvei telefoniem
Nokia, Symbian/S60
User-Interface Designer
User-Interface Designer
WaKe DSML
Izstrādes modelis
Implementācija
DSL atbalsta rīki
• Domēna specifisku valodu atbalsta rīku izstrādāšana
ir darbietilpīgs process.
• DSL rīku izstrādes procesu var uzlabot, izmantojot
universālas, metamodeļu bāzētas rīku izstrādes
platformas.
• Ar šo pieeju vienkāršus DSL rīkus var izveidot ļoti ātri
• DSL rīku būves platformas:
–
–
–
–
–
Microsoft DSL Tools
MetaEdit+
Eclipses GMF platforma
GRAF
...
DSL rīku būves platformas loma
Lietotājs
Domēna eksperts
Valoda MOLA
Eksperts
Programma 1
valodā MOLA
MOLAs rīks
Programma 2
valodā MOLA
DSL 1
DSL 1 rīks
Rīku būves
platforma
…
DSL X
DSL X rīks
Izpildāma
transformācija
Izpildāma
transformācija
…
Programma 3
valodā MOLA
Izpildāma
transformācija
Kā šīs platformas darbojas?
• Tiek definēts domēna modelis
• Tiek definēts prezentācijas modelis
• Tiek definētas statisks attēlojums starp
prezentācijas un domēna modeļiem
• Ģenerējam DSL rīku
Ieguvumi
– Programmēšana izmantojot domēna nevis
programmēšanas valodu jēdzienus
– Mazākas izmaksas
– Lielāka produktivitāte
– Labāka kvalitāte
– Elastīgums – var nomainīt ģeneratoru
– Īsāks apmācības laiks – mazākas prasības pret
apmācāmajiem
– Var mēģināt ieskaidrot klientam, ko modeļi nozīmē
Izmaksas
Demo