Pregunta

¿Qué conversión/reescritura exitosa ha realizado del software en el que estuvo involucrado?¿Cuáles fueron los lenguajes y el marco involucrados en el proceso?¿Qué tamaño tenía el software en cuestión?Finalmente, ¿cuál es la principal cosa que aprendió al participar en el proceso?

Esto esta relacionado con esto pregunta

¿Fue útil?

Solución

Me voy por "más abstrusa" aquí:

  • sido portado un simulador escrito en 8080 FORTRAN 77 desde unos DECSystem-10 TOPS-10 de funcionamiento a una IBM 4381 mainframe que operan VM / CMS.

Otros consejos

Reescribí 20.000 líneas de Perl para usar "uso estricto" en cada archivo. He tenido que añadir "mi" en todas partes que se necesitaba y tenía que corregir los errores que se descubrieron durante el proceso.

Lo más importante que aprendí de hacer esto es, "Siempre toma más tiempo de lo que piensa."

Tenía que lograr que se haga de una vez durante la noche para que los otros codificadores no estaría escribiendo código nuevo, sin fijar al mismo tiempo. Pensé que iba a ir rápido, pero no fue así, y todavía estaba hackeando en él a las 6 de la mañana del día siguiente.

Lo hice conseguirlo completa y registré antes que los demás, aunque comenzó a trabajar!

Reescribí una aplicación Java Web grande para una aplicación ASP.Net para una compañía de bienes raíces por varias razones.

Lo más importante que aprendí es que, no importa lo trivial la función del sistema original tenía, si no es en el segundo sistema, el cliente piensa que la reescritura es un fracaso. gestión de las expectativas es todo al escribir el nuevo sistema.

Esta es la mayor razón por la que son tan difíciles reescrituras:. Parece tan fácil al cliente ( "Sólo volver a hacer lo que ya tengo y añadir un par de cosas")

El más fresco para mí, creo, fue el puerto de MAME para el iPod . Fue una gran experiencia de aprendizaje con hardware integrado, y se puso a trabajar con un montón de grandes personas. Sitio Oficial .

Estoy haciendo una reescritura de un sistema de gestión de proyectos Resto a un modelo más estándar MVC. Está en la pila LAMP (PHP) y estoy cerca de la primera hito.

Las cosas que he aprendido de que en la actualidad es la forma sencilla el programa se siente al principio y yo tratamos de no añadir complejidad hasta que tenga que hacerlo.

ejemplo es que i programado toda la funcionalidad primero (como si estuviera un usuario administrador) y luego, cuando que se ordena a cabo, añadir la complejidad de tener restricciones (niveles de usuario etc)

porté / rediseñado / Reescribí un programa de MS-DOS 30000 línea C ++ en una longitud similar pero mucho más, con todas las funciones y utilizable programa Java Swing.

Nunca aprendí a tomar otro trabajo que implica C ++ o Java.

porté un Powerbuilder aplicación cliente-servidor, un par de cientos de pantallas de la pena, en una aplicación ASP.NET (C #).

Debido a problemas de rendimiento y capacidad de mantenimiento, que tenía respecto al año anterior se trasladó una tonelada de SQL embebido de guiones Powerbuilder y en los procedimientos almacenados.

A pesar de que esto haría una gran cantidad de una mueca de dolor, que tiene una gran cantidad de lógica de negocio en la base de datos, es decir la aplicación Powerbuilder era relativamente "luz" y cuando construimos la parte delantera .Net, podría aprovechar el SQL código base y tienen una gran cantidad de funcionalidad ya construido y probado.

No decir Me gustaría recomendar la creación de aplicaciones de esa manera, pero ciertamente trabajado para nuestra ventaja en este caso.

Teníamos una herramienta de generación de código en el marco de nuestra aplicación que se usaba para leer archivos de datos basados ​​en texto. Aproximadamente otras 20 aplicaciones la utilizaban.

Queríamos utilizar archivos de datos XML en lugar de archivos estructurados basados ​​en texto.El código original estaba bastante desactualizado y era difícil de mantener.Reemplazamos esta herramienta por una combinación de scripts XSLT y una biblioteca de utilidades.Para la biblioteca de utilidades podríamos utilizar algún código de la herramienta anterior.

El resultado fue que las 20 aplicaciones ahora podían utilizar el formato de archivo obsoleto basado en texto o el nuevo formato basado en XML.También entregamos una herramienta de generación de conversión que convertía archivos de datos antiguos en archivos de datos XML nuevos.

Después de lanzar una o dos versiones, hemos decidido que ya no admitiremos el antiguo formato basado en texto y que todos podrán convertir sus datos a XML.

Apenas tuvimos que hacer conversiones manuales,

convirtió la aplicación principal de la empresa de C pre-estándar ++ a C ++ estándar. Tuvimos un contingente venta de millones de dólares en lo que es trabajar en AIX, y después de ver que hemos decidido que la conversión a C ++ estándar iba a ser tan fácil como convertir a C ++ tradicional de IBM.

No sé el número de líneas, pero el código fuente corriendo a cientos de megabytes.

Utilizamos herramientas estándar de Unix para hacer esto, incluyendo VI y los compiladores de todo tipo.

Se tomó unos meses. La mayoría de las correcciones eran simples, atrapados por el compilador y casi mecánicamente fijos. Algunos de ellos eran mucho más complicado.

Creo que mi principal era llevar: No se acerque demasiado terriblemente inteligente con código en un lenguaje que no ha sido estandarizada todavía, o es probable que tenga las cosas cambian de manera inesperada. Tuvimos que hacer un montón de cavar en algunas de las adaptaciones ingeniosas / C ++ abusos de arroyos.

Hace diez años he conseguido un equipo que convierte un sistema CAD desde DOS en Windows. La versión de DOS que se utiliza bibliotecas cerveza casera para dibujar gráficos, la versión de Windows utiliza MFC. El software fue de alrededor de 70.000 líneas de código C en el momento de la conversión. Lo más importante que hemos aprendido en el proceso es el poder de abstracción. Todas las rutinas no portátiles específicos del dispositivo se aislaron en unos pocos archivos. Por consiguiente, era relativamente fácil sustituir las llamadas a la biblioteca basado en DOS que dibujaría accediendo directamente a la memoria intermedia de trama con llamadas a la API de Windows. Del mismo modo, para la entrada que acabamos de sustituimos el bucle de eventos que comprueba para eventos de teclado y de ratón, con el correspondiente bucle de eventos de Windows. Continuamos nuestra política de aislamiento de la no portátil (esta vez de Windows) Código del resto del sistema, pero todavía no hemos encontrado esto particularmente útil. Tal vez un día que portará el sistema para Mac OS X y agradecer de nuevo.

Varios. Pero menciono uno.

Fue una herramienta de modelado de rendimiento. Parte delphi 1, parte turbo pascal. Es necesaria una reescritura de lo contrario no iba a sobrevivir. Así que comenzamos como un equipo de 2, pero sólo me sobrevivió hasta el final. Y yo estaba listo antes de la fecha límite; -).

