La Ingeniería del Software como una profesión

Tecnológica: implicaciones en la investigación
Jaime A. Chavarriaga L.
Grupo LIDIS
Universidad San Buenaventura, Cali, Colombia
{jaime }@usb.edu.co
Resumen
La Ingeniería de Software es una profesión de naturaleza tecnológica, que
retoma teorías y conocimientos de diversas fuentes y aborda el desarrollo de
software de calidad y a nivel industrial. Como tal, la Ingeniería de Software
construye conocimiento en torno a estas prácticas de desarrollo de software,
conocimiento que se concreta en la definición métodos, modelos y esquemas
de funcionamiento que pueden ser aplicados por los ingenieros en sus
actividades profesionales.
La forma como se construyen estos métodos, modelos y esquemas de
funcionamiento que constituyen el conocimiento propio de la Ingeniería de
Software se basa en la revisión y formalización de heurísticas surgidas de la
experiencia real en procesos y productos de software.
Por su misma naturaleza, es necesario definir métodos de investigación en
Ingeniería de Software que aborden problemas y situaciones reales de la
Industria de Software, que busquen identificar, formalizar y teorizar sobre las
mejores prácticas de la misma y sobre su aplicabilidad general en diferentes
empresas a nivel regional y mundial. Métodos de Investigación que no
necesariamente deben seguir los lineamientos clásicos de investigación
experimental cuantitativa.
Palabras Clave: Ingeniería, Método de Investigación, Ingeniería del
Software.

1 Introducción
La Ingeniería de Software es una profesión tecnológica relativamente joven1, sus
inicios se remontan a mediados de la década de los sesenta cuando algunas
instituciones e investigadores se propusieron la tarea de definir nuevas formas de
construir software, formas más efectivas y confiables.
La forma como se construye el conocimiento en la Ingeniería de Software ha sido
una cuestión importante, incluso desde sus comienzos. Los métodos de la
Ingeniería de Software, como manifestaciones de ese conocimiento propio, han

1

Algunas de las primeras definiciones de la Ingeniería de Software se remontan a 1969,
cuando se editaron las memorias de la “ Software Engineering: A report on a Conference
sponsored by the NATO Science comité”.

surgido de una gran variedad de fuentes y formas de trabajo, en algunas ocasiones
como apropiaciones y adaptaciones de métodos existentes en otras disciplinas.
En los últimos años, a partir de algunos estudios sobre el desarrollo de las
investigaciones de la Ingeniería de Software en el pasado [7][8] que han mostrado
su relativamente poco impacto en las prácticas profesionales y la ausencia de
métodos de investigación en algunos casos, se ha generado una polémica sobre las
formas como las investigaciones deben desarrollarse en esta área. Nuevas
perspectivas tendientes a la conformación de diferente métodos de investigación
han surgido: Ingeniería de Software Experimental [8], Ingeniería de Software
Empírica [12], y Métodos Cualitativos de Investigación en Ingeniería de Software
[22], entre otros.
Un punto importante que podría considerarse al momento de buscar los métodos
con las cuales la investigación puede desarrollarse, es la naturaleza misma de la
Ingeniería de Software. Mientras algunos autores conciben a la Ingeniería de
Software como una división de la Ingeniería de Sistemas [1], otros como una
división de las Ciencias de la Computación [2], y otros como una profesión y una
ciencia a la vez [9], cada uno proponiendo diferentes esquemas de investigación de
forma acorde con su noción de lo que la Ingeniería misma es.
Al preguntarnos por el método de investigación que debe usarse en Ingeniería de
Software, de alguna forma nos preguntamos por la naturaleza misma de la
Ingeniería, por el tipo de conocimiento que se genera en su interior, y sobre las
formas como éste se construye. Concebir la Ingeniería como una ciencia o como
una profesión, afecta nuestra noción sobre lo que debería ser la investigación en su
interior.

2 Ingeniería: ¿Ciencia o Profesión?
Con el fin de lograr mayores claridades sobre la naturaleza de la Ingeniería (en
general) y de la Ingeniería de Software (en particular), es posible establecer una
diferenciación entre las disciplinas científicas tradicionales y las profesiones.
Las disciplinas científicas centran su campo de conocimiento en torno a la
definición y comprensión de un objeto de estudio, típicamente estableciendo
métodos y mecanismos tendientes a establecer teorías comprensivas del mismo y a
su verificación a través de mecanismos empíricos. Sus propósitos parecen definirse
más en términos de la comprensión y control de algunos fenómenos del mundo.
En las profesiones, por otro lado, su campo de conocimiento se da por la
convergencia, debate y cooperación de diversas disciplinas en torno al desarrollo
de una práctica propia. Sus propósitos parecen definirse más en términos del
desarrollo de una serie de actividades y de tareas en la vida laboral.
La Ingeniería es una profesión de naturaleza tecnológica, que busca la
aplicación de métodos y principios de las diversas ciencias y disciplinas para la

