0% encontró este documento útil (0 votos)
13 vistas50 páginas

Modulos

El documento aborda el diseño de programas y aplicaciones, destacando la necesidad de desarrollar software más complejo debido al avance tecnológico. Se exploran temas como modelos de desarrollo, metodologías, diseño de software, programación y gestión de la calidad, enfatizando la importancia de la innovación y la adaptación a las necesidades del mercado. Además, se menciona el crecimiento del mercado de aplicaciones móviles y su impacto en la interacción entre universidades y sus stakeholders.

Cargado por

ferroca1980
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas50 páginas

Modulos

El documento aborda el diseño de programas y aplicaciones, destacando la necesidad de desarrollar software más complejo debido al avance tecnológico. Se exploran temas como modelos de desarrollo, metodologías, diseño de software, programación y gestión de la calidad, enfatizando la importancia de la innovación y la adaptación a las necesidades del mercado. Además, se menciona el crecimiento del mercado de aplicaciones móviles y su impacto en la interacción entre universidades y sus stakeholders.

Cargado por

ferroca1980
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Introducción

El Diseño de Programas y Aplicaciones es un tema complejo, sin embargo,


impresionante, puesto que el mismo en ningún momento parará, toda vez
que éste es el resultado de la tecnología, la cual día con día avanza; en
consecuencia, siempre se va a requerir la producción de softwares más
complejos.

El maestro Baquero, en su artículo “Las apps como nuevo soporte de


interacción entre la entidad universitaria y sus stakeholders”, señala:

Actualmente, el mercado de las apps está en continuo crecimiento. Se estima que en 2015
habrá más de 167.000 millones de descargas, cifra que se incrementará hasta cerca
211.500 millones durante 2016. En cifras de negocio, estamos hablando de unos ingresos
superiores a 45.000 millones de dólares para las app stores y desarrolladores de
aplicaciones móviles
Al término del curso, el estudiante evaluará los modelos y recursos
requeridos para realizar la planeación y desarrollo de softwares, aplicaciones
o apps con base en las necesidades de funcionalidad, factibilidad y retorno
de inversión de los clientes y usuarios, tomando como referentes indicadores
y prácticas idóneas para el diseño de tecnología.

En la presente asignatura se abordarán los siguientes temas:

Introducción al desarrollo de software: en el cual se distinguirá los conceptos


de software, aplicación y apps; asimismo, se tocarán los tipos de diseño, las
tendencias actuales para el diseño de software

Modelos para el desarrollo de software: en donde se analiza el modelo


básico, centrado en planificación, análisis, diseño, implementación, pruebas,
instalación/despliegue y uso y mantenimiento.

Asimismo, se verán las metodologías las tradicionales y ágiles, las primeras


se destacan por su planeación, pues se hace un estudio profundo previo a su
concretización, estas son también llamadas clásicas o pesadas, las mismas
son poco flexibles, puesto que su documentación es exhaustiva, minuciosa,
por ende, el proceso de las mismas es lineal.

Finalmente, se estudiará las metodologías para el desarrollo de productos


tecnológicos, así como la documentación y gestión del conocimiento.

Diseño de Software: Éste es la actividad en donde se pretende describir la


estructura interna del mismo. Dentro de los tipos de diseño se tiene el
estructurado, el orientado a objetos y el centrado en datos.
Por otro lado, se verán los patrones de diseño, mismos que se entienden
como una descripción de clases y objetos comunicándose entre sí, con la
finalidad de resolver un problema. De igual forma, se analizará la
arquitectura de software se le considera como aquel que describe los
elementos y las interacciones que existen entre ellos

Asimismo, se tocará el tema de las notaciones y lenguajes para representar


la arquitectura del software, unas son en cuanto a su estructura y las otras
respecto de su comportamiento.

Finalmente, las estrategias de diseño de software, las cuales son: clásica,


método de desarrollo por análisis estructurado y método de construcción de
prototipos de sistemas.

Componentes dentro del diseño del software. Primeramente, la construcción


de software, el cual combina dos actividades: la generación del código y las
pruebas que se requieren realizar para detectar los errores que tiene el
mismo. Los principios de la codificación son de: preparación, programación y
validación. Sin la codificación el software no existe.

De igual forma, se tocará la reutilización e integración del código, entendido


el primero que la parte de un código existente, o la totalidad de éste, se
ocupe para la elaboración de un diverso programa; por cuanto hace a la
integración, se refiere a la combinación de los componentes de un software a
otro.

También se verá el tema inherente a las pruebas, cuya importancia es para


detectar de manera sistemática diferentes clases de errores que se
presentan en los softwares. En este orden de ideas, se analizará los niveles,
tipos y técnicas de prueba.

Programación para el desarrollo de software. En primer lugar se verá el


lenguaje de programación, entendiéndose éste como los sistemas
estructurados que permiten que se dé una instrucción y se obtenga un
resultado entre el usuario y el equipo o dispositivo. La aplicación actual de
los lenguajes de programación, se tiene Java, Javascript, Python, Lenguaje
C/C++.

Por último se tocará la revisión de soluciones generadas por programación y


los gestores de contenidos, los cuales son aquellos que permiten crear,
administrar y dar mantenimiento a un sitio web.

Gestión de la mejora y la rentabilidad del desarrollo tecnológico. Se


analizarán los indicadores o métricas para evaluar y controlar una solución
tecnológica. Asimismo, se verá la importancia de las normas ISO para el
desarrollo de tecnología y sistemas, destacando la ISO 9126 y la 9000;
destacando que en esta última se caracteriza por la auditoría, con lo cual se
garantiza la calidad. Finalmente, se tocará la importancia de los planes de
mejora en el desarrollo y siguientes versiones.

El Diseño de Programas y Aplicaciones tiene un campo para laborar grande;


sin embargo, requiere de un estudio profundo, puesto que no solo implica el
conocimiento de conceptos, sino otras cualidades, por ejemplo, la
imaginación por el diseño a desarrollar; de igual forma, debe contemplarse
que se debe conocer las normas ISO, con las cuales se garantiza la calidad de
un producto.

Alcance
Objetivo general de la asignatura
Al término del curso, el estudiante evaluará los modelos y recursos
requeridos para realizar la planeación y desarrollo de softwares, aplicaciones
o apps con base en las necesidades de funcionalidad, factibilidad y retorno
de inversión de los clientes y usuarios, tomando como referentes indicadores
y prácticas idóneas para el diseño de tecnología.
Temario

Bloque 1: Introducción al desarrollo de software


1. Introducción al desarrollo de software

1.1Software, aplicación y apps


1.2Sistemas operativos y tendencias actuales para el diseño de software
1.3Visión sistémica de un proceso de desarrollo
Bloque 2: Modelos para el desarrollo de software
2. Modelos para el desarrollo de software
2.1Modelo Básico de Desarrollo de Software (MBDS)
2.2Metodología para el desarrollo de software: tradicionales y ágiles
2.3 Estudio de metodologías para el desarrollo de productos tecnológicos
Bloque 3: Diseño de software y sus componentes
3. Diseño de software y sus componentes
3.1Tipos de diseño, patrones y arquitectura de software
3.2Patrones de diseño y arquitectura de software
3.3 Notaciones y estrategias para el diseño de software
Bloque 4: Componentes dentro del diseño del software
4. Componentes dentro del diseño del software
4.1Construcción, sus principios y pruebas del software
4.2Reutilización e integración
4.3Pruebas (origen, niveles, tipos y técnicas)
Bloque 5: Programación para el desarrollo de software,
Gestión de la mejora y la rentabilidad del desarrollo
tecnológico
5 Programación para el desarrollo de software, Gestión de la mejora y la
rentabilidad del desarrollo tecnológico

5.1Lenguajes de programación y sus soluciones


5.2Norma ISO para el desarrollo de tecnología y sistemas
5.3Indicadores o métricas para evaluar y controlar una solución
tecnológica
Bibliografía

 Cura, N. (2020). Fundamentos de sistemas operativos. Jorge


Samperio
Editor. [Link]
3?
as_all=sistemas__operativos&as_all_op=unaccent__icontains&pre
v=as

Otras fuentes de apoyo

 Barquero, C. (2016). Las apps como nuevo soporte de interacción


entre la entidad universitaria y sus stakeholders. Opción. 32 (11),
pp. 15-33. [Link]

 Cáceres, J. (2009). Patrones de diseño: ejemplo de aplicación en


los Generative Learning Object. RED. Revista de Educación a
Distancia [Link]

 Cervantes, J., Gómez, M. (2012). Taxonomía de los modelos y


metodologías de desarrollo de software más utilizados.
Universidades (52), 37-47 [Link]
id=37326902005

 Escudero X. (2010). Calidad del software: técnicas de prevención,


detección y corrección de defectos. Universidad Oberta de
Catalunya.

 Forero, Jairo Antonio, Bohórquez, Luz Esperanza, Lozano, Alfonso


Impacto de la calidad en la rentabilidad. Ingeniería [en línea].
2008, 13(1), 42-50[fecha de Consulta 5 de Julio de 2021]. ISSN:
0121-750X. Disponible en: [Link]
id=498850166007
 García, E., Vite, O., Navarrate, M., García, M. y Torres, V. (2016).
Metodología para el desarrollo de software multimedia educativo
MEDESME. CPU-e, Revista de Investigación Educativa
(23), [Link]

 Hardy, T. (2001). IA: Inteligencia Artificial. POLIS, Revista


Latinoamericana, 1(2), [Link]
id=30500219

 La Red Martínez, D. (s.f.). Sistemas Operativos. El Cid


Editor. [Link]
_Luis_La_Red_Martinez.pdf

 Maida, E, Pacienzia, J. (2015). Metodologías de desarrollo de


software. Facultad de Química e Ingeniería “Fray Rogelio
Bacon”. [Link]
/[Link]

 Mclver, A. (2011). Sistemas operativos. Cengage Learning


Editores, S.A.

 Olivares, L. (2008). Manual de Programación en Lenguaje C++.


Proyecto de Investigación: Métodos de Funciones de Base Radial
para la Solución de
EDP. [Link]
+.pdf

 Pressman, R. (2010). Ingeniería del Software. Mc Graw Hill.

 Rossainz, M. (s.f.). Diseño Orientado a


Objetos. [Link]
 Ruiz, F. Gónzalez, M. (s.f.). Diseño de Software. Universidad de
Cantabria. [Link]
[Link]

 Segovia, A. (s.f). ¿Qué es ITIL? Descubra una explicación y


definición simple de ITIL. 20000
Academy. [Link]

de Programas y Aplicaciones SOFTWARE, APLICACIÓN Y


APPS
Módulo 1 Introducción al desarrollo de software

