Pregunta

Esto es más de una pregunta general acerca de la dirección en que sería una mejor inversión para la empresa.

Nuestro negocio central de la aplicación está escrita en Visual FoxPro y es de aproximadamente 9 años de antigüedad.La base de datos es enorme 15+ conciertos y el núcleo de la lógica es complejo, y para colmo el modelo de datos es terrible.Los dos chicos que lo construyó y lo hemos mantenido todos estos años son, al menos en sus 50, así que no hace falta decir de jubilación o, posiblemente, la muerte podría llegar en la próxima década más o menos.

Este VFP aplicación de unidades de todas nuestras funciones principales de negocios y requiere de servicios de terminal server y citrix para acceder a ella desde el mundo exterior.Nuestras aplicaciones web tienen que interactuar con él a través de ODBC y siempre estamos con problemas de rendimiento con él.Los servidores que ejecutan este sistema son también muy antigua, como el Win 2000 server y se caen a pedazos.

Recientemente hemos estado teniendo reuniones acerca de la actualización de los sistemas que se ejecutan en este núcleo de la aplicación, así como otros servicios como el correo electrónico y el almacenamiento de archivos.El mayor gasto, sin embargo, es la compra de un nuevo servidor de hardware, sistema operativo de concesión de licencias, las licencias de Terminal server, Citrix licensing etc para solucionar algunos de rendimiento y fuera de los problemas de acceso actualmente estamos teniendo, así como en general lo que nosotros hasta la fecha en nuestros sistemas.

El precio va a estar en los $55K a $65K rango de precio.Así que como desarrollador web en mi punto de vista es que este es un enorme desperdicio de dinero!Mi solución sería invertir ese dinero en la reescritura de el núcleo del sistema para ejecutarse en el basado en la web .Net la plataforma.Esto eliminaría la necesidad de Terminal Server y Citrix licensing junto con el caro de configuración de hardware y de gestión para correr.No veo el punto en este tipo de inversión en un sistema anticuado que debe estar en camino de salir de todos modos.

Estoy mirando para conseguir algunos de los argumentos convincentes de por qué esto es un desperdicio de dinero.Espero que haya alguien aquí que se ha enfrentado a este tipo de situación antes de que me puede dar algunos puntos de vista.La actualización de hardware parece ser el camino más fácil para tomar ya que sólo va a tener un consultor de venir y hacer de todo.Un proyecto de desarrollo de software llevaría más tiempo, requieren más recursos y, posiblemente, el costo es un poco más de dinero.

¿Fue útil?

Solución

Cada proyecto necesita un análisis de costo-beneficio.Si un $60,000 una inversión de tiempo va a resolver todas las cuestiones que para los próximos 10 años, entonces es probablemente mucho más económico que contratar a un equipo de desarrolladores, al menos por un año para construir un nuevo sistema mejor.

Por otro lado, si ya se que cuesta $50,000/año en mantenimiento y este costo de capital es sólo para mantener el sistema vivo, y tendrás que gastar otros $60k en un par de años a partir de ahora, luego que merece una seria consideración con respecto a un re-diseño.

O usted podría tomar el medio de la carretera y empezar a envolver en algo opaco como un servicio web, y poco a poco cambiando los componentes con la mejor (y más eficiente, más fácil de mantener, etc.) los componentes internos.Muchas de las empresas a ir esta vía, ya que difiere de los costos iniciales de una reescritura;si es necesario, se puede aplazar los recursos de TI en otros lugares.

S. Lott es el derecho, aunque - es probable que usted no será capaz de competir en el costo solo.Usted tiene que tratar de cuantificar los riesgos asociados con estos antiguos sistemas - por ejemplo, cuánto le costará a la compañía a encontrar y formar calificado FoxPro desarrolladores si el original programadores deciden dejar de fumar (o, para usar la jerga de los muchos directores que me he encontrado, "atropellado por un autobús")...


Solo para agregar algo más de perspectiva a este:Antes de .NET (y para un par de años después) que he llevado a cabo la mayoría de mis proyectos exclusivamente en Delphi.En el momento en que, realmente fue una gran elección para el desarrollo de la empresa.Yo era en realidad la persona que no quiere "actualizar". Después de un tiempo, sin embargo, se hizo evidente que tanto a mí y a mi superior-ups que este miedo a la gente fuera de la empresa.

Los inversores, auditores de cuentas, todo el mundo - no le gustaba la idea de que nuestros principales activos se lleva a cabo en algunos "oscuro" del lenguaje.Por supuesto, Delphi no/no es realmente oscuro;hay un "delphi" etiqueta de aquí, ASÍ que con un recuento de 3340.Pero vamos a utilizar ASÍ como nuestro ejemplo - aquí son la corriente cuenta:

  • c# - 57293
  • .net - 30577
  • asp.net - 26600
  • java - 31023
  • vb.net - 5996
  • delphi - 3340
  • foxpro - 69
  • vfp - 27

