Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Programowanie kontraktowe

Z Wikipedii, wolnej encyklopedii

Programowanie kontraktowe (ang.Design by contract, DbC) – wprogramowaniu, metoda organizowaniakodu źródłowego programu, polegająca na takim ułożeniu go, aby nie tylko było jasne, jak program ma działać, lecz także, aby można było zweryfikować istnienie określonych założeń dotyczących konkretnych elementów programu (funkcje,struktury,klasy,moduły, itp.).

Programowanie kontraktowe jest wymarłym określeniem, które jest niczym innym jak opisaniem procesu wykorzystaniaweryfikacji i walidacji danych[1].

Historia

[edytuj |edytuj kod]

Określenie to zostało wprowadzone przezBertranda Meyera(inne języki), w odniesieniu do projektu jegojęzyka programowania Eiffel, w artykułach, począwszy od roku 1986, a także w edycjach z lat 1988 i 1997 swojej książki pod tytułem „Object-Oriented Software Construction”. W 2004 roku przyznano Eiffel Softwareznak towarowyDesign by contract, W związku z tym, w źródłach anglojęzycznych można się również spotkać z określeniamiProgramming by contract iContract programming.

Założenia

[edytuj |edytuj kod]

Programowanie zakłada, że elementyprogramu powinny odnosić się do siebie na zasadzie kontraktów, czyli:

  • Każdy element powinien zapewniać określoną funkcjonalność i wymagać ściśle określonych środków do wykonania polecenia.
  • Klient może użyć funkcjonalności, o ile spełni zdefiniowane wymagania.
  • Kontrakt opisuje wymagania stawiane obu stronom.
  • Element zapewniający funkcjonalność powinien przewidziećsytuacje wyjątkowe, a klient powinien je rozpatrzyć. W niektórych językach wychwytywanie wyjątków ma charakter obowiązkowy (np.Java), inne pozostawiają programiście wybór.

Sprawdzenie danych wejściowych i wyjściowych

[edytuj |edytuj kod]

Głównym mechanizmem programowania kontraktowego jest weryfikacja danych przesyłanych do funkcji i jej wyniku. Sprawdzanie danych wejściowych jest bardzo powszechną praktyką, stosowaną nawet w językach nieposiadających specjalnie przygotowanych do tego konstrukcji. Znacznie rzadsza jest kontrola zwracanej wartości. Konstrukcję do sprawdzenia danych wejściowych i wyjściowych zapewnia między innymijęzyk D:

doubledivide(doubledividend,doubledivisor)in{assert(divisor!=0);}out(result){assert(result<10);}body{returndividend/divisor;}

Funkcja ta najpierw sprawdzi, czy drugi argument jest równy zeru, jeśli tak, zwróci wyjątek; jeśli nie, podzieli pierwszy argument przez drugi. Następnie sprawdzi, czy wynik jest mniejszy od 10. Jeśli okaże się mniejszy, funkcja zwróci wartość. W przeciwnym wypadku zwróci wyjątek.

Za szczególny przypadek kontroli danych wyjściowych można uznać równieżtest jednostkowy.

Przypisy

[edytuj |edytuj kod]
  1. T.T. Tuglular T.T.,C.A.C.A. Muftuoglu C.A.C.A.,F.F. Belli F.F.,M.M. Linschulte M.M.,Event-Based Input Validation Using Design-by-Contract Patterns, 2009 20th International Symposium on Software Reliability Engineering, listopad 2009, s. 195–204,DOI10.1109/ISSRE.2009.20 [dostęp 2023-08-13] .
Źródło: „https://pl.wikipedia.org/w/index.php?title=Programowanie_kontraktowe&oldid=71044025
Kategoria:
Ukryta kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp