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.