creación, construcción y mejoramiento de productos con adecuados niveles de
calidad, economía y tiempo de desarrollo. Los productos de los cuales se ocupa la
ingeniería pueden ser productos simples de acuerdo a especificaciones concretas o
pueden ser sistemas y procesos que permitan la producción masiva de bienes y
servicios de acuerdo a estándares establecidos de calidad y/o especificación.
A diferencia de otras disciplinas que buscan la comprensión de fenómenos o textos
culturales, o de otras profesiones en donde la aplicación de los modelos y de los
procesos de diseño no es una característica fundamental, la ingeniería tiene el
propósito práctico de generar productos y soluciones reales a problemas y
situaciones en el mundo real.2
La naturaleza práctica de la ingeniería, la ha llevado a aplicar conocimientos y
teorías formuladas por disciplinas científicas (que se centran en la descripción y
comprensión de fenómenos), y a formular teorías y métodos nuevos, centrados en
la aplicación práctica de los primeros.
La idea de aplicación práctica de las ciencias, parece ser la concepción moderna
sobre las ingenierías. De hecho, algunos de los nombres mismos de las disciplinas,
parecen denotar esta relación. Algunos ejemplos pueden ser la Ingeniería
Mecánica, que asume las teorías explicativas de la Física Mecánica, la Ingeniería
Eléctria de la Física Eléctrica, la Ingeniería Electrónica de la Física Electrónica y la
Ingeniería Química de la Química. Denominación que no significa que estas
ingenierías sean un subconjunto de estas disciplinas y/o que su única fuente de
teorías sean solo ellas.
En general, conocimientos propios de la Administración, la planeación de
proyectos, la Sicología, el manejo de personal, y el manejo económico, son
retomados permanentemente por la Ingeniería para el desarrollo de su propia
actividad.
En la actualidad, la naturaleza misma de los productos en los cuales trabajan los
ingenieros, han establecido ingenierías que se centran en los productos y que
retoman teorías e ideas de multiplicidad de ciencias y disciplinas. Retomando los
conocimientos que le son más apropiados para el desarrollo de sus prácticas. La
Tabla 1 muestra algunas de las Ingenierías cuyo campo de conocimiento se centran
en el desarrollo de unos productos.

2

Algunos autores se refieren a la Ingeniería como una arte, debido a la naturaleza práctica
de la misma y a su relación intrínseca con otras formas de profesión.

Ingeniería

Naturaleza de los productos Ciencias de donde asume algunas
que se ocupa
teorías

Ingeniería Industrial

Industria

Ingeniería
Alimentos

de Alimentos

Física (Mecánica), Química, Ciencias
Administrativas, ..
Química, Biología, ...

Ingeniería
Agroindustrial

AgroIndustria

Física (Mecánica), Química, ...

Ingeniería Petrolera

Petróleo

Física (Mecánica), Química, ...

Ingeniería
Económica

Finanzas

Economía, Matemática Financiera, ...

Tabla 1. Ejemplos de Ingenierías denominadas de acuerdo al producto que
desarrollan

3 La Ingeniería como Tecnología
La Ingeniería, aunque aplica conocimientos de diversas disciplinas, no se limita
solo a eso. En realidad, la Ingeniería desarrolla una variedad de nuevos
conocimientos en torno a la aplicación de estos conocimientos el desarrollo de las
prácticas constructivas propias de ella. La Ingeniería desarrolla una serie de
conocimientos tecnológicos.
Aunque en la vida cotidiana parecemos referirnos a la Tecnología solo como una
conjunto de herramientas o dispositivos. El origen del término esta referido al
estudio de las técnicas. Y es más acertado definir la tecnología como un área de de
conocimientos, que parte de necesidades y problemas humanos, que se vale del
diseño para el desarrollo de soluciones y que se concreta en la producción de
instrumentos, modelos y procedimientos.
Considerando las formas del conocimiento, podríamos referirnos entonces a tres
formas diferentes de conocimiento:

Conocimiento Científico

Conocimiento Técnico

Conocimiento Tecnológico

El conocimiento Científico, surgido de las disciplinas científicas, típicamente
brinda explicaciones sobre los fenómenos del mundo, incluyendo fenómenos
naturales, sociales y culturales, entre otros.
El conocimiento Técnico, típicamente relacionado los artesanos y/o empleados,
establecen una serie de conocimientos necesarios para el desarrollo de una serie de

actividades. Típicamente relacionado con la experiencia y el conocimiento
empírico de varias generaciones en la construcción o desarrollo de prácticas
específicas.
El conocimiento Tecnológico, surgido del estudio y reflexión sobre el
conocimiento técnico, que plantea nuevas y mejores formas de desarrollar esas
prácticas y que emplea para ello todo el conocimiento científico y disciplinar a su
alcance.
Durante el siglo XVI, cuando este tipo de diferenciaciones se empezaron a gestar, y
cuando se empezó a privilegiar el conocimiento científico sobre las otras formas de
conocimiento, existían diferencias muy marcadas entre el conocimiento científico y
el conocimiento tecnológico. En esa época, el conocimiento tecnológico surgió a
partir de la compilación y revisión de las técnicas empleadas por los artesanos con
el fin de organizar programas de enseñanza e instrucción.
Durante el siglo XX, muchas de estas divisiones fueron tornándose cada vez más
difusas, mostrando como el conocimiento tecnológico podía realizar
mejoramientos sobre las técnicas empleando el conocimiento científico y de otras
disciplinas. “La Tecnología, como fenómeno cultural, es el conjunto de
conocimientos que ha hecho posible la transformación de la naturaleza por el
hombre y que son susceptibles de ser estudiados, comprendidos y mejorados por
las generaciones presentes y futuras.”[13]
La Ingeniería es una de las manifestaciones actuales más importantes de la
Tecnología, como un campo de conocimiento que aborda el estudio de las técnicas
de construcción de determinados bienes y servicios, y que propone mejoras a los
mismos desde perspectivas y teorías de diversa naturaleza.
La Ingeniería desarrolla una serie de nuevos conocimientos en torno al desarrollo
de los productos de los que se ocupan, los métodos para su construcción y la forma
como se desarrollan estos en la vida en real, en empresas que se dedican a construir
esos productos a nivel industrial.3