Hay varias cosas que hicimos:

  • Que sea multimodal. El original tenía un montón de variables globales. Yo los quité y multi modelo era fácil de adaptar.
  • mensajes de error extendido. Haga clic en un mensaje y obtener la ayuda.
  • Un montón de gráficos y diagramas. Todo se puede hacer clic para ver los detalles.
  • Simulación. Cambiar parámetros con el tiempo y ver cuánto tiempo la configuración actual era suficiente.

Realmente nos hizo de ésta una limpia y devuelto en gran medida en el extremo. Una experiencia tan grande aprendizaje.

Re-escribió un sistema para una empresa que procesa las facturas legales - el sistema original era una monstruosidad VB que no tenía idea de buenos principios OO - todo lo que se mezclan entre sí. El HTML hizo SQL y el SQL escribió HTML. Una gran parte de ella era un motor de reglas personalizadas que utiliza algo así como XML para las reglas.

Dos equipos hicieron la re-escritura, que tomó cerca de 9 meses. Un equipo hizo la interfaz web y el flujo de trabajo de back-end, mientras que el otro equipo (que estaba en) re-escribió el motor de reglas. El nuevo sistema fue escrito en C #, y se llevó a cabo la prueba en primer lugar. La adición de nuevas reglas para el sistema cuando estábamos haciendo era simple suciedad, y todo lo que era comprobable. A lo largo del camino que hicimos cosas como convertir a la empresa de VSS a SVN, poner en práctica la integración continua, automatizar el despliegue, y enseñar a los demás desarrolladores de cómo hacer TDD y otras prácticas de Scrum / XP.

Gestión de las expectativas fue crucial a través del proyecto. Tener un cliente que era experto acerca de software fue muy útil.

Tener una mezcla de gran escala (end-to-end), junto con las pruebas unitarias y de integración de pruebas integrales ayudado toneladas.

Modificada vBulletin que está escrito en PHP en C # / Asp.NET. Estoy bastante familiarizado con ambos idiomas, pero PHP es el sito el ganador para la construcción de ese software. El mayor dolor en la parte trasera estaba necesitando para hacer un equivalente C # de eval () de PHP para llamar las plantillas.

Fue mi primer reto al tratar de hacer una conversión. Aprendí que necesito más experiencia con C # y que escribir desde cero es sólo la ruta más fácil a veces.

Convertí un proceso de compilación dinámico completamente escrito en Perl a una solución C#/.Net utilizando un motor de flujo de trabajo que había desarrollado un compañero de trabajo (que todavía estaba en versión beta, por lo que tuve que hacer algunas mejoras).Eso me dio la oportunidad de agregar funcionalidad de conmutación por error y a prueba de fallos al proceso de compilación.

Antes de preguntar, no, la base de flujo de trabajo de Microsoft no se puede utilizar ya que no se puede cambiar dinámicamente un proceso durante su tiempo de ejecución.

Que aprendí:

  • odiar al desarrollador de Perl
  • optimización de procesos utilizando un motor wf
  • estrategias de seguridad y conmutación por error
  • algunos ajustes de C#;)

Al final, cubrió alrededor de 5k - 6k (incluido el motor wf) de origen LoC de 3200 archivos LoC Perl.Pero fue divertido y al final mucho mejor;)

La conversión de código C teóricamente portátil en código C teóricamente portable a través de arquitecturas para apoyar un cambio de hardware que ahorra los dólares de empresa X por unidad.

El tamaño varía - esto es una necesidad común, y he hecho pequeños y grandes proyectos

.

aprendí a escribir más código C portátil. La elegancia es grande, pero cuando se trata a fin de que el compilador se encarga de rendimiento, y el código debe ser tan simple y portátil como sea posible.

portado una simulación escrito en Fortran 77 (a pesar de estar escrita en los años 90) a C / Java porque el original sólo funcionaba en pequeños conjuntos de datos. Aprendí a amar la notación O grande después de varias veces de explicar por qué sólo mover toda la tabla de datos en la memoria al comienzo del programa no iba a escala.

Migración de la cautela software misión bombardero B-2 de JOVIAL a C. 100% totalmente automatizado conversión. En serio!

lección principal:. el uso de herramientas automatizadas de conversión configurables es una gran victoria

software DMS Reingeniería Toolkit .

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