Está en la página 1de 12

Semana 1

Ingeniería de Software

Unidad 1
Introducción

Material compilado con fines académicos, se prohíbe su


reproducción total o parcial sin la autorización de cada autor.
1. Introducción
La ingeniería de software es una disciplina relativamente nueva, cuyo antecedente en el
ámbito educativo se ubica en el año 1978 cuando comenzó a desarrollarse en programas
de posgrado en Estados Unidos de Norteamérica y años más tarde, en 1987 en programas
de licenciatura en Reino Unido, (Aguilar, R. y Díaz, J., 2015).

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).

A continuación, revisaremos cuáles fueron los antecedentes de esta disciplina en México.

1.1. Panorama general de la Ingeniería de Software.


La primera computadora en México la tuvo la UNAM en 1955, fue una IBM 650.
En 1981 en México se concede el permiso de importación y fue posible hacer compras de
equipo de cómputo por 240 millones de dólares. En esos años la actividad del software
dependía de las grandes fábricas de computadoras; se usaban mainframes y las mini-
computadoras con programas de aplicación desarrollados en los Estados Unidos (Ortiz
Arroyo Daniel, 2008).

Figura 1. Ejemplo de superordenador para mainframe. Fuente: Pixabay.

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.

Figura 2. Ejemplo de equipo de cómputo de la década de 1970.


Fuente: Historia del cómputo.unam.mx.

Actualmente la industria del software atraviesa por un proceso de maduración. En el año


2002 la venta del software en paquete llegó a 676.78 millones de dólares y el software
a la medida fue de 160.51 millones de dólares, pero el 94% es de origen extranjero, en el
2014 tuvo 3.4 mil millones de dólares y se estima que en 2019 tenga un incremento de
41.2%.

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%.

Figura 3. Código Html. Fuente: Pixabay.

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.2. La industria del software en México.


Actualmente en la información y conocimiento, el software juega un papel importante en
la economía, ya que las empresas usan tecnología para dar soluciones a los problemas
con los que día a día se enfrentan.

En la última década, el sector de desarrollo de software se ha convertido en un impulsor


dominante en la economía de la información, ya que permite generar empleos más cali-
ficados, obliga a las universidades a actualizar sus planes de estudio para hacer frente a
los retos y necesidades de las empresas.

Actualmente las empresas de la industria del software más activas son:

1. Microsoft
2. Oracle
3. SAP
4. Vmware
5. Symantec

México se ubica como un excelente centro de atracción para los inversionistas en el


mercado global. Esto es debido a su localización geográfica, ya que tiene a la frontera
de Estados Unidos y los océanos Pacífico y Atlántico, esto puede generar más recursos
para el país, pero depende de los tratados que se realicen.

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.

1.3. Modalidades y costo del desarrollo de Software.


Estimar el costo de un software desarrollado a la medida es un proceso muy difícil, los
clientes siempre quieren que el costo sea bajo, aun cuando la exigencia de procesos a
desarrollar es bastante. Actualmente no existe una forma cien por ciento correcta, que
nos diga cómo estimar el costo, durante décadas se han establecido diferentes tipos de
estimaciones de costo, pero algunos ya han dejado de usarse debido a que se calculaba
el costo por líneas de código y actualmente eso ya no es funcional.

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.

Figura 5. Profesionales de TI. Fuente: Pixabay.

A continuación, veremos cómo sugieren diversos autores usar técnicas de estimación


para los costos del software:

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.

Semi-acoplado: estos proyectos son menores a 300,000 líneas de código, presenta


un poco de complejidad en requerimientos del software.

Empotrado: estos son sistemas dedicados a aplicaciones de control, por ejemplo, el


que se implementa en los teléfonos celulares, el microondas, etc., son sistemas bas-
tante complejos, los costos se calculan en base a experiencia.

También existen otros modelos como:

Modelo básico: se basa únicamente en el número de líneas de código.

Modelo intermedio: toma en cuenta algunas medidas de costo, más el número de


líneas de código.

Modelo avanzado: Realiza la estimación del costo distinto a cada fase concluida.