4 La Ingeniería de Software como Profesión Tecnológica
“Los ingenieros no celebran hasta que ellos puedan caminar sobre el
puente completado, sosteniendo a su hijo en sus manos.”
-- Richard Guisselquist.
Fritz Bauer estableció una de las primeras definiciones de ingeniería de software en
1969: “Ingeniería de Software es el establecimiento y uso de principios robustos de
3

Lo más natural es pensar que la Investigación en Ingeniería debería ocuparse de los
métodos para la especificación, planeación, construcción y mantenimiento de los productos
de los que se ocupa, y no de abordar teorías explicativas sobre las cuales basa su labor.

ingeniería, orientados a obtener software que sea fiable y funcione de manera
eficiente sobre máquinas reales”.[11]
Sin embargo, a partir de ese momento, una gran variedad de nuevas definición
surgieron, generando de fondo una dualidad sobre el término. Mientras algunos
autores conciben a la Ingeniería de Software como una división de la Ingeniería de
Sistemas [1], otros como una división de las Ciencias de la Computación [2], y
otros como una profesión y una ciencia a la vez [9], originando una variedad de
nociones sobre lo que ella misma debería ser, sobre el tipo de conocimiento que
debería abordar y sobre los métodos de investigación que debería usar.
Concebida como una profesión tecnológica, la Ingeniería de Software posee las
siguientes características:

Su campo de conocimiento no se da por la definición de un objeto de
estudio, sino por la convergencia, debate y cooperación de diversas
disciplinas en torno al desarrollo de una práctica propia. Las diferentes
disciplinas aportan elementos que permiten modelar y analizar los
problemas, y diseñar y probar las soluciones que desea abordar la
Ingeniería.

La Ingeniería de Software apropia los saberes aportados por disciplinas
como las Ciencias de la Computación, la Lógica, la Matemática, la
Administración y las Ciencias Humanas, entre otras, para el análisis,
diseño e implementación a nivel industrial de productos de Software4.

Las comunidades académicas y profesionales de la ingeniería no surgen
solo a partir de un objeto disciplinar sino también de las relaciones con
usuarios concretos que demandan servicios específicos. Desde este punto
de vista, las comunidades profesionales en la ingeniería de sistemas buscan
responder a las necesidades de sistemas de información que les permitan a
las organizaciones administrar y operar de una forma eficiente.

La Ingeniería de Software, como tecnología y fenómeno cultural5 en Colombia,
involucra un campo de conocimiento sobre los procesos de construcción de
software, sobre los métodos de articulación de personas, procesos y recursos
tecnológicos en pos de la producción, aseguramiento de calidad y comercialización
de productos de software, y sobre aquellos que involucran la creación y
perfeccionamiento de herramientas y tecnofactos que permiten mejorar la
eficiencia de esos procesos.

4

Comprender que la Ingeniería de Software no se basa única y exclusivamente en teorías
de las Ciencias de la Computación puede ser clave para entender que la una no es una
subdivisión de la otra.
5
“La Tecnología debe asumirse como hecho cultural, que se inserta en las estructuras
sociales para producir en ellas cambios que a la postre le pueden ser beneficiosos o
contraproducentes según las circunstancias.”[13]

Este tipo de definición, no parece ser muy diferente a la noción de la misma que se
tienen en otros países. Finklestein y Krammer, por ejemplo, plantean que “La
Ingeniería de Software es la rama de la Ingeniería de Sistemas concerniente al
desarrollo de grandes y complejos sistemas intensivos en software, enfocándose en
los objetivos, los servicios que debe proveer y las restricciones del sistema, la
especificación precisa del sistema y su comportamiento, y la implementación de
esas especificaciones; las actividades requeridas para asegurar el cumplimiento de
tales especificaciones, la evolución de tales sistemas a través del tiempo. También
se ocupa de los procesos, métodos y herramientas para el desarrollo de estos
sistemas intensivos en software de forma económica y a tiempo”.[1]
La Ingeniería de Software es una profesión de naturaleza tecnológica que se enfoca
en la solución de problemas relacionados con la construcción a nivel industrial de
productos de software de calidad. El conocimiento que se genera en su interior gira
en torno al análisis, diseño e implementación de este tipo de soluciones.

