Vous êtes sur la page 1sur 4

Ing. USBMed, Vol. 2, No.

2, Jul-Dic 2011

EL DESARROLLO DE SOFTWARE COMO INGENIERA DE SOFTWARE

Scott F. Schaull
Columbia University, NY
scott.schaull@columbia.edu

(Tipo de artculo: REFLEXIN. Recibido el 08/06/2011. Aprobado el 20/09/2011)

RESUMEN
El desarrollo de software puede ser predecible y controlable, econmico y manejable pero, actualmente, los
proyectos software no se suelen ejecutar de esa manera, aunque sea posible lograrlo. En este artculo se trata al
desarrollo de software como una emergente y necesaria Ingeniera de Software y se describe la necesidad de
procesos formativos adecuados desde las universidades para reconocer la prctica del desarrollo de software
como una profesin ingenieril.

Palabras clave
Ingeniera, Ingeniera de Software, Desarrollo de Software.

SOFTWARE DEVELOPMENT CONSIDERED AS SOFTWARE


ENGINEERING
ABSTRACT
Software development can be predictable and controllable, economic and manageable, but at present time
software projects usually are not run that way, although it is possible to achieve it. In this article software
development is approached as an emerging and necessary "Software Engineering", and is described the need of
proper learning processes from universities to recognize software development practice as an engineering
profession.

Keywords
Engineering, Software Engineering, Software Development.

DVELOPPEMENT DE LOGICIEL COMME GNIE LOGICIEL


RSUM
Le dveloppement de logiciel peut tre prvisible et contrlable, conomique et maniable mais, actuellement,
lordinaire est que les projets des logiciels ne se ralisent pas de cette manire, en dpit de cette possibilit. Dans
cet article on aborde le dveloppement de logiciel comme une mergente et ncessaire Gnie logiciel et on
dcrit la ncessit davoir des processus ducationnels appropris aux universits pour reconnaitre la pratique du
dveloppement de logiciel comme une profession dingnierie.

Mots-cls
Gnie, Gnie logiciel, Dveloppement de logiciel.

S. F. Schaull. El desarrollo de software como Ingeniera de Software.


Ing. USBMed, Vol. 2, No. 2, pp. 6-9. ISSN: 2027-5846. Jul-Dic, 2011. 6
Ing. USBMed, Vol. 2, No. 2, Jul-Dic 2011

1. INTRODUCCIN 3. INGENIERA vs. CIENCIA


