Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
TRITA-NA-D0103 • CID-109, KTH, Stockholm, Sweden 2001 Begreppsmodellering och Matematik Ambjörn Naeve Ambjörn Naeve Begreppsmodellering och Matematik Report number: TRITA-NA-D0103, CID-109 ISSN number: ISSN 1403-0721 Publication date: February 2001 E-mail of author: amb@nada.kth.se URL of author: http://www.nada.kth.se/~amb Reports can be ordered from: CID, Centre for User Oriented IT Design Nada, Dept. Computing Science KTH, Royal Institute of Technology S-100 44 Stockhom, Sweden telephone: + 46 8 790 91 00 fax: + 46 8 790 90 99 e-mail: cid@nada.kth.se URL: http://kmr.nada.kth.se INNEHÅLLSFÖRTECKNING 1 Begreppsmodellering i UML 1 1.1 Inledning 1 1.2 Syfte 2 1.3 Begreppsbildning 2 1.4 Att symbolisera begrepp 4 1.5 Objekt eller värde - en fråga om identitet 5 1.6 Typ och klass - två synonyma symboler för begrepp 5 1.7 Egenskaper och operationer för ett begrepp 5 1.8 Egenskapsvärden och meddelanden för en instans 6 1.9 Klassattribut 7 1.10 Typning av attribut och operationer 8 1.11 Objektorientering 9 1.12 Relationer mellan begrepp 10 1.12.1 1.12.2 1.12.3 1.12.4 Klassificering 10 Generalisering/Specialisering Association 13 Aggregation 14 11 1.13 Tre hierarkier och resten anarki 15 1.14 Att modellera aktiviteter 17 1.15 Några olika sätt att utvidga UML 19 1.15.1 1.15.2 1.15.3 1.15.4 Stereotyper 19 Villkor och begränsningar Namngivna värden 19 Noter 20 2 Matematikens struktur 2.1 2.2 2.3 2.4 2.5 21 Teorier och modeller 21 Ett enkelt formellt matematiskt system 23 Matematiken som ett formellt spel i en hypotetisk värld Att tillämpa en matematisk teori 24 Hur matematiken tillämpas på vetenskapen 24 3 Matematisk begreppsmodellering 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 19 23 27 Introduktion 27 Fördelar med en begreppskarta 27 Ett enkelt exempel 27 Lingvistiskt baserad matematisk begreppsbildning 28 Begreppet matematisk komposition 29 Metodiska riktlinjer vid matematisk begreppsmodellering Standardbeteckningar för matematiska talmängder 32 Exempel - begreppet reellt polynom i en variabel 33 31 3.8.1 Terminologiskt lexikon 33 3.8.2 Exempel på användningsområden för polynom 34 3.8.3 Begreppsmodell av reella polynom i en variabel 34 3.9 Några exempel på blandade begreppsmodeller 34 3.9.1 Konsten att skapa svårigheter i matematikundervisningen 35 3.9.2 En variabel som en låda med ett namn och ett innehåll 36 4 Referenser 38 1 1.1 Begreppsmodellering i UML Inledning Den här lilla skriften handlar om begreppsmodellering, vilket är en teknik för att beskriva egenskaper hos och relationer mellan olika begrepp inom ett givet problemområde. Den introducerar grunderna i ett begreppsmodelleringsspråk som kallas UML (Unified Modeling Language), vilket är ett bildspråk där man kan rita upp begreppen och deras relationer i olika typer av diagram1. Avsikten med detta är att synliggöra hur man tänker inom ett visst område, dvs vilka aspekter man tycker är viktigt att betona och vilka man anser att man kan utelämna. När man ger en verbal beskrivning av sina tankar, så klingar orden bort så fort som man har uttalat dem. När man däremot ritar upp en bild över begreppen och deras relationer så får man en bakgrund mot vilken man kan diskutera och upptäcka otydligheter och motsägelser i sina resonemang. Bilden stannar ju kvar hela tiden, vilket gör att när man diskuterar begreppen så syns det hela tiden hur man har tänkt på dem hittills. Detta underlättar vidareutveckling och förfining av begreppsmodellen såväl som kommunikation av densamma mellan olika individer och grupper. En viktig avsikt med begreppsmodellering är att uppnå konsensus (= samsyn) på vilka aspekter som är viktiga inom ett visst område, och vilka som kan utelämnas (= bortses ifrån) eftersom de är oväsentliga i sammanhanget. P [ ]A [P]A [ ]B kalibreringsprocess A [P]B B Fig. 1. Kalibreringsprocessen mellan två olika beskrivningar av samma sak. Fig. (1) illustrerar den kalibreringsprocess (= sammanjämkningsprocess) som uppstår när man har två olika beskrivningar [P]A respektive [P]B av samma område P framställda av individerna (eller grupperna) A respektive B. Begreppsmodellering av ett område handlar alltså om att beskriva hur vi tänker på området, och UML ger oss ett grafiskt språk för att rita upp dessa tankar. För en fördjupande beskrivning av UML se t.ex. [(18)]. 1. Se http://www.omg.org/uml 1 1.2 Syfte Syftet med att introducera begreppsmodellering i kursen “Intro till IT” är att ge dig som student ett verktyg för att beskriva din egen uppfattning om de matematiska begreppen och deras kopplingar till varandra och till andra ämnen. Det är väl känt att många studenter har svårigheter med detta, vilket antagligen har att göra med det sätt på vilket matematiken presenteras i skolan. Den traditionella matematikundervisningen ägnar väldigt mycket tid åt räkneträning och betydligt mindre tid åt att tydliggöra de bakomliggande begreppen. Naturligtvis måste man räkna, annars missar man poängen, men vad det handlar om är att försöka tydliggöra målet med räkningarna, i vilket sammanhang man räknar och varför man väljer ett visst sätt att räkna etc. Man skulle kunna definiera en matematiker som en person som tänker i en dag för att slippa räkna i en timme. Trots detta marknadsförs skolmatematiken i huvudsak som räkning. Ett mera önskvärt sätt att presentera matematiken skulle kunna genomsyras av mottot “Tänk först och räkna sedan!” Ju mer man har tänkt, desto mindre måste man nämligen räkna. Att förändra matematikundervisningen i denna riktning är ingen enkel uppgift, och det måste betonas att användning av begreppsmodellering innebär ett nytt pedagogiskt grepp i detta sammanhang. Förhoppningen är att genom att begreppsmodellera sin egen uppfattning av de matematiska begrepp som man möter kan man som student öka sin egen medvetenhet om de matematiska begreppens struktur, dvs om deras definitioner, egenskaper och relationer till varandra. Detta bör kunna hjälpa till att skapa en bättre överblick över det matematiska sammanhanget bakom räkningarna, samt bidra till en ökad förståelse för hur de matematiska begreppen tillämpas inom olika vetenskaper. 1.3 Begreppsbildning Begreppsbildning är en förutsättning för all form av mental aktivitet. Poängen med begreppsbildning är följande: Väl valda begrepp hjälper oss att bortse från det oväsentliga genom att skapa idealiserade strukturer som fokuserar på det väsentliga. Exempel på sådana begrepp är “punkt”, “linje”, “plan” och “cirkel” inom geometrin. De är idealiserade, i den meningen att de inte betecknar något som finns i verkligheten, men de uttrycker ett “extremt ideal” som gör att verkliga föremål kan rangordnas med avseende på hur väl de närmar sig detta ideal, dvs hur punktformiga, rätlinjiga, plana eller cirkulära de är i verkligheten. Dessa geometriska begrepp utgör de tidigaste kända historiska exemplen på matematiska idealiseringar. De uppfanns och började utforskas av grekerna på 600-talet före Kristus. Man kan faktiskt säga att detta innebar den abstrakta (= rena) matematikens födelse. Innan dess hade matematiken bestått uteslutande av erfarenhetsbaserade regler för praktiska tillämpningar inom t.ex. ekonomi (handel) och juridik (arvsskifte). Begreppsbildningsprocessen har diskuterats och problematiserats av de flesta stora filosofer genom historien alltsedan Platon på 300-talet före Kristus. Platon blev så imponerad av de idealiserade matematiska strukturerna att han betraktade dem som mera verkliga än den sinnliga verkligheten själv. Man talar alltsedan dess om Platons idévärld. 2 Det skulle föra för långt att här diskutera de mer subtila (filosofiska) aspekterna på begreppsbildning och begreppsmodellering. Vi nöjer oss i stället med en starkt förenklad beskrivning som i huvudsak bygger på framställningen i [(16)], dit läsaren hänvisas för en mer ingående diskussion av dessa frågor. Vi börjar med att definiera vad vi menar med ett begrepp: Definition 1: Ett begrepp är en representation av något som vi har upplevt eller kan föreställa oss, och som vi kan tillämpa på objekten (= föremålen = tingen) i vårt medvetande. Exempel på begrepp är t.ex. “stol” och “odödlig”. Vi behöver bilda begrepp för att kunna tänka och kommunicera med varandra. Utan begrepp skulle vi inte kunna bygga upp något språk och därför inte kunna utbyta information i mänsklig mening. De begrepp vi skapar inom ett visst område tjänar syftet att beskriva hur vi uppfattar området i fråga. Vi säger att vi bygger upp en begreppsmodell av området. Det är viktigt att betona att en begreppsmodell över ett område inte är en direkt beskrivning av området utan en beskrivning av hur vi väljer att uppfatta området - dvs vad vi tycker är väsentliga aspekter på området. Ett sätt att skapa ett begrepp är genom att ange konkreta exempel på begreppet. Det är så vi lär oss de flesta begrepp när vi är små. Någon pekar t.ex. på ett föremål och säger “bil”, pekar på ett nytt föremål och upprepar ordet “bil”, etc, och så småningom lär vi oss att förstå begreppet bakom ordet (= beteckningen). Så fort vi har förstått ett begrepp kan vi sedan använda det som ett filter på vår omvärld, och t.ex. dela in alla objekt i världen i två grupper: “bilar” respektive “icke-bilar”. En sådan indelning kan ett förskolebarn i princip klara av att utföra. Begreppet bil motsvaras alltså i detta fall av mängden av alla bilar. Definition 2: Mängden av objekt som tillhör ett begrepp kallas för begreppets extension. Definition 3: Att identifiera ett begrepp genom att iaktta likheter och särskiljande egenskaper hos en grupp av objekt kallas för att klassificera objekten. Ett begrepp kan även skapas på ett abstrakt sätt, genom att formulera en s.k. definition: Definition 4: Ett begrepps definition anger dess intention, dvs vilka egenskaper det vill uttrycka respektive avgränsa i förhållande till omgivningen. Definition 5: Vi säger att ett begrepp kan tillämpas på ett visst föremål (= objekt) om föremålet uppfyller begreppets intention, dvs villkoren i dess definition. Man skulle t.ex. kunna definiera begreppet “bil” på följande sätt: Definition 6: En bil är en låda som har minst 3 hjul, plats för minst en person, samt kan framföras under personlig kontroll längs en väg. Ett föremål kan alltså (i den införda begreppsmodellen) betraktas som en bil om det uppfyller villkoren i Definition (6). I detta exempel kan vi notera flera saker som är typiska för begrepp: 3 • Ett begrepp måste definieras med hjälp av andra begrepp. Här definieras begreppet bil med hjälp av begreppen “låda”, “hjul”, “person”, “framföras” “personlig kontroll” och “väg”. • Ett begrepp innehåller alltid förenklingar som lyfter fram vissa saker och utelämnar andra. Man säger att begreppen är idealiserade. Begreppsbildning är i själva verket nära kopplat till abstraktion (= bortseende). “The power of thinking is knowing what not to think about”. • I den värld som omger oss är gränserna ständigt flytande. Var går t.ex. gränserna mellan dag och natt? Om vi kallar dessa skymning och gryning får vi samma problem med att definiera gränsen mellan t.ex. dag och skymning. Detta problem är typiskt för all form av begreppsbildning. Så fort vi inför ett antal begrepp så lägger vi i själva verket ett skarpt rutnät över den mjukt varierande verkligheten. Det är detta som är själva avsikten - att ge oss ett mentalt koordinatsystem mot vilket vår uppfattning om verkligheten blir lättare att beskriva. Ett väl definierat begrepp ger alltså upphov till (någorlunda) skarpa gränser. Ju bättre definierat ett begrepp är, desto lättare blir det att gå igenom föremålen i omvärlden och avgöra om de uppfyller begreppets intention eller inte. • Definitionen av ett begrepp är alltid beroende av i vilket sammanhang begreppet ska användas. Det gäller hela tiden att bortse från det som är oväsentligt och fokusera på det väsentliga. Ett begrepp blir därför alltid kopplat till en grupp av personer och ett visst användningsområde (problemdomän). Om vi t.ex. betraktar begreppet “bil” så skulle det säkerligen definieras på olika sätt av t.ex. skattemyndigheterna respektive av ett biltillverkningsföretag. För skattemyndigheterna kanske det skulle räcka med att definiera en bil som en post i bilregistret, dvs ett registreringsnummer, en fabrikstyp, en årsmodell och en ägare, eftersom denna information kanske är allt som myndigheten är intresserad av för att kunna räkna ut hur ägaren ska beskattas för sitt bilinnehav. För ett biltillverkningsföretag är detta uppenbarligen en helt otillräcklig beskrivning av begreppet bil. I detta sammanhang blir andra egenskaper hos begreppet relevanta. 1.4 Att symbolisera begrepp Till ett begrepp hör enligt ovan dess intention (= definition) och dess extension, dvs de föremål som satisfierar begreppet (= uppfyller villkoren i begreppets definition). Till ett begrepp hör även ett antal symboler, som används för att beteckna begreppet. Den viktigaste symbolen för ett begrepp är dess namn. Symboler ger oss ett effektivt sätt att referera till olika begrepp. De är speciellt användbara när vi vill kommunicera begreppen utan att använda långa definitioner. Definition 7: Två symboler kallas synonyma om de betecknar samma begrepp. I en modell av ett affärssystem kan t.ex. symbolerna “kund” och “klient” vara synonymer för samma begrepp. Definition 8: Två begrepp kallas homonyma om de kan betecknas av samma symbol. För de flesta företag betecknar t.ex. symbolen “avslutat köp” två olika begrepp. För en säljare innebär ett avslutat köp en handskakning med meningsfulla nickar, medan det för administrationsavdelningen inte existerar något avslutat köp förrän ett köpekontrakt har undertecknats och 4 godkänts. Homonyma begrepp kan ställa till stora problem vid begreppsmodellering, eftersom en symbol i detta fall bara kan få mening genom det sammanhang i vilket symbolen används. 1.5 Objekt eller värde - en fråga om identitet Den verklighet vi upplever består av de begrepp som vi besitter och de föremål (= instanser = exempel) på vilka begreppen kan tillämpas. Man brukar inom datalogin skilja mellan föremål som har identitet (som t.ex. en bil) och föremål som inte har identitet (t.ex. ett heltal). Om man skapar en kopia av en bil, så blir den ändå en annan bil, men om man skapar en kopia av talet 7 så rör det sig ändå om samma tal. Definition 9: En instans med identitet kallas en objekt-instans (eller ett objekt) medan en instans utan identitet kallas en värde-instans (eller ett värde). Anledningen till att man inom datalogin betonar skillnaden mellan objekt och värden är att de måste behandlas på helt olika sätt i ett datorprogram. Ett objekt måste t.ex. alltid refereras till (pekas ut) - och får inte kopieras fritt, medan ett värde får kopieras utan inskränkning. 1.6 Typ och klass - två synonyma symboler för begrepp Definition 10: Det begrepp vars extension är en mängd av instanser - och vars intention beskriver deras gemensamma struktur - kallas inom datalogin för instansernas typ eller klass1. Symbolerna “begrepp” “typ” och “klass” är alltså synonyma, eftersom de alla används för att beteckna begrepp. Anledningen till att vi nämner dessa synonymer är att de är så vanligt förekommande i begreppsmodelleringssamanhang. Vi kommer dock här att hålla oss till det mest intuitiva och låta symbolen “begrepp” beteckna begreppet begrepp, vilket ligger helt i linje med språkets symboliska natur. 1.7 Egenskaper och operationer för ett begrepp När man beskriver ett begrepp så anger man vissa egenskaper som karaktäriserar de instanser som hör till begreppet. De statiska kännetecknen beskriver instansernas struktur och de dynamiska kännetecknen beskriver deras beteende. Till exempel kan vi välja att beskriva begreppet “penna” genom att säga att en penna kännetecknas av en viss färg och av att den går att skriva med. Definition 11: De statiska kännetecken som hör till ett begrepp kallas dess egenskaper (= attribut) och de dynamiska kännetecknen kallas dess operationer. 1. Om det rör sig om objekt-instanser kallas typen för objekttyp eller objektklass, och om det rör sig om värde-instanser kallas typen för värdetyp eller värdeklass. 5 I vår modell av begreppet penna har vi alltså valt följande beskrivning: Begreppsnamn: Penna, attribut: färg, operationer: skriv. Begreppet Penna har alltså egenskapen färg, medan varje instans av begreppet Penna har ett värde på denna egenskap (= en viss färg, t.ex. grön). Penna färg skriv Fig. 2. Begreppslåda med namn, attribut och operationer för begreppet Penna. Fig.(2) visar hur man kan representera ett begrepp i UML, som en låda med tre avdelningar som representerar begreppets namn (Penna), attribut (färg) respektive operationer (skriv). Det är tillåtet att utelämna attributen och/eller operationerna och representera begreppet med en låda som enbart anger begreppets namn och egenskaper, eller begreppets namn och operationer. Notera att begreppsnamn normalt inleds med stor bokstav. Penna Penna färg Penna skriv Fig. 3. Tre andra varanter av begreppsbox för begreppet Penna. 1.8 Egenskapsvärden och meddelanden för en instans En instans av begreppet Penna, dvs en viss penna, karaktäriseras alltså av att den har värden på attributen och av att operationerna kan tillämpas på den. En namngiven begreppsinstans kan ritas upp i UML på något av de sätt som visas i Fig. (4) (med eller utan sina attributvärden): enPenna:Penna färg = röd enPenna:Penna Fig. 4. Två olika sätt att i UML representera en instans av begreppet Penna. Denna instans har namnet enPenna och är en instans av typen (= begreppet) Penna. Analogt kan en icke namngiven instans av samma typ representeras i UML i enlighet med Fig. (5): :Penna färg = röd :Penna Fig. 5. Två olika sätt att representera en icke namngiven instans av begreppet Penna. 6 Den allmänna syntaxen för att ange en instans av en viss typ (= begrepp) är alltså instansNamn:BegreppsNamn En icke typad instans, dvs en instans av okänd typ kan beskrivas som i Fig. (6). instansNamn: Fig. 6. En namngiven instans av okänd typ. Att utföra operationen skriv på instansen enPenna representeras i UML på följande sätt: enPenna . skriv( ) Man säger att man skickar meddelandet skriv till pennan enPenna och den reagerar då genom att utföra den metod (= algoritm) som genomför (= implementerar) operationen. Anledningen till att man skriver en parantes bakom meddelandet är att man där kan skriva in eventuell information (= argument) som måste skickas med för att operationen ska kunna utföras. Vi har i vårt lilla exempel antagit att det inte behövs någon sådan information. Därför är parantesen tom. Operationerna som kan utföras på en instans brukar normalt inte ritas ut i “instanslådan”. Detta beror på att alla instanser av ett visst begrepp kan utföra precis samma operationer. Operationerna hör därför naturligen ihop med själva begreppet. Attributens värden däremot varierar med instanserna och innehåller därför information som hör ihop med varje enskild instans. Attributen kallas därför ofta för instansvariabler. 1.9 Klassattribut Ett begrepp kan även ha attribut vars värden inte varierar med instanserna. Sådana attribut kallas klassattribut (eller klassvariabler) i motsats till den ovan beskriva typen av attribut, som skulle kunna kallas instansattribut. Om vi t.ex. betraktar begreppet Telefon, så är det naturligt att betrakta egenskapen telefonNummer som ett instansattribut eftersom värdet på telefonNummer varierar med de olika instanserna. Om vi håller oss inom Sverige (dvs modellerar svenska telefoner), så har alla instanser samma landsNummer = 46. Värdet på landsNummer hör därför till själva klassen (= begreppet) Telefon. Det är därför ett klassattribut vilket representeras i UML genom understrykning. Man kan även representera ett klassattribut genom att sätta ett $-tecken före attributets namn, vilket är praktiskt i vissa sammanhang. Notera att värdet på ett klassattribut kan anges i begreppslådan, så som visas i Fig. (7), eftersom det ju är gemensamt för alla instanser av begreppet. :Telefon Telefon $landsNummer = 46 telefonNummer telefonNummer = 102477 Fig. 7. Instansattribut och klassattribut för begreppet Telefon. 7 1.10 Typning av attribut och operationer I en begreppslåda kan man även ange attributens typ, vilket görs på det sätt som visas i Fig. (8). Här har vi (för enkelhets skull) antagit att både landsNummer och telefonNummer är av typ Heltal. Telefon $landsNummer:Heltal = 46 telefonNummer:Heltal Fig. 8. Typade instans- och klassattribut för begreppet Telefon. Även operationer kan typas. För att kunna tillämpas på en instans behöver operationer i allmänhet oftast indata av någon typ och lämnar oftast ifrån sig (= returnerar) utdata av någon typ (i form av ett resultat). Operationens namn, typen av dess indata, och typen av dess utdata beskriver tillsammans operationens typ och kallas ofta för dess signatur. I UML kan man ange signaturen för en operation i begreppslådan enligt följande syntax: operationsnamn(IndataTyp):UtdataTyp Om vi antar att telefoner kan ringa, så har vi en operation ring som hör till begreppet Telefon. Låt oss anta att för att utföra en ring-operation i vår telefonmodell behöver man ge telefonen ett nummer (av typ Heltal), och låt oss anta att resultatet av ring-operationen är en signal (av typ Signal)1. Signaturen för ring-operationen blir då ring(Heltal):Signal, och begreppslådan för Telefon, med typade attribut och operationer, får utseendet i Fig. (9). Telefon $landsNummer:Heltal = 46 telefonNummer:Heltal ring(Heltal):Signal Fig. 9. Typade attribut och operationer för begreppet Telefon. Om en operation inte behöver några indata eller inte returnerar några utdata så anges detta genom typen Void. Ovan antog vi att operationen skriv kunde tillämpas på instansen enPenna utan att någon ytterligare information behövde tillföras. Om vi antar att skriv-operationen inte heller lämnar ifrån sig några utdata får den alltså signaturen skriv(Void):Void, och vi kan alltså ange typinformation om både attribut2 och operationer för begreppet Penna enligt Fig. (10). 1. Av skäl som vi inte ska gå in på här brukar man inte (datalogiskt sett) betrakta signalen som ett returvärde från ring-operationen utan snarare som en sidoeffekt av densamma. 2. Notera att färg är attributets namn och Färg är dess typ. 8 Penna färg:Färg skriv(Void):Void Fig. 10. Typade attribut och operationer för begreppet Penna. Vi kan även ange antalet attribut i begreppslådan. Antag t.ex. att en penna har plats för 4 olika färger som kan väljas genom att trycka på olika knappar på pennan. Då kan vi ange detta i begreppslådan, antingen genom att explicit skriva upp attributen som t.ex. färg1, färg2, färg3, färg4, eller genom att skriva färg[4] som i Fig. (11). Penna färg[4]:Färg skriv(Void):Void Fig. 11. Fyra färg-attribut för begreppet Penna. Om en penna kan vara av enfärgs-, tvåfärgs-, trefärgs- eller fyrfärgs-typ så kan vi ange detta som i Fig. (12). Penna färg[1..4]:Färg skriv(Void):Void Fig. 12. enPenna kan ha mellan en och fyra olika färger. 1.11 Objektorientering På 1970-talet skilde man noga mellan funktioner och datatyper. Man konstruerade datorprogram i form av stora funktioner genom vilka sedan man skickade data av olika slag. Funktionen tog reda på vilken typ av data som kom in, och behandlade sedan varje typ på sitt eget speciella sätt genom att skicka det vidare till en lämplig hjälpfunktion (= subrutin). Detta sätt att tänka gav upphov till program som var väldigt hårt kopplade till den specifika problemställningen. Ett annat sätt att tänka på ett problemområde är i termer av olika föremål som samverkar med varandra för att åstadkomma förändringar av olika slag. Dessa föremål kan enligt ovan betraktas som instanser av olika begrepp som beskriver deras respektive struktur. Vare sig instanserna är objekt eller värden så karaktäriseras de instanser som hör till samma begrepp av vissa gemensamma egenskaper och vissa gemensamma beteendemönster. Detta objektorienterade synsätt har under de senaste 20 åren fått en stark förankring inom datalogin. Det visar sig att datorprogram som är uppbyggda som en samling av samverkande objekt kan göras mycket mer flexibla och lättare att förändra och bygga ut i jämförelse med datorpro- 9 gram som är uppbyggda på det mer traditionella sättet, dvs som ett antal övergripande funktioner som utbyter data med varandra. I dagens föränderliga datorvärld med ständigt nya möjligheter och krav på samverkan mellan olika program är detta en oerhört viktig egenskap som har lett till att objektorientering har fått ett mycket stort genomslag inom programvaruindustrin. Att beskriva ett problemområde i termer av växelverkande objekt kallas att genomföra en objektorienterad analys (OOA) av problemet. Att designa en modell av objekten och deras växelverkan som är avsedd att köras på en dator kallas att genomföra en objektorienterad design (OOD) av lösningen, och att skriva programkod som genomför denna design i något programspråk kallas för att genomföra en objektorienterad implementation (OOI) av densamma. OOA beskrivar alltså vad som ska utföras, OOD beskriver hur det ska gå till och OOI utför det i något lämpligt programspråk. 1.12 Relationer mellan begrepp Vi har ovan beskrivit hur man kan fånga upp det som är gemensamt för ett antal olika instanser genom att bilda begrepp. Vi ska nu titta lite närmare på hur begreppen kan vara relaterade till varandra. 1.12.1 Klassificering Att identifiera begreppet (= typen = klassen) som förenar ett antal instanser kallas enligt Definition (3) för att klassificera instanserna. När vi beskriver ett begrepp med hjälp av ett substantiv använder vi oftast artikellös form (singularis) av substantivet för att beteckna själva begreppet (t.ex. Bil) medan vi använder obestämd eller bestämd form av substantivet (singularis eller pluralis) för att betecka instanser av begreppet (t.ex en bil, två bilar, bilen, bilarna). Vi har redan använt denna konvention ovan (tillsammans med konventionen att inleda namnet på ett begrepp med stor bokstav) när vi diskuterade begreppet Penna och instansen enPenna. Klassificering är en sorts relation mellan två begrepp - i detta fall en relation mellan begreppets instanser och dess typ (dvs begreppet i sig själv). När vi använder namnet klassificering för denna sorts relation så har vi beskrivit den på ett riktat sätt - från instanserna i riktning mot typen. Ett icke-riktat namn på klassificeringsrelationen är instans/typ relation. Denna relation är ett exempel på en s.k. beroenderelation (= dependency) i UML. Ett begrepps instanser är beroende av dess typ Beroenderelationer betecknas i allmänhet med en streckad pil som visas i Fig. (13). Här har vi givit denna typ av beroende namnet <<ärEn>> med hjälp av en s.k. stereotyp, vilket är ett sätt att införa nya förtydligande beskrivningar av begrepp och relationer i UML. Se kap. (1.15.1) för vidare diskussion av stereotyper. enBil: <<ärEn>> Bil Fig. 13. Klassificering som en stereotypad beroenderelation mellan instans och typ. 10 Beroendet mellan instansen enBil och typen Bil utläses alltså: enBil <<ärEn>> Bil, vilket språkligt sätt är en s.k. tautologi (påstående som alltid är sant). Avsikten är här att försöka modellera relationerna mellan begreppen på samma sätt som vi beskriver dem i ord. Mer om detta nedan. 1.12.2 Generalisering/Specialisering Klassificering innebär alltså att olika instanser samlas ihop under samma begrepp om de kan karaktäriseras av gemensamma egenskaper och ett gemensamt beteende. På liknande sätt kan man iaktta strukturella likheter hos olika begrepp. Låt oss t.ex. betrakta begreppen Bil, Båt och Flygplan, och anta att de kan karaktäriseras enligt Fig. (14). Bilar, båtar och flygplan har i denna beskrivning både förare och ägare, bilar har dessutom hjul, båtar har köl och flygplan har vingar.1 Bilar, båtar och flygplan kan dessutom navigera och åka. Låt oss anta att de navigerar på samma sätt (t.ex. genom att använda positioneringssystemet GPS) men att de åker på olika sätt (vilket är ett ganska rimligt antagande). Bil förare ägare hjul navigera åk Båt förare ägare köl navigera åk Flygplan förare ägare vingar navigera åk Fig. 14. Karaktäristiska egenskaper och beteenden hos tre olika begrepp. Vi kan då sammanföra den gemensamma strukturen hos de tre begreppen (= klasserna) Bil, Båt och Flygplan och bilda det generaliserade begreppet (= superklassen) Fordon, som karaktäriseras av de egenskaper och operationer som är gemensamma för begreppen Bil, Båt och Flygplan. Notationen för detta i UML framgår av Fig. (15). Triangeln som pekar på begreppet Fordon anger alltså att Fordon är ett generaliserat begrepp i förhållande till Bil, Båt och Flygplan eller - vilket är ett annat sätt att uttrycka samma sak - att begreppen Bil, Båt och Flygplan är specialiserade begrepp (= subklasser) i förhållande till begreppet Fordon. Man säger att de specialiserade begrepen ärver struktur från det generella begreppet. Vi ser hur detta sätt att representera begreppen skapar större tydlighet och ekonomi genom att vi slipper upprepa den gemensamma strukturen. Endast det som avviker (= är speciellt) behöver representeras på den speciella nivån. I de objektorienterade programmeringsspråken finns ett inbyggt stöd för denna arvsmekanism vilket underlättar programmeringsarbetet och minskar riskerna för tvetydigheter. Dessutom blir det lättare att lägga till nya specialiseringar - i vårt exempel nya typer av Fordon. Om vi t.ex. inför Motorcykel som en specialisering av Fordon så är ju egenskaperna förare och ägare samt beteendet navigera redan representerat på fordonsnivån. Om det är så att motorcyklar navigerar på ett annat sätt än fordon, så är det bara att upprepa denna operation i klassen Motorcykel. Detta kallas att överrida det generella beteendet i den specialiserade klassen. 1. Vi ska i nästa avsnitt se hur vi kan modellera dessa egenskaper som associationer med andra begrepp, men låt oss för ögonblicket välja att modellera dem som attribut. 11 Fordon förare ägare navigera Bil Båt Flygplan hjul åk köl åk vingar åk Fig. 15. Det generaliserade begreppet Fordon fångar upp den gemensamma strukturen. Den begreppsrelation som avbildas i Fig. (15) kallas alltså generalisering om man läser den från Bil, Båt och Flygplan i riktning mot Fordon och specialisering om man läser den åt det motsatta hållet. När man inte vill införa någon riktning i sin beskrivning så brukar man kalla relationen för gen/spec. Om vi inför namnet <<Sorts>> som en synonym för generalisering så kan vi koppla ihop klassificering och generalisering till en beskrivning som överensstämmer med hur vi talar om dessa begreppsrelationer i det vanliga språket: enBil <<ärEn>> Bil <<Sorts>> Fordon enBil <<ärEnSorts>> Fordon Denna beskrivning är avbildad i Fig. (16). Fordon <<ärEnSorts>> <<Sorts>> enBil: <<ärEn>> Bil Fig. 16. enBil <<ärEnSorts>> Fordon. Lägg märke till att namngivningen i Fig. (15) är sådan att vi kan läsa ihop det speciella och det generaliserade begreppet:BilFordon, BåtFordon och Flygplan(s)Fordon är korrekta uttryck även om de är omständiga. Detta är en avspegling av hur det vanliga språket fungerar. När man begreppsmodellerar är det bra att försöka namnge generaliserade begrepp så att man kan läsa ihop det specialiserade begreppsnamnet med namnet på det generaliserade begreppet. Detta ökar tydligheten och underlättar den mentala navigationen i modellen. Det överensstämmer dessutom med “arvsprincipen” att låta det specialiserade begreppet överta namnet på det generella med ett tillägg som beskriver själva specialiseringen. 12 1.12.3 Association I föregående avsnitt modellerade vi det förhållandet att ett fordon har en ägare genom att införa ägare som ett attribut i begreppet Fordon. Eftersom fordonsägare normalt är personer, vilka både har egna egenskaper och ett eget beteende är det bättre att i stället modellera förhållandet mellan olika fordon och deras ägare som en association mellan dessa begrepp. En association mellan två begrepp uttrycker det faktum att instanser av dessa begrepp är länkade (= kopplade) till varandra på något sätt. Låt oss anta att i vårt exempel äger t.ex. pelle enBåt medan anna äger enBil. Detta uttrycks genom en association mellan motsvarande begrepp, dvs mellan Fordon1 och Person, och representeras i UML med en heldragen linje mellan dessa begrepp, på det sätt som visas i Fig. (17). Fordon ägarskap 0..1 egendom <<ärEnSorts>> 1 ägare Person <<ärEn>> <<ärEn>> <<ärEnSorts>> enBåt: enBil: äger ägs av äger ägs av pelle: anna: Fig. 17. Ägarskap som en association mellan begreppen Fordon och Person. Associationen har fått namnet ägarskap och i dess ändar står rollnamnen ägare respektive egendom. Detta betyder att i denna association spelar en person rollen av ägare relativt ett fordon medan ett fordon spelar rollen av egendom relativt en person. Associationen exemplifieras av länken mellan pelle och enBåt samt länken mellan anna och enBil. Dessa länkar är alltså instanser av associationen ägarskap. Precis som ett begrepp uttrycker den gemensamma strukturen hos sina instanser så uttrycker en association den gemensamma strukturen hos sina länkar. En del av denna uppgift är att uttrycka hur många olika instanser som en given instans kan vara länkad till på den andra sidan. För detta ändamål använder sig associationen av multiplicitetssymboler. Siffran 1 bredvid begreppet Person innebär att varje instans av typ Fordon ägs av exakt en instans av typ Person, medan uttrycket 0..1 bredvid begreppet Fordon innebär att varje instans av typ Person äger 0 eller 1 instanser av typ Fordon. Låt oss anta att anna säljer sin bil till pelle. Då blir ju pelle länkad till två fordon medan anna inte blir länkad till något fordon alls. Pelles länkstruktur bryter därmed mot ägarskapsassociationens multiplicitet eftersom han inte är länkad till 0 eller 1 fordon som multiplicitetsangivelsen föreskriver. Om vi vill tillåta en sådan förändring inom ramen för vår modell så måste vi ändra multipliciteten för egendom från 0..1 till 0..2 i enlighet med Fig. (18). Multipliciteter kan anges explicit som en lista (t.ex 1, 3, 6), eller som intervall (t.ex. 0..17). Symbolen * (stjärna) betyder att multipliciteten är oinskränkt, dvs en instans på den andra sidan kan vara länkad till 0, 1 eller flera instanser på den stjärnmärkta sidan utan några begränsningar. 1. Associationen är ju gemensam för både Bil och Båt och ska därför uttryckas i det generaliserade begreppet Fordon. 13 ägarskap 0..2 egendom Fordon 1 ägare <<ärEnSorts>> Person <<ärEn>> <<ärEn>> <<ärEnSorts>> enBåt: äger ägs av pelle: enBil: anna: Fig. 18. Ägarskapets multiplicitet tillåter ägande av högst två fordon per person. 1.12.4 Aggregation Associationer brukar ibland beskrivas som “lösa förbindelser”. Ägarskapslänkarna ovan förändras t.ex. av att fordonen köps och säljs. Dessutom är det så att det som inträffar med en instans på den ena sidan av en länk inte behöver påverka instanserna på den andra sidan av länken. Om t.ex. en bil kör i diket händer det inte med nödvändighet något med dess ägare. Det finns dock en speciell form av association som innebär en fastare koppling mellan de länkade instanserna. Den kallas aggregation (eller helhet/del relation) och uttrycker det faktum att en instans består av delar som är andra instanser. Så består t.ex. en bil av (bl.a.) fyra hjul och en motor, medan ett hjul (liksom en motor) är en del av en bil. Om t.ex. bilen fattar eld så påverkas även hjulen och motorn av detta. Bilen bildar en helhet som omfattar sina delar (de 4 hjulen och motorn). En aggregation kan alltså betraktas som en association med ansvar (en ansvarsfull förbindelse). Helheten är ansvarig för sina delar. Händer det något med helheten så påverkas även delarna. En aggregation representeras i UML som en association (heldragna linjer) med en romb som utmärker helheten (= aggregatet) på det sätt som framgår av Fig. (19). Aggregationen utläses Bil <<helhet för>> Motor och Bil <<helhet för>> Hjul åt det ena hållet och Motor <<del av>> Bil respektive Hjul <<del av>> Bil åt det andra. :Bil Bil 1 1 :Motor 4 Hjul Motor :Hjul :Hjul :Hjul :Hjul :Hjul Fig. 19. En bil består av fyra hjul och en motor. En motor och 4 hjul är delar av en bil. 14 För att se hur vi modellerar aggregationer i språket kan vi införa beteckningen <<delAv>> för en aggregation med riktning från delarna mot helheten, så som visas i Fig. (20). Om vi dessutom låter den obestämda artikeln <<en>> beteckna “instantieringsavbildningen” (som går från ett begrepp till någon av dess instanser) så kan vi ur Fig. (20) utläsa följande relationer: :Motor <<ärEn>> Motor <<delAv>> Bil <<en>> :Bil Om vi nu namnger instanserna med obestämd artikel framför typen (i enlighet med vår tidigare införda konvention) så kan ovanstående relationer sammansättas till: enMotor: <<ärEnDelAv>> enBil: Detta motsvarar vårt sätt att beskriva aggregationer i det vanliga språket. :Bil <<ärEn>> <<en>> Bil 0..1 ↑ <<ärEnDelAvEn>> :Motor <<ärEn>> ↑ <<delAv>> 1 Motor Fig. 20. En motor är en del av en bil. Det är värt att notera att namngivningen vid aggregation fungerar så att delarnas namn alltid kan inledas med helheten: Hjul kan kallas BilHjul och Motor kan kallas BilMotor. Även denna namnkonvention används i det vanliga språket och är värd att eftersträva när man begreppsmodellerar, eftersom tydligheten ökar och det blir lättare att navigera mentalt i begreppsdiagrammet. 1.13 Tre hierarkier och resten anarki Relationerna mellan de fyra olika sorters begreppsrelationer som vi har infört ovan framgår av Fig. (21), som är ett exempel på ett s.k. metadiagram (= diagram om diagrammens struktur). Vi använder generalisering för att generalisera generalisering, klassificering och association till en allmän relation. Även här fungerar namngivningen så att vi kan säga Generalisering(s)Relation, Klassificering(s)Relation, Association(s)Relation och Aggregation(s)Relation. Relation Generalisering Association Klassificering Aggregation Fig. 21. De grundläggande begreppsrelationerna i UML. Notationen för de olika typerna av relationer är avbildade bredvid sina respektive begreppslådor. 15 Associationer bildar generella grafer utan några som helst restriktioner. Detta innebär att motsvarande länkstrukturer kan bilda cykler (= slutna kedjor), dvs det finns situationer där instansen a är länkad till instansen b, som är länkad till instansen c som i sin tur är länkad tillbaka till instansen a, vilket skulle kunna beskrivas som en “relationsanarki”. Cykliska (= cirkulära) beroenden är i allmänhet betydligt svårare att hantera datalogiskt än icke-cykliska sådana, som ju alltid tar slut efter ett ändligt antal steg. Det är därför skönt att veta att var och en av de tre andra typerna av relationer som beskrivs i Fig (21), dvs generalisering, klassificering och aggregation, aldrig kan bilda riktade cykler. Till exempel kan en bil betraktas som en sorts fordon och en amfibiebil kan betraktas som en sorts bil, men ett fordon kan aldrig betraktas som en sorts amfibiebil. Analogt är ett hjul en del av en bil och en navkapsel är en del av ett hjul, men en bil kan aldrig vara en del av en navkapsel. Man brukar säga att generalisering, klassificering och aggregation är hierarkiska relationer eftersom de var för sig bygger upp en hierarki av riktade beroenden. Detta uttrycks i Fig. (22), där RIG står för Riktad Icke-cyklisk Graf och betyder en graf som saknar riktade cykler. Hierarki 1 1 RIG Graf 1 {inga riktade cykler} Gen / Spec 1 Anarki Instans / Typ Helhet / Del Association Fig. 22. Tre sorters hierarki och resten anarki. Betrakta ett begrepp B i en viss begreppsmodell. De begrepp som är relaterade till B i modellen bildar en begreppsmässig omgivning till B. Eftersom tre av de begreppsrelationer vi har infört är hierarkiska, kan vi säga att i vår modell av begreppsrelationer finns det tre hierarkiska begreppsdimensioner och sex hierarkiska begreppsriktningar (två i varje begreppsdimension). Dessa kan användas för att bygga upp den hierarkiska delen av varje begreppsmässig omgivning till ett givet begrepp. det där det där Specialisering av Instans av det där Helhet för det här Del av det där Typ för Generalisering av det där det där Fig. 23. De sex hierarkiska begreppsriktningarna från det här begreppet till det där begreppet. 16 De sex hierarkiska begreppsriktningar som omger varje begrepp är grafiskt beskrivna och namngivna i Fig. (23). Observera att det inte behöver finnas begrepp i varje sådan riktning. Ritktningarna anger endast möjligheterna för hierarkiska begreppsbildningar i relation till ett givet begrepp. Relationerna i Fig. (23) kan uttryckas: det här är en specialisering av det där, det här är en generalisering av det där, det här är en del av det där, det här är en helhet för det där, det här är en instans av det där och det här är en typ för det där. Poängen med hierarkier är att de har en början och ett slut. Ett begreppsdiagram som utnyttjar ovanstående hierarkier är därför lättare att överblicka än den allmänna “associationsanarki” som uppstår när begreppen kan kopplas ihop med varandra hur som helst - som i en vanlig mind-map. 1.14 Att modellera aktiviteter Ett problemområde handlar ofta om någon typ av system som förändras över tiden. Att modellera ett sådant system innebär dels att namnge delarna i systemet samt beskriva deras egenskaper och relationer, dels att beskriva hur dessa delar växelverkar (= interagerar) med varandra över tiden. Den förstnämnda beskrivningen brukar kallas den statiska och den sistnämnda den dynamiska modellen av systemet. 1 Man kan säga att den statiska modelleringen handlar om att beskriva vad som förändras (= bitarna i pusslet) medan den dynamiska modellering handlar om att beskriva när de förändras. Den statiska systemmodellen är därför en logisk förutsättning för den dynamiska. Hittills har vi enbart diskuterat statisk begreppsmodellering i UML. Detta språk erbjuder även ett flertal olika sätt att uttrycka dynamiska aspekter av ett system. Vi ska här begränsa oss till att kortfattat beskriva s.k. aktivitetsdiagram, vilka är nära besläktade med de klassiska flödesdiagrammen (eng. workflow diagrams) som används för att beskriva tidsförlopp (= processer). Ett aktivitetsdiagram beskriver ett tidsförlopp i termer av ett antal aktiviteter som är kopplade i ett flöde. Precis som i ett flödesdiagram kan aktivitetsflödet förgrena sig åt olika håll och välja olika vägar genom diagrammet beroende på utfallet av olika tester. Aktivitetsflödet kan även dela upp sig i parallella flöden vilka pågår samtidigt. Detta uttrycks med hjälp av s.k. synkroniseringslinjer (eng. synchronization bars). Aktiviteter representeras av lådor med runda hörn, tester av snedställda rutor med skarpa hörn och synkroniseringslinjer av tjocka heldragna streck. Ett exempel på ett aktivitetsdiagram återges i Fig. (24), som beskriver en modell av hur vi kan använda oss av mentala modeller. Vi skapar ständigt förenklade representationer av fenomenen i vår omvärld i form av olika mentala modeller. Dessa modeller möjliggör grova (men effektiva) förutsägelser av hur de bakomliggande fenomenen kommer att uppföra sig. Låt oss t.ex. anta att jag ser en man komma gående mot mig på gatan. Min mentala modell av detta fenomen 1. Om vi modellerar på ett objektorienterat sätt så måste vi dessutom beskriva växelverkan mellan systemets olika delar i termer av operationer som ägs av (= hör till) de olika objektens respektive typ, och som sätts igång genom att objekten tar emot meddelanden av varandra. 17 leder mig till en mängd olika förväntningar, som t.ex. att mannen kommer att passera på min högra sida. Samtidigt som jag registrerar mannens rörelse via mina sinnesintryck, kontrollerar jag mina modellförväntningar. Så länge som han rör sig i enlighet med förväntningarna kan denna process iterera (= loopa) i bakgrunden av mitt medvetande. Om jag däremot upplever en skillnad (= diff) mellan mina sinnesintryck och mina modellförväntningar så tvingas jag öka uppmärksamheten och utföra kontrollen i förgrunden av mitt medvetande. Om det nu visar sig att det var “falsk alarm”, så kan jag minska uppmärksamheten igen och låta processen återgå till bakgrunden. Om skillnaden däremot överlevde den medvetna kontrollen så måste jag förändra min modell av mannens rörelse för att t.ex. kunna anpassa min egen rörelse så att vi inte kommer att kollidera med varandra. När mina sinnesintryck återigen överensstämmer med mina modellförväntningar kan jag låta processen återgå till min mentala bakgrund, där den inte kräver så mycket uppmärksamhet (= bandbredd) av mitt medvetande. Bakgrund Förgrund förändra modellen ja minska uppmärksamheten kontrollera modellförväntningarna registrera sinnesintrycken nej diff ja nej registrera sinnesintrycken diff kontrollera modellförväntningarna öka uppmärksamheten Fig. 24. Ett aktivitetsdiagram som modellerar ett sätt att använda mentala modeller. Ett aktivitetsdiagram uttrycker de nödvändiga sekvensieringsvillkoren mellan de olika delarna (= aktiviteterna) i en process. Aktivitetsdiagram ger därför tillfälle att upptäcka möjligheter att utföra olika aktiviteter parallellt (= samtidigt) med varandra. De har därför blivit populära vid modellering av affärsprocesser, som traditionellt ofta utförs på ett onödigt sekvensiellt sätt. Att parallellisera delar av en affärsprocess innebär en möjlighet att förkorta exekveringstiden och därigenom öka effektiviteten hos processen. 18 1.15 Några olika sätt att utvidga UML UML är ett standardspråk för begreppsmodellering som har vuxit fram ur ett antal olika modelleringsmetoder för utveckling av datorprogram. Det är emellertid inte möjligt för ett slutet språk att vara tillräckligt nyanserat för att kunna uttrycka alla tänkbara modellstrukturer inom alla tänkbara begreppsområden av idag och inom en oöverblickbar framtid. På grund av detta är UML designat som ett öppet språk, med möjlighet för användaren att utvidga det på ett kontrollerat sätt. De utvidgningsmekanisner som tillhandahålles i UML innefattar • Stereotyper. • Begränsningar (eng. constraints). • Namngivna värden (eng. tagged values). Dessutom kan man förse varje UML-element med kommentarer i form av noter (eng. notes). 1.15.1 Stereotyper En stereotyp är en modifikation av ett existerande modellelement i UML som man själv kan införa. Vi har t.ex. använt stereotyper i Kap. (1.12.1), där vi införde klassificering som en stereotypad beroenderelation (med namnet <<ärEn>>) mellan en instans och dess typ. En stereotyp anges genom att sätta dess namn innanför dubbelhakar (guillemets) som t.ex. <<ärEn>>. Stereotyper utvidgar vokabulären i UML och gör det möjligt att konstruera nya typer av byggstenar som är skräddarsydda för ett visst problem. När man stereotypar ett element, som t.ex. en klass eller en relation, så skapar man i själva verket en ny typ av element. Detta element kan ha sina egna speciella egenskaper, eftersom varje stereotyp kan tillhandahålla sina egna namngivna värden. Det nya elementet kan även ha sin egen speciella semantik (= mening), eftersom varje stereotyp kan tillhandahålla sina egna begränsningar. Slutligen kan det nya elementet även ha sin egen speciella notation, eftersom varje stereotyp kan tillhandahålla sin egen ikon. 1.15.2 Villkor och begränsningar I Fig. (22) finns en klammerförsedd text: {inga riktade cykler}, vilket betyder att varje instans av typ RIG saknar riktade cykler. Detta är ett exempel på hur man kan uttrycka en s.k. begränsning eller inskränkning (eng. constraint) i UML. En begränsning gäller för alla instanser av det begrepp intill vilket begränsningen förekommer. En begränsning utvidgar semantiken hos ett UML element och möjliggör tillägg av nya regler såväl som modifikation av existerande sådana. 1.15.3 Namngivna värden Ett namngivet värde (eng. tagged value) utvidgar egenskaperna hos ett UML element och tillåter oss att tillföra ny information vid specifikationen av elementet. Ett namngivet värde är inte detsamma som ett (instans)attribut, ty dess värde gäller för elementet självt och inte för dess instanser. Ett namngivet värde kan därför närmast liknas vid ett klassattribut. I sin enklaste form 19 uttrycks ett namngivet värde som en textsträng {namn = värde} innesluten i måsvingeparanteser som placeras i närheten av namnet på det element som det tillhör. Strängen innehåller ett namn, en separator (symbolen =) och ett värde på namnet. En av de vanligaste användningarna av namngivna värden i programvarumodellering är för att ange egenskaper som är relevanta för generering, konfigurering och versionshantering av programkod. 1.15.4 Noter En not är en symbol för att uttrycka begränsningar eller kommentarer som tillhör ett element eller en samling element [se Fig. (25)]. En not som uttrycker en kommentar har ingen semantisk effekt på (dvs förändrar inte meningen av) den modell till vilken den hör. Inom mjukvarumodellering används kommentarsnoter ofta för att specificera saker som systemkrav, observationer, granskningar och förklaringar. En not kan innehålla en godtycklig kombination av text och grafik. Detta är en not som beskriver något element i ett UML diagram Fig. 25. En not i UML. 20 2 Matematikens struktur 2.1 Teorier och modeller Vi har i Kapitel (1.3) ovan beskrivit hur grekerna på 600-talet f.Kr. införde idealiserade begrepp som punkt, linje och plan i matematiken, vilken innan dess hade varit uppbyggd av ett antal erfarenhetsbaserade regler och metoder. Grekerna inledde på detta sätt den utveckling från det konkreta i riktning mot det abstrakta (teoretiska), som har karaktäriserat matematiken ända sedan dess. Idag formuleras de matematiska teorierna på ett mycket allmänt (= generellt = abstrakt) sätt. Man talar inte om vad ett matematiskt begrepp egentligen är för något utan begreppet definieras enbart genom att man beskriver dess egenskaper och/eller hur det uppför sig i förhållande till andra begrepp. Följande beskrivning av matematisk teoribildning är hämtad från kursboken i kursen Matematik I.1 Vid framställningen av teoretiska ting brukar man kräva att varje begrepp man handskas med på något sätt definieras utifrån “enklare” begrepp. Ett tungt skäl härför är att man vill undvika varje form av missförstånd om begreppets innebörd. Det säger sig dock självt att man förr eller senare måste utgå från några “enklaste” begrepp. Det enda som kan anges begräffande dessa är deras egenskaper - inte vad de “egentligen” är för någonting. Beskrivningen av dessa egenskaper kallas postulat eller axiom. Valet av “enklaste” begrepp och dessas axiom är egentligen mera en konventionsfråga än något som är “av naturen givet”. Man låter gärna begreppen anknyta till något, i sinnevärlden eller den fysikaliska verkligheten, som man allmänt anser sig ha grepp om intuitivt, och ser till att postulaten från den synpunkten ter sig odiskutabla.2 Angående uppsättningen av postulat kräver man vidare att den är fullständig, vilket betyder att man senare inte kommer att använda sig av några andra egenskaper hos begreppen än de som är omnämnda i postulat och definitioner eller är logiska konsekvenser av dessa. Viktigt är också att postulaten är motsägelsefria, dvs att man inte ur dem kan härleda två påståenden som strider mot varandra. Att bevisa motsägelsefriheten med enbart logiska metoder är i allmänhet ogörligt. Man får dock en viss garanti för att den föreligger om man knutit postulaten till något i sinnevärlden el dyl - man har då en modell för vilken postulaten “gäller”, varför dessa inte bör kunna motsäga varandra. Ofta nöjer man sig med att visa en “relativ motsägelsefrihet”, nämligen att det axiomsystem man har är motsägelsefritt om något annat, “enklare” eller “allmänt vedertaget” axiomsystem är det. Begrepp som inte finns i postulaten måste definieras med hjälp av grundbegreppen. De logiska resonemang man gör när man härleder egenskaper på detta sätt kallas en stringent bevisföring. Alltsammans bildar en matematisk teori. En tanke bakom denna uppläggning är att man får teorier som uppfyller högt ställda krav på objektivitet slutsatserna som dras blir desamma vem som än gör dem, förutsatt att man inte gör något logiskt fel. En matematisk teori består alltså av definitioner och två olika typer av påståenden, axiom (= postulat) och teorem (= satser). Axiomen utgör fundamentet för teorin och teoremen kan bevisas logiskt med utgångspunkt från dessa. En begreppsmodell som uttrycker strukturen hos en matematisk teori i enlighet med denna beskrivning visas i Fig. (26). 1. Petermann: Analytiska Metoder I, sid 64. 2. Alldeles nödvändigt är detta dock inte - i prinicip kan man välja begrepp som inte knyts till någonting speciellt och välja postulat efter gottfinnande. Det blir då närmast fråga om ett abstrakt spel efter vissa regler (postulaten) vars eventuella “användbarhet” till annat är av underordnad betydelse. 21 Matematisk Teori uppfyller gäller för * Modell 2..* * Definition Påstående {härlett påstående} {grundläggande påstående} Teorem Axiom 1 <<synonym>> 1..* Postulat Bevis {logiskt resonemang som grundar sig på axiomen} Fig. 26. Begreppsmodell för begreppet Matematisk Teori. Låt oss t.ex. betrakta en abstrakt framställning av den geometriska teorin om punkter och linjer i planet. Vad som egentligen menas med en punkt eller en linje definieras inte. Man har naturligtvis en intuitiv föreställning om detta, men man är noga med att inte låta denna ingå i definitionen. Vad man istället gör är att ställa upp ett antal spelregler för hur punkter och linjer uppför sig i förhållande till varandra. Några av dessa axiom är t.ex. (1): Det existerar 3 punkter som inte ligger på samma linje. (2): Två punkter ligger på exakt en linje. (3): Två linjer ligger på exakt en punkt1. Med utgångspunkt från dessa grundläggande påståenden försöker man sedan resonera sig fram till nya påståenden (teorem) som är logiska konsekvenser av dessa utgångspunkter. Resonemangen genomförs med hjälp av s.k. logiska slutledningsregler, som beskriver på vilka sätt det är tillåtet att resonera. Sådana regler formulerades första gången av Aristoteles på 300-talet före Kristus, och hans modell för tillåtna resonemang brukar kallas aristotelisk logik. Två exempel på resonemangsregler ur den aristoteliska logiken är: R1: Varje påstående P är antingen sant eller falskt2. R2: Om vi vet att (P sant) och om vi vet att (P sant medför Q sant) så är även (Q sant)3. 1. Den geometriska teori där detta axiom ingår kallas projektiv geometri. Inom den projektiva geometrin skär alla linjer varandra och två s.k. parallella linjer säges skära varandra i en s.k. oändlighetspunkt, vilket är en typ av punkt som saknar motsvarighet inom den klassiska (s.k. euklidiska) geometrin. Den projektiva geometrin började utvecklats på 1400-talet och hade sitt ursprung i studiet av hur man skapar ett korrekt perspektiv i en målning. 2. Denna resonemangsregel brukar kallas “lagen om det uteslutna tredje”. Med detta menar man att det inte finns något tredje alternativ. Med utgångspunkt från denna regel blir det tillåtet att genomföra s.k. motsägelsebevis. Om man vill visa att påståendet A är sant, så kan man anta att A är falskt och försöka resonera sig fram till en motsägelse. Lyckas man med detta kan man dra slutsatsen att eftersom A uppenbarligen inte kan vara falskt, så måste A vara sant. Det är värt att påpeka att lagen om det utslutna tredje inte accepteras som giltig av alla matematiker, t.ex.inte av dem som sysslar med s.k. konstruktiv matematik. 3. Denna resonemangsregel benämnes modus ponens, vilket är dess latinska namn. 22 Påståendet (P sant medför Q sant) utläses även (om P så Q) eller (P implicerar Q). Detta påstående brukar i matematiken betecknas med hjälp av en s.k. implikationspil: (P ⇒ Q). 2.2 Ett enkelt formellt matematiskt system Det geometriska axiomsystemet ovan måste kompletteras med flera andra axiom innan det fullständigt kan uttrycka grunderna i den projektiva geometrin. För att förstå hur ett axiomatiskt system fungerar ska vi ta en titt på ett minimalistiskt formellt system som endast innehåller två symboler, ett axiom och fyra logiska slutledningsregler. Odefinierade symboler: A, B. Axiom: A. Odefinierad regelsymbol: ⇒ (utläses: “får omvandlas till”). Definition: Ett ord är en ändlig kombination av A:n och B:n, t.ex. ABABAABBAA. Logik: För varje par av ord X, Y gäller följande omvandlingsregler (= regler för tillåtna resonemang = bevisregler): R1: XA ⇒ XAB R2: X ⇒ XX R3: XAAAY ⇒ XBY R4: XBBY ⇒ XY Vi har nu allt som behövs för att bedriva matematik inom detta formella matematiska system. Det kan t.ex. vara instruktivt att fundera lite på följande Övning: Undersök om B är ett teorem i den matematiska teori som utgår från A, dvs undersök om B kan härledas ur A med hjälp av de logiska slutledningsreglerna. (Ledning: undersök hur antalet A:n ändras när reglerna tillämpas.) 2.3 Matematiken som ett formellt spel i en hypotetisk värld Det formella system som presenterades ovan innehåller essensen i all matematisk teoribildning. Matematiken kan med detta synsätt betraktas som ett formellt spel. Det matematiska spelet har en uppsättning bevisregler (= logik = grammatik) som anger tillåtna drag och ett antal startsentenser (= axiom) som anger utgångspunkterna. Spelet går sedan ut på att konstruera så många tillåtna sentenser (= teorem) som möjligt. Härvidlag låter man sig framförallt styras av en inre matematisk estetik, vilken innebär starka krav på renodling av struktur och naturliga kopplingar mellan olika begrepp. Detta har visat sig leda till matematiska teorier som varit förvånansvärt 23 effektiva när de tillämpats på olika problem med anknytning till den fysikaliska verligheten.1 Det är viktigt att betona att matematiken inte är någon vetenskap. Vetenskapen försöker beskriva verkligheten så som vi upplever den, medan matematiken beskriver en hypotetisk värld där alla påståenden är betingade (= inleds med “om”). Kom ihåg att (P ⇒ Q) betyder “om P är sant så är även Q sant”. Detta säger ingenting om sanningshalten hos vare sig P eller Q utan ger endast en upplysning om relationen mellan de förhållanden under vilka de är sanna. Det är därför som Bertrand Russel beskrev matematiken som “den disciplin där vi inte vet vad vi talar om och inte heller huruvida det vi säger är sant eller inte”. Matematiska påståenden är alltid betingade av de axiomatiska utgångspunkterna. Med en språklig analogi skulle man kunna säga att matematiska påståenden alltid formuleras i konjunktiv form (Om P vore sant så bleve Q sant) medan vetenskapliga påståenden uttrycks i presens (P är sant). 2.4 Att tillämpa en matematisk teori Orsaken till att man vill befria sig från intuitionen när man beskriver de matematiska begreppen är att man vill försöka frilägga exakt hur begreppen logiskt beror av varandra. I våra intuitiva förställningar finns oftast ett antal dolda begrepp och sammanhang, och om man skulle ta med dem i definitionerna så skulle de logiskt relevanta strukturerna bli mindre tydliga. Man strävar alltså efter att synliggöra exakt vad det är man stödjer sig på när man genomför ett matematiskt resonemang. Poängen med detta är att de matematiska resonemangen därigenom blir giltiga och tillämpbara i ett stort antal olika konkreta situationer. Att använda abstrakt matematik på ett konkret problem brukar kallas att tillämpa matematiken. Detta innebär att man till sitt problem associerar en matematisk teori samt en modell som uppfyller axiomen i densamma. När man gjort detta kan man omedelbart sluta sig till att modellen även uppfyller teoremen i den matematiska teorin. Om teorin har ett stort antal teorem, så vet man alltså en massa saker om modellen genom att man redan har bevisat dem “en gång för alla” enbart med utgångspunkt från axiomen. 2.5 Hur matematiken tillämpas på vetenskapen Ända sedan grekerna införde den axiomatiska metodiken har matematiken kämpat en lång och hård historisk kamp för att befria sig från all underliggande mening (= innehåll = semantik). Den har därvid utvecklats till ett formellt spel av den sort som beskrivits ovan, vilket kännetecknas av en extremt renodlad struktur (= syntax) som i sig själv är meningslös2. En matematisk teori får mening först när den tillämpas på något problemområde. Varje modell som uppfyller de matematiska axiomen fyller den matematiska teorin med mening. Det är därför vi har ett så stort behov av konkreta exempel på tillämpningar av matematik. Utan dessa upplevs den formella matematiken med rätta som meningslös. Den frustration som man ofta 1. “On the Unreasonable Effectiveness of Mathematics in the Natural Sciences” är en berömd artikel på detta tema skriven av fysikern Eugene Wigner [(22)]. 2. Ett berömt försvarstal för den s.k. “rena” matematiken finns återgivet i [(9)]. 24 kan känna över detta faktum beror på att man förväntar sig en mening där denna omsorgsfullt har abstraherats bort. Figur (27), illustrerar hur matematiken tillämpas inom vetenskapen. Som beskrivits ovan består matematiken av en mängd villkorliga (= hypotetiska) påståenden. Vetenskapen använder matematikens logiska resonemangsförmåga (A ⇒ B) för att transformera ett antagande (A är sant) till en logisk slutsats (då måste även B vara sant). Vetenskap Experimentell Teoretisk ∗ Faktum A är sant ∗ <<ärEtt>> Antagande ∗ ∗ ↓ Matematik B överlever testet ∗ om A vore sant så bleve B sant ∗ ettTest ∗ då måste B vara sant ∗ Experiment ∗ Betingat Påstående ∗ <<ärEn>> 1 ∗ ∗ ↓ Logisk Slutsats ∗ ∗ Teori Vederläggning av antaganden genom vederläggning av deras logiska slutsatser Fig. 27. Samspelet mellan matematiken och vetenskapen. Varför vill då vetenskapen omvandla antaganden till logiska slutsatser? Orsaken till detta är att vetenskapen vill förvandla teoretiska antaganden till experimentella fakta, vilket den försöker göra genom att utsätta de logiska slutsatser som följer ur antagandena för falsifikationsförsök genom experiment1. Poängen är att de logiska slutsatserna (om de ska vara användbara) måste vara mycket lättare att testa experimentellt än de ursprungliga antaganden från vilka de har härletts med hjälp av logiska (= matematiska) metoder. På detta sätt sluter vetenskapen cirkeln och de antaganden, vars logiska slutsatser överlever de experimentella falsifikationsförsöken transformeras (gradvis) till vetenskapliga fakta. Den tjocka grå pilen i diagrammet representerar ett egendefinierat UML-element som vi kan kalla en trendpil. Den uttrycker en tendens - i detta fall tendensen att betrakta antagandet A som ett vetenskapligt faktum. Det är genom att överleva många olika falsifikationsförsök - av många olika logiska slutsatser dragna från A - som antagandet A till slut uppnår status som ett vetenskapligt faktum. 1. Eftersom vi bara kan mäta skillnader (och aldrig likheter) så kan vi aldrig experimentellt bevisa en fysikalisk “naturlag” (som formulerats som en matematisk likhet). Vi kan enbart förstärka hypotesen om dess giltighet genom att vi inte lyckades mäta upp några signifikanta skillnader från de teoretiska värden som lagen förskriver. 25 Fig. (28) visar en begreppsmodell som försöker beskriva hur naturlagar uppstår. Vi bildar begrepp i syfte att ge struktur åt de fenomen vi upplever. Våra begrepp leder till en teori, vilken enligt tidigare består av utsagor klassificerade i två grupper - axiom och teorem. Teorin leder i sin tur till hypoteser (= förväntningar) vilka kan testas genom experiment. Fenomen Begreppsbildning Förkastad ja Begrepp Naturlag falsifierbar? nej Hypotes Teori * Struktur Utsaga Försvagning Rum nej Förstärkning ja Tid Axiom ja Teorem återställbar? Resultat Erfarenhet Experimenterande Förväntan förväntan uppfylld? nej Fig. 28. Begreppsmodell över hur naturlagar uppstår. Vid genomförandet av ett experiment kan två olika saker inträffa. Antingen uppfylls förväntningarna vilket leder till en förstärkning av den underliggande hypotes som skulle testas, eller också uppfylls inte förväntningarna, vilket leder till en försvagning av motsvarande hypotes. Om hypotesen överlever tillräckligt många experiment så kanoniseras den till sist och uppnår status av naturlag. Om den däremot vederläggs av tillräckligt många (trovärdiga) experiment så måste den förkastas tillsammans med den teori som den byggde på. Detta leder till ny begreppsbildning, omformulering av teorin, nya förväntningar och nya experiment, etc. De erfarenheter som experimenterandet ger oss - kombinerade med de teorier som vi skapar med hjälp av våra begrepp - leder fram till en struktur på fenomenen som gör våra upplevelser av världen begripliga för oss. I diagrammet i Fig. (28) är denna struktur indelad i två olika typer: Rum(s)Struktur respektive Tid(s)Struktur. Klassificeringen av ett fenomen med avseende på rum eller tid har att göra med dess grad av återställbarhet. Om det (i princip) är möjligt att återställa effekten av upplevelsen (= “flytta tillbaka det som förändrades”) så förlägger vi fenomenet i rummet, dvs vi gör det till ett rumsligt fenomen. Om det däremot inte är möjligt att återställa fenoments effekter så förlägger vi det i tiden.1 Med modern IT-terminologi skulle vi kunna säga att rumsfenomenen har undo medan tidsfenomen saknar detta. 1. Detta sätt att beskriva skillnaderna mellan rum och tid går tillbaka till den franske matematikern och filosofen Henri Poincaré (1848-1912) och finns beskrivet i [(15)]. 26 3 3.1 Matematisk begreppsmodellering Introduktion Matematiken är ett exempel på ett hårt kalibrerat begreppsområde. Den största delen av en modern matematisk text utgörs av definitioner, vilket vittnar om att matematikerna lägger ner stor möda på att beskriva begreppens egenskaper och deras förhållande till varandra på ett så preciserat sätt som möjligt. 3.2 Fördelar med en begreppskarta Som vi berörde i Kapitel (1.1) så har en begreppskarta flera fördelar i jämförelse med en verbal presentation av motsvarande begreppsrelationer. Två av dessa förtjänar att särskilt framhållas i detta sammanhang För det första: En begreppskarta är att den bryter upp ordningen i den verbala framställningen av begreppsrelationerna. Den visar alla relationer på samma gång, till skillnad från en verbal framställning, som är tvungen att välja att beskriva dem i en viss ordning. En verbal framställning av en relation mellan två begrepp kan betraktas som en resa på kartan - en navigerad väg från det ena begreppet till det andra. En bakomliggande orsak till fördelen med en begreppskarta i förhållande till en verbal presentation är det faktum att vår förmåga att visuellt överblicka en begreppsrelation från olika håll är betydligt större än vår förmåga att verbalt byta riktning på relationen ifråga. Vi kan alltså lättare “visuellt integrera” informationen och med kartans hjälp skapa överblick och ge oss en helhetsbild av relationerna mellan begreppen. Det är ju precis därför som vi kallar det “överblick” och “helhetsbild”. För det andra: En begreppskarta skapar ett övergripande logiskt sammanhang mellan begreppen. Både begreppen (= noderna) och länkarna (= bågarna) på kartan kan sedan förses med olika typer av innehåll, varefter kartan kan navigeras och innehållet presenteras ur ett antal olika (konfigurerbara) aspekter (= filter). Genom att begreppsinnehållet presenteras separat från begreppsrelationerna blir det möjligt att ta del av innehållet utan att förlora överblicken över relationerna, dvs sammanhanget1. 3.3 Ett enkelt exempel Vi har redan sett exempel på matematisk begreppsmodellering, t.ex. begreppsmodellen av en matematisk teori i Fig. (26). Matematiken kan även delas in i olika ämnesområden, svarande mot olika typer av (= sorters) matematik. Fig. (29) visar fyra olika matematiska områden: Geometri, Algebra, Analys och Kombinatorik. De tre prickarna anger att uppdelningen inte är fullständig, dvs att det finns många andra typer av matematik som inte visas i diagrammet. Naturligtvis finns det heller inga “vattentäta skott” mellan de olika områdena, utan de överlap1. En prototyp till ett överblicksverktyg för navigation av begreppssammanhang och presentation av begreppsinnehåll som bygger på dessa principer är för närvarande under utveckling på CID. Den går under namnet Conzilla och finns närmare beskriven på http://cid.nada.kth.se/il. De underliggande principerna för begreppsnavigation finns beskrivna i [(13)]. 27 par med varandra på samma sätt som dag och natt överlappar i skymning. Ändå är det i många sammanhang poängfullt att genomföra en uppdelning på detta sätt. Fig. (29) visar även en uppdelning av geometrin i delområdena (= subtyperna) Algebraisk Geometri, Differential Geometri och Projektiv Geometri. Matematik ... Geometri ... Algebra Algebraisk Analys Differential Kombinatorik Projektiv Fig. 29. Matematik och Geometri indelade i några olika ämnesområden. 3.4 Lingvistiskt baserad matematisk begreppsbildning I sitt berömda Erlangerprogram från 1872 framlade den store geometrikern Felix Klein idén att betrakta en geometri som en samling påståenden om objekt som är invarianta (= förblir oförändrade) under en grupp av transformationer (se t.ex. [(12)]). Detta markerar början på det moderna betraktelsesätt som betraktar varje geometri som en sorts språk, med sin egen samling av verb (= transformationer) och substantiv (= invarianter). Vårt språk är intimt relaterat till våra metoder för begreppsbildning. Verben beskriver operationerna (förändringarna) som vi kan observera – eller föreställa oss – medan substantiven beskriver invarianterna, dvs de ”substanser” som överlever verbens operationer (transformationer). Adjektiven beskriver värdet av aspekter (egenskaper) hos substantiven – som t.ex. i satsen: ”den röda bilen stannade”, där adjektivet ”röd” representerar värdet av aspekten ”färg” hos just den omtalade instansen av substantivet ”bil”. I det moderna matematiska synsättet uppför sig alltså ett geometriskt system som ett språk. Det har sina verb, som uttrycker de tillåtna transformationerna (= rörelserna), och sina substantiv, som uttrycker dess invarianter, dvs de begrepp som överlever verbens rörelse-transformationer. Så utgör t.ex. begreppet ”kvadrat” ett substantiv i den vanliga euklidiska geometrin, eftersom transformationerna i denna geometri består av de vanliga (stela) rörelserna samt likformig förstoring och förminskning, och dessa förändringar förvandlar en kvadrat till en ny kvadrat – ”lämnar kvadrat-egenskapen invariant” som en matematiker skulle uttrycka saken. Begreppet kvadrat är således ett euklidiskt begrepp, eftersom det överlever att transformeras av de euklidiska verben. 28 I de geometriska skuggornas värld däremot – s.k. projektiv geometri – är inte begreppet kvadrat väldefinierat. I projektiv geometri är alla skuggbilder av en plan figur ekvivalenta, eftersom de överförs i varandra via projektion från en punkt mot ett plan – en tillåten rörelse-transformation i projektiv geometri1. Eftersom en kvadrat kan projiceras till en ”sned” fyrhörning, så överlever inte kvadraten de projektiva rörelserna, och är därför - i Kleins mening – inget projektivt substantiv. Det relevanta (= invarianta) begreppet är i stället “fyrhörning”. Geometri Fyrhörning Projektiv Parallellogram Affin Rektangel Euklidisk Kvadrat Fig. 30. Invarianta begrepp (= substantiv) i några olika typer av geometri. Den s.k. affina geometrin är en specialisering av den projektiva geometrin (och en generalisering av den euklidiska geometrin) som karaktäriseras av att den bevarar parallellitet (se [(12)]). De affina verben avbildar alltså parallella linjer på parallella linjer, medan vinklar i allmänhet inte bevaras. Begreppen “kvadrat” och “rektangel” saknar därför mening i den affina geometrin, där det relevanta begreppet i stället blir “parallellogram”, eftersom varje parallellogram förblir en parallellogram när den undergår en affin rörelsetransformation. Dessa förhållanden illustreras i Figur (30). 3.5 Begreppet matematisk komposition En matematisk komposition (= sammansättning) innebär ett sätt att sätta ihop saker genom att kombinera dem. Exempel på kompositioner är addition, subtraktion, multiplikation och division, vilka samtliga sätter ihop två tal och gör ett nytt tal av dem. Ett sätt att betrakta en matematisk komposition är som en sorts maskin där vi matar in ett antal matematiska instanser (input) som sedan omvandlas (= transformeras) på något sätt och matas ut ur maskinen2 i form av output. De saker som stoppas in i kompositionsmaskinen kallas operander och det som kommer ut ur den kallas resultat. När man talar om en matematisk komposition brukar man dessutom kräva att både operanderna och resultatet ska vara av samma matematiska typ (t.ex. heltal eller rationella tal). 1. En översiktlig beskrivning av projektiv geometri finns i [(2)]. En fördjupad framställning av ämnet ges t.ex. i [(3)]. 2. En sådan typ av maskin kallas i matematiken allmänt för en funktion. 29 En viktig egenskap hos en komposition är dess s.k. aritet, vilket står för antalet operander i kompositionen. En komposition med aritet 1 (dvs med en operand) kallas en unär komposition, medan en komposition med aritet 2 kallas en binär komposition. Kompositioner med högre aritet än 1 eller 2 är ovanliga i matematiken. De fyra räknesätten, addition, subtraktion, multiplikation och division är exempel på binära kompositioner. Att ta minus av ett tal är däremot ett exempel på en unär komposition. Minus av ett tal a brukar kallas för talets additiva invers (betecknad -a) och står för det tal som adderat till det ursprungliga talet ger talet 0, som är det additiva enhetstalet, dvs a + (-a) = 0. Operationen att “ta minus” är alltså synonym med additiv invertering. Ett annat exempel på en unär komposition är multiplikativ invertering. Den multiplikativa inversen till ett tal a brukar kallas “ettgenom-a” (betecknad 1/a) och står för det tal som multiplicerat med a ger talet 1, som är den multiplikativa enheten, dvs a * (1/a) = 1. En välkänd svårighet i skolmatematiken är att skilja mellan subtraktion och additiv invertering. Anledningen till den begreppsförvirring som råder på detta område är att symbolen minus (-) används i två helt skilda betydelser, nämligen dels för att beteckna den unära kompositionen additiv invertering (-a), dels för att beteckna den binära kompositionen subtraktion (a-b). Additiv invertering och subtraktion är alltså homonyma begrepp eftersom de betecknas av samma symbol. [se Kapitel (1.4)]. En begreppskarta över olika typer av matematiska kompositioner som sammantattar ovanstående diskussion visas i Fig. (31). Komposition operand[1..*]:Typ resultat:Typ ... {en operand} {två operander} Unär Binär <<ärEn>> <<ärEn>> <<ärEn>> {symbol = *} {symbol = +} Invertering: operand=operand resultat=invers {symbol = -} Additiv Addition: Multiplikation: operand1=term1 operand2=term2 resultat=summa operand1=faktor1 operand2=faktor2 resultat=produkt {symbol = 1/} Multiplikativ {symbol = -} Subtraktion: <<synonym>> Minus {symbol = /} Division: <<synonym>> EttGenom operand1=term1 operand2=term2 resultat=skillnad addition av additiva inversen till operand nr 2: a-b = a+(-b) operand1=täljare operand2=nämnare resultat=kvot multiplikation med multiplikativa inversen till operand nr 2: a/b = a*(1/b) Fig. 31. Begreppsmodell av några vanliga typer av matematiska kompositioner. 30 Notera: I Fig. (31) har vi använt namngivna värden för att uttrycka symbolerna för de olika aritmetiska räknesätten. Vi hade lika gärna kunnat använda oss av stereotyper på det sätt som visas i Fig. (32). << - >> Additiv invertering << 1/ >> Multiplikativ invertering << + >> << * >> Addition Multiplikation << - >> << / >> Subtraktion Division Fig. 32. Aritmetiska symboler som stereotyper. Det är värt att notera ett par saker i anslutning till Fig. (31). I begreppslådan för Komposition framgår att varje komposition har en eller flera operander av samma typ, samt att operandernas typ måste överensstämma med resultatets typ. Vidare är såväl invertering som addition, subtraktion, multiplikation och division beskrivna som instanser av typ unär- respektive binärkomposition. Värdet på attributet operand är term för instanserna Addition: och Subtraktion: , faktor för instansen Multiplikation:. och täljare respektive nämnare för instansen Division:.Vad gäller instansen Invertering: så har attributet operand i allmänhet inget speciellt namn (= värde). Operanden i en inverteringsoperation kallas fortfarande för “operand” medan resultatet av en inverteringsoperation kallas invers. Attributet operand kan alltså i detta fall sägas ha sig själv som värde, vilket förklarar utseendet av begreppslådan för Invertering:. Detta reflekterar helt enkelt språkbruket inom området, vilket ju är avsikten med en begreppsmodell. 3.6 Metodiska riktlinjer vid matematisk begreppsmodellering Att begreppsmodellera ett problemområde kan göras på många olika sätt med betoning på olika aspekter. Modelleringen kan dessutom utföras med olika upplösning (= finkornighet). Poängen med en begreppsmodell är ju att fokusera på vissa strukturer inom området och utelämna andra. Det är därför svårt att ange en generell metodik som passar för alla typer av matematisk begreppsmodellering. De metodiska riktlinjer som anges nedan kan dock vara bra att ha som utgångspunkt. • Upprätta ett terminologiskt lexikon över de matematiska begrepp du vill modellera. Beskriv begreppens definition (= intention) så kortfattat som möjligt (ett par meningar) och ange exempel (instanser) på varje begrepp. • För varje matematiskt begrepp B som du har noterat, skriv ner olika egenskaper (= attribut) hos begreppet B. Gör en kort beskrivning av vad varje egenskap innebär. Skilj noga mellan instansattribut (vars värden varierar med olika instanser av begreppet B) och klassattribut (vars värden är gemensamma för alla instanser av begreppet B). Räkneregler och satser för begreppet B är exempel på klassattribut för B eftersom de gäller för alla instanser av B. • Finns det några speciella beteckningar (= matematisk notation) för begreppet B? Notera i så fall dessa. 31 • Anteckna eventuella synonymer (= andra namn) för begreppet B. • Skriv ner de operationer som kan utföras på instanser av begreppet B. Tänk på att många operationer omfattar flera begrepp. Sådana operationer hör därför inte naturligt ihop med något enstaka av dessa begrepp. • Består begreppet B av några delar som själva är matematiska begrepp? Beskriv i sådana fall delarnas egenskaper och vilka operationer som kan utföras på dessa. • Kan begreppet B generaliseras eller specialiseras till något annat matematiskt begrepp? • Är begreppet B associerat med något annat matematiskt begrepp? I så fall, har associationen något naturligt namn? Finns det några naturliga rollnamn för de olika sidorna av associationen? Hur många instanser på den andra sidan kan en instans på den ena sidan vara länkad till? Uttryck eventuella begränsningar genom att ange multipliciteter. • Skriv ner olika användningsområden för begreppet B, dvs olika sammanhang i vilka begreppet B kan förekomma, såväl inom andra områden av matematiken (än det som du för närvarande modellerar) som inom tillämpningar av olika slag. Uttryck kopplingen mellan B och varje användningsområde som en association, och ge associationen ett beskrivande namn som t.ex <<förekommer i>> eller <<används inom>>. Det är viktigt att betona att den matematiska begreppsmodelleringen inte syftar till att framställa programkod, utan till att fokusera på begreppen och deras relationer. Arbeta därför gärna med t.ex. kommentarsnoter om du känner att du vill uttrycka någon struktur som inte riktigt får plats bland de UML begrepp som vi har infört. Du får naturligtvis även använda UML begrepp som inte har införts här - det är dock inte meningen att du ska behöva dem i dina modelleringsuppgifter. I den här skriften har vi huvudsakligen beskrivit den statiska delen av UML. Dessa element lämpar sig bäst för att modellera begreppens attribut och relationer. Det är därför meningen att du ska koncentrera dig på dessa aspekter i ditt matematiska modelleringsarbete. 3.7 Standardbeteckningar för matematiska talmängder N = Naturliga talen = {0, 1, 2, 3, ....}. Z = Hela talen = { .... -2, -1, 0, 1, 2, ....}. Q = Rationella talen. R = Reella talen. C = Komplexa talen. 32 3.8 Exempel - begreppet reellt polynom i en variabel Konvention: När vi nedan talar om begreppet Polynom menar vi hela tiden begreppet Reellt polynom i en variabel. 3.8.1 Terminologiskt lexikon • polynom: summa av ett ändligt antal termer. • exempel på (= instans av) polynom: 3x2-4x+7 • term: produkt av en koefficient och ett antal kopior (= förekomster) av en variabel. • exempel: termerna i polynomet 3x2-4x+7 är 3x2, -4x och 7. • koefficient: ett reellt tal, dvs en medlem i mängden R. • exempel: koefficienterna i polynomet 3x2-4x+7 är 3, -4 och 7. • variabel: en symbol (= namn) som kan representerta (= anta) olika reella talvärden. En symbol består oftast av en bokstav. Man kan tänka på en variabel som en låda med ett namn och eventuellt ett värde (= innehållet i lådan). Att byta värde på variabeln motsvaras då av att ändra innehållet i lådan. • exempel: polynomet 3x2-4x+7 har en variabel med namnet x. • värde: ett element i mängden R av reella tal. • formell variabel: symbol som inte har något värde. • polynomgrad: ett polynom har en grad som anger största graden hos någon av dess termer. • exempel: polynomet 3x2-4x+7 har grad 2, eftersom termerna har grad 2, 1, resp. 0. • termgrad: varje term har en grad som anger antalet förekomster av variabeln i termen. Graden av en term är alltså lika med antalet faktorer (= kopior) av variabeln som ingår i termen. • exempel: termen 4xxx = 4x3 (i variabeln x) har graden 3. • addition (av två polynom): summan av två polynom är ett nytt polynom som bildas genom att termer av samma grad i de båda polynomen adderas. • addition (av två termer): suman av två termer av samma grad är en ny term av samma grad vars koefficient är summan av de bägge termernas koefficienter. • multiplikation (av två polynom): produkten av två polynom bildas genom att varje term i det ena polynomet multipliceras med varje term i det andra polynomet och de resulterande termerna adderas. • multiplikation (av två termer): produkten av två termer är en ny term vars grad är summan av graderna hos de båda termerna och vars koefficient är produkten av koefficienterna hos de båda termerna. 33 3.8.2 Exempel på användningsområden för polynom (inom matematiken) Polynom används ofta för att bilda funktioner. Själva polynomet kallas i detta sammanhang ofta formellt polynom och den funktion man bildar med polynomets hjälp kallas en polynomfunktion. Det begrepp som beskrivits ovan under namnet polynom är i själva verket liktydigt med formellt polynom. En polynomfunktion p: R → R använder ett formellt polynom p(x) för att avbilda varje reellt tal a på ett annat reellt tal via utbyte av polynomet p:s formella variabel x mot talet a och uträkning av motsvarande värde, som vi kallar b. Detta brukar kallas insättning av a i polynomet p och sambandet mellan a och b uttryckes b = p(a). Oftast säger man bara att variabeln x varierar över talmängden R och kallar resultatet av insättningen av x-värdet i polynomet p för y, dvs man skriver y = p(x) för att beteckna sambandet mellan ett godtyckligt x-värde och motsvarande uträknade polynomvärde. 3.8.3 Begreppsmodell av reella polynom i en variabel Reellt polynom i en variabel 1 1 Polynomfunktion R ---> R polGrad:N enVariabel:Variabel $räkneregel[*]:Formel addition(Polynom):Polynom multiplikation(Polynom):Polynom subtraktion(Polynom):Polynom division(Polynom):RationelltUttryck {polGrad = max(termGrad)} 1 <<summa>> 1..polGrad+1 Term termGrad:N koefficient:R en term består av produkten av koefficienten och termGrad kopior av variabeln Fig. 33. Begreppet reellt polynom i en variabel. 3.9 Några exempel på blandade begreppsmodeller Vi ska avsluta med att presentera några begreppsmodeller som är uppbyggda genom att blanda UML med en allmän mind-mapping teknik. Avsikten är att visa att man kan bygga begreppsbeskrivningar på många olika sätt för att passa olika syften. UML utgör en språklig utgångspunkt, men även en begränsning som man är fri att överskrida om man vill. 34 3.9.1 Konsten att skapa svårigheter i matematikundervisningen Ett problem i den tidiga matematikundervisningen är de starka förväntningarna att matematiken kommer att bli svår när man kommer upp på högstadiet. Denna attityd är mycket smittsam. vilket blir speciellt tydligt när man ska börjar räkna med symboler - eller “räkna med x” som man brukar säga. Den konversation som återges i Fig. (34) är nog tyvärr ganska typisk i detta sammanhang. Att räkna med x är svårt. Jag förstod det aldrig när jag gick i skolan. <<ärEtt>> Försvar Förälder Attityd Lärare <<ärEn>> Barn, vi ska nu börja räkna med det där mystiska talet x som ni alla har hört talas om. Förväntan Barn <<ärEn>> Jag kommer aldrig att begripa det här! Begreppsmässig svårighet <<ärEn>> Minsta tecken på mentalt motstånd Bekräftelse <<ärEn>> Just det, precis som jag trodde, jag kan helt enkelt inte förstå det här! tid Fig. 34. x-istentiella förväntningar inom skolmatematiken 1. 1. I figuren är instanser av begrepp återgivna i rutor med rundade hörn. Denna notation är ofta mycket praktisk och används bl.a. i OMT (Object Modeling Technique [(17)]) som är den mest spridda föregångaren till UML. 35 3.9.2 En variabel som en låda med ett namn och (eventuellt) ett innehåll När min dotter Ylva gick i låg-och mellanstadiet hade jag möjlighet att genomföra ett antal olika matematikpedagogiska experiment i hennes klass. Experimenten - som gick under samlingsnamnet Förstklassig Matematik - innefattade bl.a. att lära barnen att räkna med x när de gick i 4:e klass. Ett ord som jag konsekvent undvek i detta sammanhang var “variabel”. Jag använde i stället analogin mellan en variabel och en låda som utgångspunkt. Båda har ett namn och eventuellt även ett innehåll, ifall vi har givit variabeln ett värde - dvs om vi har lagt något i lådan. Med denna metafor kan man betrakta ekvationer som samband mellan innehållet i ett antal olika lådor. Att lösa ekvationerna blir då liktydigt med att lista ut vad som finns i (vissa av) lådorna. inlärningsordning <<ärEn>> a + R ( ) a2 2 <<ärEn>> R+ Pil Funktion y = x2 y 1 <<ärEn>> Grafisk Låd-Relation x2 x 1 x y = x2 <<ärEn>> x2 <<ärEn>> x•y <<ärEn>> <<ärEn>> x Låd-Relation Låd-Kvadrering Låd-Multiplikation Låda <<leder till>> x - fixering Fig. 35. Variabler och funktioner - traditionell respektive lådmässig approach. 36 Detta sätt att betrakta variabler är väldigt konkret och visade sig vara lätt att förstå för barnen. Det motsvarar dessutom exakt det sätt på vilket symboliska matematikprogram, som t.ex. Mathematica™ behandlar variabler. När man matar in ett namn på en variabel till Mathematica, svarar programmet med att ange variabelns värde (= lådans innehåll) - ifall något sådant värde har tilldelats variabeln (= lagts i lådan). I annat fall svarar Mathematica med att ange variabelns namn. Genom att demonstrera detta beteende - och förklara det i termer av att “räkna med lådor” - lyckades jag förankra idén om vad en variabel är för något hos var och en av de 25 eleverna - vid en tidpunkt då de gick i 4:e klass, dvs då de var ungefär 10 år gamla. Figur (35) illustrerar det traditionella respektive det lådbaserade sättet att tänka på variabler och funktioner - två grundläggande begrepp som måste bemästras för att skaffa sig tillträde till matematikens högre abstraktionsnivåer. Den vänstra delen av figuren visar de olika abstraktionsnivåer som uppträder i den traditionella förklaringsmodellen, medan den högra delen visar hur motsvarande begrepp beskrivs i “lådmodellen”. Notera att lådor med rundade hörn används för att beteckna instanser, vilket ibland är praktiskt ur tydlighetssynpunkt. 37 4 Referenser [1] [2] [3] [4] [5] [6] [7] Clifford, W. K., The Common Sense of the Exact Sciences, Dover Publ. Inc., New York, 1955 (1945). Courant, R. & Robbins, H., What is Mathematics?, Oxford University Press, New York, 1978 (1941). Coxeter, H. S. M., Projective Geometry, Springer Verlag (2nd ed.), New York, 1987 (1964). Davis, P. J. & Hersh, R., The Mathematical Experience, Houghton Mifflin Co., Boston, 1981. Davis, P. J. & Hersh, R., Descartes’ Dream, Houghton Mifflin Co., Boston, 1987. Euclid, The Thirteen Books of the Elements, Vol I-III, Dover Publ. Inc., New York, 1956 (325 B.C.). Gamma, E. & Helm, R. & Johnson, R. & Vlissides, J., Design Patterns - Elements of Reusable ObjectOriented Software, Addison-Wesley Publ. Co., Reading MA, 1995. Hadamard, J., The Psychology of Invention in the Mathematical Field, Dover Publ. Inc., New York, 1949. Hardy, G. H., A Mathematicians Apology, Cambridge University Press, Cambridge, 1948 (1940). Heath, T. L., A History of Greek Mathematics, Vol I-II, Dover Publications Inc., New York, 1981 (1921). Hilbert, D., Grundlagen der Geometrie, Teubner, Leipzig und Berlin, 1913. Klein, F., Vorlesungen über höhere Geometrie, Chelsea Publ. Co., New York, 1949 (1926). Naeve, A., Conceptual Navigation and Multiple scale Narration in a Knowledge Manifold, CID-52, TRITA-NA-D9910, KTH, 1999. Newton, I., Philosophiæ Naturalis Principia Mathematica, Cambridge, 1687. Poincaré, H., Science and Hypothesis, Dover Publications Inc., New York, 1952 (1905). Odell & Martin, Object-Oriented Methods - a Foundation, Prentice Hall, 1998. Rumbaugh, J. & Blaha, M. & Premerlani, W. & Eddy, F. & Lorensen, W., Object-Oriented Modeling and Design, Prentice Hall, New Jersey, 1991. Rumbaugh, J. & Jacobson, I. & Booch, G., The Unified Modeling Language Reference Manual, Addison Wesley Longman Inc., 1999. Sankaracarya, B. K. T., Vedic Mathematics, Banaras Hindu University Press, Varanasi, 1965. Schrödinger, E., Nature and the Greeks, Cambridge University Press, 1996 (1951). Schrödinger, E., Science and Humanism, Cambridge University Press, 1996 (1951). Wigner, E., P., On the Unreasonable Effectiveness of Mathematics in the Natural Sciences, Comm. in Pure Appl. Math., Vol. 13, 1960, pp. 1-14. Wittgenstein, L., Tractatus Logico-Philosophicus, Suhrkamp Verlag 1963 (1921). Wittgenstein, L., Filosofiska Undersökningar, Bonniers, Stockholm 1978 (1967). [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] 38 View publication stats