5 El conocimiento en la Ingeniería de Softwar e
“La Ingeniería de Software es a menudo tratada como una rama de las
ciencias de la computación. Esto es como entender a la Ingeniería
Química como una rama de la Química. Se necesitan tanto a los
Químicos como a los Ingenieros Químicos pero son muy diferentes. Los
Químicos son científicos; Los ingenieros Químicos son ingenieros. La
Ingeniería de Software y las Ciencias de la Computación tienen la
misma relación.”
-- David Lorge Parnas
La Ingeniería de Software no plantea sus conocimientos en torno a un objeto
disciplinar, sino al desarrollo de su práctica profesional y a la tecnología propia del
desarrollo de software. Debido a su propia naturaleza, la construcción del
conocimiento corresponde a un proceso de investigación tecnológica.
La investigación tecnológica en la ingeniería presenta una serie de características
que la vinculan en forma natural con la innovación tecnológica, lo cual indica que
las instancias de promoción inicial de los proyectos de investigación y la
evaluación de la investigación tecnológica pueden ser utilizadas como un
instrumento para fomentar la innovación.
Con innovación tecnológica se designa la incorporación del conocimiento
científico y tecnológico, propio o ajeno, con el objeto de crear o modificar un
proceso productivo, un tecnofacto, una máquina para cumplir un fin valioso para
una sociedad.
Con investigación tecnológica en la ingeniería se designa un ámbito de producción
de conocimiento tecnológico validado, que incluye tanto el producto cognitivo

(teorías, técnicas, tecnologías, maquinarias, patentes, etc.) como las actividades que
desarrollan los ingenieros para producir y validar dichos productos y
conocimientos.
Los procesos de construcción en la ingeniería se soportan en una estructura
cognitiva compleja que incluye asociaciones conceptuales de alto nivel en un
determinado campo, por lo tanto cada fase de este proceso se deriva de un cuerpo
teórico que guían la producción a partir de la investigación, la cual ayuda a
movilizar procesos mentales para efectos de dar respuestas adecuadas a las
necesidades y demandas del medio a partir de considerar el texto y contexto como
elementos claves que aluden a la pertinencia de las soluciones en relación con la
problemática planteada.
La ingeniería identifica el diseño como algo propio de la profesión y a la habilidad
de diseñar como de suma importancia para la ejercicio de la misma. “El diseño es
una región epistemológica en donde lo teórico se transforma en materialidad. Este
hace las veces de un operador que transmuta la abstracción en concreción”. [14]
Se deduce entonces que el diseño en tecnología de la información, es un proceso
complejo e innovador que transforma lo abstracto en concreto, como la
prefiguración intelectiva de lo concreto a partir del signo.
Además se destaca el respeto a los procesos de reflexión y operación inherentes a
la práxis del saber tecnológico: el proceso social, el proceso tecnológico y el
proceso técnico.[15]
El proceso social comprende las actividades y relaciones que suceden al interior de
la organización, todas ellas gobernadas por principios de acción económicas,
políticas y axiológicas.
El proceso tecnológico como proceso intelectivo, se refiere a la apropiación y
construcción de los saberes que, a partir de su articulación interna viabilizan la
concepción y el diseño del tecnofacto.
El proceso técnico, comprendido como proceso operacional respecto a la
concreción del prototipo, se entiende como la materialidad óptima del diseño hecha
herramienta de trabajo y como el espacio del quehacer experimental del tecnólogo.

5.1 La Aproximación General de Ingeniería
La Ingeniería, en general, trata de la generación de productos funcionales,
confiables, y económicos. Productos que operan de acuerdo a las especificaciones
o expectativas establecidas por los clientes.
Para lograr la generación de tales productos, la ingeniería utiliza una aproximación
diferente a las de otras disciplinas. Los procesos de generación de productos están
basados en principios científicos que permiten garantizar de antemano la
funcionalidad, confiabilidad y economía de los productos.

La aproximación de ingeniería se centra en la utilización de modelos abstractos
para el proceso de construcción de soluciones. 6

....
El problema
(mundo real)

modelos
abstractos

El producto
(mundo real)

El método

Figura 1. Esquema de la Aproximación de Ingeniería.
El proceso de generación del producto parte de la comprensión del problema en el
mundo real. 7 Para su comprensión, el ingeniero establece modelos abstractos que
le permitan comprender y analizar el problema. Estos modelos abstractos pueden
ser de diversa naturaleza: modelos matemáticos, modelos estadísticos, modelos
físicos, modelos químicos, modelos gráficos de los pasos de un proceso, entre
otros.
Cada uno de los modelos que se generan, es transformado de manera rigurosa en
otros modelos. Así modelos obtenidos de la realidad son transformados en modelos
más concisos y abstractos que buscan comprender a cabalidad el problema y
plantearle soluciones en el plano de los modelos.
Los modelos que inicialmente permitieron comprender el problema, son
transformados por el ingeniero, en modelos que plantean la solución y establecen
los criterios para implementarla en el mundo real. Los modelos de la solución
permiten probar la solución en el plano de los modelos, sin recurrir a construir

6

7

