Co to jest Design by Contract®?

Design by Contract® to metoda wykorzystywana do opracowywania oprogramowania polegającego na ustanowieniu dobrze zdefiniowanych parametrów interfejsu lub umów dla wszystkich części programu. Chociaż Design by Contract® może być postrzegany jako koncepcyjny styl rozwoju, który jest wdrażany poprzez dokumentację lub modelowanie, szerzej stosuje się go w odniesieniu do natywnego lub zewnętrznego mechanizmu w niektórych językach programowania, który faktycznie wymaga niejawnego kodowania umów w ramach program. Celem użycia Design by Contract® jest opracowanie programu, który ostatecznie zostanie zakodowany w znacznie bardziej kompletny sposób, który usunie trywialne błędy, a egzekwowanie umów przez język pomocniczy sprawi, że wszelkie błędy resztkowe będą łatwe do znalezienia i uchwycenia. Program wykorzystujący kontrakty do funkcji i klas może mieć bardziej modułową konstrukcję, w której poszczególne klasy mogą być łatwo ponownie wykorzystane w innych programach z powodu jasnej definicji ich umów.

Podstawą filozofii programowania Design by Contract® jest idea rzeczywistych kontraktów biznesowych. W tym modelu każda metoda i klasa w programie zorientowanym obiektowo definiuje kontrakt, zgodnie z którym musi zachowywać się każda inna metoda lub obiekt wchodzący w interakcję z nim. Każda klasa może również zawierać umowę, zwaną niezmiennikiem klasy, którą musi przestrzegać wewnętrznie, aby mieć pewność, że umowy zewnętrzne nie wpłyną negatywnie na jej zdolność do funkcjonowania.

Dwie części umowy, które są najważniejsze podczas projektowania i kodowania, są warunkami wstępnymi i późniejszymi. Te dwie części modelu Design by Contract® określają stan programu przed wywołaniem metody oraz stan programu po zakończeniu wykonywania metody. Inne części umowy mogą się różnić w zależności od wdrożenia, ale mogą obejmować odniesienia do innych modułów, warunki synchronizacji i wymagania dotyczące kolejności wykonania.

Opracowując kontrakty dla każdej klasy i metody, można łatwo zmapować i przewidzieć interakcje między różnymi częściami programu. Egzekwowanie umów, albo za pomocą twierdzeń, albo innych mechanizmów, zapewnia również, że program nie będzie próbował wykonać, jeśli dojdzie do naruszenia umów, ponieważ wszelkie wyniki wytworzone w tym stanie i tak byłyby technicznie nieważne. Po wdrożeniu jako funkcja języka ojczystego Design by Contract® może pomóc zapewnić, że produkt końcowy będzie działał zgodnie z oczekiwaniami z niewielką szansą na nieprzewidziane błędy.

Niektóre z komplikacji wynikających z zastosowania filozofii Design by Contract® obejmują dłuższy czas projektowania i bardziej szczegółowy rozwój systemu przed rozpoczęciem kodowania, co czasem może być trudne przy dużym projekcie. W praktyce mechanizm sprawdzania poprawności umowy stosowany w języku programowania, który natywnie obsługuje umowy, może spowolnić wykonywanie programu. Słabe zrozumienie metodologii Design by Contract® może prowadzić do programu, który wykorzystuje kontrakty do przeprowadzania podstawowego sprawdzania błędów, potencjalnie prowadząc do aplikacji podatnej na nagłe awarie po wydaniu.

INNE JĘZYKI

Czy ten artykuł był pomocny? Dzięki za opinie Dzięki za opinie

Jak możemy pomóc? Jak możemy pomóc?