Haga que un cliente piense en estimar el costo de trasladar un proyecto del idioma A al idioma B. ¿Cuál es la mejor manera de armar una solicitud de propuesta para hacer esto?
estimation
porting
errores
fuente
fuente
Respuestas:
Si el objetivo es simplemente reproducir una aplicación exactamente en un nuevo idioma, le sugiero que discuta a su cliente de eso. Portabilidad es una de las cosas más peligrosas que puede hacer porque todos esos caprichos que surgieron debido a que implementan en Lengua A pueden ser invocados por los usuarios finales, y de repente tiene que volver a crearlos en Lengua B . Cosas desagradables. Sin mencionar que portar es un costo completamente hundido que nunca pueden esperar recuperar.
Sugeriría tratar el proyecto como cualquier otro y reunir requisitos y estimar como si el original no existiera. Probablemente encontrará que el usuario final tiene una nueva perspectiva sobre el producto desde que lo usó. Si va a volver a escribirlo, también podría mejorarlo.
fuente
Si ya tiene una base de código Perl, sabe que las líneas de código (LOC) cuentan. Vea si puede encontrar una comparación de expresividad entre Perl y Language B. Aquí hay una, por ejemplo.
Say Language B es Java. Entonces, el LOC estimado para el puerto será aproximadamente cuatro veces el LOC del original (expresividad 6 versus 1.5).
Luego use algo como el software Construx Estimate en modo LOC para estimar cuánto tiempo le tomará (y a cuántas personas le llevará).
Eso le dará estimaciones aproximadas de costo y tiempo, así como una idea de la probabilidad de que se exceda.
Si ya domina el idioma B y ha ejecutado varios proyectos medidos en él, puede usar el software Construx Estimate para calibrar para su equipo.
fuente
El artículo más popular de Joels , 'Cosas que nunca debes hacer' lo dice mejor: lo hicieron cometiendo el peor error estratégico que cualquier compañía de software puede cometer:
Si terminas reescribiéndolo, vuelve a escribirlo correctamente y no solo lo portes:
fuente
Creo que tomará mucho tiempo. Será mejor que estés seguro de que vale la pena. Intente tomar una sección del código y portarlo. Multiplique cuánto tiempo tardó por la proporción de las líneas de código que transfirió frente al total de líneas de código. Le dará una cifra aproximada, lo más probable es que la real sea más alta.
Efectivamente, está escribiendo la aplicación nuevamente desde cero, pero tiene los requisitos especificados en otro idioma, no es trivial.
fuente
Creo que, ante todo, realmente debería considerar si esta es una buena opción. ¿Cuáles son las ventajas de usar el lenguaje B en lugar del lenguaje A?
Creo que IBM tuvo una investigación que decía que los programadores escriben, en promedio, 100LOC por hora. Todavía hay más en desarrollo que eso, pero la arquitectura antigua aún está planeada. Digamos que el 50% escribirá el código, ya que de lo contrario el programa todavía está bastante planeado, ¿verdad? (Puede ser que tenga un programa estructurado y desee uno orientado a objetos y eso sería una tarea más grande).
Pero si uno escribiera 100LOC / hora, divida la cantidad de LOC actual en el sistema y multiplíquelo por la venta promedio de un programador y multiplíquelo por 2. Esto podría dar una estimación aproximada. No te tomes muy en serio los números que obtienes. (Aún mejor, no los tomes en serio). Lo que desea hacer depende de muchas cosas que simplemente se miden, como:
fuente
Depende de cuánto tiempo tenga disponible. Algunas opciones:
En un mundo ideal, le propondría al cliente que pague por una tarea de investigación para cubrir ese mes de trabajo y le permita crear un prototipo de lo que haría. Eso les da la opción de detenerse y no avanzar si el costo es demasiado alto. Y, todavía te pagan por el trabajo que hiciste.
fuente
Solo hay una forma de obtener una estimación decente para una tarea de software. Asigne al personal disponible para que realice una parte pequeña pero comprobable de la tarea COMPLETAMENTE, y vea cuánto tiempo lleva. Divida el trabajo restante en tantos casos de uso como sea posible y haga que el mismo personal calcule cada iteración en comparación con el trabajo ya realizado. No les pidas que estimen el tiempo, solo pídeles que te digan cómo se compara con la primera iteración. Esto le dará la mejor estimación posible para el resto del proyecto.
fuente