Definir el proceso en función de modelos permite involucrar disciplinas como la
Ingeniería de Software e Industrial, en donde algunos métodos de desarrollo de productos
no se centran en las “ciencias tradicionales”.
En muchas ocasiones el problema del mundo real ya ha sido identificado y especificado
claramente por otros profesionales. Ejemplos pueden ser los esquemas arquitectónicos
para un ingeniero civil, la definición de productos que presentan diseñadores a los
ingenieros, etc.

soluciones falibles.8 El ingeniero construye, finalmente, la solución en el mundo
real de acuerdo a los modelos de solución que definió previamente.
En ingeniería se llama método al conjunto de modelos y transformaciones que
permiten al ingeniero construir soluciones especificas a partir de determinado tipo
de problemas.9
La cientificidad del método se centra en la capacidad de los modelos de
transformarse en otros de manera predecible y sistemática, además de su capacidad
de predecir confiable y verazmente el comportamiento de las soluciones en el
mundo real.
En muchas ocasiones, el método obtenido a nivel experimental, de laboratorio o en
entornos académicos, debe ser adaptado en un proceso, el cual permite la
construcción masiva de productos. De esta forma, un método obtenido en
laboratorio para sintetizar una proteína, producir determinado alimento o construir
determinado aparato electrónicos, debe adaptarse en un proceso que permita la
producción masiva de esos productos en una fábrica o industria.
Una de las virtudes de los procesos, es que pueden ser mejorados continuamente.
Una vez se ha establecido un proceso, la revisión del proceso y de los productos
que genera, permiten establecer cambios continuos sobre el proceso para generar
mejores productos. 10
Las actividades de mejoramiento continuo y de adaptaciones de los procesos de
producción masiva, son también actividades naturales de los ingenieros.
Actividades para las cuales, los ingenieros aplican métodos y modelos de igual
forma como fueron generadas las primeras soluciones.
Es necesario anotar que en muchas ocasiones, los procesos de mejoramiento y
adaptación de los procesos redundan en la generación de nuevos productos, en
ocasiones de naturaleza muy diferente a los inicialmente producidos.

5.2 El conocimiento de la Ingeniería como genera dora de Industria
Una de las contribuciones de los ingenieros se centra en la capacidad de definir y
mejorar al sector industrial. A diferencia del sector artesanal, el sector industrial se

8

Los modelos que emplea un ingeniero civil, por ejemplo, le permiten garantizar la
operación adecuada de un puente (de acuerdo a unas especificaciones) sin requerir a la
construcción de éste. Ejemplos similares pueden hallarse fácilmente en otras ingenierías.
9
Se utiliza la diferenciación entre método y proceso sugerida por Ivar Jacobson en su texto
de “Ingeniería de Software Orientado a Objetos” [25].
10
Esta terminología de procesos y de mejoramiento continuo esta acorde con los procesos
de aseguramiento de calidad y con las ideas de CMM, PSP e ISO9000.

centra en la aplicación de procesos, razón por la cual, la ingeniería juega un papel
muy importante en su quehacer.11
A nivel artesanal, cada uno de los productos es generado por individuos diferentes
con habilidades y conocimientos diferentes. Como resultado de ello, la calidad de
cada uno de los productos, depende de la persona que la elaboró.
A nivel industrial, en donde se realiza una producción masiva de productos, la
calidad de los mismos se centra en el proceso de desarrollo que se lleva a cabo en
ellos. Siguiendo esta idea, la calidad de los productos no se centrará entonces en la
habilidad de las personas, sino en la predictividad, adherencia y calidad del proceso
que los genera.
Probablemente, la virtud de la ingeniería no se centra entonces en la generación de
los productos, sino en la capacidad de generación de procesos de producción de
los mismos. Procesos que deben ser repetibles y rigurosos, que deben permitir
garantizar ciertos niveles de calidad y éxito.12

6 La construcción de conocimiento en Ing eniería
Debido a que el conocimiento de la Ingeniería se centra en los
construcción de determinados productos y servicios, y en los
existentes para adaptar esos métodos en procesos aplicables en
Empresas, ellos se desarrollan a partir de los métodos y procesos de
de esos productos y servicios.

métodos de
mecanismos
Industrias y
construcción

En general, el método que aplica la Ingeniería para la construcción de su
conocimiento tecnológico, es la formalización de las experiencias, la identificación
de las mejores prácticas y la formalización de las heurísticas relacionadas con la
construcción de los productos y servicios de los cuales se ocupa.[16][17].
Esta definición va en contra de la apreciación general de la Ingeniería como la
aplicación de conocimiento científico para la construcción de bienes y servicios.
Sobre este punto es importante recordar que las primeras expresiones de la
Ingeniería surgieron antes de que el conocimiento científico fuera la forma
privilegiada de conocimiento y que el método científico fuese definido. Los
primeros ingenieros, quienes construyeron el acueducto romano, los principales
monumentos de la antigüedad, los carruajes, los molinos de agua, las catapultas y
11

