Logo Studenta

Metodologia para a Assimilação de Engenharia de Software no México

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO TECNOLOGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY 
CAMPUS ESTADO DE MEXICO 
METODOLOGIA PARA LA ASIMILACION DE 
INGENIERIA DE SOFTWARE EN MEXICO 
TESIS QUE PRESENTA 
LUIS HUMBERTO CRUZ AGUILAR 
MAESTRIA EN SISTEMAS DE INFORMACION 
 
ENERO, 1999 
INSTITUTO TECNOLOGICO Y DE ESTUDIOS SUPERIORES DE 
MONTERREY 
CAMPUS ESTADO DE MEXICO 
METODOLOGIA PARA LA ASIMILACION DE 
INGENIERIA DE SOFTWARE EN MEXICO 
TESIS QUE PRESENTA 
LUIS HUMBERTO CRUZ AGUILAR 
MAESTRIA EN SISTEMAS DE INFORMACION 
 
ENERO, 1999 
INDICE 
INTRODUCCION 7 
CAPITULO l. INGENIERIADE SOFTWARE 13 
l ¿ QUE ES INGENIERIADE SOFTWARE? 15 
1.1.1 DEFINICIÓN DE SOFTWARE 15 
1.1.2 DEFINICIÓN DE INGENIBRÍA DE SOFTWARE 17 
1.1.3 SOFTW ~~ DE CALIDAD 18 
1.2 APLICACIONES DE LA INGENIBRÍA DE SOFTWARE 21 
1.3 TECNICAS DE INGENIERIA DE SOFTWARE 22 
1.3.1 TÉCNICAS DE LA FASE DE PLANEACIÓN 23 
1.3 .2 TÉCNICAS DE LA FASE DE ANÁLISIS 24 
1.3.3 TÉCNICAS DE LA FASE DE DISEÑO 24 
1.3.4 TÉCNICAS DE LA FASE DE PROGRAMACIÓN 25 
1.3.5 TÉCNICAS DE LA FASE DE PRUEBAS 26 
1.3.6 TÉCNICAS DE LA FASE DE MANTENIMIENTO 27 
1.4 HERRAMIENTAS DE INGENIBRIA DE SOFTWARE 27 
1.4.1 HERRAMIENTAS PARA AD:MINISTRACIÓN DE PROYECTOS 27 
1.4.2 HERRAMIENTAS PARA ANÁLISIS DE SISTEMAS 28 
1.4.3 HERRAMIENTAS CASE 29 
1.4.4 HERRAMIENTAS PARA PROGRAMACIÓN, PRUEBAS 29 
1.4.5 HERRAMIENTAS PARA CONSTRUCCIÓN DE PROTOTIPOS 30 
CAPITULO 2. LA INGENIERIA DE SOFTWARE EN MÉXICO 33 
2.1 ANTECEDENTES DE APLICACION EN MÉXICO 34 
2.1.1 ANTECEDENTES DE LA INGENIBRÍA DE SOFTWARE 34 
2.1.2 :MERCADO NACIONAL DE BIENES Y SERV. INFORMÁTICOS 36 
2.1.3 :MERCADO DE PROGRAMACIÓN (SOFTWARE) 37 
2.1.4 DEMANDA DE BIENES Y SERVICIOS 39 
2.1.5 FORMACIÓN DE RECURSOS HUMANOS 40 
2.2 CARACTERISTICAS DE LAS EMPRESAS QUE USAN 
INGENIBRIA DE SOFTWARE 
2.3 TECNICAS Y HERRAMIENTAS MAS UTILIZADAS 
2.4 PROBLEMATICADE ASIMILACION 
CAPITULO 3 :METODOLOGIA PARA LA ASIMILACION DE 
INGENIERIA DE SOFTWARE 
3 .1 ESTUDIO DEL AREA DE SISTEMAS 
3 .1.1 INVENTARIO DE HARDWARE Y SOFTWARE 
43 
46 
48 
53 
54 
55 
3.1.2 NIVEL DE PREPARACIÓN Y EXPERIENCIA DEL PERSONAL 56 
3.1.3 TÉCNICAS YHERRAMIENfAS UTILIZADAS ACTUALMENTE 57 
3 .1.4 ORGANIZACIÓN DEL ÁREA DE SISTEMAS 59 
3.2 PLANEACION DEL PROYECTO DE ASIMILACION 62 
3.2.1 DEFINICIÓN DEL OBJETIVO DEL PROYECTO 63 
3.2.2 ACTIVIDADES Y TIEMPO 64 
3.2.3 EQUIPO DE TRABAJO 64 
3.2.4 COSTO DEL PROYECTO 65 
3 .2.5 HARDWARE A UTILIZAR 66 
3.2.6 METODOLOGÍA SELECCIONADA 67 
3.2.7 SELECCIÓN DE HERRAMIENTAS Y TÉCNICAS 68 
3.2.8 APROBACIÓN DEL PROYECTO DE ASIMILACIÓN 70 
3.3 DESARROLLO DEL PROYECTO 71 
3.3.1 CAPACITACIÓN DEL PERSONAL 71 
3.3.2 DESARROLLO DE UNA PRUEBA PILOTO 72 
3.3.3 EJEMPLO DE UNA METODOLOGÍA PARA PRUEBA PILOTO 73 
3.3.3.1 Requerimientos del sistema 75 
3.3.3.2 Diseño 78 
3 .3 .3 .3 Construcción 79 
3 .3 .3 .4 Aceptación 81 
3.3.3.5 Soporte 82 
3.3.4 REGISTRO DE ESTADÍSTICAS DEL PROYECTO 83 
3.4 EV ALUACION DE RESULTADOS 84 
3.4.1 PROCESAMIENTO DE DATOS Y ESTADÍSTICAS 84 
3.4.2 COSTO DEL PRODUCTO 85 
3.4.3 CALIDAD DEL PRODUCTO OBTENIDO 86 
3.4.4 OBJETIVOS INICIALES 86 
3.4.5 PRESENTACIÓN DE RESULTADOS DEL PROYECTO 87 
3.5 IMPLANTACIÓN DE INGENIERÍA DE SOFTWARE 87 
3.5.1 ESTRATEGIA DE IMPLANTACIÓN 88 
3.5.2 CAPACITACIÓN DE TODO EL PERSONAL 89 
3.5.3 COSTO DE LA IMPLANTACIÓN 89 
3.6 SEGUIMIENTO 90 
3.6.1 CONSIDERACIONES TÉCNICAS 90 
3.6.2 CONSIDERACIONES ECONÓMICAS 91 
3.6.3 CONSIDERACIONES DE ORGANIZACIÓN 91 
3.7 CONCLUSION 92 
CAPITULO 4. FUTURO DE LA INGENIERIA DE SOFTWARE EN MÉXICO 95 
4.1 CASE (COMPUTER AIDED SOFTWARE ENGINEERING) 97 
4.1.1 DEFINICIÓN DE CASE 98 
4.1.2 HISTORIA DE CASE 98 
4.1.3 OBJETIVOS DE CASE 99 
4.1.4 BENEFICIOS DE CASE 99 
4.1.5 CASE WORKBENCH 
4.1.6 INTEGRACIÓN DE CASE EN EMPRESAS 
4.2 LENGUAJES DE CUARTA GENERACION (4GL) 
4.2.1 MÓDULOS QUE FORMAN UN 4GL 
4.2.3 USOS DE LOS 4GL 
4.3 REINGENIERIA 
100 
100 
101 
102 
102 
103 
4.3.1 USODEREINGENIERÍAPARARECONSTRUIRSOFTWARE 104 
4.3.2 SERVICIOS DE REINGENIERÍA 105 
4.4 NUEVAS TÉCNICAS DE INGENIERIA DE SOFTWARE 107 
4.5 EL FUTURO DE LA INTEGRACION 107 
CONCLUSIONES Y RECOMENDACIONES 11 O 
ANEXO A. GLOSARIO DE TÉRMINOS 117 
ANEXO B. HERRAMIENTAS CASE 129 
BIBLIOGRAFIA 136 
INTRODUCCION 
Son las cuatro de la tarde en la oficina principal de McMaster Carr Supply Company, con 
sede en Chicago. Una de las cincuenta y dos operadoras con ayuda de una terminal de 
computadora, atiende un pedido por teléfono de un cliente en Pittsburgh, mientras tanto en otra 
estación de trabajo se proporciona información de donde se encuentra el embarque enviado ayer a 
Denver. Otro operador verifica que las órdenes de compra depositadas por una empresa 
automotriz de Detroit en el sistema a través de modem, estén correctas. Al mismo tiempo, en otra 
terminal, el operador atiende a un cliente que define las políticas de recibo y pago a las que se debe 
ajustar McMaster al venderle mercancía. Todo esto se realiza en el mismo instante gracias a una 
red local de computadoras conectadas en algunos casos a las de los clientes principales y un 
poderoso sistema o programa de software desarrollado exclusivamente para cumplir con el más 
mínimo requerimiento. 
Es muy compleja la operación y así es el software por medio del cual se maneja todo. Este 
sistema es una de las armas estratégicas con la que se vale esta comercializadora de productos que 
vende a plantas de manufactura, para ganar más clientes, no sólo en Estados Unidos, sino en todo el 
mundo. Sin las facilidades y flexibilidad que proporciona dicho sistema, la operación cotidiana seria un 
caos. 
Las computadoras rivalizan con la invención de la escritura como una de las más profundas 
innovaciones de la historia humana y están "rehaciendo el mundo a velocidad fenomenal", según 
apuntó el connotado astrónomo y autor, doctor Carl Sagan. [23] 
Por otra parte, la información es una parte importante en la vida de todo ser humano, es 
necesaria en todos los aspectos, tanto en los cotidianos como en los laborales. Si la información es 
oportuna, completa y exacta, mejora la toma de decisiones y proporciona el poder para enfrentar 
cualquier tipo de situación. 
Los sistemas de información existen desde hace siglos, algunos entregaban información 
inexacta, incompleta y sin actualizar. La informática provee nuevos conceptos para mejorar el 
funcionamiento de dichos sistemas, dando respuestas más rápidas y cubriendo mayor número de 
aspectos que los sistemas tradicionales. 
Los datos proporcionan una base de la cual se deriva la información y que sirve para el análisis 
cuantitativo. La información ensamblada por la recopilación y el manejo de los datos, da las bases para 
tomar decisiones. 
8 
Los recursos de la administración, frecuentemente son mencionados como las tres M 
(Manpower, Money y Materials) fuerza laboral, dinero y materiales. La infonnación puede ser 
considerada un cuarto recurso, porque tiene los atributos de un recurso fisico: 
• Tiene valor como el dinero, las materias primas o la mano de obra. 
• Tiene características que penniten su medición, en ténninos de uso, duración y efecto sobre otros 
recursos. 
• Puede ser valorada en términos de recolección, almacenamiento y recuperación. 
• Puede ser presupuestada y controlada. 
• Puede evaluarse en ténninos de costo y valor de uso con fines de administración. 
Uno de los principales problemas que en la actualidad enfrenta el gobierno, la industria y el 
público, es la constante aceleración de la demanda de datos e infonnación. Las nuevas tecnologías de 
computación y comunicaciones penniten la rápida manipulación y almacenamiento masivo de datos. 
Se han publicado numerosos artículos técnicos que pronostican con seguridad el curso del 
desarrollo del hardware en los próximos diez años, sin embargo, sobre el desarrollo de software no se 
encontrará ese tono de confianza en los escasos artículos que lo mencionan. Y tal vez esto se debe al 
hecho de que el desarrollo de software continuará siendo más lento, mucho más costoso y dificil que elhardware, debido a que ahora son más complejas las funciones del software (y continuarán siéndolo) 
que las del hardware. 
El software es una parte muy delicada que en ocasiones no se le da la importancia adecuada, 
debido a la proliferación de equipos de cómputo personales y programas que atacan áreas generales 
(paquetes de productividad como hojas de cálculo y procesadores de texto) y que relativamente pueden 
resolver casi todo problema. 
Pero en un mundo tan cambiante debido a la cantidad infinita de infonnación que se maneja 
actualmente, una empresa del mismo giro que otra, tiene necesidades de sistemas de información 
diametralmente diferentes, porque cada una ataca sus problemas desde distintos puntos de vista. En 
estos casos los paquetes de software ayudan un poco pero no son la solución completa, es necesario 
entonces crear programas que satisfagan las necesidades complejas de operación de cada organización. 
El desarrollo de complejos sistemas especializados es una tarea que requiere de bastantes 
recursos, que no se ejecuta con los mismos procedimientos de veinte años atrás. La evolución 
tecnológica del hardware y el avance en materia de comunicaciones, ha hecho aún más compleja la 
tarea de desarrollar software. Y la tendencia a crear computadoras más poderosas continua, no así por 
parte del software. Por esto se han comenzado a difundir los principios de la Ingeniería de Software con 
ayuda de técnicas y herramientas, que poco a poco se vuelven estándares, para la creación de productos 
de software. 
9 
Desde el inicio de los sistemas de infonnación basados en computadoras, ha surgido gran 
variedad de problemas que con el paso del tiempo se han solucionado. En el presente, algunas 
dificultades se manifiestan en el desarrollo de este tipo de sistemas van desde el usuario confundido que 
no sabe como definir los requerimientos de su sistema hasta la completa carencia de documentación de 
dichos sistemas que impide la labor de mantenimiento. 
Tantos cambios han sacudido la nación en los últimos años que las ondas de choque de los 
temblores de 1985 parecen haberse continuado en el ámbito social, económico, político e industrial, 
hasta 1995 con la peor crisis económica del país. Planes y enfoques visualizados desde hace años, y 
otros más de nueva elaboración, han sido puestos en marcha por la presente administración 
gubernamental. 
La informática ha ganado importancia en México porque se aprecia su utilidad como palanca de 
desarrollo. La denominada Reconversión Industrial incluye en gran medida la modernización a través de 
la computación o los microprocesadores; no hay equipo moderno que no incorpore componentes 
electrónicos en su diseño. La modernización va de la mano de las computadoras y el ejecutivo debe 
tener una actitud de cambio. La información es el combustible de la modernización y el activo más 
valioso de las empresas, sin embargo, el principal factor negativo, es la falta de cultura informática en 
una gran parte de los actuales ejecutivos y funcionarios de las organizaciones. 
Las nuevas generaciones aún en las aulas o en los niveles bajos de las organizaciones habrá de 
vencer esta barrera, sin embargo, cada institución debe pugnar por culturiz.ar a sus ejecutivos y hacerles 
comprender que sin la tecnología informática la modernización no se puede dar. 
La tendencia a la modernización en los negocios descansa en la infonnática y el proceso de 
culturiz.ación es el mayor agente de cambio. En la aurora de la apertura comercial, la empresa que no ha 
logrado ser eficiente actualmente es posible que sea avasallada por la competencia global. La eficiencia 
empieza con el flujo de la información. 
En muchas empresas del país hay islas de automatización, la parte administrativa automatiza sus 
aplicaciones desde hace tiempo, pero aún tiene que reunir la información del resto de la planta por 
medios manuales. 
El piso de manufactura se automatiza a medida que sus equipos se modernizan, éstos cuentan 
ya con componentes electrónicos que controlan los procesos y generan información valiosa, que se 
reúne también manualmente. 
Esto requiere de la elaboración de sistemas de información eficientes y de calidad, desarrollados 
en corto tiempo para inmediatamente ponerlos a disposición de los usuarios, además deben integrarse 
dentro de todos los niveles de la organización. 
La tendencia es hacia un sistema de información global abarcando interfases para permitir 
aprovechar de manera automatizada la información resultante de cada área, de manera que fluya junto 
con el producto sin interrumpir los procesos por la espera de la infonnación manual. F onnar un todo 
con las aplicaciones administrativas, dará al directivo los parámetros necesarios y oportunos para la 
toma de decisiones. 
10 
Ante esto, el profesional de infonnática habrá de convertirse en un hombre de negocios que 
entienda de administración, finanzas, producción y comercialización, por otra parte deberá estar a la 
vanguardia en la evolución tecnológica en hardware con el propósito de contar con los más recientes 
adelantos en la materia, y en cuanto a técnicas de Ingeniería de Software, se requiere que domine y 
maneje las que le permitan hacer desarrollos de sistemas en menor tiempo; todo esto para armar la 
estructura computacional que soporte el esquema descrito. 
Pero aún así, existe rez.ago en el ámbito de desarrollo de programas si este se compara con el 
progreso del equipo de cómputo, aunque en países como Estados Unidos, este atraso es menor 
comparado con el nuestro, debido a que constantemente se generan nuevas técnicas para elaborar 
software. Aquí en México se tienen diferentes formas de atacar el problema, tal vez sin el apoyo de 
instituciones y empresas dedicadas a la investigación que se ofrece en aquel país, pero sí en ocasiones 
con las núsmas herranúentas usadas por los vecinos del norte. 
Los comentarios de personas que ingresan a laborar a áreas de desarrollo o manteninúento de 
sistemas, es casi siempre los núsmos en referencia a la falta de documentación de los programas en 
operación, la carencia de estándares de desarrollo, la poca productividad dentro del medio y sobre todo, 
el nulo interés de utilizar nuevas metodologías que normen la actividad de desarrollo y manteninúento 
de software. El cuadro lo completan los usuarios insatisfechos con sistemas ineficientes, directivos 
molestos por el derroche de recursos y personal del área de sistemas que trabajan como lo apuntó el 
Prof R. M. Graham en la División Científica de la OTAN en 1989: "Hacemos sistemas como los 
hermanos Wright construían aviones. Se arman, se lanzan, se estrellan y empezamos otra vez ". [ 15] 
Estos y otros problemas graves se mantienen desde hace tiempo en empresas mexicanas, que 
no desempeñan correctamente sus actividades por no contar con sistemas y software que proporcionen 
los elementos adecuados para la toma de decisiones. 
Si en todas las empresas de México se realiza un esfuerzo para incorporar a sus organizaciones 
no solo los más avanzado en tecnología sino también los procedinúentos, técnicas y metodologías para 
su explotación, entonces si será nuestro país un protagonista del progreso mundial. Una de las 
principales alternativas de solución para resolver los problemas citados anteriormente, es el uso de 
técnicas y herranúentas de Ingeniería de Software en cualquier tipo de sistema de información para su 
desarrollo y manteninúento, de manera que se aumente la productividad en este aspecto dentro de las 
organizaciones. El profesor Vicente López Trueba en su clase de Tópicos de Computación apuntó: 
"Las empresas mexicanas no podrán estar a la par en cuanto a desarrollo de hardware con sus similares 
americanas, pero en software es diferente, con el ingenio del mexicano y las herranúentas adecuadas se 
puede crear software inclusive que pueda comercializarse a nivel mundial". 
Por todo lo anterior se desarrolló el presente trabajo, con el objetivo de proporcionar a losprofesionales del área de sistemas que están preocupados por aumentar la productividad en el 
desarrollo y manteninúento de software a la medida de sus empresas, buscando eliminar vicios y 
problemas relacionados con tal actividad, fomentando el cambio de mentalidad, disciplinando al 
personal para que use técnicas modernas y herranúentas poderosas. 
11 
Para efectuar este trabajo se emplearon técnicas de investigación documental ( detallada en la 
bibliografia proporcionada al final), entrevistas a personal de diferentes empresas y la observación 
directa. 
El desarrollo del presente estudio se inicia en el capítulo 1, con la definición del término 
Ingeniería de Software, además de sus aplicaciones en el campo del desarrollo de sistemas. También se 
proporciona un resumen de las más importantes técnicas para desarrollo de software conocidas 
aplicables en el ciclo de vida de un sistema, dando ejemplos de algunas, así como una lista y breve 
descripción de las principales herramientas que existen para apoyarlas. 
El capítulo 2 denominado "La Ingeniería de Software en México" trata de la importancia de 
contar con técnicas para desarrollo de sistemas, presenta una breve sembla.nz.a estadística de como ha 
evolucionado el mercado de bienes y servicios informáticos en nuestro país, así como el crecimiento de 
los recursos humanos especializados. Se dan las características administrativas, organiz.acionales y 
ambientales que deben tener las empresas que deseen integrar Ingeniería de Software en sus 
operaciones. Se incluye además los resultados de un estudio llevado a cabo en diez empresas para 
conocer la problemática actual en el área. 
Posteriormente, en el capítulo 3, se cita la situación actual de muchas áreas de sistemas dentro 
de las compañías, dando ejemplos de problemas cotidianos. También se propone una metodología que 
permite, mediante un proyecto piloto, demostrar a la gerencia las ventajas de utilizar técnicas y 
herramientas de Ingeniería de Software para que en este nivel precisamente, se impulse y apoye su uso. 
Enseguida, en el capítulo 4, se describen tres de las más importantes estrategias que impactarán 
decididamente en el uso de Ingeniería de Software en los próximos años, estas son: 
• . CASE ( Computer Aided Software Engineering) o Ingeniería de Software Asistida por 
computadora. 
• 4GL (F ourth Generation Language) o lenguajes de cuarta generación. 
• Reingeniería. 
De cada una se proporcionan dentro de este trabajo, algunas definiciones y formas de operar 
de manera que se conozca un poco más a detalle que son y para que se usan. 
Por último, se incluyen dos anexos. El primero se refiere a un glosario de términos técnicos 
dentro de este trabajo, que permita una mejor referencia de lo tratado en todos los capítulos. El 
segundo anexo contiene una lista de las principales herramientas CASE mencionadas en el capítulo 4, 
así como una breve descripción y nombre de la empresa que las desarrolló. 
Este trabajo es una buena oportunidad para reconocer que se ha comenzado a impulsar la 
Ingeniería de Software en México y que con ayuda de quienes participan día a día en las labores propias 
de desarrollo y mantenimiento de software para las empresas, se asimilará y aplicará mayormente para 
beneficio del país. 
CAPITULO 1 
INGENIERIA DE SOFTWARE 
Durante las tres primeras décadas de la informática, el principal desafio era desarrollar el 
hardware de las computadoras de manera que se redujera el costo de procesamiento y almacenamiento 
de datos. A lo largo de la década de los 80, los avances en microelectrónica han dado como resultado 
una mayor potencia en el cálculo a la vez que una reducción de costos. 
Hoy el problema es diferente. El principal desafio es reducir el costo y mejorar la calidad de las 
soluciones basadas en computadoras, soluciones que se implementan con el software. 
La disciplina de Ingenieria de Software se caracteriza por su habilidad de repetirse y la 
aplicación de herramientas y técnicas para la producción de software de alta calidad. 
Para beneficiarse al utilizar un enfoque formal de desarrollo de software, se debe ser claro al 
desarrollar un sistema. La habilidad de repetición implica que se puede usar el mismo método para 
construir varios sistemas y que otras personas pueden entender y utilizar ese método. La habilidad de 
medición significa que al seguir una serie de pasos se puede medir el mejoramiento mediante 
productividad y calidad. En el libro "Control de proyectos de Software", Tom DeMarco indica: ''No se 
puede controlar lo que no se puede medir". En muchas empresas en México actuaJrnente no se tiene un 
control al 100°/o del desarrollo de productos de software. 
Si se desea una discusión entre quienes trabajan dentro de un área de desarrollo de sistemas, 
profesionales en computación, solo es necesario pedir que definan calidad. Seguro que nadie va estar de 
acuerdo con los demás. Desde tres puntos de vista, se puede definir calidad. Para el directivo o gerente 
de la empresa, el software debe ser económico y permitir que se logren los objetivos institucionales en 
un futuro. El usuario requiere software fácil de usar, eficiente y libre de errores. El encargado de dar 
mantenimiento demanda un producto sencillo de modificar. 
14 
Aunque muchos piensan que siempre han desarrollado productos de software de alta calidad 
para sus usuarios, el hecho es que existen muchos elementos en el mundo real que se deben considerar 
y que requiere que se cambie la forma de construir software. 
Gracias a las actuales computadoras de escritorio, el poder disponible solo en grandes 
macrocomputadoras se ha distribuido a los usuarios del área de sistemas. Pero la experiencia en 
desarrollo de sistemas no ha acompañado al hardware que ha migrado del centro de cómputo. Como 
consecuencia, los departamentos de usuarios que crean y mantienen sus propias aplicaciones están en 
peligro de repetir los mismos errores del pasado. Características como documentación del sistema, 
mantenimiento y confiabilidad deben ser comunes en todo sistema computacional, sin importar si fue 
desarrollado por programadores experimentados o por novatos. 
La pobre calidad no es resultado de falta de información. Los consultores y educadores como 
Larry Constantine, Edward Yourdon y Tom DeMarco, han escrito y enseñado desde hace 15 años 
sobre los problemas resultantes del desarrollo de software. Las organizaciones que han adoptado 
métodos formales han producido software de alta calidad. Pero no fue facil. Las presiones de directivos 
de niveles medios más preocupados por la fecha de entrega, continuamente obstaculizaron los mejores 
esfuerzos de aquellos que trataron de adoptar control de calidad. Los problemas no desaparecieron al 
pasar las aplicaciones de las macrocomputadoras a computadoras de escritorio. El mayor problema es 
que la mayoría de los desarrolladores de software, no importando en el ambiente en que trabajen, no 
han considerado los conceptos de Ingeniería de Software. 
Otro problema que se enfrenta al migrar aplicaciones hacia los usuarios es que se han 
sofisticado y demandan soluciones de software que hagan más. La interfase gráfica de usuario es la más 
visible manifestación del incremento de complejidad. La información se está convirtiendo en un recurso 
estratégico para muchas corporaciones. El acceso oportuno a la información para utiliz.arla 
posteriormente es crucial para las organizaciones que intentan responder rápidamente a los cambios en 
el mercado global. Esta flexibilidad y adaptabilidad no se logra facilrnente sin el conocimiento total de la 
empresa. Frecuentemente los requerimientos de las compañías son tantos y tan diversos que se necesita 
dividir los esfuerzos de desarrollo de sistemas entre varios programadores. La comunicación de los 
requerimientos del usuario y el desarrollo de las interfases del sistema se puede convertir en un 
importante elemento para cumplir con las metas del proyecto. 
Las aplicacionesbasadas en computadoras personales se están volviendo más complejas en la 
medida que sustituyen a sus predecesoras que operaban en macrocomputadoras. Consecuentemente, 
los proyectos de multiprogramación se convertirán en estándar para los desarrolladores de aplicaciones 
en computadoras personales. Y como apuntó Fred Brooks en "El Mítico Hombre-Mes", el agregar 
personal al proyecto puede ser menos productivo, debido al tiempo en que las personas que dominan el 
problema pasan más tiempo explicando a los otros como funciona, en lugar de trabajar en la solución. 
Los principios de Ingeniería de Software, particularmente las herramientas de análisis, pueden ayudar a 
los equipos de programación a minimizar los conflictos de comunicación que existen al llevar a cabo un 
proyecto. 
15 
La potencia de las grandes computadoras de ayer está hoy disponible en un simple circuito 
integrado. Las imponentes capacidades de procesamiento y almacenamiento del hardware moderno 
representan un gran potencial de cálculo. El software es el mecanismo que nos facilita utiliz.ar y explotar 
ese potencial. 
1.1 ¿ QUÉ ES INGENIERÍA DE SOFTWARE? 
En los primeros días de la informática, los sistemas basados en computadoras se desarrollaban 
usando técnicas orientadas al hardware. Los encargados de proyectos se centraban en el hardware, 
debido a que era el factor principal del presupuesto en el desarrollo del sistema. Para controlar los 
costos del hardware se instituyeron controles formales y estándares técnicos. Se exigía un análisis y 
diseño completo antes de que algo se construyera. Se media el proceso para determinar donde podían 
hacerse mejoras. Dicho sencillamente, se aplicaban los controles, métodos y herramientas que 
reconocemos como ingenieria al hardware. Desgraciadamente, el software era solo un añadido. 
En esos días, la programación se veía como un arte. Existían pocos métodos formales y pocas 
personas los usaban. El programador aprendía normalmente su oficio mediante prueba y error. Los 
desafios de la construcción del software de computadoras crearon una mística que pocos ejecutivos se 
preocuparon por penetrar. El mundo del software era virtualmente indisciplinado. 
Hoy, la distribución de costos para el desarrollo de sistemas de información ha cambiado 
dramáticamente. El software, en vez del hardware, es el elemento principal del costo. Los problemas 
como la determinación del tiempo de terminación del software, el alto costo, los errores en el producto 
terminado y la medición del progreso del desarrollo del software, son una manifestación del porque se 
ha adoptado la práctica de la Ingenieria de Software. 
Para definir lo que es lngenieria de Software, es necesario describir que se entiende por 
software. 
1.1.1 DEFINICIÓN DE SOFTWARE. 
Para propósitos del presente trabajo, software son las instrucciones dentro de un programa de 
computadora que cuando se ejecutan realizan cierta función y proporcionan un resultado deseado. 
Para entender mejor lo que es el software (y finalmente la Ingenieria de Software), es 
importante examinar las caracteristicas del software que lo hacen diferente de otras cosas que los 
hombres pueden construir. Cuando se construye el hardware, el proceso creativo humano (análisis, 
diseño, construcción, prueba) se traduce finalmente en una forma fisica. Si se construye una nueva 
computadora, el boceto inicial, diseño formal y prototipo de prueba, evolucionan a un producto fisico 
integrado por circuitos, tarjetas, cables, etc. 
16 
Para comprender mejor como se clasifica el software, es necesario definir en que se utiliz.a. El 
software puede aplicarse en cualquier situación en la que se haya definido previamente un conjunto 
específico de pasos (un algoritmo). La determinación y contenido de la información son factores 
importantes para determinar la naturale:za de una aplicación de software. El contenido se refiere al 
significado y la forma de la información de entrada y salida. Por ejemplo, muchas aplicaciones 
comerciales hacen uso de datos de entrada muy estructurados ( una base de datos) y producen reportes 
en cierto formato. El software que controla una máquina automática (por ejemplo, un control 
numérico) actúa sobre elementos de datos discretos con una estructura limitada y produce órdenes 
individuales de la máquina en rápida sucesión. 
La determinación de la información se refiere a la necesidad de predecir el orden y tiempo de 
llegada de los datos. Un programa de ingeniería acepta datos que están en un orden predefinido, ejecuta 
el algoritmo sin interrupción y produce los datos resultantes en un informe o gráfica. Tales aplicaciones 
están determinadas. Un sistema operativo multiusuario, por otra parte, acepta entradas que tienen un 
contenido variado y se producen en un tiempo arbitrario, ejecuta algoritmos que pueden ser 
interrumpidos por condiciones externas y produce una salida que depende de la función que se solicita y 
del tiempo. Las aplicaciones con estas caracteristicas son indeterminadas. 
Algunas veces es dificil desarrollar una clase específica de software. Conforme crece la 
complejidad, es más dificil establecer de que tipo de software se trata. En este sentido, la Ingenieria de 
Software debe usarse para desarrollar software de cualquier clase. Existen distintas clasificaciones de 
software a saber: 
• SOF1W ARE DE SISTEMAS. Es una colección de programas escritos para servir a otros 
programas. Algún software de sistemas ( como compiladores, editores, utilerias y manejadores de 
archivos) procesa estructuras complejas de la información, aunque determinadas. Otras aplicaciones 
de sistemas (por ejemplo, componentes del sistema operativo, utilerías de manejo de periféricos, 
procesadores de comunicaciones) manejan datos en gran medida indeterminados. 
• SOFTWARE DE TIEMPO REAL. Es el software que mide, analiz.a y controla sucesos del mundo 
real conforme ocurren. El término tiempo real significa que debe responder en un tiempo muy corto 
( en el rango de 1 milisegundo a 1 minuto) y es diferente al tiempo compartido, donde se pueden 
esperar respuestas en más tiempo sin que ocurran desastres. 
• SOFTWARE DE APLICACIONES. El procesamiento de información comercial constituye la 
mayor de las áreas de uso de software. Los sistemas "discretos" (por ejemplo, nómina, cuentas por 
pagar/cobrar, inventario, etc.) han evolucionado hacia software de sistemas de información de 
aplicaciones, que tiene acceso a una o más bases de datos grandes que contienen información 
comercial. 
17 
• SOFTWARE DE INGENIERIA Y CIENTIFICO. Se ha caracterizado por los algoritmos de 
"manejo de números". Las aplicaciones van desde la astrononúa y la vulcanología, desde el análisis 
de presión de motores hasta la dinámica orbital de las naves espaciales. 
• SOFTWARE INSTALADO DE FABRICA. El software instalado reside en memoria de sólo 
lectura (ROM - Read Only Memory) y se utiliza para controlar productos y sistemas de los 
mercados industriales y de consumidores. El software instalado puede ejecutar funciones muy 
limitadas (por ejemplo, el control de un horno de microondas) o suministrar una función significativa 
y capacidad de control ( tal como funciones digitales de un automóvil, tales como control de 
gasolina, sistema de frenado, etc.). 
• SOFTWARE DE COMPUTADORAS PERSONALES. El mercado del software de las 
computadoras personales ha crecido en la década de los 80. El procesamiento de palabras, las hojas 
de cálculo, las gráficas por computadora, juegos, manejo de bases de datos y redes de comunicación 
son solo unos cuantos de los cientos de aplicaciones. De hecho el software de computadoras 
personales continúa representando uno de las áreas más creativas en el campo del software. 
• SOFTWARE DE INTELIGENCIA ARTIFICIAL. El software de inteligencia artificial (IA) hace 
uso de algoritmos no numéricos para resolver problemas complejos que no son adecuados para el 
cálculo o análisis directo. Actualmente, el área más activa de la IAes la de sistemas expertos. Otras 
áreas de aplicación son el reconocimiento de patrones (imágenes y voz), prueba de teoremas y 
Juegos. 
1.1.2 DEFINICIÓN DE INGENIERÍA DE SOFTWARE. 
La primera definición de lngenieria de Software fue propuesta por Fritz Bauer en 1969 en la 
primera conferencia dedicada al tema por la OTAN. Para Bauer, Ingenieria de Software es el 
establecimiento y uso de principios de ingenieria robustos, orientados a obtener económicamente 
software que sea fiable y funcione eficientemente sobre máquinas reales. [21] 
Para Fairley, la Ingenieria de Software se define como la disciplina tecnológica preocupada de 
la producción sistemática y mantenimiento de los productos de software que son desarrollados y 
modificados en tiempo y dentro de un presupuesto definido. [8] 
Otra definición más reciente, de Jalote, indica que Ingenieria de Software es el diseño y 
desarrollo de software de alta calidad. [14] 
El diccionario Newton Telecom define a la lngenieria de Software como una disciplina 
ampliamente definida que integra muchos aspectos de programación, desde la elaboración de código 
hasta el ajustarse a un presupuesto, con el objetivo de producir software adecuado que funcione. [ 18] 
18 
Sybil P. Parker define la Ingeniería de Software como la aplicación sistemática del 
conocimiento científico y tecnológico por medio de sólidos conocimientos de ingeniería, a la 
producción de programas informáticos y a la definición de requerimientos, especificación funcional, 
descripción de diseños, implementación de programas y métodos de prueba que conducen al código. 
[21] 
Y como las anteriores, se pueden obtener varias definiciones más, en donde se mencionan 
elementos como disciplina, ingeniería, diseño, desarrollo, elaboración de código, etc., que implican la 
integración de distintos campos del conocimiento para poder lograr software de calidad. 
Para el presente trabajo, la definición de Ingeniería de Software que propongo y que se 
adoptará es la siguiente: 
Ingeniería de Software es la disciplina que comprende un conjunto de metodologías y técnicas 
multidisciplinarias, que se utilizan para desarrollar software de alta calidad, libre de errores, que cumpla 
con las expectativas del usuario, que se elabore bajo un presupuesto y un tiempo definidos. 
Para entender como la Ingeniería de Software se integra al mundo real, es necesario usar un 
ejemplo de otra ciencia. Considérese el estudio de la química y su uso para resolver problemas. El 
ingeniero químico investiga compuestos químicos, su estructura, interacción y la teoría respecto a su 
comportamiento. El ingeniero aplica los resultados de los estudios sobre química a una infinidad de 
problemas. La química es vista por los ingenieros químicos como un objeto de estudio. Por otra parte, 
la química es usada como herramienta para solucionar problemas generales. 
La computación se puede ver de manera similar. Se pueden usar las computadoras y los 
lenguajes de programación como herramientas útiles para diseñar y resolver problemas. La Ingeniería 
de Software en lugar de investigar el diseño de hardware o probar teoremas acerca de como trabaja un 
algoritmo, se enfoca en la computadora como una herramienta para solucionar problemas. El ingeniero 
de software trabaja con las funciones de una computadora como parte de la solución general del 
problema, en vez de usar la estructura o la teoría de la computadora misma. 
Igual que un fabricante busca formas de asegurar la calidad de los productos que elabora, el 
ingeniero de software cuenta con métodos que aseguran que sus productos son útiles y de calidad. 
1.1.3 SOFTWARE DE CALIDAD. 
La Ingeniería de Software es una estrategia para desarrollar software de calidad. Es importante 
entonces, entender que significa software de calidad, y que distingue el buen software del malo. 
Las características del software de calidad dependen de quien analice el software. Los usuarios 
buscan que el software haga lo que ellos quieren, que sea facil de aprender y usar. Para quienes diseñan 
19 
y escriben el código y para quienes deben mantener los programas, el software de calidad es entendible, 
sencillo en su fonna y mantenible, además debe estar documentado. 
El software de calidad para Boehm debe tener ciertas caracteristicas. Estas no solo se enfocan 
al buen rendimiento de hardware y software, sino que deben cumplir con las expectativas del usuario. 
[8] Estas caracteristicas son: 
• UTILIDAD. El software debe ser útil. Si no lo es, entonces su desarrollo ha sido una pérdida de 
tiempo, dinero y esfuerzo. La utilidad es la medida de éxito del software para quienes se suponen 
van a usarlo. La utilidad del software se puede considerar en tres formas, correspondiendo a los tres 
tipos de usuarios que se involucran una vez que el software es entregado. El usuario original es el 
primero que estará complacido si el software hace lo que él quiere. 
• PORTABILIDAD. Pueden existir otras personas que quieran usar el sistema en otras computadoras 
o en otro lugar. En este caso, el sistema debe ser portátil, de manera que pueda utiliz.arse en otra 
computadora funcionando apropiadamente. El software también debe permitir usarse en diferentes 
modelos y versiones de hardware sin perder su funcionabilidad. De igual forma, si se cambia el 
compilador por otro para el mismo lenguaje de programación, las funciones del software no deben 
degradarse. Así, el segundo tipo de usuario de un sistema es quien está involucrado con las 
actualiz.aciones y cambios del sistema. 
• MANTENIBILIDAD. Es el programador quien mantiene el sistema, haciendo cambios que se 
requieren conforme se van modificando los requerimientos de quien usará el software o cuando se 
detectan errores. Un buen programa permite a otras personas distintas a los creadores, entender la 
lógica y encontrar los problemas. Los programadores con un sistema mantenible deben ser capaces 
de localiz.ar el error, encontrar los módulos que ejecutan cierta función, entender el código y 
modificarlo. 
• CONFIABILIDAD. Por confiabilidad se entiende que el software proporcione el resultado correcto 
con un apropiado grado de exactitud. En este caso se dice que el software tiene integridad. Más aún, 
si el mismo conjunto de datos es alimentado al software varias veces bajo las mismas condiciones, 
los resultados deben ser iguales. Esto es llamado consistencia de función. 
• EFICIENCIA. El software debe ser eficiente, esto es, debe producir los resultados o realizar su 
función en un tiempo adecuado, determinado por las necesidades del usuario. De tal forma, los datos 
deben estar disponibles cuando se necesiten, y el software debe responder al usuario en un tiempo 
razonable. 
• EXACTITUD. El software necesita cumplir con el requisito de exactitud, esto es, la especificación 
de ausencia de error. La medida cuantitativa de la magnitud del error se debe expresar como una 
función de error relativo. En otras palabras, es la diferencia entre la condición o valor calculado y la 
condición real, especificada, o valor correcto teórico. 
20 
• SOLIDEZ. El software debe ser sólido, donde la solidez significa el grado con el que un producto 
puede continuar operando correctamente, a pesar de la introducción de datos no válidos. 
• CORRECCION. Esta se refiere al grado en que un producto está libre de defectos de diseño y 
programación. Es también el grado con que cumple con los requisitos especificados, o también con 
las expectativas del usuario. 
• FACILIDAD DE ENTENDIMIENTO. El software debe ser facil de entender y usar para los 
usuarios y los programadores. Este aspecto también es llamado ingenieria humana y puede ser en 
ocasiones el más crítico. El software debe ejecutar perfectamente la función por la que fue creado, 
pero si los usuarios no entienden como usarlo, el software no sirve. 
Las metas y los requisitos de alto nivel se pueden expresar en ténninos de atributos de calidad 
que el sistema deberá poseer. Estos atributosde calidad de alto nivel pueden, a su vez, expresarse en 
términos de atributos que se pueden obtener en los productos finales. Por ejemplo, la confiabilidad 
puede expresarse en términos de exactitud, solidez, integridad y consistencia del código fuente. Cada 
uno de estos parámetros debe definirse con cuidado en ténninos de atributos más específicos del código 
fuente. Por ejemplo, la precisión puede describirse como la proporción con la que los resultados 
producidos por el código son suficientemente precisos para satisfacer el uso que de ellos se pretende. 
Esto se puede traducir en requisitos específicos para cualquier problema en particular. 
De esta manera, software de calidad es aquel que satisface las necesidades de los usuarios y de 
los programadores que lo utilizan. En resumen, la alta calidad se consigue sí el software: 
• Hace lo que debe hacer. 
• Hace uso de los recursos de la computadora de manera eficiente. 
• Es facil de usar y aprender. 
• Los desarrolladores del software lo pueden diseñar, codificar, probar y mantener con relativa 
facilidad. 
Para producir software de calidad, no es necesario conocer los principios involucrados al 
construir una computadora o al desarrollar un lenguaje de programación, más bien se deben aprender 
conceptos, técnicas y herramientas qué ayuden a diseñar y desarrollar software de calidad. La Ingeniería 
de Software provee todos los elementos para construir exitosamente software de calidad. 
qqo:ft 
,11~v--
- .,. ... 
~!,:·,¡¡ ¡.. 
"'-· ..... ,. _ _. 
21 
1.2 APLICACIONES DE LA INGENIERÍA DE SOFTWARE. 
Como se ha definido anteriormente, la Ingeniería de Software es una disciplina para desarrollar 
software para sistemas basados en computadora. Por lo tanto, la Ingeniería de Software se aplica 
primordialmente a la elaboración de software de calidad. 
Para desarrollar un software es necesario seguir una serie de pasos, en cada uno se pueden 
emplear técnicas y herramientas de Ingeniería de Software para asegurar el óptimo uso de recursos y 
tiempo. 
Específicamente, las aplicaciones más comunes de la Ingeniería de Software son las siguientes: 
En la planeación del proyecto de desarrollo de software, con metodologías que permiten 
estimar, organizar y controlar todos los aspectos relevantes de manera que exista un camino bien 
definido a seguir, para conocer de antemano la cantidad de recursos y tiempo requeridos para la puesta 
en marcha del proyecto. Se puede decir entonces que la Ingeniería de Software se aplica para: 
• Estimar el tiempo empleado para desarrollar software con la ayuda de técnicas de administración de 
proyectos que permiten dividir el tiempo en etapas, establecer actividades criticas, y fijar fechas de 
revisión y entrega. 
• Analiz.ar el esfuerzo de recursos humanos, es decir, cuantas personas deben trabajar en el proyecto 
considerando la complejidad, tamaño y tipo del software a desarrollar. 
• Calcular los costos involucrados en la producción de software, costos fijos y variables involucrados, 
consideraciones de costo de lineas de código según complejidad y costo de documentación. 
• Definir las funciones del sistema estableciendo requisitos y proporcionando guías para describir 
claramente los limites y objetivos del software que se desarrollará. 
• Organizar el proyecto mediante lineamientos que permiten estructurar la forma en que trabajará el 
personal encargado de desarrollar el software de manera que exista mayor interrelación y 
comunicación entre ellos, el usuario y la gerencia. 
• Seleccionar la metodología de desarrollo del software al definir las diferencias de enfoque que 
existen en cada una, de tal forma que los encargados de la elaboración del sistema puedan utilizar la 
más adecuada según sus necesidades. 
22 
En la actividad propiamente dicha de desarrollo del sistema, se aplican las técnicas y 
herramientas de Ingeniería de Software para asegurar que el usuario y el personal de sistemas 
encargados de desarrollar el software tienen la misma percepción del sistema. 
También se aplica para especificar claramente que y cómo se va a elaborar el software al 
proporcionar metodologías precisas que se pueden utiliz.ar en todos los pasos de su realiz.ación. La 
Ingeniería de Software se aplica entonces para: 
• Analiz.ar el sistema o el software que se va a desarrollar, mediante técnicas que permiten especificar 
concretamente los objetivos y requisitos que debe tener. 
• Diseñar el sistema de tal forma que cumpla oon los objetivos propuestos en el análisis. En esta fase la 
Ingeniería de Software permite definir el modelo que se va a utilizar para desarrollar fisicamente el 
sistema y proporciona lineamientos a seguir para asegurar que el sistema funcionará antes de 
programarlo. 
• En la fase de programación se aplica la Ingeniería de Software suministrando guías generales 
aplicables con diferentes lenguajes de programación que lleven a desarrollar programas de 
computadora eficientes y óptimos. 
• Al probar y revisar el software ya programado, la Ingeniería de Software provee diferentes tipos de 
enfoques de pruebas que sirven para comprobar si funciona adecuadamente y que se seleccionan 
según su tamaño y tipo. 
• Para mantener el software después de que ha sido liberado para su uso, la Ingeniería de Software 
proporciona estándares y directrices que se deben seguir para que esta actividad de mejoramiento de 
los programas se lleve a cabo en forma organizada. 
En resumen, la Ingeniería de Software se debe aplicar en forma primaria en todos los aspectos 
de la actividad de desarrollo de software, porque proporciona los lineamientos necesarios para que se 
pueda realizar adecuadamente garantiz.ando que el sistema que finalmente se va a entregar será de alta 
calidad. 
1.3 TECNICAS DE INGENIERIA DE SOFTWARE. 
El ingeniero de sistemas utiliza el conocimiento que tiene de las computadoras y de la 
computación para resolver problemas. Algunas veces el problema que resuelve se relacionado a una 
computadora o a un sistema de computadoras, pero algunas veces los problemas no tienen nada que 
ver con su uso. Por lo tanto, es importante entender que para resolver un problema primero es 
necesario entender la naturalez.a del mismo. En particular, se debe tener cuidado en imponer la 
tecnología de la computación a todo tipo de problemas. Es necesario primero resolver el problema, y 
23 
luego, si se estima conveniente, utiliz.ar la computadora como herranúenta para lograr una solución 
automatizada. 
Para resolver un problema es necesario primero analizarlo, esto es, descomponer el problema en 
partes manejables que puedan entenderse y tratarse. Después se ataca cada problema por separado para 
después construir una solución total. 
Para resolver un problema, es necesario utiliz.ar técnicas y herranúentas. Se le llama técnica 
al procedinúento formal o método que se usa para producir cierto resultado. Por ejemplo, un chef de 
cocina puede preparar una ensalada usando una secuencia de ingredientes combinándolos 
cuidadosamente, dándoles tiempo para que se mezclen apropiadamente y acomodándolos en cierto 
orden de manera que tienen un sabor y consister,cia especial. El procedinúento de elaboración de la 
ensalada involucra tiempo e ingredientes pero no depende del tipo de equipo de cocina usado. Lo que 
hace a la ensalada más sabrosa es la técnica, no el recipiente o la cuchara usada por el chef 
El ingeniero de sistemas busca utiliz.ar técnicas de forma eficiente y productiva para crear 
soluciones efectivas a sus problemas. 
A continuación se mencionan las principales técnicas de Ingeniería de Software y la fase de 
desarrollo donde se utilizan. 
1.3.1 TÉCNICAS DE LA FASE DE PLANEACIÓN. 
La falta de planeación es la causa principal de los retrasos en programación, incremento de 
costos y altos costos de mantenimiento en los desarrollos de productos de programación. Para evitar 
estos problemas se requiere de una planeación cuidadosa, tanto en el proceso de desarrollo como enla 
operación del producto. Con frecuencia, se dice que es imposible una planeación inicial, porque la 
información precisa sobre las metas del proyecto, necesidades del usuario y restricciones del producto 
no se conocen al comenz.ar el proyecto de desarrollo, sin embargo, uno de los principales propósitos de 
esta fase es aclarar los objetivos, necesidades y restricciones. Se debe reconocer también que los planes 
prelinúnares se modificarán según vayan evolucionando los productos, la planeación para el cambio es 
uno de los aspectos clave con la que se logra el éxito. 
Las técnicas para planear desarrollo de software nacieron como parte de otras disciplinas de 
administración e ingeniería, no son fundamentalmente del área de computación, pero son muy útiles 
debido a las actividades propias de la fase de planeación. A continuación se mencionan algunas de las 
más importantes: 
• Administración por objetivos. [8] 
• Organización de grupos de trabajo. [8] 
24 
• Administración de proyectos. [21] 
• Ingeniería económica. [7] 
• Estimación del nivel de contratación. [8] 
• Métricas para la productividad y la calidad del software. [21] 
1.3.2 TÉCNICAS DE LA FASE DE ANÁLISIS. 
Esta fase es la especificación de requisitos para la producción de software. Se basa en la 
definición clara y correcta del sistema. Los requisitos de alto nive~ los cuales se especifican durante la 
planeación inici~ se detallan y se hacen más específicos para definir las características que el producto 
de programación debe tener. En teoría, el análisis del sistema o producto de software establecerá "que" 
es el producto sin implicar "como" es éste. El diseño del producto se refiere a como va a proporcionar 
las características deseadas. Las técnicas de Ingeniería de Software relacionados con el análisis del 
software proporcionan lineamientos y permiten que el analista del sistema tenga una idea más clara de 
todos los elementos necesarios y sus interrelaciones que sirven para que comprenda el funcionamiento y 
así se establezcan las especificaciones que debe cumplir para convertirse más tarde en un software de 
calidad. Algunas técnicas que se utiliz.an en esta fase son: 
• Análisis estructurado (Y ourdon, De Marco, Constantine ). [21] 
• SADT-Structured Analysis and Design Technique (Ross). [8] 
• SSA-Structured System Analysis (Gane & Sarson). [8] 
• Análisis orientado a objetos. [21] 
• Construcción de prototipos. [ 1] 
• Factores críticos de éxito (Rockart). [21] 
• Diagramas definidos por usuario. [17] 
1.3.3 TÉCNICAS DE LA FASE DE DISEÑO. 
El diseño es el primer paso en el desarrollo de cualquier producto o software. El objetivo del 
diseñador es producir un modelo o representación de una entidad que será construida más adelante. El 
proceso por el cual se desarrolla el modelo combina: intuición y criterios basándose en la experiencia de 
construir entidades similares, un conjunto de principios y/o heurísticas que guían la forma en que se 
25 
desarrolla el modelo, un conjunto de criterios que facilitan discernir sobre la calidad y un proceso de 
iteración que conduce finalmente a una representación del diseño final. 
El diseño de software para computadoras, como los métodos de diseño de ingeniería de otras 
disciplinas, cambia continuamente, conforme aparecen nuevos métodos, mejores análisis y un más 
amplio conocimiento. A diferencia del diseño mecánico o electrónico, el diseño de software está en una 
etapa relativamente temprana de su evolución. El diseño de software apartado a la programación, se ha 
tomado en serio desde hace dos décadas. Por tanto, a las metodologías de diseño de software les falta 
profundidad, flexibilidad y la naturaleza cuantitativa asociada normalmente con las disciplinas de diseño 
de ingeniería más clásicas. Sin embargo, las técnicas existentes de diseño proveen criterios para lograr 
productos de alta calidad. Algunas son: 
• Diagramas Warnier-Orr. [21] 
• Desarrollo de sistemas (Jackson). [21] 
• Diagramas de entidad-relación (Chen & Martin). [21] 
• Diseño estructurado (Yourdon). [21] 
• Tablas y árboles de decisión. [8] 
• Diseño orientado a objetos (DOO). [21] 
• Diseño tiempo real. [21] 
• Diseño de bases de datos. [21] 
1.3.4 TÉCNICAS DE LA FASE DE PROGRAMACIÓN. 
El objetivo de todo el esfuerzo del análisis y diseño de software se verá reflejado en la 
programación, la codificación de las especificaciones en instrucciones de computadora. Es importante 
entonces, que esta actividad se ejecute con un apego estricto a lo definido en las fases anteriores. 
Sin técnicas para auxiliarse, la programación se puede convertir en una fase sola de mera 
traducción, es necesario no solo traducir todo a lenguaje de programación, sino hacerlo de una forma 
que el código resultante sea eficiente, esté en la medida libre de errores y listo para integrarse en forma 
completa para formar un sistema completo. 
Aunque hoy en día se comienza a difundir el uso de herramientas y lenguajes de cuarta 
generación ( 4GL }, que no requieren de la especificación del procedimiento, todavía existe un gran 
nümero de aplicaciones que se desarrollan en lenguajes de tercera generación, COBOL, Pascal, ADA, 
26 
Basic e inclusive FORTRAN. Por esto es conveniente tener en cuenta técnicas que fomenten la 
disciplina de la planeación, verificación y desarrollo de programas que funcionen bien desde su creación. 
Algunas técnicas que son útiles: 
• Programación estructurada. [21] 
• Diagramas de flujo de programas.[8] 
• Diagramas Nassi-Schneiderman (N-S) o Chapin. [21] 
• Pseudocódigo. [8] 
• Refinamiento sucesivo de programas (Wirth). [8] 
• Top down, bottom up y sandwich. [8] 
• Diagramas tipo HIPO. [8] 
1.3.5 TÉCNICAS DE LA FASE DE PRUEBAS. 
La importancia de la prueba de software y sus implicaciones con la calidad del producto no se pueden 
sobre valorar. La prueba es un elemento crítico para la garantía del software y representa un último 
paso para las especificaciones. 
La prueba representa una interesante anomalía para el ingeniero de software. Durante las fases 
anteriores de definición y desarrollo, el ingeniero intenta construir software partiendo de un control 
abstracto y llegando a una implantación tangible. A continuación llega la prueba que intenta "demoler" 
el software que ya ha sido construido. De hecho, la prueba es uno de los pasos de la lngenieria de 
Software que se puede ver como destructivo en lugar de constructivo. 
A continuación se presentan algunas de las técnicas para pruebas de software y diseño de casos 
de prueba. 
• Recorridos estructurados e inspecciones. [8] 
• Pruebas de caja blanca. [21] 
• Pruebas de caja negra. [21] 
• Pruebas de Sistema y de unidad. [8] 
• Depuración. [8] 
27 
1.3.6 TÉCNICAS DE LA FASE DE MANTENIMIENTO. 
El mantenimiento, la última fase del proceso de ingeniería del software, se lleva la mayor parte 
de todo el dinero gastado en el software de computadora. A medida que se desarrollan más programas, 
surge una tendencia problemática debido a la cantidad de esfuerzo y de recursos gastados en el 
mantenimiento de software que siempre crece y crece. Finalmente, algunas organiz.aciones de desarrollo 
de software pueden llegar a la barrera del mantenimiento, incapaces de embarcarse en nuevos proyectos 
debido a que tienen todos sus recursos dedicados al mantenimiento de antiguos programas. 
El mantenimiento ordenado, bajo ciertos lineamientos y usando técnicas adecuadas, permite que 
esta actividad sea ejecutada en el mínimo de tiempo y sin la derrama de recursos tan importante que 
usualmente se realiz.a. Las técnicas más importantes son: 
• Mantenimiento de Software. [21] 
• Administración de la configuración. [21] 
1.4 HERRAMIENTAS DE INGENIERIA DE SOFTWARE. 
Algunas veces el uso de un procedimiento o método (pero no necesariamente una herramienta) 
puede ser similar a utilizar un instrumento. Una herramienta es un instrumento o un sistema 
automatizado que permite realiz.ar con una considerable mejoríacierta actividad. Esta mejoria significa 
que la herramienta permite que la actividad se realice de manera más precisa, más eficiente, más 
productiva o que resalte la calidad del producto resultante. Por ejemplo, se usa una máquina de escribir 
para hacer cartas porque las letras que pone en el papel son más fáciles de leer que la escritura a mano. 
También se usan tijeras como herramienta porque se puede cortar más rápido y con mayor precisión el 
papel que sí sé troz.a con las manos. 
El ingeniero en sistemas utiliz.a herramientas para resaltar la calidad del software que produce. 
Ejemplos de este tipo de herramientas son: 
1.4.1 HERRAMIENTAS PARA ADMINISTRACIÓN DE PROYECTOS. 
Estas herramientas automáticas de estimación permiten al planificador estimar costos y 
esfuerzos así como llevar a cabo análisis del tipo "que pasa si" con importantes variables del proyecto 
tales como la fecha de entrega o la selección de personal. Algunos ejemplos son: 
• Programas para la administración de proyectos para computadoras personales como Timeline, 
MS Project y Mac Project entre otros. 
28 
• Programas elaborados especialmente para resolver problemas de programación lineal que 
pueden usarse conjuntamente con los anteriores. 
1.4.2 HERRAMIENTAS PARA ANÁLISIS DE SISTEMAS. 
Se han desarrollado varios lenguajes de aplicación especial y paquetes para permitir el 
establecimiento conciso y el análisis automático de las especificaciones de los productos de 
programación. Algunos lenguajes de especificación eran de naturaleza gráfica, mientras que otros 
emplean texto; todos eran de naturaleza relacional, además se usaban en forma manual y otros tenían 
paquetes de programación para su uso. 
Las herramientas para el análisis automatizado de requerimientos, hacían uso de una notación 
especial ( en la mayoría de los casos esto es un lenguaje de especificación de requerimientos) que era 
procesada de una manera automática. Los requerimientos se describían con un lenguaje de 
especificación, que combinaba indicadores de palabras clave con explicaciones en lenguaje natural 
como el inglés. El lenguaje se mandaba a un procesador que producía una especificación de 
requerimientos y, más importante, un conjunto de informes de diagnósticos sobre la consistencia y 
organización de la especificación. 
En la actualidad y gracias a la tecnología computacional, existen una serie de paquetes y 
programas que ayudan al analista de sistemas a efectuar su trabajo de una manera más sencilla, 
permitiéndole además obtener productos como diagramas, diccionario de datos, lista de procesos, 
almacenamientos de información y diversas especificaciones, que le serán de utilidad para las fases 
posteriores del desarrollo de un producto de software. 
A continuación se presentan ejemplos de algunas herramientas y su área de aplicación: 
• APPLICATION ANAL YSIS&DESIGN: Análisis y diseño estructurado de sistemas. 
• CASFJ4/0: Reingeniería de procesos de negocios, análisis de sistemas, diseño e 
implementación. 
• OBJECT IF: Análisis y diseño de sistemas, técnicas orientadas a objetos. 
• ORCIDS: Herramientas para análisis funcional usando la técnica SADT. 
• PAC DESIGN: Análisis y diseño mediante el modelamiento de negocios, metodología de 
Yourdon. 
• P ARADIGM PLUS: Análisis y diseño orientado a objetos en tiempo real. 
• PROMOD-PLUS: Herramientas CASE para análisis y diseño estructurado. 
• TEAMWORK: Conjunto de herramientas para análisis y diseño estructurado. 
29 
1.4.3 HERRAMIENTAS CASE. 
Estas herramientas han sido diseñadas para automatizar la generación y mantenimiento de lo 
que era originalmente un método manual. Normalmente hacen uso de una ayuda a la subdivisión del 
problema, mantiene una jerarquía de información sobre el sistema y aplica heuristicas para descubrir 
problemas con la especificación. Más importante, las herramientas facilitan al analista actualizar la 
información y anotar las conexiones entre las nuevas y antiguas representaciones del sistema. Por 
ejemplo, el sistema CASE 2000 de Nastec, ayuda al analista la generación de diagramas de flujo y de 
diccionario de datos, además mantiene a éstos en una base de datos que puede ser analiz.ada para 
comprobar la corrección, consistencia y no redundancia. De hecho, el verdadero beneficio de esto, y de 
la mayoría de las herramientas de requerimientos automatizados, está en el procesamiento inteligente 
que estas herramientas aplican a la especificación del problema. 
De las herramientas CASE más conocidas, se tienen las siguientes: 
• ANAL YST/DESIGNER TOOLKIT: CASE que utiliz.a la metodología de Yourdon. 
• CASE 2000: Generación de diagramas de flujo y diccionario de datos. 
• CRADLE: Herramienta para aplicar en el ciclo completo de vida de los sistemas. 
• DISCOVER: Conjunto de herramientas para desarrollo de sistemas de información. 
• EIFFEL CASE: Ingeniería de Software interactiva. 
• ERWIN: Modelamiento de datos, creación de aplicaciones cliente-servidor. 
• EXCELERA TOR 11: Análisis y diseño de sistemas, diagramas y definición de programas. 
• IEF: CASE de Texas Instruments para macrocomputadoras. 
• MAC A&D: Manejo de varias metodologías, para computadoras Macintosh. 
• MAGEC: Aplicable en todo el ciclo de vida del sistema, genera código en COBOL. 
• MEGA Juego de herramientas CASE para todo el ciclo de vida de un sistema. 
• OBJECT WORKS \ C++: CASE orientado a objetos con interfase para lenguaje C++. 
• P ACBASE: Generación de código, útil para todo el ciclo de vida del sistema. 
1.4.4 HERRAMIENTAS PARA PROGRAMACIÓN, PRUEBAS Y MANTENIMIENTO. 
Las herramientas de esta categoria son a menudo las únicas disponibles para el desarrollo de 
software ( una situación que no es ideal), están orientadas al código e incluyen compiladores de 
lenguajes de programación, editores, enlazadores y cargadores, ayudas para la depuración y una amplia 
serie de utilerias específicas del lenguaje de programación que se esté utilizando. 
Actualmente muchos lenguajes de programación comerciales integran herramientas para 
programación y pruebas al proveer depuradores de código (debuggers) y rastreadores (tracers). 
30 
Es conveniente resaltar que la documentación del software es una parte muy importante. Todo 
lo realizado en el análisis, diseño, programación, pruebas y mantenimiento debe estar claramente 
definido. Por esto es importante contar con herramientas que permitan la modificación de la 
documentación de manera sencilla., es recomendable usar para tal efecto: procesadores de texto, 
diagramadores, programas para graficación, para presentación y hojas de cálculo. Actualmente, existen 
herramientas que permiten realizar la labor de documentación casi automáticamente a través del código 
del programa., también existen probadores y generadores de casos de prueba, el único inconveniente es 
que muchos de estos son específicos para ciertos lenguajes de programación y su costo es elevado. 
Algunos ejemplos de herramientas para documentación y pruebas de sistemas son: 
• DOC EXPRESS: Automatización de documentación y publicación. 
• DOC/SW: (parte de DISCO VER) documentación de código y de objetos. 
• IMAGIX 40: Ingeniería reversa y documentación para lenguaje C y C++. 
• OEW FOR C++: Diagramas de relaciones, explorador de código y documentación. 
• PROCEDURE DESIGN: Editor de diagramas de flujo, generador de documentación. 
• TESTDESIGNER Conjunto de herramientas para hacer pruebas en sistemas. 
• TESTPLAN: Administración de las pruebas del sistema como un proyecto. 
• VISUAL TESTING TOOLSET: Cobertura de las pruebas al código. 
1.4.5 HERRAMIENTAS PARA CONSTRUCCIÓN DE PROTOTIPOS. 
Para conseguir una construcción rápida de prototipo, existen tres clases genéricas de métodos y 
herramientas: técnicas de cuarta generación, componentes de software reusables y entornos de 
construcción de prototipos. 
Las técnicas de la cuarta generación o 4GT comprenden un amplio repertorio de lenguajes de 
informes (Report Generator) y consultas de base de datos(Query), generadores de programas y 
aplicaciones y otros lenguajes no procedimentales de muy alto nivel. Debido a que las 4GT facilitan a 
quién las usa, la programación general y código ejecutable rápidamente, son ideales para la 
construcción rápida de prototipos. Desafortunadamente, el dominio de aplicación de las 4GT está 
actualmente limitado a sistemas de información comerciales. 
Otro método para la construcción rápida de prototipos es ensamblar, en vez de construir, el 
prototipo usando un conjunto de componentes de software existente. Un componente de software 
puede ser una estructura de datos ( o base de datos) o una componente arquitectónica de software (por 
ejemplo un programa) o una componente procedimental (es decir, un módulo). En cada caso, la 
componente de software debe ser diseñada de forma que facilite el ser reusada sin conocer los detalles 
de su funcionamiento interno. Debe observarse que un producto de software existente puede ser 
utilizado como un prototipo más adelante, para crear un nuevo sistema mejorado y competitivo. De 
alguna manera, esto es una forma de reutilización para la construcción de prototipos de software en la 
cual se requieren herramientas como bases de datos para llevar un control de las bibliotecas de módulos 
reusables. 
31 
Por otra parte, en las pasadas dos décadas se desarrollaron varios lenguajes de especificación 
fonnal para reemplaz.ar las técnicas de especificación en lenguaje natural. Los lenguajes de 
especificación como PSL, RSL, IORL, GYPSY, OBJ y muchos otros, eran acompañados de entornos 
interactivos en un esfuerzo por conseguir un paradigma de Ingenieria de Software automatizada. Estas 
y otras herramientas fueron mejorando para hacer el desarrollo de prototipos una labor más eficiente. 
En la actualidad, se ha buscado el llamado desarrollo rápido de aplicaciones (RAD) mediante lenguajes 
orientados a objetos, mediante el uso de prototipos que puedan irse mejorando paulatinamente. A 
continuación se dan ejemplos de algunas herramientas que son útiles para el desarrollo sistemas 
manejando prototipos: 
• OBJECT PROTOTYPE: Generación de objetos mediante prototipos. 
• PRINCIPIAIRAD: Creación de prototipos mediante el lenguaje Visual Basic. 
• PERTS: Ambiente para la elaboración de sistemas en tiempo real mediante prototipos. 
• GLG TOOLKIT: Animación y simulación de sistemas de misión critica, usando prototipos en 
C++y Java. 
• LOCANA Herramienta CASE para generación de prototipos orientados a objetos. 
En el anexo B del presente trabajo, se presenta una lista más detallada de las herramientas 
CASE que se manejan en el mercado hoy en día y que se utilizan en diferentes fases del desarrollo de un 
sistema o producto de software. 
CAPITUL02 
LA INGENIERIA DE SOFTWARE EN MÉXICO 
El desarrollo de software está lentamente convirtiéndose en un proceso estructurado, altamente 
controlado e incrementando su estandarización. Las empresas que no entienden como administrar el 
desarrollo y mantenimiento de grandes sistemas de software que se requieren para aplicaciones actuales 
y futuras se verán rezagadas en este cambio. 
La solución a este problema tiene tres componentes: primero, un gran compromiso en la 
educación; segundo, los sistemas deberían diseñarse para mantenerlos, extenderlos y reusarlos~ y 
tercero, utilizar un enfoque orientado a objetos para desarrollar sistemas. 
Un estudio del Instituto de Ingeniería de Software (SEI) de la Universidad Camegie Mellon en 
1988 de 200 empresas en EUA mostró que el 86% considera su esfuerzo de Ingeniería de Software en 
un nivel 1, el inicial, donde la programación se realiza utilizando algunas técnicas; 13. 5% se 
manifestaron en el nivel 2, el nivel de repetición, en que los esfuerzos de una o dos personas permite 
que los proyectos se concluyan exitosamente; una empresa mencionó estar en nivel 3, el nivel de 
maduración, donde la Ingeniería de Software está bien definida e institucionalizada. Ninguna empresa 
está en nivel 4, el de administración, donde se maneja y se mide la lngenieria de Software. En el nivel 5, 
el de optimización, no se encontró ninguna empresa, en este punto se tiene un conocimiento profundo y 
experiencia en la Ingenieria de Software que se aplica a nuevos proyectos. [20] 
En México no existe información actualizada de la utilización de lngenieria de Software dentro 
de las empresas, no existen estudios que indiquen el grado en que se han asimilado las técnicas desde su 
aparición e inicios de los años 70. En general, las empresas mexicanas utilizan métodos y 
procedimientos que distan mucho de aumentar la productividad en el medio de desarrollo de software, 
donde la falta de comunicación entre quienes desarrollan sistemas y los usuarios, la baja cultura 
informática entre los ejecutivos de alto rango, el desarrollo de las telecomunicaciones, la inadecuada 
elaboración de planes de estudio en las universidades con respecto a lo que se requiere en las empresas 
y otras, son causas que han detenido el progreso de la informática como herramienta para el avance del 
país. 
34 
Es necesario reconocer que la asimilación de las técnicas y herramientas de lngenieria de 
Software aunado con una buena organiz.ación y administración tanto de la empresa en general como del 
área encargada del desarrollo de software dentro de la misma, permitirá que exista el ambiente 
adecuado para crear software y sistemas de alta calidad. 
2.1 ANTECEDENTES DE APLICACION EN MÉXICO. 
La lngenieria de Software en nuestro país depende mucho de la evolución que tiene en el 
vecino EUA, debido a la relación que existe de comercio y además que la mayoria de los equipos de 
cómputo provienen de esa nación, de igual manera las metodologías y técnicas que se usan son traídas 
por los proveedores de computación. 
En México no existen antecedentes de creación de una técnica de lngenieria de Software 
propia, las pocas que son utiliz:adas fueron desarrolladas en las universidades o empresas 
norteamericanas, y después de cierto tiempo, son divulgadas a través de seminarios, cursos, 
conferencias u otro tipo de eventos a las personas que lo solicitan, de tal manera que algunos las 
conocen y en ocasiones las llegan a aplicar. Por otra parte, muchas empresas transnacionales asentadas 
en nuestro país, envían sistemas desarrollados para ser explotados en sus instalaciones y otras manejan 
metodologías propias que les permiten tener un control sobre la operación del área de desarrollo de 
sistemas. 
No importando la situación, es notable el poco uso que se le da a la lngenieria de Software en la 
mayoria de las empresas, sin embargo, este enfoque va cambiando paulatinamente según el avance que 
tienen en un grupo selecto de compañías que están a la cabeza en este punto en nuestro país. 
2.1.1 ANTECEDENTES DE LA INGENIERÍA DE SOFTWARE. 
La necesidad de enfoques sistemáticos para el desarrollo y mantenimiento de productos de 
software se patentizó en la década de los años 60. Durante ésta, aparecieron las computadoras de la 
tercera generación y se desarrollaron técnicas de programación como la multiprogramación y el tiempo 
compartido. Estas nuevas capacidades aportaron la tecnología necesaria para el establecimiento de 
sistemas computacionales interactivos, de multiusuario, en linea y en tiempo real; así surgieron nuevas 
aplicaciones para la computación, como las reservaciones aéreas, bancos de información, tiempo 
compartido para diversas aplicaciones, control de procesos y otras. 
Aunque mucho de estos sistemas fueron desarrollados y producidos adecuadamente, gran parte 
de los sistemas intentados nunca se produjeron; de los producidos muchos quedaron sujetos a 
sobrecosto, entrega tardía, poca confiabilidad, ineficiencia y ante todo, a poca aceptación por parte de 
35 
los usuarios. Confonne las computadoras crecieron haciéndose más complejas, resultó obvio que la 
demanda por los productos de software creció en mayor cantidad que la capacidad de producir y 
mantener dichosproductos. 
Para considerar el creciente problema de la tecnología de software, se convocó en 1968 a una 
reunión de trabajo en Garmisch, Alemania Oriental~ en esa junta así como la siguiente, celebrada en 
Roma, Italia en 1969, se estimuló el interés general hacia los aspectos técnicos y adnúnistrativos 
utilizados en el desarrollo y mantenimiento de software. El ténnino lngenieria de Software en inglés 
"Software Engineering" fue utiliz.ado por primera vez en esas reuniones. [8] 
La siguiente evolución de los sistemas computacionales comenzó a mediados de los años 70 y 
continúa hoy. Los sistemas distribuidos donde se comunican unas computadoras con otras, 
incrementaron notablemente la complejidad de los sistemas informáticos. Las redes de área local y 
global, comunicaciones digitales de alto ancho de banda y creciente demanda de acceso en linea a los 
datos, supusieron una fuerte presión sobre los desarrolladores de software. Esta etapa también se 
caracteriza por la llegada y amplio uso de los microprocesadores. 
La computadora personal apareció a principios de los años 80 y ha sido el agente de 
crecimiento de muchas compañías de software. El hardware de este tipo de computadoras se ha 
convertido rápidamente en un producto estándar, mientras que el software marca la gran diferencia. De 
hecho, mientras las ventas de computadoras personales se estabiliz.aron a mediados de los años 80, las 
ventas de software continuaron creciendo. Mucha gente de la industria y también en forma particular 
gasta más dinero en software (sin tomar en cuenta el problema de la piratería) de lo que gastaron en la 
computadora sobre la cual se utiliz.a. 
La nueva era en el software de computadoras está ahora comenzando. Autores tales como 
Feigenbaum y McCorduck en su obra "La quinta generación", predijeron que las computadoras y su 
correspondiente software tendrán un profundo impacto en el equilibrio de la potencia política e 
industrial de todo el mundo. Las técnicas para el desarrollo de software que se están usando 
actualmente han cambiando la forma en que algunos segmentos de la comunidad informática 
construyen los programas para computadora. Los sistemas expertos y el software de inteligencia 
artificial se han trasladado finalmente del laboratorio a aplicaciones prácticas, en un amplio rango de 
problemas del mundo real. [21] · 
36 
2.1.2 MERCADO NACIONAL DE BIENES Y SERVICIOS INFORMÁTICOS. 
Para tener una idea clara de como han incursionado la lngenieria de Software en México, es 
necesario conocer la evolución del mercado general de la infonnática. Los datos que aparecen a 
continuación provienen de una publicación del INEGI (Instituto Nacional de Estadística Geografia e 
Infonnática) elaborado en 1993 (el único y más reciente) llamado ''La situación de la Infonnática en 
México". [13] 
El tamaño del mercado de bienes y servicios infonnáticos constituye un indicador del nivel 
alcanz.ado por la actividad infonnática, ya que permite detectar, en cierta medida, la evolución que ha 
presentado el sector en los últimos años. En 1986, el valor del mercado de cómputo en México fue de 
498 millones de dólares, que correspondió al 0.35% del valor del mercado internacional, valor 
calculado con base a cifras la revista Datamation 100 de junio de 1987. Durante el periodo 1973 a 1986 
la dinámica fue acelerada, multiplicando su valor casi cinco veces desde 1973 y creciendo a una tasa 
promedio anual de 22.9%. La tasa promedio de crecimiento anual entre 1989 y 1990 fue del 33.1% y 
se estima que permanecerá así hasta 1993, para 1995 el mercado se estimó alcamaria aproximadamente 
3 mil 227.4 millones de dólares. La estructura pronosticada para 1995 en el mercado de cómputo es la 
siguiente: 
• Sistemas multiusuario (Minis/Macros) 32% 
• Sistemas Personales (PC's/Otros) 64% 
• Comunicaciones 4% 
Conforme a datos de 1991, el valor del mercado computacional mexicano representó 
aproximadamente el 0.53% del PIB y la densidad de computadoras corresponde a 12 computadoras 
por cada mil habitantes. Para fines de 1992 se espera que este último indicador corresponda a 15 
computadoras por cada mil habitantes. 
A pesar de la dinámica mostrada por el mercado interno, sus dimensiones con respecto a las de 
los países industrializ.ados, son aún pequeñas. Por ejemplo, en 1987 el valor del mercado de equipo de 
procesamiento y periférico en México, representó sólo el O .11 % del que había en EUA; 3 .5%, respecto 
al de Japón; 3.7, al de Alemania; 4.8%, al de Gran Bretaña; 5.3% al de Francia; y 8.6%, al de Italia. 
En la industria de hardware, el segmento de microcomputadoras fue el que mostró mayor 
crecimiento en los últimos años, al representar el 68% del mercado total. Una de las principales 
tendencias observadas en este mercado es, precisamente, la migración hacia sistemas abiertos y el uso 
de redes de computadoras. En este punto, las redes de tipo Ethernet son las que cuentan con mayor 
participación en el mercado de redes (66%) comparado con Token Ring (13%) y Arcnet (21%) en 
37 
1991. Los sistemas operativos como UNIX y OS/2 se pronosticó que para 1995 tendrían en México 
una participación del 75% del mercado de sistemas abiertos. 
En México, la banca comercial es el usuario más importante de computadoras, equipos y 
servicios asociados, con una cantidad estimada en 1989, de 302.90 millones de dólares, 
correspondiente al 35% del mercado infonnático nacional, seguido por el gobierno. Otros usuarios 
importantes en el país son las casas de bolsa, cadenas comerciales, tiendas departamentales, 
supermercados, industria automotriz, química y de la construcción, así como el sector servicios y 
educativo. 
Al parecer, existe cierto grado de asimilación tecnológica ya que algunos productos que se 
comercializ.an en el extranjero, sobre todo en EUA, son lanzados en México sin que existan rez.agos 
importantes. Dentro de este grupo de productos, que se difundieron rápidamente, cabe considerar a las 
microcomputadoras que utiliz.aban microprocesadores del tipo Intel 80286 o similares, y trabajaban con 
sistema operativo MS DOS o UNIX, que aparecieron en aquel país en 1984 y en el mercado nacional 
en 1985. 
2.1.3 MERCADO DE PROGRAMACIÓN (SOFTWARE O SOPORTE LÓGICO). 
En 1991 el mercado de software en México fue de 180.2 millones de dólares. Se estima que 
para 1995 el mercado nacional alcance la cifra de 496.4 millones de dólares. Entre 1989 y 1990, la 
venta de software se incrementó aproximadamente en un 18% anual, y se esperaba que de 1990 a 1995 
creciera a una tasa promedio anual de 28.8% como se muestra en la figura 2.1 
u 
"D III 
III U u .. 
e • 
..2 :o = "D 
:E 
500 
400 
300 
200 
Mercado de Software en México 
1989 1990 1991 1992 1993 1994 1995 
Afio 
Figura 2.1 Crecimiento del Mercado de Software en México 
De acuerdo con datos de 1991 de la Asociación Nacional de la Industria de Programas para 
Computadoras (ANIPCO), se estima que alrededor del 700/o de los productos son de origen extranjero, 
38 
principalmente norteamericanos. De este porcentaje se calcula que la mitad es por importación directa 
y la otra parte por la venta de las representaciones locales de los productos. 
La producción local de software se ha incrementado en los últimos años, principalmente en el 
nivel de aplicaciones y dentro de estas las especializ.adas o verticales. 
En la actualidad existen diversos tipos de distribuidores de software en México, que van desde 
las pequeñas compañías locales que desarrollan software y ofrecen productos de manufactura casera 
hasta compañías transnacionales que ofrecen paquetes de software, manufactura de equipo y venta de 
servICIOS. 
En relación con empresas de software, ANIPCO contaba con 160 casas registradas; sin 
embargo, se estima que existen alrededor de 500, de las cuales la mayoria son casas pequeñas de 
aproximadamente 1 O empleados. Actualmente, ANIPCO ha desaparecido y ha dado su lugar a AMITI 
(Asociación Mexicana de la Industria de Tecnología de Información)

Continuar navegando

Materiales relacionados

13 pag.
792 pag.