Encapsulamiento vs. Código Abierto

No es de un partido de béisbol ni de una pelea de boxeo de lo que se trata este artículo sino de una duda que quisiera compartir con ustedes. Ante todo, quiero aclarar que no tengo nada en contra del Código Abierto (OS del inglés Open Source) a pesar de ser un fiel defensor de los productos Microsoft.

Precisamente fue Bill Gates el que en un comunicado a la comunidad de usuarios y desarrolladores de software lanza un llamado a la reflexión sobre la “piratería” iniciando así el fenómeno de licenciamiento de software. Las respuestas no se hicieron esperar y enseguida se crearon movimientos contrarios a esta política con ligeras diferencias entre ellos, manteniendo como divisa que el conocimiento era de todos. Ejemplos tenemos a BSD, GNU y OS que es el que nos ataña.

¿Quién es quién en los profesionales de la computación?

No les miento si les cuento que durante muchos años viví engañado. Desde antes de entrar a estudiar la carrera de “Licenciatura en Ciencia de la Computación” (Cibernética, como todos la conocen) en la Universidad Central “Marta Abreu” de Las Villas, pensaba que los cibernéticos eran los que “diseñaban” los productos informáticos debido a sus conocimientos más profundos en materias de computación y que luego los informáticos se encargaban de “implementarlos”.

¿Cibernéticos como Ingenieros?

La pregunta que da título a esta redacción está muy acorde a las carreras universitarias que se cursan un Cuba: “Ciencia de la Computación” (más conocida por “Cibernética”) e “Informática”. La primera es una licenciatura mientras que la segunda es una ingeniería.

Si bien la Ingeniería Informática se ve mucho más ligada a la producción de software de gestión empresarial, no es menos cierto que existe una rama de la ingeniería que la computación no podía dejar de hacer uso de ella: la Ingeniería Inversa.

Validación en el cliente o en el servidor: ¿Llegó .NET? ¡Se acabaron las preocupaciones!

Desde los tiempos del inicio del protocolo HTTP (¿Quién iba a imaginar que, a solo 12 años, alguien se refiriera a eso con tal antigüedad?) y el ansiado carácter dinámico que poco a poco se fue haciendo más y más necesario en el mismo; la validación de los datos provenientes del cliente se hizo una necesidad mayor cada vez más.

¿Cuántas veces introducimos código HTML en los campos que se nos pedían en un formulario? ¿Nunca probaron la respuesta del sistema ante la introducción de una consulta a la base de datos en un campo de un formulario? Como por ejemplo: “;DROP ALL DATABASE” o algo similar en dependencia del SQL que se maneje -el punto y coma “;” lo que le dice al sistema es que la consulta se que termina ahí y en adelante hay otra y entonces cuando se trataba de insertar el valor en la base de datos lo que pasaba era que se truncaba el INSERT y se ejecutaba el DROP y por consiguiente sus devastadoras consecuencias (OJO: Todavía hay sistemas vulnerables a este tipo de código malicioso, nunca digan que fue aquí donde lo aprendieron).

Apuntes sobre la importancia de la Ingeniería de Software

Cuando comencé la planificación de la asignatura: “Programación IV” vi que entre los temas que había que tratar estaba la Ingeniería de Software. Las dudas enseguida comenzaron a darme vueltas en la cabeza del por qué insertar ese tema aquí si justo el próximo semestre recibirían la asignatura: “Ingeniería de Software I” que partía desde cero. Junto a esto me sugirieron que tratara la importancia de esta materia apoyándome en el libro: “Software Engineering Project Management” donde de manera muy somera inducen a pensar en ella. Como colofón a las razones que me hicieron escribir estas notas fue la ayuda que me solicitó una alumna para que le prestara los apuntes que había recopilado hasta el momento; así que me di la tarea de darle forma para que sirviera de material de consulta.