Un caso complejo puede ser la ingeniería civil como generadora de una industria
específica. Los ingenieros civiles permiten consolidar una industria de la construcción,
con niveles de calidad y rendimiento superiores a un sector artesanal del mismo
(compuesto, por ejemplo, de albañiles únicamente).
12
Probablemente una ingeniería civil de excelencia no se halla en una que permita construir
adecuadamente un sólo puente, sino una que permita la construcción continua de puentes
adecuados. Probablemente una buena industria de producción no sea aquella que
identifica o diseña buenos nuevos productos, sino las que establecen procesos adecuados
que le permitan la construcción masiva de productos con niveles adecuados de calidad.

otras obras clásicas de la ingeniería, no pudieron aplicar el conocimiento científico,
simplemente por que tal no existía. En su lugar, aplicaron heurísticas surgidas del
desarrollo empírico de su profesión.[18]
Aunque es claro que las formas más incipientes de la Ingeniería surgieron de estas
heurísticas, es también claro que las formas más evolucionadas de la Ingeniería
basan la construcción de sus conocimientos en una relación muy estrecha entre
ciencia y tecnología, incluso hasta un punto en donde es muy difícil diferenciar la
una de la otra.
Teniendo en cuenta esto, es importante entonces considerar métodos de
construcción de conocimiento que no solo se asemejen a procesos de investigación
científica, sino mejor a procesos de investigación e innovación tecnológica.
En los procesos de innovación tecnológica, lo que se busca es el mejoramiento de
un producto y/o un proceso, aplicando para ello todo el conocimiento científico,
técnico y heurístico a su disposición.
Una de los principales cuestionamientos a estas formas de investigación (basadas
en heurísticas) en Ingeniería de Software se centran en las formas de validación de
sus resultados. Diagnósticos realizados en el pasado por Basili, Taschi y Zelkowitz
[7][8] han mostrado que gran parte del conocimiento propio de la Ingeniería de
Software no parece ofrecer mecanismos de validación. Pareciendo para algunos,
que muchos de ellos son meras especulaciones sobre unas pocas experiencias
exitosas. Situación por la cual se han propuesto métodos de investigación más
experimentales, en donde los componentes de verificación experimental de las
teorías son de gran importancia para la aceptación de los resultados de las mismas.
En realidad, hay que reconocer que el impacto de las investigaciones en las
prácticas de las empresas no ha sido muy alto, en parte debido a la falta de
evidencia sustancial sobre el valor derivable de la aplicación de esos nuevos
conocimientos [1]. Situación que ha generado una serie de trabajos sobre la
“validez” de los resultados, que parecen conducir a la solución “probada” de
aplicar los métodos científicos tradicionales.
El asunto aquí es que los procesos de validación de los resultados de las
investigaciones se pueden generar, aún sin emplear los métodos científicos
experimentales tradicionales. Hoy existe una tendencia hacia la aceptación de la
diversidad metodológica, y se reconocen los mecanismos de validación propios de
las investigaciones cualitativas.
Los métodos de investigación de ingeniería de software empírica y basados en
métodos cualitativos, parecen más adecuados para la Ingeniería de Software por
varias razones:

Las empresas de desarrollo de software, entorno de trabajo de los
proyectos de ingeniería de software, normalmente estarían dispuestos a
abordar estudios experimentales muy complejos sobre los procesos que se

llevan en su interior13. Normalmente, podrían recopilar información
empírica que luego pudiese ser analizada o formalizada.

13

Las investigaciones que se llevan a cabo en condiciones controladas
(laboratorios, universidades, etc.) conducen a métodos que no
necesariamente aplican a las diferentes empresas o a los diferentes
proyectos. El conocimiento en torno a los procesos de desarrollo de
software se gesta en las empresas de desarrollo de software y típicamente
no se pueden reproducir en el laboratorio.14

En la actualidad no tenemos modelos sobre los procesos de desarrollo de
software que cuenten con un nivel de científicidad tal que nos permita
hacer experimentación a partir de la simulación. Aunque se ha probado la
aplicabilidad de modelos de simulación en ambientes de enseñanzaaprendizaje, su utilidad actual en el desarrollo de investigaciones
experimentales parece muy limitada.

Considerando los problemas de desarrollar las investigaciones mediante
simulación, el ambiente más propicio son las empresas de desarrollo de
software o los ámbitos de aplicación real de los conocimientos por parte de
los Ingenieros de Software.

Las investigaciones pueden concentrarse en experiencias exitosas (o
precisamente en las que no tienen éxito), con el fin de reconocer nuevas y
mejores formas de trabajo, pero no puede suponer que son necesariamente
validas para todo tipo de situación o empresa [6]. Los aspectos
concernientes a la validación son necesarios para lograr una mayor
madurez de la profesión [1].

La validación de los resultados de las investigaciones son posible a través
de métodos empíricos y cualitativos. El hecho de no usar esquemas
experimentales cuantitativos clásicos, no es una contravención contra la
intención de validar los resultados.[22]

El hecho que los Ingenieros de Software deban trabajar con algoritmos,
modelos cuantitativos y esquemas de ciencias de la computación, no es una
razón suficiente para creer que deban emplear los mismos métodos de
investigación que pueden usarse en esas áreas. No debe confundirse la
Ingeniería de Software con las ciencias de la Computación. [2][23][24]

