refaktoryzacji to cykl przemian poprawności-konserwujące, ale refaktoryzacji kodu może skutkować bardziej ogólnym niż oryginalny
więc nie możemy twierdzić, że transformacja refaktoryzacja T o p Program posiada takie same właściwości R przed i po refaktoringu, ale właściwości R „o refactored programu P” powinna być co najmniej równoważna z R
given program P implies R
refactoring transformation T(P) produces P'
where (P' implies R') and (R' is equivalent to or subsumes R')
możemy stwierdzić, że dane wejściowe i wyjściowe są takie same lub równoważne
ale aby podążać za twoim przykładem, być może chcemy zdefiniować transformację przekształcającą T jako 4-krotne P, I, O, R, gdzie P jest oryginalnym programem, I jest wejściami i/lub warunkami wstępnymi, O jest wyjściami i/lub postpondition, a R jest przekształconym programem, a następnie twierdzą (używając logiki temporalnej?), Które
P:I -> O
trzyma przed transformacją
T(P) -> R
definiuje transformację i
R:I -> O
trzyma po przekształceniu
mój symboliczny matematyka jest zardzewiały, ale to ogólny kierunek
byłoby to zrobić tezę dobry magistra, BTW
odnowieniem i upvoted - to doskonałe pytanie –
Co na ziemi jest obraźliwa o to? Bardzo dobre pytanie. – tvanfosson
Resonable transformations zawierają własne warunki wstępne, więc wydaje się zbędne w tej charakterystyce. –