B (mjukvaruutveckling)

B är en mjukvaruutvecklingsmetod framtagen av Jean-Raymond Abrial, tillika ett språk och CASE-verktyg från B-Core (UK) Ltd..

B-metoden är nästan unik bland formella mjukvaruutvecklingsmetoder i det avseendet att den använder samma notation för specifikation, design och programmeringen.

Språket B byggs upp med hjälp av matematiska formler med vars hjälp det går att validera programmet. På detta sätt går det att ta fram matematiska bevis att programmet fungera innan det riktiga programmet skrivs.

Exempel på notation redigera

Matematikmotsvarighet i BBeskrivning
P & QKonjunktion
P or QDisjunktion
P=>QImplikation
P<=>QEkvivalens
not PNegation
!(z).PAllkvantifikator
#(z).PExistenskvantifikator
[G]Psubstitution

Exempel på Substitutioner redigera

Kompilatorn i B omvandlar språkets olika element i matematiska formler. Nedan följer exempel på några sådana Substitutioner

Psedu-programRegelBeskrivning
[BEGIN G END] Q Villkor Q måste uppfyllas medan G execueras.
[PRE P THEN G END] Q Innan programmet G execuerats måste villkoret P uppfyllas och villkoret Q måste uppfyllas under hela execueringen.
[IF P THEN G ELSE H END] Q Om villkoret P uppfylls execueras kod G, annars H. Oavsett vilken kod som execueras måste villkor Q uppfyllas hela tiden.
[G ;
WHILE P
DO H
VARIANT E
INVARIANT I END] Q




Efter att kod G execuerats execureras kod H så länge villkor P uppfylls. Loopvariabel är E och under hela tiden måste villkor I uppfyllas.

Exempel på program i B redigera

Detta program definierar en maskin Positive som representera ett naturligt tal mellan 0 och maxint med startvärde 0. Till maskinen finns operationerna set (för att ändra värde), read (för att läsa värde) och incr (för att öka med ett).

MACHINE  Positive (maxint)VARIABLES  valINVARIANT  val   0 .. maxintINITIALISATION  val := 0OPERATIONS  set (xx) =    PRE      xx   0 .. maxint    THEN      val := xx    END  ;  vv ← read =    vv := val  ;  incr =    PRE      val < maxint    THEN      val := val + 1    END  ;END

Det som mest skiljer detta programmet från vanliga program är INVARIANT som måste uppfyllas under hela programmets gång och PRE som måste uppfyllas vid execuering. Om det finns någon matematisk sannolikhet att dessa villkor inte uppfylls någon gång under programmets gång misslyckas kompileringen. På så sätt går det att redan under kompileringen få reda på om det finns någon bugg i programmet som annars kanske skulle ha upptäckts först efter att ha kört programmet under lång tid.

Böcker redigera