Cuando entrevisto a candidatos para puestos de Con slo un 40% de los desarrolladores de software
trabajo en programacin, una de mis preguntas con ttulos en Ciencias Computacionales y
favoritas es: "Cmo describira su enfoque del prcticamente ninguno en Ingeniera de Software, no
desarrollo de software?" Yo les presento ejemplos debera sorprendernos encontrar personas
como el de carpintero, el bombero, el arquitecto, el confundidas acerca de la diferencia entre Ingeniera de
artista, el escritor, el explorador, el cientfico y el Software y Ciencias Computacionales. La distincin
arquelogo y los invito a que construyan sus propias entre estos campos es la misma que en otros campos
respuestas. Algunos candidatos tratan de adivinar lo [2]. Los cientficos aprenden lo que es verdadero,
que quiero or y usualmente me dicen que se ven a s cmo probar hiptesis y cmo ampliar el conocimiento
mismos como cientficos. Los programadores con en su campo; los Ingenieros aprenden lo que es
amplia experiencia me dicen que se ven como verdadero, lo que es til y cmo aplicar el
soldados o como miembros de un equipo SWAT. Mi conocimiento bien comprendido para resolver
respuesta favorita provino de un candidato que problemas prcticos. Los cientficos deben estar
respondi: "Durante el diseo del software, soy un actualizados con las ltimas investigaciones; los
arquitecto; cuando estoy diseando la interfaz de ingenieros deben estar familiarizados con el
usuario, soy un artista; durante la construccin, soy un conocimiento que ha demostrado ser fiable y eficaz.
artesano; y durante las pruebas unitarias soy, como Cuando el cientfico hace ciencia puede darse el lujo
mnimo, un hijo de puta!". de ser especfico y especializado; cuando se hace
ingeniera es necesario tener un amplio conocimiento
Me gustara plantear las siguientes preguntas porque de todos los factores que afectan al producto que se
constituyen una cuestin fundamental en nuestro disea. Los cientficos no tienen que ser regulados,
campo de investigacin: Cul es la mejor manera de porque ellos deben rendirles cuentas a otros
pensar acerca del desarrollo de software? Es cientficos; los ingenieros tienen que ser regulados,
ciencia? Es arte? Es un oficio? Es algo porque ellos tienen que rendirles cuentas a la
completamente distinto? Preguntas a las que trato de sociedad. Una formacin cientfica de pregrado
responder en el resto del contenido de este trabajo. prepara a los estudiantes para continuar sus estudios;
una formacin en ingeniera de pregrado prepara a los
2. ES vs. DEBERA estudiantes para su inmediata incorporacin al
En las Ciencias Computacionales tenemos una larga mercado laboral, despus de terminar sus estudios.
tradicin debatiendo acerca de si el desarrollo de
software es arte o ciencia. Hace ms de cuarenta Las universidades otorgan ttulos en Ciencias
aos, Donald Knuth [1] comenz a escribir una serie Computacionales y normalmente esperan que sus
de siete volmenes acerca de esta cuestin. Los egresados se desempeen en puestos de trabajo en
primeros tres volmenes contienen alrededor de 2200 desarrollo de software, en el que iniciarn de inmediato
pginas, lo que sugiere que el total de los siete podra la resolucin de problemas del mundo real. Slo una
ascender a ms de 5000. Si eso es a lo que se parece pequea fraccin de los estudiantes en Ciencias
el arte del desarrollo de software, no estoy seguro Computacionales contina sus estudios de postgrado,
de querer saber a qu se parecer como ciencia! en entornos de investigacin acerca de los nuevos
avances en el estado del conocimiento en el campo
Las personas que defienden al desarrollo de software del software y/o los computadores. Esto pone a los
como arte lo hacen desde el punto de vista de sus estudiantes de Ciencias Computacionales en una tierra
aspectos estticos y argumentan que la ciencia no tecnolgica de nadie. Son llamados cientficos, pero en
permite esta inspiracin y libertad creativa. Las su trabajo realizan funciones que tradicionalmente las
personas que lo defienden como ciencia lo hacen ejecutan los ingenieros, pero sin el beneficio de una
desde el punto de vista de que la mayora de los formacin en ingeniera. El efecto sera ms o menos
programas tiene altas tasas de error y argumentan que el mismo que si se le asignara a un Ph.D. en fsica el
esa baja confiabilidad es una libertad creativa diseo de equipos elctricos para venta comercial. El
intolerable que debe ser condenada. Ambos puntos de fsico puede comprender mejor los principios elctricos
vista son incompletos y ambos hacen la pregunta que los ingenieros con los que est trabajando, pero
equivocada. El desarrollo de software es arte, es su experiencia en construccin de equipos se reduce a
ciencia, o es un oficio como la arqueologa, el derecho, la creacin de prototipos que se utilizan para progresar
la sicologa, la sociologa, la comunicacin social y en el estado del conocimiento en un laboratorio. l no
otras actividades. Es no-profesional en algunos tiene experiencia ni est capacitado en el diseo de los
sectores y profesional en otros. Tiene que ver con equipos robustos y econmicos que ofrecen
muchas y diferentes cosas, ya que existen muchas soluciones prcticas en entornos reales. Es de esperar
personas diferentes desarrollando. Pero la pregunta que el equipo diseado por el Ph.D. funcione, pero tal
correcta no es "Qu es actualmente el desarrollo de vez carezca de la solidez que haga posible su
software?" sino "Qu debera ser el desarrollo utilizacin por fuera del ambiente seguro de un
profesional de software? En mi opinin, la respuesta a laboratorio; o el equipo puede usar materiales que son
esa pregunta es clara: El desarrollo profesional de aceptables para un prototipo, pero que son un
software debera ser ingeniera. Actualmente es as? extravagante derroche cuando las unidades se
No, pero debera serlo? Sin lugar a dudas que S. fabrican por miles.

7
Ing. USBMed, Vol. 2, No. 2, Jul-Dic 2011