Tema 1 - Software, aplicación y apps

Tema 1 – Software, aplicación y apps

El avance de la tecnología hace necesario la producción de softwares más complejos, puesto que, por
ejemplo, no se puede ocupar el mismo para uno de los primeros celulares con un smartphone.

La importancia del software es que su utilización en distintas áreas, da como resultado una
mejora en los productos y servicios de aquellos que los ocupan. Uno de los ejemplos más claros
sobre su utilización son los bancos, pues han tenido que adoptar, con el paso del tiempo, nuevas
formas para ser más eficientes que les permita tener un acercamiento, y como consecuencia, la
preferencia de los clientes, de ahí la creación de los cajeros automáticos y actualmente las bancas
electrónicas, las cuales, entre otras cosas, te permiten desde donde te encuentres, realizar algún
movimiento, sin la necesidad de acudir a alguna sucursal.

El primero que dio vida al concepto de software fue John W. Tukey, en 1957. Se puede decir que
el mismo es el conjunto del equipo lógico que permite la realización de determinadas tareas.

El software de aplicación, es aquel desarrollado para tareas específicas, por ejemplo, en una
agencia automotriz, va a ser diferente el requerido por un asesor de ventas con el del área de
refacciones.

Actualmente, la mayoría sabe sobre las apps, mismas que se asocian a dispositivos móviles; sin
embargo, debe decirse que no son nuevas, pues debe recordarse que los primeros celulares
contaban con reloj, calendario, incluso el conocido juego de la viborita. Como se ha dicho, con el
paso del tiempo y las necesidades de las personas, nacen las apps, por ejemplo, antes para enviar
un mensaje, debía ponerse especial atención al número de “caracteres”, pues se tenía un máximo,
en caso de rebasarlos la compañía telefónica cobraba dos y así sucesivamente; por ende, la
creación de la aplicación de mensajería instantánea, acabó con ello.

El objetivo de este tema, es comprender la importancia del software en la vida diaria, con el fin
de incentivar al alumno para adentrarse a su aplicación y desarrollo.

Para responder al objetivo de este tema, los puntos a revisar son:

 Software

 Aplicación
 Apps

A continuación, te presentamos algunos aspectos clave a revisar en esta sección.

Para Pressman, el software es:

1) Instrucciones (programas de cómputo) que cuando se ejecutan proporcionan las


características, función y desempeño buscados.
2) estructuras de datos que permiten que los programas manipulen en forma adecuada
la información.
3) información descriptiva tanto en papel como en formas virtuales que describen la
operación y uso de los programas Son programas, datos o métodos de funcionamiento a
modo de instrucciones a través de las que los equipos informáticos realizan tareas
(Pressman, 2010)

Pressman, R. (2010). Ingeniería del Software. Mc Graw Hill.

Para Pressman, el software de aplicación es:

Programas aislados que resuelven una necesidad específica de negocios. Las aplicaciones
en esta área procesan datos comerciales o técnicos en una forma que facilita las
operaciones de negocios o la toma de decisiones administrativas o técnicas. Además de
las aplicaciones convencionales de procesamiento de datos, el software de aplicación se
usa para controlar funciones de negocios en tiempo real (por ejemplo, procesamiento de
transacciones en punto de venta, control de procesos de manufactura en tiempo real)
(Ibídem)

Para Barquero, respecto a las Apps señala:

Los dispositivos móviles, por sus características específicas como el tamaño y resolución
de la pantalla o la utilización de batería en la conexión, requieren de una programación
diferente del software creado para los ordenadores de sobremesa con el fin de lograr
una navegación fluida y una óptima experiencia por parte del usuario. Estos programas
específicos para este tipo de dispositivos se llaman aplicaciones móviles, conocidas como
apps.
Fuente de referencia:

Barquero, C. (2016). Las apps como nuevo soporte de interacción entre la entidad universitaria y
sus stakeholders. Opción. 32 (11), pp. 15-33. [Link]
id=31048902002
El ser humano intenta hacer su vida más fácil, por ello es que el desarrollo de la tecnología no
para, con ello los softwares cada vez deben ser más desarrollados; en consecuencia, mientras más
preparados estén aquellos que se encuentren en esta área, mejores opciones de empleo podrán
encontrar. Como un dato que aporta el maestro Baquero en su artículo “Las apps como nuevo
soporte de interacción entre la entidad universitaria y sus stakeholders”, señala:

Actualmente, el mercado de las apps está en continuo crecimiento. Se estima que en


2015 habrá más de 167.000 millones de descargas, cifra que se incrementará hasta
cerca 211.500 millones durante 2016. En cifras de negocio, estamos hablando de unos
ingresos superiores a 45.000 millones de dólares para las app stores y desarrolladores de
aplicaciones móviles
Un ejemplo de éxito son las aplicaciones que llevan la comida hasta donde el usuario requiera,
puesto que su creación atiende a una necesidad del día a día, como lo es la alimentación; sin
embargo, mucha gente considera que pudiera mejorar, puesto que se han quejado del tiempo en
que tardan en llegar los alimentos, así como la calidad de los mismos; ante ese planteamiento
debe existir una nueva propuesta para su mejora.

Las ideas innovadoras son sinónimo de éxito, en específico en la tecnología; sin embargo, no
basta con tener la idea, sino aterrizarla, lo cual requiere de un equipo de personas especialistas en
determinadas áreas, destacando aquel que se encargará del software, pues sin el mismo no puede
funcionar aquello que se haya creado, aunque se cuente con todo lo demás.

Tema 2 - Sistemas operativos y tendencias actuales para el diseño de software

Un equipo tecnológico necesita un sistema operativo, el cual puede decirse


que es un conjunto de programas los cuales cada uno tienen una función en
específico y que permiten el funcionamiento del mismo; por otro lado, se dice
que es aquel conjunto de programas que permite la comunicación entre el
usuario y el equipo.

Como se sabe, la mayoría de los equipos de cómputo cuentan con el sistema


operativo Windows; sin embargo, una de las marcas que ha desarrollado su
propio sistema es Apple, el cual es Mac OS, y para sus dispositivos móviles
tiene iOS.

Como se ha dicho, la tecnología está siempre en constante evolución, por


ende, los sistemas operativos se pueden apreciar que en los equipos que
constantemente se pide actualizar; y, por cuanto hace a los softwares, su
impacto depende de su innovación y las ventajas que ofrecen sobre otros.

El objetivo de este tema es conocer lo que es un sistema operativo, así como


identificar las tendencias actuales para el diseño de software, para que, por
un lado, evalúe su funcionamiento, con el fin de proponer mejoras.
Para responder al objetivo de este tema, los puntos a revisar son:

 Sistema Operativo

 Tendencias Actuales para el diseño de software

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Para el maestro Cura, un sistema operativo es:

Un conjunto variado de programas con fines diversos, agrupados lógicamente en


subsistemas, cada uno de los cuales cumple una labor determinada y específica,
supervisados por un programa que cumple la tarea de controlar la actividad de la CPU
denominado ‘Supervisor’
Cura, N. (2020). Fundamentos de sistemas operativos. Jorge Samperio Editor.

Para La Red Martínez, un sistema operativo es:

Un grupo de programas de proceso con rutinas de control necesarias para mantener


continuamente operativos dichos programas
La Red Martínez, D. (s.f.). Sistemas Operativos. El Cid Editor.

Para Mclver, un sistema operativo:

Es la parte fundamental del software, la porción del sistema de cómputo que gestiona
todo el hardware y el software. Para ser más específicos, controla todos los archivos,
todos los dispositivos, todas las secciones de la memoria principal y todos los
nanosegundos del tiempo de procesamiento. Controla quién y cómo puede usar el
sistema. En resumen, es el jefe.
En consecuencia, cada que el usuario envía una orden, el sistema
operativo debe asegurarse que ésta se ejecute o, en caso de no
ejecutarse, debe arreglárselas para que el usuario reciba un mensaje
que explique el error. Recuerde: esto no necesariamente significa que
el sistema operativo ejecuta la orden o envía el mensaje de error, sino
que controla las partes del sistema que lo hacen
Mclver, A. (2011). Sistemas operativos. Cengage Learning Editores, S.A.

Respecto a las tendencias sobre el desarrollo de software, atiende al


constante cambio que se sufre en el día a día, de ahí que la innovación es
clave para el éxito, pues no solo debe atender ciertas necesidades, sino estar
a la vanguardia; por ejemplo, se tiene a la realidad aumentada, inteligencia
artificial, etc.

Para Hardy, la inteligencia artificial:

Tiene por objetivo el estudio y el análisis del comportamiento humano en los ámbitos de
la comprensión, de la percepción, de la resolución de problemas y de la toma de
decisiones con el fin de poder reproducirlos con la ayuda de un computador. De esta
manera, las aplicaciones de la IA se sitúan principalmente en la simulación de actividades
intelectuales del hombre. Es decir, imitar por medio de máquinas, normalmente
electrónicas, tantas actividades mentales como sea posible, y quizás llegar a mejorar las
capacidades humanas en estos aspectos
Fuente de referencia:

Hardy, T. (2001). IA: Inteligencia Artificial. POLIS, Revista Latinoamericana,


1(2), [Link]

La importancia de los sistemas operativos es que el mismo se puede ofrecer


a distintas empresas, el ejemplo más claro y común que se tiene es
Windows, pues éste se ocupa para la mayoría de los equipos de cómputo sin
importar la marca de los mismos.

No siempre los sistemas operativos podrán agradarnos, tan es así que


muchos prefieren no actualizarlos, puesto que en muchos se pierden algunas
funciones que eran de uso.

Un ejemplo reciente sobre la importancia de desarrollar un sistema operativo


lo tiene Huawei, puesto que ante las sanciones que le impusieron los
estadounidenses, privando del uso de Android, tuvieron que desarrollar su
propio SO, el cual salió en junio de 2021, mismo que lleva por nombre
HarmonyOs. Lo anterior, si bien en su momento afectó a la citada empresa,
se puede tener seguridad que tendrá un efecto positivo, dado que ya no
dependerá de nadie y con ello volver a perder clientes, lo único que resta por
averiguar es si el mismo es del gusto de los clientes, de no ser así tendrán
que realizar ajustes y perfeccionarlo.

El sistema operativo se podría decir que es el alma del equipo, aquel que
permite el buen funcionamiento de éste. Respeto a las tendencias actuales
para el desarrollo de software, atiende a las necesidades e innovaciones que
aparecen en el mercado.

Tema 3 – Visión sistémica de un proceso de desarrollo


El proceso de desarrollo de software es el conjunto de actividades necesarias
para la realización de un software el cual satisfaga las necesidades y
exigencias del cliente, o bien, a quién va dirigido.

