2009-06-29 14 views
8


Tengo que hacer mejoras en un proyecto C++ existente con más de 100k líneas de código.
Mi pregunta es ¿Cómo y dónde comenzar con tales proyectos?
El problema aumenta aún más si el código no está bien documentado. ¿Existen herramientas automatizadas para estudiar el flujo de código en proyectos grandes?
Cómo iniciar la modificación con grandes proyectos

Gracias,

Respuesta

13

Hay un libro para usted: Working Effectively with Legacy Code

No se trata de herramientas, sino de diversos enfoques, procesos y técnicas que puede utilizar para comprender mejor y realizar cambios en el código. Incluso está escrito desde una perspectiva principalmente de C++.

+2

+1, el estado de las pruebas es la clave, ya que Feathers, el autor del libro que recomienda, señala de manera muy efectiva. –

16

Uso control de código fuente antes de tocar nada!

+0

Sí, eso es crucial, por lo que +1 a pesar de que la respuesta de @ nader es aún más actual, así que también lo voté ;-). –

2

Ejecutando Doxygen con el conjunto de etiquetas EXTRACT_ALL para documentar todas las relaciones en la base de código. No lo ayudará con el flujo de código, pero con suerte arrojará algo de luz con respecto a la estructura y el diseño de toda la aplicación.

3
  • Primero, estudie bien la interfaz existente.
  • Escriba las pruebas si están ausentes o amplíe las ya escritas.
  • Modifique el código fuente.
  • Ejecute pruebas para comprobar si la modificación de alguna manera rompe el comportamiento anterior.
2

Si puede ejecutar el código en una PC, puede intentar construir un callgraph generalmente a partir de una salida de generación de perfiles.

También herramientas de referencias cruzadas como cscope, ctags, lxr, etc. Pueden ayudar mucho. A

Pasar algún tiempo leyendo, construyendo diagramas de clase o incluso agregando comentarios a las partes del código que tardó mucho en comprender son pasos para familiarizarse con la base de código y prepararse para modificarla/ampliarla.

3

Hay otro buen libro, actualmente libremente disponibles en la red, sobre la reingeniería orientada a objetos: http://www.iam.unibe.ch/~scg/OORP/

+0

Inmediatamente quise mencionar este libro cuando leí el título de la pregunta :) +10 a zim2001. – DaveFar

3

El libro "Code Reading" por Diomidis Spinellis contiene una gran cantidad de consejos sobre cómo obtener una visión general y un conocimiento profundo acerca más grande , proyectos desconocidos.

El Capítulo 6 se centra especialmente en ese tema (Tacking Large Projects). Además, los capítulos sobre herramientas (Capítulo 9) y arquitectura (Capítulo 8) pueden contener lindos consejos para usted.

Sin embargo, el libro trata de entender (leyendo) el "código". No aborda directamente el paso de mantenimiento.

2

Lo primero que debe hacer es comprender cómo funciona el código. Lea qué documentación hay y luego observe cómo funciona el programa bajo un depurador. Si observas la función principal/loop y luego trabajas poco a poco en el programa, puedes obtener una buena idea de cómo están funcionando las cosas. Asegúrese de anotar sus hallazgos para que otros que lo siguen puedan tener una mejor posición desde donde comenzar.

1

Un muy buen programador austríaco me dijo una vez que para comprender un programa primero debe comprender las estructuras de datos que utiliza el programa.

3

Lo primero que haría es tratar de encontrar los requisitos del producto.

Es casi impensable que un producto de este tamaño se desarrolle sin requisitos.

el de leer los requisitos, usted será capaz de:

  • tener una idea de lo que el producto (y por lo tanto el código) es al menos supone que deben hacer
  • ver cuán bien (o mal) el código realmente cumplen con los requisitos

de lo contrario sólo estás al código, tratando de adivinar la intención de los desarrolladores ...

Cuestiones relacionadas