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