Al proceso de desarrollo también se le conoce como ciclo de vida, puesto que


nace de un requerimiento y muere cuando se deja de utilizar.

Es imposible señalar que existe un proceso de desarrollo aplicable para todo


caso; empero, todos deben tener algunas actividades fundamentales.

El sistema de proceso cuenta con tres componentes: entrada, proceso y


salida; en el primero, se ingresan los datos; en el proceso, como su nombre
lo indica se inicia la validación de los mismos; finalmente, se atiende o da
salida a la información procesada.

El objetivo de este tema es informarse sobre el proceso de desarrollo de


software, para su valoración, su con el fin estar en condiciones de proponer
mejoras a los que se revisarán.

Para responder al objetivo de este tema, los puntos a revisar son:

 Proceso de desarrollo de software y su impacto en su correcta


aplicación

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

En el artículo Taxonomía de los modelos y metodologías de desarrollo de


software más utilizado, las autoras definen al proceso de desarrollo de
software como:

El conjunto estructurado de las actividades requeridas para realizar un sistema de


software. Estas actividades son: especificación de requerimientos, diseño, codificación,
validación (pruebas) y mantenimiento. Al proceso de desarrollo de software también se le
conoce como ciclo de vida del software porque describe la vida de un producto de
software; primero nace con la especificación de los requerimientos, luego se lleva a cabo
su implantación, que consiste en su diseño, codificación y pruebas, posteriormente el
producto se entrega y sigue viviendo durante su utilización y mantenimiento. En este
ciclo se establece una comunicación interactiva entre cliente y Taxonomía de los modelos
y metodologías de desarrollo de software más utilizados J. Cervantes Ojeda y María del
Carmen Gómez Fuentes 39 desarrollador en la que el primero solicita servicios y el
segundo propone soluciones. El ciclo de vida del sistema de software termina cuando
éste se deja de utilizar.
Cervantes, J., Gómez, M. (2012). Taxonomía de los modelos y metodologías
de desarrollo de software más utilizados. Universidades (52), 37-
47 [Link]

En el artículo Metodología para el desarrollo de software multimedia


educativo MEDESME, sus autores señalan que el propósito fundamental del
proceso de desarrollo es “una producción de calidad que reúna los requisitos
y satisfaga las necesidades del cliente y/o del usuario al que va dirigido.”

García, E., Vite, O., Navarrate, M., García, M. y Torres, V. (2016). Metodología
para el desarrollo de software multimedia educativo MEDESME. CPU-e,
Revista de Investigación Educativa (23), [Link]
id=283146484011

El conocimiento sobre el proceso de desarrollo de software es el primer


elemento que debe de conocerse a la perfección para adentrarse en su
materialización, puesto que, como se ha mencionado, no existe un proceso
universal; sin embargo, hay reglas (por llamarlo de alguna manera) que son
comunes.

No basta con una idea, sino saber materializarla, para ello debe llevarse a
cabo un proceso en el cual debe primeramente se tenga claro su objetivo
para que a quien va dirigido tenga satisfacción en su uso.

Existe un enorme contenido para abordar sobre el tema que nos ocupa,
incluso los departamentos correspondientes de distintas instituciones
educativas, como la Facultad de Ingeniería de la Universidad de la República
y el Grupo de Ingeniería de Software y Tiempo Real (Ingeniería Software y
Tiempo Real, ISTR) la Universidad de Cantabria, han desarrollado
documentos con los cuales se complementa la información a efecto de que
se tengan las bases pues las mismas serán elementales para los restantes
temas que se abordarán en el curso.
Módulo 2 Modelos para el desarrollo de software

Tema 1 -- Modelo Básico de Desarrollo de Software (MBDS)

Para hablar del modelo básico de desarrollo de software, debe decirse que
tiene relación con el concepto de metodología, el cual es aquel conjunto de
procedimientos para alcanzar un fin. En consecuencia, atento al nombre, se
entiende que existen características comunes, pues en todos hay una
planificación, análisis, diseño, implementación, pruebas,
instalación/despliegue y uso y mantenimiento, con lo cual suele denominarse
ciclo de la vida.

El objetivo de este tema es sentar las bases para el desarrollo de softwares,


con el fin de analizar si las metodologías cumplen con las mismas.

Para responder al objetivo de este tema, los puntos a revisar son:

 Planificación

 Análisis

 Diseño

 Implementación

 Pruebas

 Instalación/despliegue

 Uso y mantenimiento

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Todo sistema va pasando por una serie de etapas vitales, mismas que en un
modelo de proceso se pueden identificar, pues son evidencia de su existencia
o que se realizó el mismo de forma correcta.
La primera etapa se tiene a la planeación, misma que comienza con una idea
que se pone en la mesa con el fin de que sea desarrollada, por ende, se tiene
que realizar actividades como un estudio sobre la viabilidad del proyecto,
impacto, análisis de riesgo, el coste del mismo y la temporalidad para su
desarrollo, entre otras.

Posteriormente, se tiene al análisis, el cual tiene como finalidad investigar o


determinar qué es lo que se tiene que realizar el software a desarrollar; lo
anterior tiene una gran importancia, puesto que, en caso de una simple idea
sin aterrizar, eventualmente, puede traer como consecuencia una selección
de una metodología incorrecta y con ello un fracaso, o bien, modificar la
metodología con lo cual se incrementa el tiempo y costo del producto.

Ahora bien, por cuanto hace al diseño, se tiene que responder a la pregunta
¿cómo?; es decir, cómo se va a llevar a cabo.

La implementación, una vez que se resolvió el ¿qué? y el ¿cómo?, se procede


a su programación, utilizando las herramientas más idóneas que permitan su
debida codificación.

Por cuanto hace a las pruebas, se hacen con la finalidad de atender los
errores que se vayan detectando, con la finalidad de que una vez instalado
no aparezcan.

Instalación/despliegue. Es cuando se pone en funcionamiento el sistema


desarrollado; en este momento aparecen en dónde debe de funcionar el
sistema, esto es el hardware y software.

Finalmente, se tiene el uso/mantenimiento; una vez que se instaló comienza


el uso del mismo, por lo cual suelen aparecer situaciones que merecen ser
atendidas, de ahí el mantenimiento que es correctivo, adaptativo o
perfectivo.

Todas las etapas son importantes, pues en caso de no atender alguna se


podría decir que el producto a desarrollar no será un éxito.

Debe quedar en claro que el encontrar errores en la etapa de instalación no


quiere decir que se falle en las pruebas, puesto que existen situaciones que
no son predecibles, por ello, encontrar un error en las pruebas significa
tranquilidad.

Por lo anterior, el alumno debe conocer todas las etapas para brindar
opciones que permitan al cliente sentir confianza en el trabajo conferido,
pues muchas veces se tiene la idea; sin embargo, no tiene la idea de lo que
se necesita para su capitalización, por ende, se debe orientar y guiar en el
proceso de respuestas y con ello satisfacción. El mantenimiento es donde las
empresas gastan gran capital, pues debe resolverse errores que se
presentaron, o bien, la situación amerita que debe adaptarse o el cliente
advierte que hay cosas que pueden ser perfeccionadas para la satisfacción
de quien lo utiliza.

Con lo explicado, el modelo de desarrollo de software busca sentar bases


para las metodologías, mismas que ponen especial atención en algún tópico
en particulares, por ejemplo, las tradicionales invierten mucho tiempo en el
análisis y por ello es que se les conoce como pesadas; lo anterior va a
depender de la pretensión, el tiempo, dinero, flexibilidad que puedan tener,
entre otras cosas.

El ciclo de vida de un sistema de información comprende varias fases interconectadas, desde su


concepción hasta su eventual eliminación. Estas fases incluyen la planificación, donde se definen los
objetivos y alcance del sistema; el análisis, donde se estudian los requisitos y necesidades del usuario; el
diseño, donde se crea la arquitectura y estructura del sistema; la implementación, donde se construye y
prueba el sistema; y finalmente, el mantenimiento, donde se realizan actualizaciones, correcciones y
mejoras continuas, hasta que el sistema es eventualmente dado de baja.

Fases del Ciclo de Vida de un Sistema de Información:

1. 1. Planificación:
o Identificación de la necesidad o problema que el sistema busca resolver.
o Definición de los objetivos y alcance del sistema.
o Evaluación de la viabilidad técnica, económica y operativa.
o Desarrollo de un plan detallado para el proyecto.
2. 2. Análisis:
o Recopilación de información sobre los requisitos del usuario y del negocio.
o Modelado del sistema actual y del sistema deseado.
o Definición de los requisitos funcionales y no funcionales.
o Evaluación de diferentes alternativas de solución.
3. 3. Diseño:
o Diseño de la arquitectura del sistema, incluyendo la estructura de datos y la
interfaz de usuario.
o Especificación de los módulos y componentes del sistema.
o Diseño de la base de datos.
o Selección de las tecnologías a utilizar.
4. 4. Implementación:
o Desarrollo del código fuente del sistema.
o Pruebas unitarias e integración de los componentes.
o Pruebas de aceptación por parte del usuario.
o Instalación y configuración del sistema en el entorno de producción.
5. 5. Mantenimiento:
o Corrección de errores y fallos detectados.
o Implementación de mejoras y actualizaciones.
oAdaptación a cambios en el entorno o en los requisitos del usuario.
oMonitoreo del rendimiento del sistema.
6. 6. Muerte/Baja:
o Evaluación de la necesidad de continuar con el sistema.
o Desarrollo de un plan de transición a un nuevo sistema o tecnología.
o Eliminación o archivado del sistema antiguo.

Es importante destacar que este ciclo de vida no es necesariamente lineal, y puede haber
retroalimentación entre las fases. Además, la duración de cada fase puede variar dependiendo de la
complejidad del sistema y de las metodologías de desarrollo utilizadas.

Este es un resumen del ciclo de vida de un sistema de información. Para obtener más detalles sobre cada
fase, se recomienda consultar la documentación del tema en [Link]

Tema 2 – Metodología para el desarrollo de software: tradicionales y ágiles

El concepto de metodología es el conjunto de procedimientos para alcanzar


un fin. En consecuencia, por cuanto hace al desarrollo de software, es el
conjunto de métodos y técnicas para organizar, planear y controlar el
proceso de creación del mismo. En palabras simples puede decirse que la
metodología de desarrollo de software, busca contestar preguntas como qué,
cómo y cuándo hacer una tarea en específico.

No se puede decir que exista un modelo ideal para el desarrollo de software,


puesto que depende de las necesidades que se tengan.

Se tiene una clasificación respecto a la metodología de desarrollo de


software, la cual es:

 Tradicionales

 Ágiles

El objetivo de este tema es analizar la importancia de la metodología de


