|
Inicio
Generalidades
Ejercicios
Talleres
Proyecto

|
"¿Por qué esta magnífica tecnología
científica, que ahorra trabajo y nos hace la vida más fácil, nos aporta
tan poca felicidad?
La respuesta es esta, simplemente:
Porque aún no hemos aprendido a usarla con acierto." (Albert
Einstein)
CONCEPTOS FUNDAMENTALES DE INGENIERÍA DEL SOFTWARE

La ingeniería de software es una
actividad de modelado, para solución de problemas aplicando
el método de la ingeniería, para adquisición de conocimiento y
administración de la fundamentación.

El desarrollo de software
incluye, por lo general, cinco actividades: Obtención de requerimientos,
Análisis, Diseño del sistema, Diseño de objetos e Implementación. En
ingeniería de software también se deben tener en cuenta conceptos muy
importantes como:
Proyecto
Proceso
Sistemas y modelos
Participantes
Productos de trabajo
Actividades, tareas y recursos
Objetivos
Requerimientos y restricciones
Notaciones, métodos y metodologías,
Responsabilidad profesional
y código de ética.
(http://www.ati.es/novatica/1999/140/docs140.html)
La integración y aplicación de los conceptos anteriores permiten el
desarrollo eficiente de proyectos de Ingeniería de Software,
interdisciplinarios y con variable nivel de complejidad, como por ej:

-
Desarrollar un sistema para el procesamiento de datos
que podría tener lugar en un sistema de correo electrónico. Modelar el
procesamiento de envío y recibo de correos de forma separada.
-
Diseñar un formulario electrónico que se pueda utilizar
para registrar los comentarios de una revisión de estándares de calidad
y para hacer comentarios a los revisores por medio del e-mail ...
* En la práctica, en la ingeniería de
software comúnmente se menosprecia el valor de una metodología para
crear el software. Esto, a mi juicio, está demeritando la incipiente
profesión de Ingeniero de Software en particular, la del especialista en
Tecnología de Información en general, y a las empresas de consultoría en
software, ya que generalmente se cede al "chantaje" profesional del jefe
o del cliente quien ordena la construcción del software, con argumentos
como "no hay tiempo para eso, pónte a programar!".
Para reflexionar, pregunto, lo siguiente:
¿Qué pasaría, si el ingeniero civil o el arquitecto construye una casa o
un edificio sin hacer sus planos, proyectos o maquetas? ¿Crees que la
obra pueda concluirse cubriendo las necesidades, con la calidad
necesaria y a tiempo?
Simplemente observa la calidad de las viviendas "en obra negra perpetua"
en la mayoría de las calles de México.
Y todavía más allá, ¿Permitirías que tu propio cirujano te interviniera
sin hacer los estudios respectivos para obtener las evidencias del
problema de salud que te aqueja? O ¿permitirías a tu abogado que
te defendiera sin conocer las pruebas y sin un plan para tu defensa?
Entonces, ¿por qué los ingenieros en software a veces cedemos al
"chantaje de la falta de tiempo" y construimos software sin el análisis
y diseño expresado en un proyecto, más allá de las ideas existentes "en
nuestra cabeza"? ¿Por qué lo intentamos hacer sobre la marcha,
pero nunca lo concluimos pues ya no hay tiempo?
¿Dónde quedó la ética profesional?...
Sugiero que consultes, como referencia, el Código de Etica del Ingeniero
en Software y de la Práctica Profesional en el site de la Association
for Computing Machinery aquí:
http://www.acm.org/serving/ethics.html.
* (Zavala R. 2000. Diseño de un Sistema de Información Geográfica
sobre internet. Tesis de Maestría en Ciencias de la Computación.
Universidad Autónoma Metropolitana-Azcapotzalco. México, D.F.)
Descripción, ejemplos y
características de diferentes categorías de software
(http://tecnomaestros.awardspace.com/tipos_software.php)
Ejercicios 'Amistosos':
-
¿Cuál es el propósito del modelado?
-
¿Qué es más importante: el producto o el proceso?
-
Un lenguaje de programación es una notación para la
representación de algoritmos y estructuras de datos. Liste dos
ventajas y dos desventajas del uso de un lenguaje de programación
como notación única a lo largo del proceso de desarrollo.
-
Considere una tarea con la que no esté familiarizado,
como el diseño de un automóvil con cero emisiones de contaminantes.
¿Cómo podría atacar el problema?.
-
Especifique cuáles de los siguientes enunciados son
requerimientos funcionales y cuáles son no funcionales: a) El
distribuidor de boletas para el Estadio Murillo Toro debe permitir que
un aficionado compre pases mensuales. b) El distribuidor de boletas debe
estar escrito en Java .net. c) El distribuidor de boletas debe ser
fácil de usar.
-
Proporcione cinco ejemplos de proyectos de desarrollo
de software que sean adecuados para construir prototipos. Nombre dos
aplicaciones que fueran más difíciles para construir prototipos.
-
Describa tres situaciones reales de la vida en las que
el cliente y el usuario final son el mismo.
 |