Differentialanalysatorns historia
Hammings första regel för systemteknik: Om du optimerar komponenterna kommer du sannolikt att förstöra systemprestationen.
Han illustrerar det med en historia från sitt eget arbete. Han drev en differentialanalysator — en analog dator som löste differentialekvationer genom mekanisk integration. Efterfrågan växte, så en andra enhet beställdes, för att kunna anslutas till den första så båda kunde fungera separat eller tillsammans.
Byggarna, stolta över sitt hantverk, förbättrade förstärkarna i den nya enheten. Hamming insisterade: alla förbättringar måste inte störa den övergripande systemdriften. På acceptansdagen körde han det klassiska testet: lösa y'' + y = 0, rita y mot y', förvänta en perfekt cirkel. Det misslyckades omedelbar.
Orsaken: de förbättrade förstärkarna drog mer ström genom jordningskretsen. Den otillräckliga jordningen, som hade fungerat bra med de ursprungliga förstärkarna, tillät nu läckageströmmar att kopplas mellan delsystemen. Förbättringen av en komponent (förstärkare) försämrade gränssnittet (jordning), och systemet misslyckades.
Reparationen var trivial — tyngre kopparjordning — men principen var klar: en komponentförbättring ändrar sitt gränssnittsbeteende. Resten av systemet utformades kring det gamla gränssnittet. Förbättra komponenten, bryt gränssnittet, försämra systemet.
Att känna igen komponentoptimering
Hamming säger att regeln 'verkar så rimlig om du gör en isolerad komponent bättre så kommer hela systemet att bli bättre' — och ändå är det fel. Misslyckandet är gränssnittsmedierat: komponentförbättringen ändrar signalen som gränssnittet ser.
Gränssnitt framför komponenter
Hammings praktiska slutsats: systemingenjörer måste designa och verifiera gränssnitt först, komponenter för det andra. En perfekt komponent med ett britet gränsnitt är värdelös. En medelmåttig komponent med ett väl specificerat gränsnitt kan förbättras senare.
Regel 2: gränsvillkoren (begränsningarna) för ett system är ofta viktigare än de optimala värdena inom dessa gränser. Ett system utformat för att maximera prestandan vid den förväntade driftpunkten är ofta skört: små utflykter utanför det förväntade intervallet orsakar fel. Ett system utformat för att fungera säkert över ett brett intervall — med väl definierade gränser — är robust.
Exempel: ett kommunikationssystem utformat för exakt 100 Mbps trafik vid 25°C kommer att misslyckas om trafiken ökar till 110 Mbps eller temperaturen stiger till 40°C. Ett system utformat med en gräns 'måste inte överskrida 90% utnyttjande vid någon temperatur under 60°C' är mer användbart, även om dess topprestanda är något lägre.
Systemingenjörens jobb: inte att optimera A eller B individuellt, utan att optimera A+B+C... som helhet, under begränsningar.
Utbildningssystemet: Misslyckad systemteknik
Hamming tillämpar sin egen princip på utbildning. Under decennierna har universitet optimerat enskilda matematikkurser: Kalkyl har reducerats till sina väsentliga delar, linjär algebra har renats och stramats åt. Varje kurs, bedömd individuellt, ser bättre ut.
Men sett som ett system dök stora luckor upp:
- Matematisk induktion: nästan inte nämnts efter gymnasiet.
- Komplexa tal: introducerats kort i algebra, sedan undvikna tills sent i linjär algebra när komplexa egenvärden förekommer. Studenter står inför två nya, svåra idéer samtidigt utan förberedelse.
- Obestämda koefficienter: nämnda kort.
- Omöjlighetsbevis: nästan helt frånvarande.
- Diskret matematik: i stort sett ignorerad.
Optimeringen av varje komponent (varje kurs) skapade gränssnittsluckor: saknade konceptuella broar mellan kurser. Systemets utdata — utbildade ingenjörer och vetenskapsmän — led, även om varje kurs utdatamått förbättrades.
Att motstå den naturliga impulsen att fixa problemdelen
Hammings observation: det är lätt att säga rätt ord om systemteknik. Mycket få människor kan faktiskt göra det när ögonblicket kommer.
Det naturliga svaret när ett system misslyckas: identifiera den mest uppenbar bruten komponenten och fixa den. Det är komponenttänkande. Systemet misslyckades av en anledning som involverar interaktionen mellan komponenter, gränssnitt och begränsningar — men det mest synliga misslyckandet är vanligtvis på en enda komponent.
Systemingenjörens disciplin: före fixning av det synliga misslyckandet, fråga: varför producerade systemet detta misslyckande på denna komponent? Presterar komponenten faktiskt under sitt värde, eller blir den ombedd att fungera utanför sin designomfattning av resten av systemet? Att fixa komponenttsymptomet lämnar systemfelet intakt.
Kommunikationsflaskhalsen i stora organisationer följer detta mönster: en avdelning kommunicerar dåligt (synligt misslyckande). Komponentfix: anställ bättre kommunikatörer. Systemfix: omdesigna informationsflödesarkitekturen så att mindre kommunikation krävs för att uppnå samma samordning.
Systemdiagnos
Skillnaden: en komponentfix behandlar ett symptom. En systemfix behandlar orsaken. Orsaken involverar vanligtvis systemets struktur — vilka komponenter som existerar, vilka gränssnitt som förbinder dem, vilka begränsningar som binder deras drift.