desarrollo de software y su clasificación para su análisis, con el fin de
compararlas y poder distinguir las ventajas y desventajas de cada una.

Para responder al objetivo de este tema, los puntos a revisar son:

 Metodologías de desarrollo de software:

 Tradicionales
 Ágiles

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Para Maida, EG. y Pacienzia, J., una metodología de desarrollo de software es:

[...] Un marco de trabajo que se usa para estructurar, planificar y controlar el proceso de
desarrollo de sistemas de información. Una gran variedad de estos marcos de trabajo
han evolucionado durante los años, cada uno con sus propias fortalezas y debilidades.
Una metodología de desarrollo de sistemas no tiene que ser necesariamente adecuada
para usarla en todos los proyectos. Cada una de las metodologías disponibles es más
adecuada para tipos específicos de proyectos, basados en consideraciones técnicas,
organizacionales, de proyecto y de equipo. Una metodología de desarrollo de software o
metodología de desarrollo de sistemas en ingeniería de software es un marco de trabajo
que se usa para estructurar, planificar y controlar el proceso de desarrollo de un sistema
de información
En el trabajo metodologías de desarrollo de software, desarrollado por
MegaPractical soluciones de desarrollo, señalan que como objetivos de una
metodología de desarrollo de software se tienen:

 [...]Establecer acertadamente cada uno de los requisitos de un sistema


de software.

 Suministrar un método sistemático de desarrollo de manera tal que se


pueda controlar su proceso.

 Hacer la construcción de un sistema de software dentro de un tiempo


apropiado y costos aceptables.

 Hacer la construcción de un sistema que además de estar bien


documentado, sea fácil de mantener.

 Ayudar a identificar, lo antes posible, cualquier cambio que sea


necesario realizar dentro del proceso de desarrollo.
 Proveer un sistema que satisfaga a las personas afectadas por el
mismo.

MegaPractical. (s.f). Metodologías de desarrollo de


software. [Link]
%20Software/metodologias%20de%20desarrollo%20de%[Link]

Por otro lado, en el mismo trabajo, señalan que los aspectos que deberían
cubrir una metodología de desarrollo de software, son:

 [...]Un proceso de ciclo de vida completo, es decir, uno que comprenda


aspectos tanto del negocio como aquellos que son de origen técnico.

 Un conjunto completo de conceptos y modelos que sean internamente


consistentes.

 Una descripción completa de artefactos a desarrollar.

 Un conjunto de técnicas probadas. Identificación de roles


organizacionales.

 Guías para la gestión de proyectos y aseguramiento de la calidad


Asesoramiento para la gestión de bibliotecas y reutilización. (ibídem)

Con base en lo anterior, se puede señalar que la metodología de desarrollo


de software es el conjunto de métodos y técnicas para organizar, planear y
controlar el proceso de creación del mismo. En palabras simples puede
decirse que la metodología de desarrollo de software, busca contestar
preguntas como qué, cómo y cuándo hacer una tarea en específico.

Ahora bien, por cuanto hace a la clasificación de las metodologías para el


desarrollo de software, se tienen a las tradicionales y ágiles, las primeras se
destacan por su planeación, pues se hace un estudio profundo previo a su
concretización, estas son también llamadas clásicas o pesadas, las mismas
son poco flexibles, puesto que, como se dijo, su documentación es
exhaustiva es minuciosa, por ende, el proceso de las mismas es lineal.

Para Maida, EG. y Pacienzia, J., señalan que las metodologías tradicionales:
Centran su atención en llevar una documentación exhaustiva de todo el proyecto, la
planificación y control del mismo, en especificaciones precisas de requisitos y modelado y
en cumplir con un plan de trabajo, definido todo esto, en la fase inicial del desarrollo del
proyecto. Estas metodologías tradicionales imponen una disciplina rigurosa de trabajo
sobre el proceso de desarrollo del software, con el fin de conseguir un software más
eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y
una vez que está todo detallado, comienza el ciclo de desarrollo del producto software.
Se centran especialmente en el control del proceso, mediante una rigurosa definición de
roles, actividades, artefactos, herramientas y notaciones para el modelado y
documentación detallada. Además, las metodologías tradicionales no se adaptan
adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja
en un entorno, donde los requisitos no pueden predecirse o bien pueden variar. Otra de
las características importantes dentro de este enfoque, son los altos costes al
implementar un cambio y la falta de flexibilidad en proyectos donde el entorno es volátil.
Maida, E, Pacienzia, J. (2015). Metodologías de desarrollo de software.
Facultad de Química e Ingeniería “Fray Rogelio
Bacon”. [Link]
[Link]

Por cuanto hace a las metodologías para el desarrollo de software ágiles, a


diferencia de las tradicionales son adaptables y las mismas tienen
características en específico como son proceso incremental, cooperativo
sencillo y adaptativo.

La importancia sobre el conocimiento de la metodología para el desarrollo de


software y su clasificación, permite que se esté en condiciones de proponer
al cliente la más adecuada según sus necesidades, advirtiendo las ventajas y
desventajas que tiene cada uno.

La aplicación Uber puede decirse que tiene una metodología de desarrollo de


software ágil, puesto que la misma ha sufrido diversos cambios ante las
situaciones o problemas que se han presentado, pues, como ejemplo, debe
recordarse que en un inicio únicamente se podía pagar mediante tarjeta de
crédito o débito; sin embargo, actualmente puede también en efectivo.

La metodología de desarrollo de software es el conjunto de métodos y


técnicas para organizar, planear y controlar el proceso de creación del
mismo; se cuenta una clasificación que son las tradicionales y las ágiles, la
diferencia principal es que la segunda nace a consecuencia de que las
primeras no permiten cambios, por ende, son adaptativas; sin embargo, en
las primeras se hace un estudio exhaustivo con lo cual, algunos piensan que
se tiene éxito asegurado.
Tema 3 -- Estudio de metodologías para el desarrollo de productos tecnológicos

El estudio de las metodologías para el desarrollo de software, trae como


consecuencia que quien ofrezca sus servicios pueda brindar información de
calidad al cliente, a efecto de que éste quede convencido para la
materialización de su idea, puesto que debe recordarse que día con día se
crean empresas las cuales buscan estar a la vanguardia y ofrecer el mejor
servicio a sus clientes; a más que la competencia es grande.

El objetivo de este tema es distinguir las metodologías que existen para que
se esté en condiciones de seleccionar las que aportan mayores ventajas, con
la finalidad de recomendarlas para el desarrollo de productos tecnológicos.

Para responder al objetivo de este tema, los puntos a revisar son:

 METODOLOGÍAS CLÁSICAS

 WATERFALL (CASCADA)

 PROTOTYPING

 ESPIRAL

 INCREMENTAL

 RAD

 METODOLOGÍAS ÁGILES

 PROGRAMACION EXTREMA

 SCRUM

 CRYSTAL

 KANBAN
 LEAN

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

METODOLOGÍAS CLÁSICAS

 WATERFALL (CASCADA): Se considera como el modelo más básico,


mismo que toma las actividades básicas del proceso, siendo éstas
especificación, desarrollo, validación y evolución. En el mismo no se
avanza de fase hasta que la previa esté correcta.

 PROTOTYPING o PROTOTIPADO: Es aquel que se basa en prueba y error,


por ende su creación es rápida.

 ESPIRAL: Se podría decir que toma de los dos procesos anteriores,


añadiendo un análisis de riesgo; es decir, primero se planea, después
se analiza el riego sobre su desarrollo, de acceder, se continúa con el
mismo y se realiza un prototipo, mismo que es evaluado y en su caso
modificado.

 INCREMENTAL: En el mismo se va construyendo de manera progresiva,


con la particularidad que en la misma se agrega funcionalidad.

 RAD: La misma es conocida como conocida como diseño rápido de


aplicaciones RAD (rapid application development), misma que, como su
nombre lo indica, se centra en la creación de aplicación en un plazo de
tiempo muy corto, por ende es que es susceptible de errores y el costo
es alto.

METODOLOGÍAS ÁGILES

 PROGRAMACIÓN EXTREMA: También llamada XP, se basa en las


relaciones interpersonales, en donde el buen ambiente es el que
destaca y lo señalan como la clave del éxito, teniendo una excelente
comunicación entre todos aquellos que participan. Se ha señalado que
es la adecuada para proyectos que no tienen ideas precisas y suelen
estar en constante cambio.

 SCRUM: Se aplica un conjunto de buenas prácticas; es decir, se revisa


constantemente en tiempos muy cortos el avance para la satisfacción
del cliente.

 KANBAN: Es aquel ideado por Toyota, en donde se utilizaban tarjetas


visuales, en donde se indicaba aquellas pendientes, en curso y
terminadas. En éste se dice que no se puede comenzar algo nuevo si no
se ha terminado lo anterior.

 LEAN: Se basa en el creado por Toyota y en el cual se crea un grupo


pequeño pero preparado y unido, con la finalidad de que tareas en un
lapso muy corto de tiempo.

La importancia del conocimiento de las metodologías brinda seguridad para


determinar cuál de ellas es la correcta para el desarrollo del producto
tecnológico a realizar, pues se debe de dar opiniones al cliente, al ser quien
lo utilizará atendiendo distintos factores fundamentales como lo son el
tiempo y el costo.

En el área automotriz, específicamente en la producción de vehículos, puede


ocurrir que aparezca una falla en el sistema, por ende, se debe tomar una
decisión rápida pero certera sobre el actuar, toda vez que cada minuto que
pasa conlleva detener el proceso, lo cual es sinónimo de una pérdida
millonaria.

Toda metodología tiene el mismo fin; sin embargo, algunas suelen tener más
ventajas o desventajas que otras, por lo cual es que empresas como Toyota
han creado su propia metodología, el cual ha sido todo un éxito, por lo cual
muchas empresas han adoptado la misma, incluso se ha intentado mejorar
puesto que la ventaja de las metodologías ágiles, como se ha visto, son
flexibles.
Módulo 3 Diseño de software y sus componentes.

Tema 1 -- Tipos de diseño, patrones y arquitectura de software.

El diseño de software es la actividad en donde se pretende describir la


estructura interna del mismo.

El diseño de software contiene cuatro etapas: diseño de datos, diseño


Arquitectónico, diseño de la Interfaz y el diseño de procedimientos.

Los tipos de diseño son estructurados, orientados a objetos y centrados a


objetos.

El objetivo de este tema es examinar las clases de diseño de software, para


su análisis, con el fin de determinar su viabilidad.

Para responder al objetivo de este tema, los puntos a revisar son:

 Diseño de software

 Estructurado

 Orientado a objetos

 Centrado en los datos

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Para Pressman, el diseño de software:

