Uso del software
Es del conocimiento popular que el software se encuentra en la mayoría de las actividades personales y profesionales de las personas. Un claro ejemplo son las redes sociales, las utilizan tanto las empresas como el usuario común, sus consumidores. Pero, ¿por qué las usamos? y en sí ¿por qué usamos software?
Pressman (2010) declara que "el software distribuye el producto más importante de nuestro tiempo: información" (pág. 3).
Esto me hace recordar las palabras de un cliente que me repetía cada vez que se realizaba una entrega de avances...
Si yo no veo los datos que me generan mis procesos, no me sirve
Es por esto que concuerdo totalmente con la declaración de Pressman (2010), "las personas basan sus trabajos, confort, seguridad, diversiones, decisiones y sus propias vidas en software de computadora. Más vale que esté bien hecho" (pág. 2).
No basta con...
Es posible que en algún momento de un proyecto hayas escuchado o incluso planteado algunas de las interrogantes que presenta Pressman (2010):
- ¿Por qué se requiere tanto tiempo para terminar el software?
- ¿Por qué son tan altos los costes de desarrollo?
- ¿Por qué no podemos detectar todos los errores antes de entregar el software a nuestros clientes?
- ¿Por qué dedicamos tanto tiempo y esfuerzo a mantener los programas existentes?
- ¿Por qué seguimos con dificultades para medir el avance mientras se desarrolla y mantiene el software?
Las primeras dos suelen ser; al menos en mi caso, las más comunes por parte de los clientes. La última, es la que; personalmente, me preocupa. Aunque hay más interrogantes, es importante destacar que no basta conocer una tecnología para desarrollar software, ni que podamos lograr que los componentes de la interfaz de usuario sean llamativos, ni conocer la mayoría de algoritmos o estructuras de datos, entre otros.
Ahora, sin que se mal interprete, estoy de acuerdo que resulta complicado que dominemos todo el conocimiento. Busco plantear "el camino" de la interrogante:
¿Qué hacemos para que nuestro software sea de calidad? O al menos sea considerado de calidad.
Entonces, ¿qué soy?
Es posible que en algún momento te hayas cuestionado en qué categoría entras...
¿Soy programador? ¿soy desarrollador? ¿soy ingeniero de software?
Otero Lastres (2019) menciona que se le atribuye una frase a Aristóteles, "somos lo que hacemos repetidamente. La excelencia, entonces, no es un acto; es un hábito".
Si programo, soy programador. Si desarrollo, soy desarrollador. Y si...
Mis primeros desarrollos de software eran bastante cuestionables; estéticamente hablando, la interfaz de usuario era pésima, selección de colores incoherente, inconsistencia en diseño y más defectos. En contraste, el procesamiento y almacenamiento de datos era bastante bueno; conforme avanzaba se implementaron mejores prácticas en las base de datos, "clean code"; aún cuando ni siquiera conocía lo que es "clean code", incluyendo una mejor selección de tecnologías precisas para el proyecto y definición de algoritmos casi ideales. Entonces, llegan las interrogantes, ¿el proyecto era bueno o malo?, ¿técnicamente, cumple con mejores prácticas o no?
Ahora bien, ¿cómo definimos los parámetros para decir que el proyecto es un éxito o solamente que el proyecto no fracasó?
Pressman (2010) menciona que "cuando sus usuarios no están satisfechos, es proclive al error, es difícil de cambiar e incluso más difícil de usar" (pág. xxvii) podríamos considerar que el software fracasa.
Además, Pressman (2010) nos menciona que "todo mundo quiere construir software que haga mejor las cosas y que evite las malas que acechan en la sombra de los esfuerzos fallidos. Para triunfar, se necesita disciplina al momento de diseñar y construir el software. Es necesario un enfoque de ingeniería" (pág. xxvii).
Ingeniería de Software
Pressman (2010) menciona una definición por parte del IEEE para la ingeniería de software: "es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software" (pág. 11).
A manera de complemento, este conjunto de técnicas o procesos disciplinados deberían de alinearse con un compromiso estricto de búsqueda constante de calidad.
Es complicado, encontrar una panacea en la Ingeniería de Software, toda aplicación de software tiene un enfoque diferente y; como menciona Sommerville (2011), "todas estas aplicaciones necesitan ingeniería de software, no todas requieren las mismas técnicas de ingeniería de software" (pág. 4).
Ahora bien, esto es un proceso continuo de mejora que incluso el tema de Ingeniería de Software se sigue debatiendo aún hoy en día. Pero, salen nuevas interrogantes, ¿qué es la calidad?, ¿se mide la calidad?, ¿cómo se mide la calidad?, ¿qué procesos o técnicas debo aplicar?, ¿qué parámetros debo considerar?, ¿cómo se gestiona un desarrollo de software?, ¿qué debo de aportar como miembro de un equipo o único participante?, entre otras.
Comentarios
Esta claro que surgen más interrogantes que respuestas, incluso que las interrogantes que planteo aún no se responden o al menos del todo. Pero, de cierta manera, en esta serie de artículos se busca argumentar tanto interrogantes como respuestas.
Ahora bien, ¿tú qué opinas? deja tus comentarios y; si es posible, las referencias.`
Referencias
- Pressman, R. (2010). Ingeniería del software. Un enfoque práctico. McGraw Hill Education.
- Sommerville, I. (2011). Ingeniería de Software. Pearson Educación.
- Otero Lastres, J. M. (18 de Abril de 2019). Si somos lo que hacemos repetidamente, Pedro Sánchez es …. Obtenido de ABC Blogs: abcblogs.abc.es/puentes-palabras/politica/s..