Skip to main content

¿Qué es la división de programas?

En aplicaciones de software, la división de programas es un método para identificar los elementos centrales de un programa de software y extraerlos suavemente del código más complicado que permite que el programa funcione. El proceso de segmentación de programas es especialmente importante para los esfuerzos de ingeniería de software, ya que le permite al ingeniero de software encontrar el camino a través de complicadas cadenas de código para acceder al código fuente que realmente impulsa la aplicación. Ser capaz de extraer estos subprogramas y ver el código fuente permite identificar una amplia gama de posibles errores y, por lo tanto, hacer que el software se ejecute con mayor eficiencia.

No es inusual que el código sea intencionalmente complicado. Una de las principales razones de esta acción es que las partes más complicadas del código ayudan a proteger el código fuente de la corrupción por virus e intentos de piratería. Por lo general, un programador agregará una gran cantidad de código adicional que esencialmente hace que sea necesario realizar una serie de pasos adicionales para lograr lo que podría administrar el código fuente con solo unos pocos pasos. Si bien este es un estado deseable desde la perspectiva de proteger el software de posibles daños, hay situaciones en las que es necesario acceder al código fuente. Ahí es donde entra en juego el corte de programas.

Hay dos enfoques o dimensiones básicas para la división de programas. La dimensión semántica se centra en los elementos de la cadena de código que son necesarios y, por lo tanto, se conservarán. Tanto las funciones estáticas como las dinámicas se identifican y preservan mediante el uso de métodos específicos de corte que dejan atrás los elementos esenciales pero eliminan gran parte del código insertado como parte del proceso de enmascaramiento. Con el corte semántico del programa, el ingeniero tiene una gran cantidad de discreción para decidir qué parte del código adicional queda, si es que queda alguno.

El corte sintáctico del programa no proporciona al ingeniero la misma cantidad de opciones. Con este enfoque, se elimina todo lo que no sea esencial para la función central del código. Si se encuentra que una cadena no tiene ningún propósito real y no tiene ningún impacto en la semántica de interés encontrada en el código, desaparece. Este enfoque ayuda a preservar la sintaxis original del programa sin lujos adicionales.

Un segundo uso cada vez más común de la división sintáctica de programas se conoce como división amorfa de programas. Con este enfoque, el objetivo es hacer posible que el sector continúe trabajando con cualquier función sintáctica que ayude a mantener las restricciones semánticas que el ingeniero desea preservar en el código.