Genicore AB En liten firma i Göteborg som gör stora datasystem Modellbaserad ansats Systemspråk - När modellen är systemet 1
Core Modellbaserad ansats i 3 delar Metodik Språk System Datateknik 3:e generationen 2
Core Kort introduktion till Core Cores modellspråk i relation till andra språk Mål med Core-språket och utformning Tillämpning 3
Modell av System Några definitioner System: En helhet bestående av samverkande delar Systemteori (vetenskapsteori): Läran om hur man analyserar och beskriver något som ett system Typer av system: Biologiska, Fysikaliska, Organisatoriska, Samhälls-, Pensions-, Dator- system 4
Språk och Modell Problemet Person Adresser Adress Person Modell av problemdomänen Domänspråk Matematica, MatLab - Matematik FEM verktyg - Mekaniska och fysikaliska modeller Core - Systemmodeller Abstrakt modell av en dator Högnivåspråk Fortran, COBOL, C, Pascal, ADA (Flödesdiagram) Simula, Smalltalk, C++, Java, Javascript (UML) Lisp, ML, XSLT, O'Haskel SQL, html, XML (datamodell) Modell av en processor Maskinspråk Assembler; Z80, x86, 6800, PowerPC, AMD29k, ARM, Intel Core 5
Högnivåspråk Problemet Högnivåspråk function integralsinxdivx_zero2infinity() {! var deltax = 0.1;! var x = deltax/2;! var result = 0;! var accuracy = 0.001;! do { var lastresult = result;!! result += Math.sin(x) / x * deltax;!! x += deltax;! } while (result - lastresult > accuracy);!! alert ("result is:" + result ); } Generell lösningsmetod sin (x) / x result is:1.851528522095052 5-60 min, approximativt svar i bästa fall 6
Domänspråk Problemet Javascript - Högnivåspråk function integralsinxdivx_zero2infinity() var deltax = 0.01; var x = deltax / 2; var result = 0; var accuracy = 0.00001; do { lastresult = result; result += sin(x) / x * deltax; x += deltax; } until (result - lastresult < accuracy) Matematica - Domänspråk www.wolframalpha.com Integral sin(x)/x dx [0, Infinity] alert ("result is:" + result ) result is:1.8519... 1.5708 5-60 min Approximativt svar 0,5 min Exakt svar och mer 7
Slutsatser Problemet Javascript - Högnivåspråk function integralsinxdivx_zero2infinity() var deltax = 0.01; var x = deltax / 2; var result = 0; var accuracy = 0.00001; do { lastresult = result; result += sin(x) / x * deltax; x += deltax; } until (result - lastresult < accuracy) Matematica - Domänspråk www.wolframalpha.com Integral sin(x) / x dx [0, Infinity] En programmerare är 10-100+ gånger produktivare om han inte programmerar Kvalitet i resultatet - Korrekt svar och mer alert ("result is:" + result ) 5-60 min Approximativt svar 0,5 min Exakt svar och mer 8
Domänspråk "Modellspråk" 10-100+ gånger produktivare Kvalité - Sannolikheten för fel minskar drastiskt Matematik, Mekanik, Fysik, Kemi - Domänspecifika språk 9
Problemdomän? Datorsystem är en lösning Exempelvis - Försörja och styra verksamheter med information - Hantera information om och styra tekniska system Vilken verksamhet? Beskriv vad den består av. (System: Helhet bestående av delar) Vilket tekniskt system? Beskriv vad det består av. (System: Helhet bestående av delar) Verksamhet / Tekniskt system Informationshantering Person Adress Adresser Person + = Datorsystem Verktyg 10
Komplexitet och Mental Zoom En dator kan man programmera till att göra vad som helst, den mänskliga hjärnan har dock vissa begränsningar. Medvetna och omedvetna begrepp 1 000 000+ Analysera 7 1 000 000 7 Resonera 1 000 000+ Systemspråk Beskrivningsverktyg Resulterande datorsystem Kognitiv förmåga 11
Corespråkets formella grunder En formalism för att beskriva helheter bestående av delar Objektorienterat - systemets delar med abstraktioner Deklarativt (funktionellt) språk - delarnas definitioner och beroenden, isolerade från sidoeffekter Universell grammatik - koppling till naturligt språk 12
Core språket Objektorienterat (Skandinaviska skolan) Klasser, attribut, relationer Generalisering/Specialisering (Arv) Polymorfism Funktionell (Deklarativ) All databearbetning och regler beskrivs med uttryck (expressions) Inga sekvenser Inga sidoeffekter Grafisk syntax, klasskarta Person Adress Adresser Person Verktygssyntax 13
Olika syntaxer för olika ändamål Parsbar syntax (S) class Person förnamn as text efternamn as text namn value förnamn + " " + efternamn adresser many Adress role person 'antal adresser' value # adresser stenungsundsadresser value adresser [**.stad = "Stenungsund"] end class class Adress gata as text postnummer as text stad as text person one Person role adresser end class 14 Beskrivande syntax En person har förnamn, efternamn, namn och antal adresser. En person kan ha adresser och stenungsundsadresser. Namn definieras som förnamn + " " + efternamn Antal adresser definieras som #adresser Stenungsundsadresser definieras som adresser där stad = "Stenungsund" Även RTF dokument, och XML
Datorsystem med Core Systemspråk - Systemmodell - Systemvyer - Integrationsvyer Vyer av information Core Arkitektur Systemvyer Verktyg - genererar GNU-C kod Kodbibliotek Information, mål, regler Teknologi Systemmodell Kodbibliotek Integrationsvyer Kodbibliotek Omvärld Teknologi 15
Core är beprövat Försvarets Materielverk, orderstock på 60 miljarder, omsätter 19 miljarder kronor/år och har 1200 användare Använder Core-system sedan år 2000 Integrerad verksamhet: Kundbeställning, projektplanering, resursplanering, ledning, leveransplaner, kundleveranser, leverantörer, inköp, internationell handel, inleveranser, fakturor, attester, redovisning Systemintegration med 8 andra system, 80 integrationspunkter 80% kostnadsbesparing över tid, 90% kortare ledtider 16
Andra Projekt Upphandling och e-faktura, dokumenthantering, attester, FMV Projekthantering och planering, FMV Logistik, Total Asset Visibility, FM Analysdatabas för farliga ämnen Produktkatalog reservdelar för jordbruksmaskiner Enkätsystem - för callcenter och internet Produktdatabas för medicinska laboratorier Uppdragsplanering och genomförande, Statens Provningsanstalt Uppföljning av miljöbefrämjande infrastrukturåtgärder, Vägverket 17
Core Metodik Analys av system Beskrivning av system Verksamheter som system System Modellspråk Domänspråk Systembeskrivning Mental Zoom Naturlig semantik Information, Licensiering & Partnerskap Tomas Jonsson <tomas@genicore.se> Datateknik Parallell distribuerad realtid programmeringsfri plattform 18