¿Se puede formalizar un buen diseño orientado a objetos como lo ha sido un buen diseño de base de datos relacional?

En el mundo de la base de datos, tenemos normalización. Puede comenzar con un diseño, subir los pasos y terminar con una forma normal de la base de datos. Esto se realiza sobre la base de la semántica de los datos y puede considerarse como una serie de refactorizaciones de diseño.

En el diseño orientado a objetos, tenemos los principios SÓLIDOS y varias otras pautas ad hoc hacia un buen diseño.

¿Cree que es posible definir el equivalente de las formas normales para OO, de modo que una serie de pasos de refactorización podría mover un código de procedimiento (o diseño OO mal factorizado) a una formulación correcta (en un sentido bien definido) con la misma funcionalidad?

(NB. Feliz de hacer esta comunidad wiki)

Respuestas a la pregunta(3)

Su respuesta a la pregunta