Situaciones parecidas a este simple ejemplo de fsica demasiado dependiente de las cambiantes
se producen por montones en lo que tiene que ver con condiciones del mercado como para darse el lujo de
el software. Cuando los empleados, formados como invertir tiempo en ingeniera. Estas objeciones se
cientficos computacionales, comienzan a trabajar en basan en una idea estrecha y errnea acerca de la
sistemas de produccin, a menudo disean y ingeniera. La ingeniera es la aplicacin de principios
construyen software que es demasiado frgil para usar cientficos con fines prcticos y, si no se hace as, es
en produccin, o que es inseguro. Se concentran mala ingeniera. Tratar de aplicar mtodos formales a
estrecha y profundamente en consideraciones de todos los proyectos de software es tan mala idea como
menor importancia y excluyen otros factores que son tratar de aplicar code-and-fix para desarrollar todos los
ms importantes. Pueden invertir das ajustando a proyectos.
mano un algoritmo de ordenacin en lugar de horas
usando una librera de cdigo o copiando un algoritmo Tratar al desarrollo de software como ingeniera
adecuado de un libro. El tpico graduado de Ciencias clarifica la idea de que para diferentes proyectos son
Computacionales suele necesitar varios aos de apropiados diferentes objetivos de desarrollo. Cuando
entrenamiento en el puesto de trabajo para acumular se disea un edificio, los materiales de construccin
suficiente conocimiento prctico para, mnimamente, deben ser adecuados para el propsito de la
desarrollar software de produccin satisfactorio. construccin. Es posible construir una bodega amplia
para guardar vehculos agrcolas con un metal delgado
La falta de un desarrollo profesional no es culpa slo y sin hoja de aislamiento, pero una casa no se
de los desarrolladores de software. El mundo del construira de la misma manera; pero, a pesar de que
software se ha convertido en vctima de su propio la casa sea resistente y clida, de ninguna manera nos
xito. El mercado laboral del software ha estado referimos a la bodega como de inferior calidad que la
creciendo ms rpido que la infraestructura formativa casa. La bodega se dise adecuadamente para un fin
necesaria para apoyarlo, por lo que ms de la mitad de previsto y, si hubiera sido construida de la misma
las personas que ocupan puestos en desarrollo de manera que la casa, incluso podra criticarse por tener
software han sido formados en otros campos "ms ingeniera de la necesaria" un juicio segn el
relacionados. Los empleadores no les pueden exigir a cual los diseadores despilfarran recursos en las
estas personas que, en sus horas libres, obtengan un construcciones y que por lo tanto no aplican la
ttulo equivalente a un pregrado en ingeniera. Incluso ingeniera necesaria.
si pudieran, la mayor parte de los cursos disponibles
son para Ciencias Computacionales, no para En software, un proyecto bien ejecutado se gestiona
Ingeniera de Software. La infraestructura formativa se para que cumpla alguno de los siguientes objetivos del
ha quedado a la zaga de las necesidades de la producto:
industria.
Defectos mnimos
4. MS QUE UNA MODA Mxima satisfaccin de usuarios
Algunas personas piensan que "Ingeniera de Tiempo de respuesta mnimo
Software" es slo una palabra de moda que significa lo Buena mantenibilidad
mismo que "programacin de computadores". Es cierto Buena extensibilidad
que la Ingeniera de Software ha sido usurpada, pero Robustez
un trmino puede ser objeto de abuso y todava tener Alta correctitud
un significado legtimo. La definicin del diccionario
para "Ingeniera" es: Aplicacin de principios Cada equipo del proyecto software debe definir
cientficos y matemticos con fines prcticos, y es lo explcitamente la importancia relativa de cada
que la mayora de los programadores tratan de hacer. caracterstica; luego, el equipo completo, debe
Los ingenieros de software aplicamos algoritmos conducir el proyecto de forma que logre sus objetivos.
desarrollados cientficamente y definidos
matemticamente, mtodos de diseo funcional, Los proyectos software son diferentes de los proyectos
mtodos de aseguramiento de calidad y otras prcticas de ingeniera que utilizan materiales fsicos. En otro
para desarrollar productos software y servicios [3]. tipo de ingeniera, el costo de los materiales puede
Como David Parnas [4] seala, en otros campos llegar al 50% o ms del costo total del proyecto.
tcnicos de la profesin ingenieril se inventaron y Algunas empresas de ingeniera reportan que
asignaron personeras jurdicas y certificaciones para consideran automticamente como de alto riego a los
que sus clientes conocieran que estaban calificados proyectos cuya mano de obra constituye ms del 50%
para construir productos tcnicos. Los clientes del de su costo [5]. En un proyecto tpico de software, los
software no se merecen menos. costos de mano de obra pueden llegar casi al 100%
del costo total. La mayora de proyectos de ingeniera
Algunas personas piensan que tratar como ingeniera se centran en optimizar los objetivos del producto y los
al desarrollo de software significa que todos tendremos costos de diseo son relativamente insignificantes.
que usar mtodos formales para escribir programas Debido a que los costos de mano de obra constituyen
como pruebas matemticas. El sentido y la experiencia gran parte del total de los costos del ciclo de vida del
comn nos dice que eso es demasiado para muchos software, los proyectos software necesitan enfocarse
proyectos. Otros objetan que el software comercial es ms en optimizar los objetivos del proyecto que lo que

