Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería de Software
Unidad 1
Introducción
El término “Ingeniería de Software” fue propuesto por Friedrich L. Bauer en una reunión
del Comité de Ciencia de la Organización del Tratado del Atlántico Norte (OTAN) celebra-
da a finales de 1967. El término haría referencia a la disciplina ingenieril que genera un tipo
de producto conocido como software, cuya intangibilidad requiere métricas particulares
que difieren de las métricas tradicionalmente empleadas por los ingenieros (Aguilar, R. y
Díaz, J., 2015).
Uno de los primeros usuarios de los programas de aplicación desarrollados en los Estados
Unidos fue el centro electrónico de cálculo de la UNAM; la computadora era de bulbos,
aunque en ese entonces en EUA ya comenzaban a usarse los transistores.
2
En 1967 el Tecnológico de Estudios Superiores de Monterrey crea la primera carrera de
Ingeniería en Sistemas Computacionales; posteriormente, en 1970 con apoyo de CON-
DUMEX, la Universidad Iberoamericana crea su programa de estudios en la materia. La
Universidad Anáhuac lo hizo en 1974, y al año siguiente la Universidad de Guadalajara.
Poco a poco se instalaron equipos en instituciones de gobierno, empresas y bancos. La
producción nacional de computadoras comenzó a principios de los años ochenta del
siglo XX.
En México las compañías que desarrollan software son pocas y en su mayoría son
micro y pequeñas empresas, los lenguajes que más ocupan para desarrollar el sof-
tware son: c#, java, java script y html/xml. Además, existe un claro predominio de
Windows con 35% de usuarios, en tanto Unix tiene un 24.1% y Linux tiene 6.2%.
3
Sabías que
Cabe recalcar que los niveles de piratería en México son muy altos, esto se dió a
conocer en un estudio por parte de Businnes Software Alliance efectuado por la
International Planning and Research Corp. Las pérdidas por piratería aumentaron
de 133,964 millones de dólares en 1999 a 180,164 mmdl durante el 2000. El pro-
blema se debe a que en México no existe una legislación adecuada para el control
del software.
1. Microsoft
2. Oracle
3. SAP
4. Vmware
5. Symantec
Las últimas encuestas indican que en México existen casi 625,000 profesionales en TI,
de los cuales 400,000 se especializan en software, lamentablemente muchos se van
a trabajar al extranjero y muy pocos en México. Gartner estima que México es el tercer
proveedor y exportador de servicios de TI a nivel mundial, después de la India y Filipinas.
Los estados que aportan más son: Querétaro, Ciudad de México, Nuevo León y Jalisco,
estos son un fuerte motor para el desarrollo de soluciones y servicios de TI.
4
Figura 4. Profesional de TI. Fuente: Pixabay.
A partir del 2012, el gobierno federal ha implementado una política pública, la cual permite
aprovechar las oportunidades tanto en el mercado internacional como nacional, para ello
se creó el fondo Prosoft, el cual tiene como objetivo promover el desarrollo económico
nacional, esto es, a través de otorgamientos de subsidios a proyectos que apoyen la
creación, desarrollo, consolidación, viabilidad y sustentabilidad de las empresas en sector
de TI, posteriormente se crean mexicoIT y MexicoFirst.
Del 2013 al 2018 surge la estrategia Digital Nacional, en el marco del Plan Nacional de
Desarrollo, cuyo objetivo es fomentar la adopción de las tecnologías de la información y
comunicación e involucrar a México en la sociedad de la información y el conocimiento,
con la finalidad de contribuir con un mejor desarrollo en sectores estratégicos del país.
Otro proyecto que realiza el gobierno federal es México Conectado, el cual contribuye
a garantizar el derecho constitucional de acceso al servicio de Internet de banda ancha
(Artículo 160 de la constitución).
Como podemos darnos cuenta, México juega un papel importante en la industria, pero
tiene un reto importante para implementar esta innovación y la tecnología, para así poder
traducirla en oportunidades de negocios que sean redituables.
5
Actualmente se toma en cuenta la lógica para desarrollar cada parte del proceso, este
tipo de estimación de costos causa una gran polémica, debido a que en ocasiones el
programa no considera la lógica o estructura del proceso, lo cual con el paso del tiempo
encarece el software, es decir; si una empresa requiere una actualización de software y
contrata a un desarrollador para implementar los nuevos procesos, el primer problema al
que se enfrenta es que no existe una documentación técnica que explique la lógica con
la que se trabajó o no se documentó el sistema. En ese caso es preferible para muchos
comenzar el proyecto desde cero, ya que si se “parcha” el código, con el paso de tiempo
ya no será funcional y por consecuencia la empresa perderá el dinero invertido.
Por experiencia
Es la técnica más utilizada, como su nombre lo indica se basa en la experiencia, conoci-
miento del lenguaje y nivel de lógica de programación de cada individuo que integra el
equipo encargado del desarrollo del software.
Método histórico
Algunas consultorías o desarrolladores almacenan las características de los proyectos del
software que han realizado, esto con el fin de que cuando aparezca un proyecto parecido
a alguno de los que ha desarrollado, se estime el costo, tiempo y esfuerzo para el nuevo
proyecto.
Modelo COCOMO
Este modelo se caracteriza por el modelo algorítmico que implementa, lo adapta de
acuerdo a tres tipos de proyectos según (Pressman, 2010):
Orgánico: estos son proyectos sencillos, menores a 50,000 líneas de código, lo cual
6
permite calcular el costo del desarrollo debido a que no presenta complejidad en el
desarrollo.
Modelo avanzado: Realiza la estimación del costo distinto a cada fase concluida.
Los cálculos que se realizan no cubren los siguientes rubros de costos: planeación, ins-
talación, entrenamiento y personal externo, es exclusivamente para la programación.
Técnica iterativa
Su principal característica es que se cobra por etapas, recordemos que cada etapa cubre
el análisis diseño, codificación pruebas, documentación y evaluación del cliente.
Nunca cobres un proyecto sin realizar un análisis y establecer junto con el cliente
los alcances y limitaciones del producto, como dicen “trato hecho jamás desecho”,
y pueden enfrascarse en situaciones legales por un mal costo y tiempo de entrega.
7
1.4. Modelo de desarrollo y operación
En un proceso de software se involucra un gran número de actividades de trabajo, los
cuales deben adaptarse a las características de un proyecto. Recordemos que en un
proceso de software se involucran varios integrantes, es decir, la integran un conjunto
de personas, estructuras de organización, procedimientos, metodologías, y herramientas.
8
1. Nivel 1 (Inicial): en este nivel se definen pocos procesos, y, el éxito depende del
esfuerzo individual.
2. Nivel 2 (repetible): se establecen los procesos de gestión del proyecto para hacer
un seguimiento en el coste de la planificación y funcionalidad.
3. Nivel 3 (Definido). Se documentan las actividades de gestión y de ingeniería, en
este nivel todos los proyectos utilizan una versión documentada y aprobada del
proceso de la organización para el desarrollo y mantenimiento del software.
4. Nivel 4 (Gestionado). En éste nivel se recopilan medidas detalladas del proceso
del software y de la calidad del producto.
5. Nivel 5 (Optimización). En este nivel se puede realizar mejoras, ya que se pueden
realizar críticas o propuestas al software.
Fig. 7 Proceso del Software. Fuente: Ingeniería de software, Roger S. Pressman, (2010).
9
Actualmente existen diversos procesos de desarrollo, entre las cuales tenemos: CMM
(capacidad del modelo de madurez), CMMI (capacidad del modelo de madurez e inte-
gración), RUP (Proceso Unificado de Racional), PSP (Proceso Personal de Software), TSP
(equipo de proceso de software), etc.
10
1.5. El Uso de servicios y esquemas de uso de software total-
mente de propiedad y operado por un
SaaS es un modelo de distribución de software, en el cual el software y los datos son
centralizados, es decir, estos se encuentran alojados en un único servidor externo,
el cual se encuentra alojado en la nube.
Una gran desventaja del SaaS es que, si usuarios no distinguidos logran hackear estos
recursos, la información que ahí se encuentra se ve comprometida y se violará el código
de integridad de la información. Otra desventaja es que, si la empresa no paga a tiempo
la renta del servicio, el proveedor, después de dar un tiempo estimado para ponerse al co-
rriente, si no se cumple con el pago se bloquea automáticamente el ingreso a los usuarios.
Otra de las grandes diferencias con el modelo tradicional es que en el sistema SaaS el
software ya se encuentra configurado, esto trae como consecuencia un importante aho-
rro de tiempo en la fase de instalación y configuración del software en cada uno de los
ordenadores que lo van a utilizar.
Las soluciones SaaS operan en la nube, ya que se puede escalar e integrar con otras
soluciones de Software as a Service.
11
Las soluciones SaaS son de fácil uso sobre cualquier sistema operativo que utilice la em-
presa. Estas aplicaciones suelen incorporar muestras de fácil uso y un servicio de soporte
por parte de la empresa proveedora. Además, los usuarios pueden testear las distintas
funcionalidades del software antes de realizar la compra definitiva.
Bibliografía
Abran Alain, M. J. (2009). El método Cosmic del tamaño funcional del
software. Canadá: Software Measurement Services Ltd.
CMMI. (2010). CMMI para desarrollo, Versión 1.3. E.E.U.U.: Carnegie Mellon University.
12