Vamos a los números de hundirse en un rato.Delphi, mi herramienta de elección en el momento, ahora tiene menos del 10% de la representación de C#, y este hecho no techies nervioso.Foxpro/VFP no es ni siquiera al 1%.Ni siquiera puedo recordar cuántas veces he tenido que responder a preguntas como:

  • ¿Qué sucede si el desarrollador principal (me) se cierra o es atropellado por un autobús?
  • Lo difícil/costoso será para contratar a los programadores en ese campo?
  • ¿Qué pasa si el proveedor deja de apoyarlo?(Esta casi sucedió)
  • ¿Y si queremos conseguir ayuda?Consultores?Auditorías de seguridad?
  • ¿Será fácil de conseguir que funcione con el exterior de productos?

Bla bla bla, la preocupación la preocupación la preocupación era cómo me sentía en el momento, y este era un producto que no era realmente que oscuro.En su caso, de los que estamos hablando FoxPro aquí.FoxPro ha llegado a ser casi como COBOL;seguro que es todo, hay gente que lo sabe, pero el que inicia un nuevo proyecto en FoxPro hoy?Es aburrido, es francamente ghetto.VB6 está empezando a convertirse en un gueto, y VB/Acceso reemplazado FoxPro tantos años atrás.

Estoy, obviamente, siendo un poco melodramático, pero si yo fuera usted, este es el ángulo que estaría tomando.Olvídate de corto plazo de la economía, olvídate de la edad, y se centran en la la oscuridad del producto.Cuántos genuino, respuestas cualificadas piensan que van a obtener si ponen un anuncio para un programador FoxPro?¿Qué tipo de pago, se tienen que ofrecer para una posición como esta?¿Qué sería de la cifra de negocios sea como?Todo esto puede parecer remoto si estos dos desarrolladores han estado allí por 20 años, pero cuando se está ejecutando un multimillonario negocio, usted debe saber que nunca es una buena idea a la apuesta de su supervivencia en uno o dos de los empleados - no se si usted puede ayudar.

Otros consejos

La reescritura a corto plazo frente a la re-argumento de hardware no se puede ganar. Hardware y licencias son siempre más barato que una reescritura. Y el hardware además de licencia parece implicar ningún riesgo.

No se puede ganar en el argumento de retorno de la inversión. A menos que el sistema es trivial y usted es un genio, que siempre tendrá un costo de $ 100K o más para volver a escribir una aplicación que realmente hace algo. Piense varios años-persona.

Es posible ganar la discusión "deuda técnica". El cambio es cada vez más complejo, arriesgado y costoso. Cuanto más largo sea este código se perpetúa, mayor es el riesgo y el costo se acumula.

La verdadera pregunta es "empezar a arreglar ahora?" o "esperar hasta que se rompe y sufrir más adelante?" Y que no tiene definida $ -valued respuesta.

No se puede competir en el dinero, por lo que tiene que competir en riesgo, características, el crecimiento, el mantenimiento, la adaptabilidad, el cumplimiento de las normas, la seguridad, la creación de valor único para cada cliente, etc., etc.


"Ahora estamos viendo una mayor base de clientes y más datos". Eso es un argumento que podría ser capaz de ganar.

(yo soy más de 50, no estoy pensando en morir en el corto plazo. Ese argumento no gana los corazones y las mentes. A menos que sean más de 80, no se puede utilizar realmente la edad excepto como manera de conseguir su argumento ignora.)

Foco en el costo (y el riesgo) de hacer cambios.

demostrar que tiene una solución basada en web que hace cambios menos costoso y menos arriesgado.

Además, profundizar en lo que está allí y encontrar las piezas que pueden ser reemplazados por un framework de desarrollo web. Código no se escribe es más barato de mantener el código que escriba.

En general complementa un sistema de este pobre toneladas de hardware es un mal plan, probablemente diría que él # s mejor escribir de nuevo, pero es difícil de decir sin conocer los detalles.

Tenga en cuenta que una reescritura decente debería mejorar el rendimiento, la fiabilidad y maintainabilty por lo que los ahorros potenciales son grandes y sólo aumentará año tras año, incluso si la inversión inital es un poco más.

Con el fin de averiguar si vale la pena, hay que calcular, además de los costos de una reescritura:

  1. La documentación de todo el sistema hace actualmente, e ingeniería inversa con los requisitos.

  2. Unidad de escritura y pruebas de integración para todo lo que existe actualmente. Esto probablemente doensn't ya existen, sino que debe ser.

  3. El costo de mantenimiento del nuevo sistema. El nuevo sistema no va a eliminar los costes de mantenimiento, simplemente reducirla. ¿Cuánto va a salvar?

  4. El costo de hardware para el nuevo sistema. El nuevo sistema va a tener que correr en algo.

  5. costos
  6. licencia para cualquier software / etc. que son necesarios para el nuevo sistema. Es todo lo que va a ser de código abierto? ¿O vas a necesitar varias ediciones de Visual Studio Test para sus desarrolladores y probadores?

  7. El costo de la contratación de nuevo personal para hacer el desarrollo. Además de los costes salariales rectas, hay gastos de oficina. El total podría ser de $ 300.000, para decir 3 desarrolladores, contando salariales, espacio de oficina, equipos, licencias, beneficios de cuidado de la salud.

  8. horizonte de tiempo para el ahorro. El ahorro no va a ocurrir inmediatamente. Se va a ocurrir en el futuro. Mientras tanto, tienen que pagar con cheque el otorgamiento de licencias para el sistema actual, porque algo tiene que hacer el trabajo hasta que el nuevo sistema se pone en su lugar.

  9. Los problemas de flujo de efectivo. Debido a lo anterior, en el corto plazo que van a necesitar más dinero para financiar el desarrollo. Los costes reales son más altos, ya que esencialmente tienen que obtener un préstamo, aumentar la equidad, o tiene un coste de oportunidad (que aer va a tener que renunciar a alguna otra oportunidad de inversión para perseguir la reescritura).

  10. El riesgo de negocio. Es posible que haya peligro de que la reescritura podría costar más, trabajar peor,