8
Ing. USBMed, Vol. 2, No. 2, Jul-Dic 2011

hacen otros tipos de ingenieras. Por lo tanto, adems 5. CONCLUSIONES


de trabajar en pro de los objetivos del producto, un El desarrollo de software, como se practica
equipo de software tambin debe trabajar para lograr comnmente hoy en da, no se parece mucho a
alguno de los siguientes objetivos del proyecto: ingeniera, pero podra lograrse. Una vez que dejemos
de hacer la pregunta equivocada de "Qu es
Calendario corto actualmente el desarrollo de software?" y empecemos
Fecha de entrega predecible a hacer la pregunta correcta de "El desarrollo de
Bajo costo software debera ser ingeniera?" podremos empezar a
Equipo pequeo responder las preguntas realmente interesantes: Cul
Flexibilidad para ejecutar los proyectos aunque los es el cuerpo base de conocimiento de la Ingeniera de
requisitos cambien Software? Qu necesitan hacer los desarrolladores
profesionales de software antes de que puedan utilizar
Cada proyecto software debe encontrar un equilibrio ese conocimiento? Qu tanta es la recuperacin de la
entre los diferentes objetivos del proyecto y los del inversin desde la prctica de desarrollo de software
producto. No queremos pagar US$5000 por un como una disciplina de ingeniera? Cules son las
procesador de texto, ni queremos que se bloquee cada normas de conducta profesional apropiadas para los
15 minutos. desarrolladores de software? Para las organizaciones
de software? Se debe reglamentar a los
En cules de estas caractersticas especficas del desarrolladores de software? Si es as, en qu
producto y del proyecto hace hincapi un equipo de medida? Y, tal vez la pregunta ms interesante de
trabajo para determinar si un proyecto es o no todas: Cmo ser la industria del software despus
verdadera "Ingeniera de Software"? Algunos que todas estas cuestiones hayan sido resueltas?
proyectos necesitan producir software con defectos
mnimos y correctitud casi perfecta software para REFERENCIAS
equipos mdicos, aviacin, viajes espaciales y as
sucesivamente. Muchas personas estaran de acuerdo [1] D. Knuth. The Art of Computer Programming: Volumes
en que estos proyectos son un dominio apropiado para 1-3. USA: Addison-Wesley Professional. 1998.
la Ingeniera de Software a gran escala. Otros [2] D. L. Parnas. Software Engineering Programs Are Not
proyectos necesitan entregar su software con una Computer Science Programs. IEEE Software, Vol. 16,
fiabilidad adecuada, pero con bajos costos y No 6, pp. 1-16. 1999.
calendarios cortos. Pertenecen estos proyectos al [3] E. Serna M. (2010). Mtodos Formales e Ingeniera de
dominio de la Ingeniera de Software? Una definicin Software. Revista Virtual Universidad Catlica del Norte,
No. 30, pp. 1-20.
informal de ingeniera es "hacer con un centavo lo que [4] D. L. Parnas. Software Engineering: An Unconsummated
cualquier persona puede hacer con un dlar. Muchos Marriage. Communications of the ACM. Vol. 40, No. 9,
de los actuales programadores de software estn pp. 128. 1997.
haciendo con un dlar lo que cualquier buen ingeniero [5] R. Baines. Across Disciplines: Risk, Design, Method,
de software puede hacer con un centavo. El desarrollo Process, and Tools. IEEE Software, Vol. 15, No. 4, pp.
econmico tambin es dominio de la Ingeniera de 61-64. 1998.
Software.

La actual dependencia generalizada del desarrollo


code-and-fix y el exceso en costos y calendario que
implica, no es el resultado de una estimacin de la
Ingeniera de Software, sino de poca formacin y
entrenamiento en las prcticas de la Ingeniera de
Software.

Vous aimerez peut-être aussi