Las fórmulas para calcular los costos son:

KLDC indica el número de líneas (miles) de código para el proyecto.

E = Esfuerzo = a KLDC e * FAE (persona x mes)


T = Tiempo de duración del desarrollo = c Esfuerzo d (meses)
P= Personal = E/T (personas)

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.

Como hemos visto la estimación de costos es muy importante para el desarrollo de un


software, actualmente no existe un modelo que nos diga con certeza como cotizar un
proyecto, siempre es con base en la experiencia.

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.

Figura 6. Proceso de Software. Fuente: Ingeniería de software. Roger S. Pressman, 2010.

El Instituto de Ingeniería de Software ha desarrollado un modelo que se basa en un con-


junto de funciones de ingeniería del software, el cual permite alcanzar diferentes niveles
de madurez del proceso en una organización. Existen cinco niveles y son (CMMI, 2010):

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.

El desarrollo de software consta de cuatro etapas: a) definición de problemas, b) desarro-


llo técnico, c) integración de soluciones y d) estado actual, las cuales se repiten por cada
fase, hasta terminar el desarrollo de 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.

Recordemos que un proceso de desarrollo de software permite a las empresas incremen-


tar su productividad.

Un proceso de software debe contemplar los siguientes puntos:

• Estandarizar esfuerzos y consistencia entre proyectos.


• Permitir mejores prácticas en la industria.
• Establecer las bases para una mayor consistencia y mejoras futuras.
• Permite definir los cambios y liberación del sistema.
• Ejecutar los esfuerzos de operación y soporte.

Figura 7. Elementos del proceso de software. Fuente: Ingenie-


ría de software, Roger S. Pressman, (2002).

Para resolver problemas reales en la industria, se debe incorporar una estrategia de


desarrollo que acompañe al proceso, métodos y capas de herramientas.

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.

El SaaS como modelo de distribución de software, es parecido al costo de la luz eléctri-


ca, la empresa paga únicamente por los recursos que consume, sin preocuparse por dar
mantenimiento o actualizar alguna herramienta, ya que el proveedor del servicio debe
realizar todo, la empresa únicamente se encargará de monitorear el funcionamiento y
enviar reportes al proveedor. Otra ventaja importante es la reducción de los costos de
licencias, la empresa no se debe preocupar, el proveedor debe tener todo el recurso que
administra en la nube en regla.

El SaaS debe ofrecer la seguridad y transparencia de la información, monitorear en tiem-


po real los recursos a los que acceden diferentes usuarios, manejar adecuadamente las
transacciones o peticiones de los usuarios (Fox Armando, 2015).

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.

Figura 8. SaaS como servicio. Fuente: smartdatacollective.

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.

Te recomiendo revisar el video proceso e importancia del diseño en la arquitectura de


software: SaaS como servicio.mp4.

Visita la plataforma para ver el video relacionado

Como pudiste observar en el video anterior, es mucha la importancia que ha alcanzado


el diseño de la arquitectura de software y la ventaja que tiene al publicarlo en la nube, es
que pueden hacer pruebas antes de liberar o aceptar un proyecto.

Bibliografía
Abran Alain, M. J. (2009). El método Cosmic del tamaño funcional del
software. Canadá: Software Measurement Services Ltd.

Aguilar, R. y Díaz, J. (2015). La Ingeniería de Software en México: hacia la consolidación


del primer programa de licenciatura. México: Tecnología educativa- Revista CONAIC.
Recuperado de: https://www.conaic.net/revista/publicaciones/2doVol2015Articulo%201.pdf

CMMI. (2010). CMMI para desarrollo, Versión 1.3. E.E.U.U.: Carnegie Mellon University.

Fox Armando, p. D. (2015). Desarrollando Software como Servicio. España.

Ortiz Arroyo Daniel, R. E. (2008). Computadoras Mexicanas: Una


Breve reseña histórica. Revista Digital Universitaria, 2.

Pressman, R. S. (2010). Ingeniería del Software. México: Mc GRaw Hill.

12

También podría gustarte