Por ejemplo, una investigación con un diseño experimental o cuasi-experimental, en
donde se desarrollara el mismo proyecto empleando diferentes procesos, incluyendo el
proceso sin modificaciones, y que se pudiesen comparar los resultados de los mismos
mediante mecanismos cuantitativos bastante amplios.
14
Anteriormente se mostraron las diferencias entre el método y el proceso, y las diferencias
inherentes a los dos.

7 Una propuesta de Investigación en Ingenier ía de Software
Acorde con esta concepción sobre el conocimiento y sobre las formas de
construcción de conocimiento en Ingeniería, podemos plantear algunas
consideraciones y propuestas sobre las formas de investigación en Ingeniería de
Software.
Consideraciones sobre las investigaciones en Ingeniería de Software:

Las investigaciones deberían desarrollarse en torno a proyectos reales de
desarrollo de software. Aunque los desarrollos al interior de proyectos
definidos por los investigadores o en el desarrollo de las clases, las
condiciones reales de una empresa de desarrollo de software son
difícilmente reproducibles fuera de ella.

La identificación de prácticas al interior de empresas y/o grupos de
desarrollo, puede ser un excelente punto de partida para la definición de
métodos y procesos de desarrollo de software.

La adaptación de métodos teóricos de ingeniería de software a procesos
aplicables en organizaciones de desarrollo de software puede ser esencial
para comprender las particularidades propias de los métodos y su
aplicabilidad real.

El mejoramiento de los procesos de desarrollo de software, a partir de
procesos de diagnóstico y de rediseño de procesos, plantea posibilidades de
creación de nuevos métodos y procedimientos.

La formalización de los nuevos procedimientos y la construcción
herramientas que posibiliten apoyar o automatizar la aplicación de
mismos posibilita mecanismos reales para la verificación empírica de
procedimientos incipientes y para la aplicabilidad real por parte de
profesionales de la ingeniería.

de
los
los
los

Las investigaciones que pueden plantear nuevos conocimientos a que posibiliten el
desarrollo de la Ingeniería de software pueden ser:

Diagnóstico de las prácticas y procedimientos al interior de Empresas de
Desarrollo de Software. Lo cual sugiere de un método diagnóstico (similar
al empleado en algunas investigaciones en el área de la Administración) o
un método cualitativo etnográfico

Establecimiento de las Mejores Prácticas aplicables a los procesos de
Desarrollo de Software. Lo cual sugiere un método etnográfico.

Formalización de las mejores prácticas en métodos organizados de
Desarrollo de Software15. Lo cual sugiere métodos empíricos o
Etnográficos.

Definición de diseños y métodos de diseño para situaciones nuevas y/o en
donde los métodos tradicionales no aplican. Situaciones que demandan
procesos creativos más amplios y que podrían requerir el trabajo
cooperativo con investigadores de ciencias de la computación, pero para el
área de Ingeniería abordaría investigaciones que se enmarcarían en
métodos empíricos.

Estudios sobre la aplicabilidad real del conocimiento disciplinar en casos
reales específicos. Lo cual siguiere métodos diagnósticos, empíricos y
etnográficos.

Procesos de adaptación de Métodos Teóricos a Procesos de Desarrollo de
Software en empresas diferentes a las que dieron origen a los primeros.
Situación que se asemeja más a procesos de Transferencia Tecnológica y
que siguiere métodos empíricos.

7.1 LIDIS: Laboratorio de Investigaciones en Ingen iería de Software
A partir de estas consideraciones, la Facultad de Ingeniería de Sistemas de la
Universidad de San Buenaventura de Cali, ha desarrollado una serie de actividades
y proyectos de investigación al interior de Empresas de Desarrollo de Software que
han culminado con el establecimiento del Laboratorio de Investigaciones en
Ingeniería de Software.
Aunque originalmente las investigaciones del grupo se centraron en el trabajo en
empresas de desarrollo de software grandes y establecidas, con el tiempo las
actividades se fueron concentrando en torno a las empresas de desarrollo pequeñas
y nacientes, típicamente parte de instituciones incubadoras de empresas y parques
tecnológicos.
La experiencia mostró que las empresas grandes tienen características propias de
definición de procesos, cultura organizacional y condiciones de burocracia que
dificultan el desarrollo de los procesos de innovación y el desarrollo de las
investigaciones. Las empresas pequeñas, por otro lado, suelen tener muchos más
problemas técnicos relacionados con el proceso de desarrollo, la construcción de
productos genéricos y los procesos de mantenimiento y soporte. Generando

15

Ejemplos de procesos de formalización de las mejores prácticas pueden encontrarse en
los esquemas de patrones de diseño [19] que han tenido gran aceptación entre los
Ingenieros de Software desde 1994 o la definición del Proceso Unificado de Modelamiento
[20] o el método Fusión [21] a partir de algunas de las mejores prácticas en el desarrollo de
software orientado a Objetos.

condiciones que pueden ser muy favorables para el desarrollo de las
investigaciones.