Dos números importantes:

  • El número de puestos de trabajo "FoxPro" enumerados en craigslist de San Francisco en este momento: 2.
  • El número de puestos de trabajo ".NET" enumerados en craigslist de San Francisco en este momento: 252.

Una gran cantidad de otros puntos que se han mencionado son válidos. Sin embargo, puede pasar tanto como desee en el hardware, pero el hecho es que si algo se rompe y necesita ayuda, usted va a tener un infierno de tiempo para encontrar a más gente para ayudar.

suena como un buen momento para empezar a hablar de una migration¹ a las nuevas tecnologías, con el apoyo de mejor. (Y en 10 años, cuando .NET es algo viejo, se puede hacer todo de nuevo:)

[1] y evolucionar el sistema, no volver a escribir. Yo diría que el sistema actual basado creció de manera muy orgánica en las necesidades del momento. No hay manera de que usted será capaz de reemplazar completamente todos los que (al menos, no sin un par de años y unos miillion dólares).

Como devloper VFP histórica (más de 20yrs con Foxpro / VFP, y aún así tener la gente me pide que escriba / actualizar sus sistemas con VFP, por una variedad de razones), su todavía muy potente. Sin embargo, mientras que la investigación y tomando gran parte de mi programación orientada a objetos y desarrollo de la experiencia y el trabajo con .Net, encuentro algunas cosas en .Net mucho más fácil, especialmente el tipo fuerte de fundición a presión. Sin embargo, hacer un informe básico requiere que todos los fuertes tablas / estructuras / objetos de tipo de fundición a presión a la base de datos, y en muchos casos hasta el momento, un PITA hacer.

El precio de una reescritura siempre es de consideración importante, pero también lo es el colapso de cualquier sistema ... independientemente de VFP, VB, Access, o de otro tipo. Yo fuertemente sugeriría conseguir una empresa de consultoría para ayudar en la remodelación de su sistema y tal vez actuar como un jefe de proyecto / mentor de su personal interno de programadores que pueden ser capaces de ofrecer su talento a pesar de que puede ser necesaria una formación en el nuevo entorno de desarrollo. De esta manera, se puede obtener una buena base de un gran talento en el lenguaje, sin embargo, mantener unos costes bajos utilizando su propio personal de programación - sin embargo, es posible que tenga que contratar personal de programación suplementaria. La curva de aprendizaje de VFP a .Net está ahí, y todavía puede ser un rascador de cabeza.

Hay una variedad de empresas por ahí que eran especialistas en VFP que posteriormente han migrado sus servicios a .Net mundo y pueden ofrecer una combinación perfecta para su organización teniendo el conocimiento histórico y la experiencia profesional de ambos mundos. Sé que pueden actuar como mentores también para el desarrollo de este tipo de trabajo.

Sólo se puede decir que es un desperdicio de dinero después de que usted analizó el retorno de la inversión - que dependerá en gran medida de cuánto es el costo de reescribir el sistema

.

error clásico en JOS - "sistema es un desastre, vamos a volver a escribir".

Será como mirar a este antiguo edificio y ver un palillo y se pregunta por qué está allí. A determinar que no es necesario, y tire de ella.

De repente, el edificio se derrumba alrededor de su cabeza:)

Podría ser una idea mejor

  1. Considere reescribir partes del sistema para un mejor mantenimiento.

  2. Optimización del sistema para un mejor rendimiento.

  3. abstracción las partes específicas FoxPro, por lo que se podría convertir más fácilmente a alguna otra tecnología.

Este enfoque incremental sería reducir el riesgo y proporcionar algunas mejoras a corto plazo.

No hay una varita mágica aquí por la compañía. La única manera de estar seguro es tener el éxito en un nuevo servidor para obtener los beneficios de estabilidad y velocidad que trae al software crítico para el negocio existente. Luego, una vez que está estacionado durante unos años comenzar la reingeniería de la cosa en una plataforma diferente como .NET si eso es lo que quiere hacer. Teniendo en cuenta que tendrá que migrar los datos de VFP en la nueva estructura de base de datos en algún momento.

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