Co to jest projekt Contract®?

Projektowanie przez Contract® to metoda opracowywania oprogramowania, które opiera się na ustanowieniu dobrze zdefiniowanych parametrów interfejsu lub umów dla wszystkich części programu. Chociaż projektowanie przez Contract® można postrzegać jako koncepcyjny styl rozwoju, który jest wdrażany poprzez dokumentację lub modelowanie, szerzej służy do odnoszącego się do mechanizmu natywnego lub zewnętrznego w niektórych językach programowania, który faktycznie wymaga ukrytego kodowania umów w ramach programu. Celem korzystania z projektowania przez kontrakt® jest to, że program zostanie opracowany, a ostatecznie zakodowany w znacznie bardziej kompletny sposób, który usuwa bardziej trywialne błędy, podczas gdy egzekwowanie umów przez język pomocniczy powoduje, że wszelkie błędy resztkowe są łatwe do znalezienia i przechwytywania. Program, który wykorzystuje umowy dla funkcji i klas, może mieć bardziej modułowy projekt, w którym poszczególne klasy można łatwo ponownie wykorzystać w innych programach ze względu na jasną definicję ich umów.

PodstawaR Projektowanie przez Contract® Philosofing to idea rzeczywistych kontraktów biznesowych. W tym modelu każda metoda i klasa w programie zorientowanym na obiekt definiują umowę, w której każda inna metoda lub obiekt z nią interakcja musi przestrzegać. Każda klasa może również mieć umowę, zwaną niezmienną klasą, że musi przestrzegać wewnętrznie, aby upewnić się, że umowy zewnętrzne nie narażają jej zdolności do funkcjonowania.

Dwie części umowy, które są najważniejsze podczas projektowania i kodowania, to warunki wstępne i po kodach. Te dwie części modelu projektu przez kontrakt® definiują stan programu przed wywołaniem metody i stanu po zakończeniu metody. Inne części umowy mogą się różnić w zależności od wdrożenia, ale mogą obejmować odniesienie do innych modułów, warunki synchronizacji i wymagania dotyczące zamówienia.

Opracowując umowy dla każdej klasy i metody, interakcję różnych części programu można łatwo zmapować i przewidzieć. Egzekwowanie umów, albo za pomocą twierdzeń lub innych mechanizmów, zapewnia również, że program nie będzie próbował wykonać, jeśli wystąpi naruszenie umów, ponieważ wszelkie wyniki wytworzone w tym stanie i tak technicznie byłyby nieważne. Po wdrożeniu jako funkcja języka ojczystego, projektowanie przez kontrakt® może pomóc w zapewnieniu, że produkt końcowy będzie działał zgodnie z oczekiwaniami z niewielką szansą na nieprzewidziane błędy.

Niektóre komplikacje związane z zastosowaniem filozofii projektu przez Contract® obejmują dłuższe czasy projektowania i bardziej szczegółowy rozwój systemu przed rozpoczęciem kodowania, co może być trudne z dużym projektem. Mówiąc bardziej praktycznie, mechanizm walidacji kontraktów stosowany w języku programowania, który natywnie obsługuje umowy, może spowolnić realizację programu. Słabe zrozumienie tProjektowanie metodologii Contract® może prowadzić do programu wykorzystującego kontrakty do wykonywania podstawowego sprawdzania błędów, potencjalnie prowadząc do aplikacji, która jest podatna na nagłe awarie po wydaniu.

INNE JĘZYKI