[...]Agrupa el conjunto de principios, conceptos y prácticas que llevan al desarrollo de un


sistema o producto de alta calidad. Los principios de diseño establecen una filosofía
general que guía el trabajo de diseño que debe ejecutarse. Deben entenderse los
conceptos de diseño antes de aplicar la mecánica de éste, y la práctica del diseño en sí
lleva a la creación de distintas representaciones del software que sirve como guía para la
actividad de construcción que siga
Pressman, R. (2010). Ingeniería del Software. Mc Graw Hill.
Dada la evolución de las nuevas tecnologías, indefectiblemente el diseño de
software es cambiante.

El diseño de software contiene 4 etapas:

 Diseño de datos

 Diseño Arquitectónico

 Diseño de la Interfaz

 Diseño de procedimientos

Como tipos de diseño tenemos:

 Estructurado: Para Pressman “Se caracteriza con frecuencia como


método de diseño orientado al flujo porque provee una transición
conveniente de un diagrama de flujo de datos a la arquitectura del
software” (Ibídem).

 Orientado a objetos: Para el doctor Dr. Mario Rossainz López, quien es


profesor investigador, titular de tiempo completo definitivo de la BUAP,
señala que éste “Utiliza objetos auto-contenidos y clases de objetos.”

Asimismo, señala como características principales de éste, son:

 Los objetos son abstracciones del mundo real o entidades del sistema
que se administran entre ellas mismas.

 Los objetos son independientes y encapsulan el estado y la


representación de información.

 La funcionalidad del sistema se expresa en términos de servicios de los


objetos.
 Las áreas de datos compartidas son eliminadas. Los objetos se
comunican mediante paso de parámetros.

 Los objetos pueden estar distribuidos y pueden ejecutarse en forma


secuencial o en paralelo.

Como ventajas indica:

 Fácil de mantener, los objetos representan entidades auto-contenidas.

 Los objetos son componentes reutilizables.

 Para algunos sistemas, puede haber un mapeo obvio entre las


entidades del mundo real y los objetos del sistema.

 Centrado en los datos.

Rossainz, M. (s.f.). Diseño Orientado a


Objetos. [Link]

Como nota, el estándar ISO 12207, acepta dos clases de diseño de software,
el arquitectural y el detallado.

El diseño arquitectónico, según Pressman (2010):

[...]Representa la estructura de los datos y de los componentes del programa que se


requieren para construir un sistema basado en computadora. Considera el estilo de
arquitectura que adoptará el sistema, la estructura y las propiedades de los
componentes que lo constituyen y las interrelaciones que ocurren entre sus componentes
arquitectónicos
El diseño detallado es aquel que describe su comportamiento y cada
componente que lo integra.

No basta con el conocimiento en materia de diseño, sino con la creatividad


del ingeniero encargado de su realización. El diseño es la primera de las 3
etapas que conforman un proceso de ingeniería de software, siendo las
restantes la codificación y las pruebas. La prueba de los diseñadores de
software es elegir, entre tantas alternativas, la más viable atento a las
necesidades de quienes participan en el proyecto.

La importancia del diseño es porque permite darle forma al producto que se


pretende construir, con lo cual se cumpliría su fin que es atender los
requerimientos planteados por el usuario y la satisfacción para quien esté
destinado.

Tema 2 – Patrones de diseño y arquitectura de software.

Los patrones de diseño de software se entienden como una descripción de


clases y objetos comunicándose entre sí, con la finalidad de resolver un
problema; de ahí que se puede establecer que los elementos del mismo son:
nombre del patrón, problema, solución y consecuencias.

La arquitectura de software se le considera como aquel que describe los


elementos y las interacciones que existen entre ellos.

El objetivo de este tema es analizar la arquitectura del software, así como los
patrones de diseño para contrastar su importancia en el desarrollo de
software, con el fin de inducir a su introducción a dicha área.

Para responder al objetivo de este tema, los puntos a revisar son:

 Patrones de diseño

 Arquitectura de software

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Un patrón es una solución a una problemática en un contexto en específico,


entendiendo que el mismo no debe de resolverse desde 0; es decir, se
reutilizan soluciones que en su momento fueron utilizadas.

Según Cáceres, (2009) “Los patrones de diseño proveen soluciones


comprobadas a problemas comunes y por ende son un mecanismo poderoso
para agilizar el desarrollo de software”.

Se tiene que los elementos de los patrones son:

 Nombre del patrón


 El problema que resuelve

 La solución; y,

 Consecuencias

Según el artículo “Patrones de diseño: ejemplo de aplicación en los


Generative Learning Object”, los patrones se clasifican atendiendo a dos
características:

Atendiendo a su propósito

 Creacionales: Aquellos que se basan en la resolución de problemas


relativos a la creación de objetos.

 Estructurales: correspondientes a la composición de objetos

 De Comportamiento: responsabilidades o interacción entre objetos.

Atendiendo a su ámbito

 Clases: Relaciones estáticas entre clases

 Objetos: Relaciones dinámicas entre objetos

Cáceres, J. (2009). Patrones de diseño: ejemplo de aplicación en los


Generative Learning Object. RED. Revista de Educación a
Distancia [Link]

A la arquitectura de software se le considera como aquel que describe los


elementos y las interacciones que existen entre ellos. Su importancia radica
en el impacto sobre la capacidad de satisfacción tomando en consideración
su estructura, a lo cual se le conoce como atributos de calidad del sistema,
dentro de estos destacan rendimiento, seguridad, protección, disponibilidad y
mantenibilidad.

La importancia de los patrones es que brindan solución a aquellos problemas


que se presentan, con respuestas previamente utilizadas, con lo se puede
decir que brinda disminuyen tiempo para su continuación, pues de comenzar
de 0, indefectiblemente afecta en varios sentidos el proyecto.

En las empresas es primordial el tiempo, por lo cual, en un nuevo proyecto a


desarrollar el uso de patrones es primordial pues de no utilizar y comenzar
de 0 traería como consecuencia pérdidas en todos los sentidos; por lo cual,
debe decirse que el éxito laboral implica conocimientos y experiencia.

El uso de patrones provee soluciones comprobadas a problemas, por ende,


es viable su uso, de no hacerlo el tiempo que se puede demorar en demasía
la solución.

La arquitectura de software su impacto radica en la capacidad de satisfacción


para aquel para el que está diseñado el proyecto.

Tema 3 – Notaciones y estrategias para el diseño de software.

Existen demasiadas notaciones y lenguajes para representar la arquitectura


del software, unas son en cuanto a su estructura y las otras respecto de su
comportamiento.

Cabe señalar que el estándar ISO 12207, solamente identifica dos tipos de
diseño de software, el arquitectural y el detallado, el primero se encarga de
la descripción de estructura y organización, mientras que la segunda cada
componente y su comportamiento.

Se tienen tres estrategias de diseño de software: la clásica, el método de


desarrollo por análisis estructurado y el método de construcción de
prototipos de sistemas.

El objetivo de este tema es analizar las notaciones y estrategias para el


diseño de software para su evaluación, con el fin de comparar y determinar
para un caso en específico su aplicación.

Para responder al objetivo de este tema, los puntos a revisar son:

 Notaciones

 Estrategias de diseño

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.
Existen demasiadas notaciones y lenguajes para representar la arquitectura
del software, una es en cuanto a su estructura y las otras respecto de su
comportamiento.

Cabe señalar que el estándar ISO 12207, solamente identifica dos tipos de
diseño de software, el arquitectural y el detallado, el primero se encarga de
la descripción de estructura y organización, mientras que la segunda cada
componente y su comportamiento.

Por cuanto hace a su estática se tiene:

 ...Lenguajes de Descripción de Arquitecturas (ADLs) Lenguajes


textuales formales ideados para describir una arquitectura software en
términos de componentes y conectores:

 Diagramas de Clases y Objetos: Para representar un conjunto de clases


(y objetos) y sus interrelaciones.

 Diagramas de Componentes: Para representar un conjunto de


componentes (partes físicas y reemplazables de un sistema que son
conformes a y proveen un conjunto de interfaces) y sus interrelaciones.

 Tarjetas CRC (Clase Responsabilidad Colaborador): Para denotar los


nombres de los componentes (clases), sus responsabilidades, y los
nombres de los componentes con los que colaboran.

 Diagramas de Despliegue: Para representar un conjunto de nodos


físicos y sus interrelaciones, modelando los aspectos físicos de un
sistema.

 Diagramas Entidad-Interrelación: Para representar modelos


conceptuales de los datos almacenados en sistemas de información.

 Lenguajes de Descripción de Interfaces (IDLs): Las cuales son viables


para definir las interfaces de los componentes software.
 Diagramas de Estructura de Jackson: Para describir estructuras de
datos en cuanto a secuencia, selección e integración.

 Grafo de Estructura: Describe la estructura de llamadas de los


programas.

Las siguientes notaciones describen aspectos estructurales (estática); es


decir, los componentes y sus interconexiones:

 Diagramas de Actividad: Para mostrar el flujo de control entre


actividades.

 Diagramas de Colaboración: Para mostrar las interacciones entre un


grupo de objetos.

 Diagramas de Flujo de Datos: Para representar el flujo de datos entre


un conjunto de procesos.

 Tablas y Diagramas de Decisión: Para representar combinaciones


complejas de condiciones y acciones.

 Diagramas de Flujo [Estructurados]: Para representar el flujo de control


y las acciones asociadas que deben ser realizadas.

 Diagramas de Secuencia: Para mostrar las interacciones entre un grupo


de objetos, con énfasis en la ordenación temporal de los mensajes.

 Diagramas de Transición de Estados y Grafos de Máquinas de Estados:


Para mostrar el flujo de control entre estados de una máquina de
estados” (Ruiz y Gónzalez, s.f.).

Ruiz, F. Gónzalez, M. (s.f.). Diseño de Software. Universidad de


Cantabria. [Link]
Estrategias de diseño de software, se tiene que son tres: la clásica, que se
basa en investigación, determinación de los requerimientos del sistema,
diseño del sistema, desarrollo del software, prueba de sistemas y la
implantación y evaluación; el método de desarrollo por análisis estructurado,
éste se basa en la división del sistema en componentes y la construcción de
un modelo del sistema; y, el método de construcción de prototipos de
sistemas que se divide en la identificación de requerimientos conocidos, el
desarrollo de un modelo de trabajo, utilización del prototipo, revisión del
prototipo y la repetición del proceso las veces que sean necesarias.

Existen demasiadas notaciones y lenguajes para representar la arquitectura


del software y van a depender de su estructura y las otras respecto de su
comportamiento; lo anterior, tomando en consideración los tipos de diseño
arquitectural y el detallado.

