1 / 113

Model Based Programming

Model Based Programming . Spring 2004 København, den 3. maj 2004 Henrik Hulgaard. Plan. 09:00 – 10:00 F1 : Intro til Configit og konfigurering 10:00 – 10:15 Ø1 : Installation og T-shirt konfigurator 10:15 – 10:30 Pause

duaa
Télécharger la présentation

Model Based Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Model Based Programming Spring 2004 København, den 3. maj 2004 Henrik Hulgaard

  2. Plan 09:00 – 10:00 F1: Intro til Configit og konfigurering 10:00 – 10:15 Ø1: Installation og T-shirt konfigurator 10:15 – 10:30 Pause 10:30 – 11:30 F2: PM Studio (1), indledende modellering, simple variabler og regler 11:30 – 12:00 Ø2: Formalisering af regler 12:00 – 13:00 Frokost 13:00 – 13:30 F3: PM Studio (2), projekter, præsentationslag 13:30 – 14:45 Ø3: Kaffe og PC konfigurator 14:45 – 15:00 Pause 15:00 – 15:30 F4: Control Manager 15:30 – 16:00 F5: Manglende emner & what’s next… (Ø3.2: PM konfigurator) Model based programming

  3. Intro:Configit og konfigurering Kursusprogram

  4. Om Configit • Lidt om Configit Software A/S: • Baggrund fra forskningsmiljøet på IT-højskolen, DTU og Århus Universitet • 50% af ansatte har ph.d. grad eller mere end én videregående uddannelse • 2 hovedforretningsområder: salgs- og produktionsstøtte-software, og setup- og installationssoftware • Pt. 18 ansatte • Patent-anmeldt kerneteknologi • Kapitaltilførsel fra ACR Capital/Slottsbacken • Referencer: Danfoss, Psion Teklogix, NetTest, Vestas, Novenco, Intentia, Wirsbo, Uponor, Lindab Model based programming

  5. Kursusformål • Undervisning og øvelser i PM Studio og Control Manager: • Modellering: parametre, komponenter, regler, sandhedstabeller • Konfigurering: VT filer, projektfiler, præsentationslag, ordningsfiler • Validering: simulering af parametermodel • Applikationsudvikling: Java API til VT fil • Dækker ikke: • DB Studio • ERP og Excel connectors • DB integration • Web integration Model based programming

  6. F1: Indhold • Parameteropsætning • Produktmodellering og konfigurering • Hvorfor er konfigurering svært? • Configits software suite • Gennemgang af konfigurationsteknologier • Fordele ved Configits konfigurationsteknologi Model based programming

  7. Alle gyldige konfigurationer Alle mulige konfigurationer • En (interaktiv) konfigurator skal: • Sikre man ender med en gyldig konfiguration • Guide brugeren frem mod målet F1: Hvad er konfigurering? Model based programming

  8. F1: Hvad er produktmodellering? En produktmodel består af: x1 , ... , xn parametre / variable D1 , ... , Dn værdier / domæner r1 , ... , rm regler / formler Svarer til een stor formel φ( x1 , ... , xn ) som angiver de gyldige konfigurationer En bruger vælger en parameter og en (gyldig) værdi: x = v Konfiguratoren svarer med de gyldige værdier V1 , ... , Vn for alle parametrene Model based programming

  9. F1: Mærkelige T-shirts color: [ black, white, red, blue ]; size: [ S, M, L, XL ]; print: [ MiB, StW ]; if print = MiB then color = black; if print = StW then size = L or size = XL; [ ] black [ ] S [ ] MiB [ ] white [ ] M [ ] StW [ ] red [ ] L [ ] blue [ ] XL Model based programming

  10. F1: Mærkelige T-shirts color: [ black, white, red, blue ]; size: [ S, M, L, XL ]; print: [ MiB, StW ]; if print = MiB then color = black; if print = StW then size = L or size = XL; [ ] black [ ] S [ ] MiB [√] white [ ] M [ ] StW [ ] red [ ] L [ ] blue [ ] XL Bruger vælger: color = white Model based programming

  11. F1: Mærkelige T-shirts color: [ black, white, red, blue ]; size: [ S, M, L, XL ]; print: [ MiB, StW ]; if print = MiB then color = black; if print = StW then size = L or size = XL; [ ] black [-] S [-] MiB [√] white [-] M [√] StW [ ] red [ ] L [ ] blue [ ] XL Bruger vælger: color = white, konfiguratoren konkluderer... Model based programming

  12. F1: Mærkelige T-shirts color: [ black, white, red, blue ]; size: [ S, M, L, XL ]; print: [ MiB, StW ]; if print = MiB then color = black; if print = StW then size = L or size = XL; [ ] black [√] S [ ] MiB [ ] white [ ] M [ ] StW [ ] red [ ] L [ ] blue [ ] XL Bruger vælger: size = S Model based programming

  13. F1: Mærkelige T-shirts color: [ black, white, red, blue ]; size: [ S, M, L, XL ]; print: [ MiB, StW ]; if print = MiB then color = black; if print = StW then size = L or size = XL; [√] black [√] S [√] MiB [-] white [ ] M [-] StW [-] red [ ] L [-] blue [ ] XL Bruger vælger: size = S, konfiguratoren konkluderer... Model based programming

  14. F1: Hvor svært er konfigurering? Lad os antage værdierne kun er boolske {0,1} og regler kun kan angives ud fra variable, not, og and SAT-problemet: ”Findes x1 , ... , xn så φ( x1 , ... , xn ) er sand?” er NP-fuldstændigt (Cook 1972). Essensen er: • Det er nemt at checke en løsning • Det er svært at finde en løsning Når en bruger har valgt x1,...,xk skal man beregne de gyldige værdier for xk+1, ... , xn. Det svarer til et SAT-problem for hver mulig værdi xi = v. Model based programming

  15. F1: Hvor svært er konfigurering? Nogle konfiguratorer undgår at løse SAT-problemer, ved • Kun at tillade valg i fast rækkefølge • At begrænse regler så de kun taler om værdier der er kendte • Kun at evaluere om en konfiguration er gyldig • Kun at beregne gyldige værdier for xk+1 Det giver dog problemer med anvendeligheden: • Dead-ends kan ikke undgås • Svært at lave og vedligeholde produktmodellen • Fasttrådet rækkefølge giver dårlig brugergrænseflade Model based programming

  16. F1: Hvor svært er konfigurering? Datalogisk naturlov: Der findes ingen algoritme som altid løser SAT effektivt! Alle algoritmerne kan tage eksponentiel tid. Det er ubehageligt! 2n vokser hurtigt: n=10: 2n=1024 n=40: 2n=1 billion n=600: 2n=antal elementarpartikler i universet Man må anvende algoritmer som "oftest" virker godt: Ad hoc Constraint propagation Virtual Tabulation Model based programming

  17. F1: ConfigIts teknologi NP-fuld. NP-fuld. P Model based programming

  18. Produktmodel: Formalisering af produktets parametre og deres afhængigheder; dvs. en specifikation af de gyldige produktkombinationer F1: Configits softwaresuite Den virtuelle tabel bruges af Control Manager til at afgøre, hvilke værdier der kan tildeles en parameter. Kompakt, lineære svartider Produktmodel oversættes til et kompakt, patent-anmeldt format, som hedder en virtuel tabel Model based programming

  19. Øvelse 1:Installation og T-shirt konfigurator Kursusprogram

  20. Ø1: Installation og T-shirt konfigurator • Installér Configit Developer og Control Manager for Java • Start PMStudio og åbn filen tshirt.cws workspacet • Gennemgå eksemplet og bliv fortrolig med reglerne • Check at filen er syntaktisk korrekt • Oversæt filen til en VT fil og kør den i PMView • Vælg color=red. Forklar hvad sker der med size og neck. • Vælg istedet color=blue. Forklar hvad sker der med size, material og itches? • Start forfra ved at trykke Reset. • Vælg size=Large.Forklar hvad der sker med color. • Vælg color=yellow. Forklar hvad der sker med material og itches. • Hvor mange løsninger kan der maksimalt være, hvis der ingen regler er? Model based programming

  21. Forelæsning 2:PM Studio (1) Kursusprogram

  22. F2: Indhold • Variable • Identifiers • Simple typer: boolean, enumeration, integers, floats, records • Bruger-definerede typer • Regler • Arrays, optionals, kvantorer Model based programming

  23. F2: Produkt model En produkt model består af • Parametre (kaldet variabler i PM) • Værdier for parametrene (kaldet variablens domæne) • Regler over variablerne og deres værdier En PM-fils struktur: type (Beskrives senere) ... variable ... rule ... Model based programming

  24. F2: Eksempel på PM fil variable color: [ red, black ]; frame: [ carbon, standard_female, standard_male, off_road ]; wheel: [ rough, slick ]; rule /* the off_road frame is red */ if (frame = off_road) then (color = red); /* the wheels are rough if the frame is off_road,and vice versa */ (wheel = rough) <-> (frame = off_road); Model based programming

  25. F2: Identifiers • Identifiers bruges til at navngive variabler, typer, labels m.m. • Enten som i C++ og Java:x11 rubber_duck color _007 • Eller i dobbelt-quotes:”bike color” ”7seas” ”18\”” ”color” Model based programming

  26. F2: Simple typer Der er følgende simple typer i PM: • Booleanmetalic_paint: boolean; • Enumerationcolor: [ red, green, “light blue”]; • Rangesperson_age: [0..100]; • Integersconcentration: integer; • Floatstemperature: float; • Strukturerede typerCPU: { model: [ Pentium, PentiumII, AMD_K6 ]; freq: [ “500 MHz”, “750 MHz”, “1 GH” ]; }; Model based programming

  27. F2: Variabler • Variable defineres med var_navn:var_type; • Eksempel:variable manual_transmission: boolean; chassis_color: [ red, green, blue ]; • private / public modifiers: variableprivate drive_shaft: [ xf29k, xf27j, y31i ];public chassis_color: [ red, green, blue ]; Model based programming

  28. F2: Ang. Enumeration typer • Labels skal være unikke! • Jeg gentager, labels skal være unikke... variable shirt: [ red, green, blue ]; pants: [ red, yellow ]; /* Fejl: red erklæret 2 gange */ Model based programming

  29. F2: Unikke labels • To måder at løse problemet på: • Brug en type:type Color : [red, green, blue, yellow ];variable shirt : Color; pants : Color; • Prefix: shirt:[ shirt_red, shirt_green, …];Hvis prefix har formen “{prefix}label” vil “{prefix}” ikke blive vist (f.eks. I PM View) Model based programming

  30. F2: Ang. Ranges • Ranges skal være begrænsede og starte med 0: x: [0..9]; • Ranges kan indgå i aritmetiske udtryk:3*x < 13; • Brug Integers eller enumereringstyper hvis muligt. Fx. istedet for: frame_size: [0..60];brugframe_size: [ ”49 cm”, ”51 cm”, ”53 cm”, ”54 cm”, ”55 cm”, ”57 cm”, ”59 cm”, ”60 cm” ]; Model based programming

  31. F2: Strukturerede typer • En struktureret type bruges til at gruppere et antal parametre: variable gear: { changer: [ torpedo_3, shimano_14 ]; foo: boolean; }; rule if gear.changer = torpedo_3 then gear.foo; Model based programming

  32. F2: Type erklæringer • Man kan navngive sine egne typer:type Color: [ red, green, blue ]; variable shirt: Color; pants: Color;rule shirt <> pants; Model based programming

  33. F2: Regler • Regler beskriver afhængigheder mellem variablerne og deres værdier:rule x > 3; • Regler er udtryk der altid skal være sande ruleshirt = red; • Kun konfigurationer, som overholder alle regler i en PM fil, er gyldige. Model based programming

  34. F2: Konstruktion af regler • Kombinér variabler og deres værdier med operatorer: • Boolske operatorer: and, or, not, ->, =, <>, if-then-else • Range operatorer:+, -, *, <, >, <=, >=, =, <> • Integer og float operatorer:<, >, <=, >=, =, <> • Enumeration operatorer: =, <>, order() Model based programming

  35. F2: Boolske operatorer • Eksempelvariable x : boolean; y : boolean; z : boolean;ruleif y then x else z; x and (y or not z); • Sandhedstabel: Model based programming

  36. F2: Enumeration operatorer • Sammenligningsoperatorerne = og <>: type Color: [ red, blue, black ];variable shirt: Color; pants: Color; rule shirt = red; pants <> blue; shirt = pants; red <> black; Model based programming

  37. F2: Regeltyper • Typiske regler: • Konflikt: not ( CPU=PentiumII and MB=ASUS ); • Altid: frequency > “200 MHz”; • Betinget: if CPU=PentiumII then MB=Intel; Model based programming

  38. F2: Regler i strukturelle typer • Komponenter beskrevet ved strukturelle typer kan indeholde regler, der beskriver egenskaber for alle instanser af komponenten. type Gear : { name : [Acera, Sora, Torpedo, Ultega]; type : [InternalGear, ExternalGear]; rule if name = Acera then type = InternalGear; if name = Torpedo then type = ExternalGear; } Model based programming

  39. F2: Arrays Ved flere instanser af samme type kan man benytte array typer type Wheels : array 2 of { diameter : [ ”23c”, ”25c” ]; tire : [ Racer, City ]; } • Et array indeholder et konstant antal elementer • Man kan oprette arrays af alle typer • Arrays er indekseret fra 0 Model based programming

  40. F2: Arrays Array variabler indiceres vha. [] operatoren. variable x : array 4 ofarray 2 of [0..3]; rule x[1][1] = 3; x[2][3] = x[2][2]; /* Fejl: x[..][3] er ikke lovlig */ x[4][0] = x[4][1]; /* Fejl: x[4][..] er ikke lovlig */ Array variabler indiceres med konstanter eller range variabler constant LIMIT : 4; variable y : array LIMIT ofboolean; ruleif x[1][1] then y[LIMIT - 2] = y[LIMIT -1]; Model based programming

  41. F2: Optionals Man kan modellere, at ikke alle komponenter altid er til stede. Eksempel: modelleret vha. ekstra variabel variable shoes : [Nike, Adidas]; have_shoes : boolean; Eksempel: modelleret vha. ekstra label variable shoes : [Nike, Adidas, NoShoes]; Model based programming

  42. F2: Optionals Eksempel: modelleret vha. optionals variable shoes : optional [Nike, Adidas]; Optional variabler introducerer en ekstra variabel shoes : [NONE, SOME]; shoes.SOME : [Nike, Adidas]; Dette er f.eks. nyttigt ved strukturelle typer shoes : optional { brand : [Nike, Adidas]; size : [”40”, ”42”, ”44”]; }; Giver følgende variabler shoes : [NONE|SOME]; shoes.SOME.brand : [Nike|Adidas]; shoes.SOME.size : [”40”, ”42”, ”44”]; Model based programming

  43. F2: Kvantorer Hvis man definerer array variabler, kan man benytte kvantorer til at udtrykke egenskaber ved alle elementer i arrayet. variable ram_slot : array 4 of boolean; Exist-operatoren udtrykker, at mindst et udtryk er sandt i et heltalligt interval: ruleexist i in [1..3] : ( ram_slot[i] ); /* ram_slot[1] or ram_slot[2] or ram_slot[3] */ Forall-udtrykker, at alle udtryk er sande: ruleforall i in [1..3] : ( ram_slot[i] ); /* ram_slot[1] and ram_slot[2] and ram_slot[3] */ Model based programming

  44. F2: Kvantorer Der findes også kvantorer på range variabler: variable ram_size : array 4 of[0..127]; Sum-operatoren beregner summen af alle elementer i et interval: rulesum i in [1..3] : (ram_size[i]) > ram_capacity; /* ram_size[1] + ram_size[2] + ram_size[3] > ram_capacity; */ Product-operatoren beregner produktet af alle elementer i et interval: ruleproduct i in [1..3] : (i + LIMIT) > 42; /* (1 + LIMIT) * (2 + LIMIT) * (3 + LIMIT) > 42 */ Model based programming

  45. F2: Kvantorer Kvantorer er kraftfulde. Her beskrives 8-queen problemet constant N : 8; variable public columns : array N of [0..N-1]; rule /* No queen can reach each other */ forall i in [0..N-2] : (forall j in [i+1 .. N-1] : /* On same row */ ((columns[i] <> columns[j]) and /* On diagonal NW - SE */ (i+columns[i]) <> (j+columns[j]) and /* On diagonal SW - NE */ (i+columns[j]) <> (j + columns[i]))); Model based programming

  46. Øvelse 2:Formalisering af regler Kursusprogram

  47. Ø2: Formalisering regler Udtryk følgende betingelser som PM regler: • A kræver B • A udelukker B • A medfører B • Ikke både A og B • B udelukker A • Enten A eller B • Enten A eller B, men ikke begge • Aldrig både A og B Antag fx, at A og B er boolske variabler. Model based programming

  48. Løsningsforslag, Ø2 • A kræver B • if a then b • a -> b • not a or b • A udelukker B • if a then not b • a -> not b • not a or not b • not (a and b) • A medfører B • Det samme som A kræver B • Ikke både A og B • not (a and b) • Det samme som A udelukker B ! Model based programming

  49. Løsningsforslag, Ø2 • B udelukker A • se A udelukker B, byt om på a og b • samme som A udelukker B ! • samme som ikke både A og B ! • Enten A eller B • a or b • Enten A eller B, men ikke begge • (a or b) and not (a and b) • (a or b) and (not a or not b) • not ( a <-> b) • a xor b • a <> b • Aldrig både A og B • samme som A udelukker B ! • samme som B udelukker A ! • samme som ikke både A og B ! Model based programming

  50. Forelæsning 3:PM Studio (2) Kursusprogram

More Related