refactorización es una serie de transformaciones de corrección de preservación, pero refactorización puede resultar en código más general que el original
así que no podemos afirmar que una transformación refactorización T en el programa de P tiene las mismas propiedades R antes y después de refactorización, pero las propiedades R 'del programa refactorizado P' deben ser al menos equivalente a R
given program P implies R
refactoring transformation T(P) produces P'
where (P' implies R') and (R' is equivalent to or subsumes R')
también podemos afirmar que las entradas y salidas siguen siendo los mismos o equivalente
pero para seguir su ejemplo, tal vez queremos definir una transformación de refactorización T como una P, I, O, R de 4 tuplas donde P es el programa original, I son las entradas y/o precondiciones, O son las salidas y/o poscondición, y R es el programa transformado, luego afirmar (usando la lógica temporal?) Que
P:I -> O
mantiene antes de la transformación
T(P) -> R
define la transformación, y
R:I -> O
mantiene después de la transformación
mis matemáticas simbólico es oxidado, pero eso es una dirección general
esto haría que la tesis de un buen maestro, por cierto
reabierto y upvoted - esta es una excelente pregunta –
Lo que en la tierra es de aproximadamente ofensiva ¿esta? Una muy buena pregunta. – tvanfosson
Las transformaciones razonables incluyen sus propias precondiciones, por lo que parece redundante en esta caracterización. –