Como recomendación se insta al alumno para que estudie a detalle cada una
de las notaciones, pues como se advirtió son demasiadas; lo anterior,
tomando en consideración que con su identificación indefectiblemente las
podrá aplicar sin error.

En el diseño de software, la estrategia a realizar es fundamental, puesto que


la misma depende del tipo de proyecto a realizar, por lo cual, seleccionar la
más idónea será el paso para el éxito o fracaso.

Módulo 4 Componentes dentro del diseño del software.

Tema 1 -- Construcción, sus principios y pruebas de software.

La construcción de software combina dos actividades: la generación del


código y las pruebas que se requieren realizar para detectar los errores que
tiene el mismo, a efecto de atenderlas y se esté en condiciones de ser
entregado al cliente.

Se dice que la codificación es la única actividad que no puede faltar, pues sin
código fuente no habría programa.

El objetivo de este tema es analizar la etapa de construcción dentro del


diseño de software para advertir su importancia y con ello discutir si
efectivamente es la única de la cual no se puede prescindir.

Para responder al objetivo de este tema, los puntos a revisar son:

 Construcción, sus principios


 Codificación

 Reutilización e integración del código

 Pruebas del software

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

La construcción de software combina dos actividades: la generación del


código y las pruebas que se requieren realizar para detectar los errores que
tiene el mismo, a efecto de atenderlas y se esté en condiciones de ser
entregado al cliente.

Pressman (2010), señala que en el trabajo de ingeniería moderna la


codificación puede ser:

“1) La creación directa de lenguaje de programación en código fuente (por


ejemplo, Java), 2) La generación automática de código fuente que usa una
representación intermedia parecida al diseño del componente que se va a
construir o 3) La generación automática de código ejecutable que utiliza un
‘lenguaje de programación de cuarta generación’ (por ejemplo, Visual C++)”.

La prueba unitaria dirige su atención al componente; asimismo, existen otros


niveles de prueba, los cuales son: de integración, de validación y de
aceptación; Pressman señala:

“2a. Otros niveles de pruebas incluyen 1) De integración (realizadas mientras


el sistema está en construcción), 2) De validación, que evalúan si los
requerimientos se han satisfecho para todo el sistema (o incremento de
software) y 3) De aceptación, que efectúa el cliente en un esfuerzo por
utilizar todas las características y funciones requeridas” (Ibídem).

Por cuanto hace a los principios, el multicitado autor indica:

“Principios de codificación. Los principios que guían el trabajo de codificación


se relacionan de cerca con el estilo, lenguajes y métodos de programación.
Sin embargo, puede enunciarse cierto número de principios fundamentales:

Principios de preparación: Antes de escribir una sola línea de código,


asegúrese de:
 Entender el problema que se trata de resolver.

 Comprender los principios y conceptos básicos del diseño.

 Elegir un lenguaje de programación que satisfaga las necesidades


del software que se va a elaborar y el ambiente en el que
operará.

 Seleccionar un ambiente de programación que disponga de


herramientas que hagan más fácil su trabajo.

 Crear un conjunto de pruebas unitarias que se aplicarán una vez


que se haya terminado el componente a codificar.

Principios de programación: Cuando comience a escribir código, asegúrese


de:

 Restringir sus algoritmos por medio del uso de programación


estructurada…

 Tomar en consideración el uso de programación por parejas.

 Seleccionar estructuras de datos que satisfagan las necesidades


del diseño.

 Entender la arquitectura del software y crear interfaces que son


congruentes con ella.

 Mantener la lógica condicional tan sencilla como sea posible.

 Crear lazos anidados en forma tal que se puedan probar con


facilidad.
 Seleccionar nombres significativos para las variables y seguir
otros estándares locales de codificación.

 Escribir código que se documente a sí mismo.

 Crear una imagen visual (por ejemplo, líneas con sangría y en


blanco) que ayude a entender.

Principios de validación: Una vez que haya terminado su primer intento de


codificación, asegúrese de:

 Realizar el recorrido del código cuando sea apropiado.

 Llevar a cabo pruebas unitarias y corregir los errores que se


detecten.

 Rediseñar el código” (Ibídem).

Por cuanto hace a las pruebas, indica:

Si las pruebas se efectúan con éxito (de acuerdo con los objetivos ya mencionados),
descubrirán errores en el software. Como beneficio secundario, la prueba demuestra que
las funciones de software parecen funcionar de acuerdo con las especificaciones, y que
los requerimientos de comportamiento y desempeño aparentemente se cumplen. Además,
los datos obtenidos conforme se realiza la prueba dan una buena indicación de la
confiabilidad del software y ciertas indicaciones de la calidad de éste como un todo. Pero
las pruebas no pueden demostrar la inexistencia de errores y defectos; sólo demuestran
que hay errores y defectos. Es importante recordar esto (que de otro modo parecería muy
pesimista) cuando se efectúe una prueba
(Ibídem)
La construcción de software se debe entender como la generación del código
y las pruebas, con la finalidad de detectar los errores que tiene el mismo
para que estos se solucionen y el producto pueda ser entregado al cliente

Las pruebas son parte fundamental en el proceso de construcción de


software, por ello no debe saltarse dicho paso, pues de hacerlo traería
consecuencias fulminantes que significan fracaso al no obtener la
satisfacción para quien fue diseñado; lo anterior, tomando en consideración
que las pruebas tienen como finalidad encontrar los errores que se presenten
y no sea el cliente quien los descubra.

Efectivamente sin la codificación el software no existe, por lo cual. Las


pruebas a la codificación auguran el éxito del software, pues se intenta
realizar un sin fin de las mismas para encontrar los errores que puedan
presentar y atender los mismos y con ello la satisfacción del cliente sea
plena.

Tema 2 – Reutilización e integración.

La reutilización de código significa que la parte de un código existente, o la


totalidad de éste, se ocupe para la elaboración de un diverso programa; con
lo cual se dice que se economiza en distintos rubros, destacando el tiempo y
el nivel de éxito que se puede alcanzar, pues, como se dijo, se toma parte o
la totalidad de un programa existente, por lo cual, por lógica, se toma aquello
benéfico.

Respecto a la integración se refiere a la combinación de los componentes de


un software a otro. La integración se divide en dos: incremental y no
incremental.

El objetivo de este tema es comprender la importancia de la reutilización y la


integración para el diseño de software, con el fin de destacar su aplicación.

Para responder al objetivo de este tema, los puntos a revisar son:

 Reutilización en el diseño de software

 Integración en el diseño de software

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Por cuanto hace a la reutilización significa que la parte de un código


existente, o la totalidad de éste, se ocupe para la elaboración de un diverso
programa; con lo cual se dice que se economiza en distintos rubros, como el
tiempo, costos y el nivel de éxito que se puede alcanzar, pues, como se dijo,
se toma parte o la totalidad de un programa existente, por lo cual, por lógica,
se toma aquello benéfico.

Para Pressman:
Al desarrollar un sistema de software, lograr un alto nivel de reutilización es quizá la
meta más difícil de lograr. La reutilización del código y de los diseños se ha reconocido
como uno de los mayores beneficios de usar tecnologías orientadas a objetos. Sin
embargo, la recuperación de esta inversión no es automática. Para reforzar las
posibilidades de la reutilización que da la programación orientada a objetos [o la
convencional], se requiere reflexión y planeación. Hay muchas técnicas para incluir la
reutilización en cada nivel del proceso de desarrollo del sistema… La planeación
anticipada en busca de la reutilización disminuye el costo e incrementa el valor tanto de
los componentes reutilizables como de los sistemas en los que se incorpora
Se manejan 3 niveles de reutilización: de código, de diseño y de
especificaciones.

Ahora bien, por cuanto hace a la integración en el diseño de software, se


refiere a la combinación de los componentes de un software a otro. La
integración se divide en dos:

 Incremental: El código se escribe y se prueba en partes


pequeñas, mismas que se adicionan al trabajo; es decir, en
partes.

 No incremental: Se combinan todos los módulos previamente y se


prueba en conjunto todo el programa.

Actualmente se busca desarrollar un programa que pueda volverse a usar en


proyectos diferentes, lo cual es un reto, lo cual se traduce en una inversión,
de tiempo y esfuerzo; sin embargo, sus beneficios podrán verse reflejados en
un futuro.

Se sugiere que se implemente la reutilización y la integración, puesto que el


ingeniero podrá invertir su tiempo en el resto del programa, pues como se ha
visto en temas anteriores, en el diseño se debe ser innovador.

El uso de la reutilización y la integración indefectiblemente es benéfico para


todas las partes, pues, por un lado, el ingeniero invertirá menos tiempo en el
trabajo y el mismo se verá reducido en errores, lo cual es sinónimo de éxito,
y por el otro lado, el cliente podrá verlo reflejado en costos.

Tema 3 – Pruebas (origen, niveles, tipos y técnicas).

La importancia de las pruebas es para detectar de manera sistemática


diferentes clases de errores que se presentan en los softwares. Es de
precisar que no es lo mismo un error, un defecto y un fallo; el primero se
asocia a una equivocación por parte de quien se encargó del desarrollo del
proyecto; el defecto es la imperfección de un componente del software
causado por un error; y, el fallo en la ejecución es la manifestación del error.

El objetivo de este tema es analizar las pruebas, con el fin de destacar su


importancia.

Para responder al objetivo de este tema, el punto a revisar es:

 El origen de las pruebas, nivel, tipos y técnicas

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

Las pruebas nacen de la necesidad de detectar y solucionar los errores que


aparezcan en el proyecto desarrollado, con la finalidad de que el producto se
entregue de forma que satisfaga al cliente o a quien va destinado el mismo.

Debe decirse que error, defecto y falla, no es lo mismo; sin embargo, tienen
una relación entre sí. El error se asocia a una equivocación por parte de
quien se encargó del desarrollo del proyecto; el defecto es la imperfección de
un componente del software causado por un error; y, el fallo en la ejecución
es la manifestación del error.

Para Escudero, (2010), las pruebas de software:

[...] Son una estrategia de gestión del riesgo en la que se valida que los requisitos se han
cumplido y se buscan defectos. Las pruebas tienen un carácter "destructivo" en el sentido
de que se tienen que planificar y diseñar para encontrar defectos y fallos en el software.
Implica un cambio de mentalidad respecto al que desarrolla, que trata de demostrar que lo
que ha construido funciona, y no al revés
Las pruebas se pueden realizar en diferentes niveles, esto atento a lo que
queramos probar; esto es, un componente, la integración entre los mismos o
el funcionamiento; dicha clasificación dice Escudero se denomina niveles de
prueba, en la cual se puede diferenciar:

“1) Pruebas unitarias o de componente: Tienen como objetivo probar cada