8 Conclusiones
La Ingeniería de Software no es una ciencia, es una profesión tecnológica, que
aborda la construcción e implementación de un tipo particular de tecnología y que
genera conocimientos relacionados con el desarrollo de estas prácticas.
Debido a su naturaleza, podría ser inapropiado intentar aplicar métodos científicos
experimentales tradicionales para el desarrollo de sus investigaciones. Es posible
que métodos más cualitativos y empíricos sean los más apropiados.
Debido en parte a la naturaleza propia de la profesión, y al nivel actual de los
modelos y de los conocimientos que se tienen sobre los procesos de desarrollo de
software, el lugar más apropiado para el desarrollo de las investigaciones parecen
ser las empresas que desarrollan software, las cuales son el ámbito real de
aplicación de estos conocimientos.
Naturalmente, el desarrollo de estas investigaciones debe realizarse con un rigor
apropiado, buscan mecanismos de verificación que posibilitan determinar la
veracidad y aplicabilidad de sus resultados. Comprendiendo que los métodos no
aplican indistintamente a todo tipo de proyectos u organizaciones y que una mayor
comprensión sobre la forma como ellos aplican en un caso determinado o no es
necesaria.

Bibliografía
[1] Finkelstein, A. Kramer, J. Software Engineering: a roadmap en Finkelstein,
A. (editor) Proceedings of the Conference on The Future of Software
Engineering. ACM Press. 2002
[2] Parnas, D. Software Engineering: An Unconsummed Marriage.
Communications of the ACM. Vol 40. No. 9. Septiembre 1997.
[3] Gisselquist, R. Engineering in Software. Communications of the ACM. Vol.
41. No. 10. Octubre 1998.
[4] Grimson, J. Kluger, H. Software Needs Engineering- a position paper. ICSE.
Limerick. Irlanda. 2000.
[5] Wasserman, A. Towards a discipline of Software Engineering. IEEE Software.
Noviembre 1996.
[6] Brooks Jr., F. No Silver Bullet – Essence and Accidents of Software
Engineering en The Mythical Man-Month. Essays on Software Engineering,
Twentieth Anniversary Edition. Adisson-Wesley. Reading, MA. 1995.
[7] Shaw, M. What Makes Good Research in Software Engineering. ETAPS.
Grenoble, Suiza. 2002.

[8] Basili, V. The experimental paradigm in software engineering en Rombach,
D., Basili, V., Selby, R. Experimental Software Engineering Issues: Critical
Assessment and Future Directives. Proceedings of Dagstuhl-Workshop.
publicado en Lecture Notes in Computer Science #706. Springer-Verlag. 1993.
[9] Hilburn, T. Hirmanpour, I. Khaienoori, S. Turner, R. Qasem, A. Software
Engineering Body of Knowledge. Versión 1.0. Software Engineering Institute.
Carnegie Mellon. 1999.
[10]
Impact Project. Determining the impact of software engineering research
upon practice: Panel Summary. En Proceedings 23rd International Conference
on Software Engineering ICSE 2001 . 2001.
[11]
Naur , P. Randell, B. (editors) Software Engineering: Report of a
conference sponsored by the NATO Science Committee, Garmish, Almania.
Octubre
1968.
NATO.
http://www.cs.ncl.ac.uk/old/people/brian.randell/home.formal/NATO/index.ht
ml
[12]
Pfleeger, S. Albert Einstein and Empirical Software Engineering.
Computer. Octubre 1999.
[13]
Equipo de Tecnología del MEN. Educación en Tecnología: Propuesta para
la Educación Básica. Documento 1. MEN. Bogotá. 1996.
[14]
Bachelard, G. La Formación del Espiritú Científico. Siglo XXI Editores.
México. 1990
[15]
Perez, U. Educación, Tecnología y Desarrollo. Impresión Panamericana.
Bogotá. 1989.
[16]
Koen, B. Definition of the Engineering Method. American Society for
Engineering Education. Washington. 1985.
[17]
Kirck, E. Fundamientos de Ingeniería: Métodos, Conceptos y Resultados.
Limusa. México. 1979.
[18]
Sprague de Camp, L. The Ancient Engineers. Barnes & Noble. New Cork.
1993.
[19]
Gamma, E., Helm, R., Johnson, R., Vlissides, J. Software Design Patterns.
Addison Wesley. 1994.
[20]
Jacobson, I. Booch, G. Rumbaugh, J. The Rational Unified Process.
Addison Wesley. 1995.
[21]
Coleman, D. Arnold, P. Bodoff, S. Dollin, C. Gilchrist, H. Hayes, F.
Jeremaes, P. Object Oriented Development: The Fusion Method. Prentice Hall.
1994.
[22]
Seaman, C., Conradi, R. Qualitative Methods in Software Engineering
Research.
en
la
conferencia
ISERN,
Octubre
2000.
http://csdl.ics.hawaii.edu/isern/slides/seaman.qual.ppt
[23]
ACOFI-ICFES. Actualización y Modernización Curricular en Ingeniería de
Sistemas. ACOFI. Bogotá. Marzo 1996.

[24]
Denning, P. Educating a new Engineer. Comunications ACM. Vol. 35. No.
12. Diciembre 1992.
[25]
Jacobson, I. Object Oriented Software Engineering: A Use Case Driven
Approach. Addison-Wesley. 1992.