Dinámica cambia a clases o de activación de contexto - cómo tratar a los objetos existentes de una manera coherente?

cs.stackexchange https://cs.stackexchange.com/questions/3156

Pregunta

Busco referencias y documentos sobre el tema siguiente.

  1. General , algunos lenguajes de programación permiten cambios dinámicos en las clases. Como un ejemplo, una nueva variable de instancia ‘peso’ se puede añadir a la Edge clase (la clase de bordes no ponderados de gráficos). Pero lo que debería ocurrir con objetos de bordes existentes?

    Se puede actualizarse para incluir la nueva variable de instancia con un valor predeterminado, tal vez 0 peso, en el ejemplo de borde. O los objetos existentes siguen siendo los mismos.

  2. orientada al contexto programación, situaciones similares pueden surgir, cuando el contexto se activa de forma dinámica en tiempo de ejecución. Esto puede afectar a cambios en los métodos que se ejecutan actualmente (aunque a mí respecta a la ejecución del hilo único en el momento).

  3. Teniendo en cuenta patrones de diseño , cuando un objeto proxy envuelve otro objeto, las referencias al antiguo objeto pueden esperar ciertas invariantes que el objeto proxy no se adhiere a. Esto también puede dar lugar a incoherencias cuando se envuelve un objeto /’actualizado’ con un objeto proxy.

¿Hay referencias de que la lista de posibles maneras de tratar el problema en caso de cambios / activación dinámica? Al igual que las opciones para mantener el estado coherente?

Me parecía principalmente en las comunidades de la evolución del software dinámico, programación orientada a contexto y componentes de software. ¿Hay otras comunidades importantes que puedo buscar para encontrar referencias?

¿Fue útil?

Solución

Un artículo reciente sobre este tema que me topé es Actualizaciones dinámicas incremental con Contextos de primera clase por Erwann Wernli, Mircea Lungu, y Oscar Nierstrasz. El enfoque adoptado en el documento no se basa en cambios globales. Por el contrario, varias versiones de un sistema ejecutan simultáneamente en lo que se llama un Contexto . Los objetos se migran gradualmente a partir de un contexto a otro, momento en el cual se lleva a cabo una actualización. transformaciones bidireccionales se utilizan para mantener la coherencia entre viejos un nuevos contextos.

En general, creo que es necesario tener un par de funciones de actualización para cualquier actualización, uno para las clases de actualización, el otro para la actualización de los objetos. El verdadero problema es cuando / ¿cómo se aplican las funciones de actualización de objetos. En cualquier caso, que a menudo tienen múltiples versiones de clases en torno al mismo tiempo. UpgradeJ (por Biermann, Parkinson y Noble) es un lenguaje de programación que se ocupa de múltiples versiones de una clase de una manera segura tipo.

La bibliografía de estos documentos proporciona algunas pistas que se podía seguir. También busque en google académico para ver lo que la acumulación de papel en éstos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top