componente (módulo, clase...) de forma aislada del resto del sistema. Están
consideradas como una actividad dentro del proceso de construcción, y, por
lo tanto, las realiza el equipo de desarrollo.
2) Pruebas de integración: Se prueban las interfaces entre componentes,
diferentes partes del sistema (entre un componente y el sistema operativo,
por ejemplo), o bien entre sistemas (entre un sistema de nóminas y un
sistema externo bancario, por ejemplo). Suele realizarlas el equipo de
pruebas, aunque en algunos casos también las efectúa el equipo de
desarrollo.
3) Pruebas de Sistema: Tienen como objetivo encontrar defectos y validar
que el sistema cumple las especificaciones, comparando los resultados
obtenidos con los requisitos del sistema. Son realizadas por el equipo de
pruebas.
4) Pruebas de aceptación: Es el último nivel, en el que el cliente tiene que
validar que el desarrollo ha cumplido lo que se requería de él y no hay
riesgos en la puesta en marcha del aplicativo. Cuanto mejor se haya
realizado un nivel de pruebas, mayor será la eficiencia de los siguientes
niveles y menores defectos se encontrarán en ellos. En todos los niveles se
pueden validar requisitos tanto funcionales como no funcionales. Así, por
ejemplo, podemos comprobar una funcionalidad en un componente o en el
sistema y, también, el rendimiento del componente o del sistema”.

Como niveles de prueba se tienen:

 Unitarias, unidad o de componente: Según Pressman (2010). “[...]


Enfoca los esfuerzos de verificación en la unidad más pequeña
del diseño de software: el componente o módulo de software. Al
usar la descripción del diseño de componente como guía, las
rutas de control importantes se prueban para descubrir errores
dentro de la frontera del módulo. La relativa complejidad de las
pruebas y los errores que descubren están limitados por el
ámbito restringido que se establece para la prueba de unidad.
Las pruebas de unidad se enfocan en la lógica de procesamiento
interno y de las estructuras de datos dentro de las fronteras de
un componente. Este tipo de pruebas puede realizarse en
paralelo para múltiples componentes”.

 Pruebas de integración: Pressman señala al respecto “Las


pruebas de integración son una técnica sistemática para construir
la arquitectura del software mientras se llevan a cabo pruebas
para descubrir errores asociados con la interfaz. El objetivo es
tomar los componentes probados de manera individual y
construir una estructura de programa que se haya dictado por
diseño…” (Ibídem).
 Pruebas de sistema. Escudero (2010). señala al respecto: “[…]
Están dirigidas a probar el sistema de forma completa, en función
de los riesgos y especificaciones de los requisitos, procesos de
negocio, casos de uso u otras descripciones del sistema. Una
prueba de sistema ejecuta una transacción de negocio completa,
desde el punto de vista del usuario, desde la pantalla de
introducción de los datos hasta la respuesta que da el sistema a
estos datos”.

 Pruebas de aceptación: son aquellas que, una vez entregado el


sistema al cliente, éste evalúa si cuenta con lo requerido.

Tipos de prueba

Son aquellos que definen los objetivos de los niveles de prueba:

 Según características de calidad.

 Confirmación y regresión.

 De humo.

 Manuales y Automáticas.

Fuente de referencia:

Escudero X. (2010). Calidad del software: técnicas de prevención, detección y


corrección de defectos. Universidad Oberta de Catalunya.

Pressman, R. (2010). Ingeniería del Software. Mc Graw Hill.

La realización de pruebas es fundamental para el éxito del proyecto, puesto


que se busca encontrar los errores y atenderlos; las pruebas se pueden
realizar en distintas fases.

La detección y corrección de errores trae consigo un gasto importante, va a


depender de la etapa en la cual se identifican. Se tiene documentado que el
gasto por corregir un error durante la generación del código es
aproximadamente de US$977, cada uno.

Las pruebas nacen de la necesidad de detectar y solucionar los errores que


aparezcan en el proyecto desarrollado, con la finalidad de que el producto se
entregue de forma que satisfaga al cliente o a quien va destinado el mismo.

Módulo 5 Programación para el desarrollo de software, Gestión de la mejora y la


rentabilidad del desarrollo tecnológico.

Tema 1 -- Lenguajes de programación y sus soluciones.

Como se sabe, el lenguaje es aquel que permite la comunicación entre


personas; en programación, se entiende como los sistemas estructurados
que permiten que se dé una instrucción y se obtenga un resultado entre el
usuario y el equipo o dispositivo; los lenguajes de programación se
encuentran conformados por símbolos y reglas de sintaxis y semántica.
Existen diversas aplicaciones de los lenguajes de programación como Java,
Javascript, Python, Lenguaje C/C++.

Los sistemas de gestores de contenidos son aquellos que permiten crear,


administrar y dar mantenimiento a un sitio web.

El objetivo de este tema es que el alumno analice los distintos lenguajes de


programación para deducir su importancia, con la finalidad de que el alumno
cuente con la información necesaria para crear un software.

Para responder al objetivo de este tema, los puntos a revisar son:

 Lenguajes de programación: Java, Javascript, Python, Lenguaje C/C++

 Gestores de contenidos

A continuación, te presentamos algunos aspectos clave a revisar en esta


sección.

El lenguaje es aquel que permite la comunicación entre personas; en


programación, se entiende como los sistemas estructurados que permiten
que se dé una instrucción y se obtenga un resultado entre el usuario y el
equipo o dispositivo.

El lenguaje de programación viene definido por:


 Léxico: Son el conjunto de símbolos que se usan en un lenguaje,
pueden ser identificadores, constantes, operadores, instrucciones,
comentarios.

 Sintaxis: Son reglas que deben seguirse para escribir un código, se


podría decir que es una secuencia de símbolos que en su conjunto
forman oraciones.

 Semántica: Es aquel que define el significado de una instrucción.

Los lenguajes de programación se clasifican en lenguajes de bajo nivel y de


alto nivel.

Existen diversas aplicaciones de los lenguajes de programación como Java,


Javascript, Python, Lenguaje C/C++.

 En el recurso ¿Qué es Java?, define a Java como “Un lenguaje de


programación orientado a objetos diseñado específicamente para
permitir a los desarrolladores una plataforma de continuidad. Java
difiere de otros paradigmas de programación - como la programación
funcional y lógica - porque los desarrolladores pueden continuar o
actualizar algo que ya han terminado, en lugar de empezar desde cero.
Los objetos mantienen el código ordenado y fácil de modificar cuando
es necesario”.

 La página indica que el punto anterior, señala que Javascript: “Es un


lenguaje interpretado como Visual Basic de Microsoft. Se utiliza
principalmente para programas más cortos, como los que hacen que
aparezcan ventanas emergentes en un navegador web. JavaScript
carece de la portabilidad que tiene Java, y se utiliza a menudo como
parte de la codificación HTML”.

 Python es un lenguaje cuya filosofía es que sea legible por cualquier


persona que tenga conocimientos de programación.
 Lenguaje C/C++. Olivares, (2008), señala que éste: “Es un lenguaje de
programación, creado a mediados de 1980 por Bjarne Strousstrup,
como extensión del lenguaje C. Este lenguaje abarca tres paradigmas
de la programación:

1. Programación Estructurada.

2. Programación Genérica.

3. Programación Orientada a Objetos.


En la actualidad, C++ es un lenguaje versátil, potente y general. Su éxito
entre los programadores le ha llevado a ocupar el primer puesto como
herramienta de desarrollo de aplicaciones, ya sea en Windows o GNU/Linux”.

Los sistemas de gestores de contenidos son aquellos que permiten crear,


administrar y dar mantenimiento a un sitio web.

Fuente de referencia:

Olivares, L. (2008). Manual de Programación en Lenguaje C++. Proyecto de


Investigación: Métodos de Funciones de Base Radial para la Solución de
EDP. [Link]

El lenguaje en programación se entiende como los sistemas estructurados


que permiten que se dé una instrucción y se obtenga un resultado entre el
usuario y el equipo o dispositivo.

Java es el segundo lenguaje de programación más utilizado en el mundo,


justo detrás de C y delante de C++ y Objetivo C. El lenguaje que se
seleccione debe ser atento a las necesidades del proyecto, así como la
complejidad del mismo; por lo cual, debe analizarse cada uno para advertir
ventajas y desventajas de cada uno y así optar por el más idóneo.

El lenguaje es de lo más importante en la programación, pues va a ser la


interacción entre el usuario y el sistema, por lo cual se insta al alumno al uso
de los diferentes programas existentes, con la finalidad de que, con base en
experimentar, esté en condiciones de poder establecer en qué casos es más
viable uno determinado.

Tema 2 -- Norma ISO para el desarrollo de tecnología y sistemas.

Primeramente, hay que señalar que el organismo ISO indica que se encarga
de reunir a expertos para compartir conocimientos y desarrollar Normas
Internacionales voluntarias, basadas en consenso y relevantes para el
mercado que respaldan la innovación y brindan soluciones a los desafíos
globales.

Se tienen dos normas en específico que son referentes a la calidad del


software, éstas son ISO 9126 y la 9000; en esta segunda es de gran
relevancia los auditores, pues son estos quienes evalúan semestralmente el
sistema y las operaciones de calidad de una compañía, respecto del
cumplimiento del estándar y de la operación eficaz; con lo cual el cliente
puede tranquilidad.

El objetivo de este tema es que el alumno analice las normas más relevantes
sobre la calidad de software, para su atención y con el fin de su estar en
condiciones de su implementación en sus proyectos.

Para responder al objetivo de este tema, los puntos a revisar son:

 ¿Qué son las normas ISO?

 NORMA ISO 9126 y 9000

 La importancia de los auditores

 Su impacto en lo financiero y rentabilidad

Según Pressman, respecto de la calidad software, se tiene el estándar ISO


9126, mismo que dice:

Se desarrolló con la intención de identificar los atributos clave del software de cómputo.
Este sistema identifica seis atributos clave de la calidad: Funcionalidad. Grado en el que
el software satisface las necesidades planteadas según las establecen los atributos
siguientes: adaptabilidad, exactitud, interoperabilidad, cumplimiento y seguridad.
Confiabilidad. Cantidad de tiempo que el software se encuentra disponible para su uso,
según lo indican los siguientes atributos: madurez, tolerancia a fallas y recuperación.
Usabilidad. Grado en el que el software es fácil de usar, según lo indican los siguientes
subatributos: entendible, aprendible y operable. Eficiencia. Grado en el que el software
emplea óptimamente los recursos del sistema, según lo indican los subatributos
siguientes: comportamiento del tiempo y de los recursos. Facilidad de recibir
mantenimiento. Facilidad con la que pueden efectuarse reparaciones al software, según
lo indican los atributos que siguen: analizable, cambiable, estable, susceptible de
someterse a pruebas. Portabilidad. Facilidad con la que el software puede llevarse de un
ambiente a otro según lo indican los siguientes atributos: adaptable, instalable,
conformidad y sustituible. Igual que otros factores de la calidad del software estudiados
en las subsecciones anteriores, los factores ISO 9126 no necesariamente conducen a una
medición directa. Sin embargo, proporcionan una base útil para hacer mediciones
indirectas y una lista de comprobación excelente para evaluar la calidad del sistema.
Pressman, R. (2010). Ingeniería del Software. Mc Graw Hill.

Asimismo, el autor hace referencia a la ISO 9000, de la cual dice:

Describe en términos generales los elementos de aseguramiento de la calidad que se


aplican a cualquier negocio, sin importar los productos o servicios ofrecidos. Para
registrarse en alguno de los modelos del sistema de aseguramiento de la calidad
contenidos en la ISO 9000, por medio de auditores externos se revisan en detalle el
sistema y las operaciones de calidad de una compañía, respecto del cumplimiento del
estándar y de la operación eficaz. Después de un registro exitoso, el grupo de registro
representado por los auditores emite un certificado para la compañía. Auditorías
semestrales de supervisión aseguran el cumplimiento continuo de la norma. Los
requerimientos esbozados por la norma ISO 9001:2000 se dirigen a temas tales como
responsabilidad de la administración, sistema de calidad, revisión del contrato, control
del diseño, documentación y control de datos, identificación del producto y su
seguimiento, control del proceso, inspección y pruebas, acciones correctivas y
preventivas, registros del control de calidad, auditorías internas de calidad, capacitación,
servicio y técnicas estadísticas. A fin de que una organización de software se registre en
la ISO 9001:2000, debe establecer políticas y procedimientos que cumplan cada uno de
los requerimientos mencionados (y otros más), y después demostrar que sigue dichas
políticas y procedimientos.
(Ibídem)

Por lo anterior, se tiene la evaluación financiera y rentabilidad, Forero, J. y


otros, en el artículo Impacto de la calidad en la rentabilidad, señalan:

En el argot financiero a la productividad de los fondos comprometidos en una empresa


se le conoce como rentabilidad. Siendo esta (sic) el indicador por excelencia del éxito
empresarial, pues de su análisis puede lograrse una visión amplia de todos los factores
que inciden, favorable o desfavorablemente en el proceso de generación de valor de la
empresa, donde la calidad puede jugar un papel importante
Forero, Jairo Antonio, Bohórquez, Luz Esperanza, Lozano, Alfonso Impacto de
la calidad en la rentabilidad. Ingeniería [en línea]. 2008, 13(1), 42-50[fecha
de Consulta 5 de julio de 2021]. ISSN: 0121-750X. Disponible
en: [Link]

Con base lo anterior indefectiblemente el no cumplir con los estándares de


calidad, traería consigo que el software desarrollado fracase y con ello la
empresa que lo desarrolló tenga pérdidas millonarias; contrario a ello, quien
cumpla con los requerimientos establecidos, si bien el éxito es eventual,
cierto es que al atender normas que son ideadas con base en el estudio de
expertos, el mismo tendrá un alto grado de satisfacción para el sector a
quien está dirigido.

Las empresas previo a la creación de las normas ISO, gastaban miles de


millones de dólares en productos que resultaban un fracaso, tomando en
consideración que no existían bases que permitieran conocer los rubros que
debían contener su proyecto.

El alumno debe adentrarse en el uso de las normas ISO; es decir, su


conocimiento, con la finalidad que haga uso de las mismas, dado que ello
garantizará su trabajo y generará tranquilidad en el cliente y consumidor.

Las normas ISO, en general, garantizan la calidad de un producto o servicio


que se ofrece, pues las mismas han sido desarrolladas por expertos en temas
específicos; por ende, el uso de las mismas garantiza al consumidor su
confiabilidad.

Tema 3 -- Indicadores o métricas para evaluar y controlar una solución tecnológica.

Una vez que se ha realizado un análisis crítico a un producto tecnológico, se


pueden advertir ciertos problemas, a los cuales se les debe dar respuesta; en
consecuencia, puede decirse que para la solución debe existir un análisis, un
diseño, pruebas y validación.

Como se ha visto, todo programa debe tener mantenimiento, es decir, una


vez que se adviertan las fallas en el sistema, debe existir una solución y
mejora en las siguientes versiones; por lo cual, debe de recordarse.

El objetivo de este tema es valorar la solución de problemas para el óptimo


desarrollo del producto, con el fin de plantear mejoras en éstas.

Para responder al objetivo de este tema, los puntos a revisar son:

 Solución tecnológica (proceso e importancia)


A continuación, te presentamos algunos aspectos clave a revisar en esta
sección. Una vez que se ha realizado un análisis crítico a un producto
tecnológico, se pueden advertir ciertos problemas, a los cuales se les debe
dar respuesta; en consecuencia, puede decirse que para la solución debe
existir:

 Análisis: Una vez que se ha presentado el problema, se busca entender


el mismo, detectando toda la información posible.

 Diseño: Se debe hacer una estrategia con la que se dé solución al


problema mediante procesos inductivos y razonamiento lógico.

 Pruebas: Se realizan las mismas a efecto de verificar su funcionalidad.

 Validación: Se valida que la misma es factible, atento al análisis que se


realizó.

Se tiene el modelo ITIL, el cual se define como:

Un conjunto de publicaciones de mejores prácticas para Gestión de servicios de TI. ITIL


proporciona asesoramiento sobre la provisión de servicios de TI de calidad y de los
procesos, funciones y demás capacidades necesarias para darles apoyo. El marco de ITIL
está basado en un ciclo de vida del servicio y consiste de cinco etapas (estrategia del
servicio, diseño del servicio, transición del servicio, operación del servicio y mejora
continua del servicio) que cuentan con su propia publicación de apoyo. También hay un
conjunto de publicaciones complementarias de ITIL que brindan asesoramiento
específico para distintos sectores económicos, tipos de organizaciones, modelos de
operación y arquitectura de tecnología
(Segovia, s.f.)

Segovia, A. (s.f). ¿Qué es ITIL? Descubra una explicación y definición simple


de ITIL. 20000 Academy. [Link]

Las fallas o recomendaciones que hacen los usuarios respecto de un sistema,


dan paso a que la empresa que presta el mismo analice la situación y valide
si es necesario hacer una mejora, o según sea el caso, verifique si existe una
falla, de ser afirmativo se realizar un plan para mejorar o solucionar, según
sea el caso, por lo cual, se abre paso al tema de las actualizaciones, las
cuales pretenden atender lo anterior y mejor la experiencia.
Los problemas que se presenten siempre deben atenderse, pues de no
hacerlo el sistema será un fracaso, puesto probablemente el usuario al
percatarse que no se atendió, irremediablemente lo dejará de ocupar.

Normalmente es conocido que los celulares tienen actualizaciones, muchas


veces es porque se aprecian errores, o bien, se pretende mejorar el sistema,
con lo cual se mejora la experiencia del usuario.

Para una solución tecnológica, se tiene que seguir las fases indicadas, pues
en caso de omitir alguna la misma no surtirá el efecto esperado.

Reflexiones adquiridas a partir de sumar esta asignatura a tu desarrollo profesional

La tecnología está en constante avance, por lo cual, el desarrollo de


softwares requieren ser más complejos.

Todo equipo tecnológico necesita un sistema operativo, el cual es un


conjunto de programas los cuales cada uno tienen una función en específico
y permiten el funcionamiento del mismo. La mayoría de los equipos ocupan
sistemas informáticos Windows; sin embargo, hay marcas que han
desarrollado el propio, por ejemplo Apple y recientemente Huawei.

Como metodologías para el desarrollo de software, se cuentan con las


tradicionales y ágiles, las primeras se destacan por su planeación, pues se
hace un estudio profundo previo a su concretización; las segundas, son
adaptables y las mismas tienen características en específico como son
proceso incremental, cooperativo sencillo y adaptativo.

El diseño de software es la actividad en donde se pretende describir la


estructura interna del mismo, contiene cuatro etapas: diseño de datos,
diseño Arquitectónico, diseño de la Interfaz y el diseño de procedimientos.
Quien se encarga del diseño de software tiene que tener creatividad.

Los patrones de diseño de software se entienden como una descripción de


clases y objetos comunicándose entre sí, con la finalidad de resolver un
problema; la arquitectura de software se le considera como aquel que
describe los elementos y las interacciones que existen entre ellos.

La construcción de software combina dos actividades: la generación del


código y las pruebas que se requieren realizar para detectar los errores que
tiene el mismo, a efecto de atenderlas y se esté en condiciones de ser
entregado al cliente.

La reutilización de código significa que la parte de un código existente, o la


totalidad de éste, se ocupe para la elaboración de un diverso programa. La
integración se refiere a la combinación de los componentes de un software a
otro. La integración se divide en dos: incremental y no incremental.

El organismo ISO se encarga de reunir a expertos para compartir


conocimientos y desarrollar Normas Internacionales voluntarias, basadas en
consenso y relevantes para el mercado que respaldan la innovación y
brindan soluciones a los desafíos globales; por cuanto hace al desarrollo de
tecnología y sistemas, destacan las normas ISO 9126 y 9000.

El uso de software se encuentra presente en todo aparato tecnológico, por lo


cual, el campo laboral es inmenso; sin embargo, destacar significa innovar, y
para ello, se requiere no solamente tener claros los conceptos, sino saber
aplicarlos, puesto que herramientas como la reutilización e integración
ayudan a optimizar tiempos y costos, entre otras cosas; asimismo, debe
estudiar las normativas ISO para el desarrollo de tecnología y sistemas, que
garantizan la calidad del producto. El maestro Baquero en su artículo “Las
apps como nuevo soporte de interacción entre la entidad universitaria y sus
stakeholders”, señala:

Actualmente, el mercado de las apps está en continuo crecimiento. Se estima que en


2015 habrá más de 167.000 millones de descargas, cifra que se incrementará hasta cerca
211.500 millones durante 2016. En cifras de negocio, estamos hablando de unos
ingresos superiores a 45.000 millones de dólares para las app stores y desarrolladores de
aplicaciones móviles
Como se indicó en supra líneas, la tecnología no para, por lo cual, la
innovación y creatividad son determinantes en el tema que nos ocupa.

Se invita al estudiante a la profundidad de los temas vistos, con la finalidad


de que se convenza del valor que tienen los softwares, puesto que llevan
años y no parará su creación, pues la tecnología pretende hacer la vida más
sencilla al ser humano, por lo cual su desarrollo está en un sin fin de áreas.

También podría gustarte