El documento presenta preguntas y respuestas sobre conceptos básicos de ingeniería de software como la diferencia entre programa, software y aplicación, la definición de ingeniería, ingeniería de software y calidad de software. También describe las etapas del desarrollo de software como análisis de requisitos, especificación, arquitectura, programación, pruebas y mantenimiento. Finalmente, analiza casos históricos de fallas de software como el accidente del cohete Ariane 5 y cómo la baja calidad de software puede afectar negativamente la vida
1. Jorge Luis Martínez González Karla Vanessa Romero Morales Luz María Alvarado Quintanilla Walter José Maldonado Joya Cristian Alexander Perdomo Alvarado Técnicas de ingeniería de software
2. 1-¿Existe Alguna Diferencia Entre Programa, Software y Aplicación? Describa la Diferencia de Cada Uno de Estos Términos, Relaciónelos y Posteriormente Encuentre las Diferencias (Si las Hay), o Las Similitudes (Si las Hay). Programa: Es un conjunto de instrucciones que una vez ejecutadas realizaran una a varias tareas en una computadora. Software: Es el conjunto de los programas de computo, procedimiento, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. Aplicación: es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajo.
3. 2- ¿Qué es Ingeniería? Es un conjunto de conocimientos y técnicas científicas aplicadas, que se dedica a la resolución u optimización de los problemas que afectan directamente a la humanidad.
4. 3- ¿Qué es ingeniería de Software? Es la aplicación practica del conocimiento científico en el diseño en construcción de programas de computadoras y la documentación asociada requerida para el desarrollo y operar ( funcionar) y mantenerlas.
5. 4-¿Por qué se dice que el software no se crea ni se construye si no se desarrolla? Porque mediante se va implementando según el usuario lo necesita.
6. 5- ¿Qué es Calidad? Es aquel producto o servicio que nosotros adquiramos satisfaga nuestras expectativas sobradamente. Es decir, que aquel servicio o producto funcione tal y como nosotros queramos y para realizar aquella tarea o servicio que nos tiene que realizar. Con todo y a pesar de esta definición el termino "Calidad" siempre será entendido de diferente manera por cada uno de nosotros, ya que para unos la Calidad residirá en un producto y en otros en su servicio posventa de este producto.
7. 8- ¿Qué es Calidad de Software? Es la aplicación practica del conocimiento científico al diseño y construcción de programas de computadoras y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software.
8. 9- ¿Cuáles son las Etapas de Desarrollo de Software? Análisis de requisitos: Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios. Especificación: La Especificación de Requerimientos describe el comportamiento esperado en el software una vez desarrollado. Entre las técnicas utilizadas para la especificación de requerimientos se encuentran: -Casos de Uso. -Historias de usuario.
9. Arquitectura: La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto. Para ello se documenta utilizando diagramas, por ejemplo: * Diagramas de clases * Diagramas de base de datos * Diagramas de despliegue plegados * Diagramas de secuencia multidireccional * Diagramas de infraestructura química Programación: Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.
10. Prueba: Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Documentación: Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML) diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema. Mantenimiento: Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software.
11. 10- ¿Cuál es la diferencia entre el termino ingeniería de software y el simple desarrollo o producción del software? La ingeniería de software es el estudio de los principios y mitologías para el desarrollo y mantenimiento del software, en cambio el desarrollo o producción del software es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener el software de calidad.
12. 11- ¿Cuáles son los modelos de Desarrollo de software? Modelo Cascada: Este, aunque es más comúnmente conocido como modelo en cascada es también llamado "modelo clásico", "modelo tradicional" o "modelo lineal secuencial". El modelo en cascada puro difícilmente se utilice tal cual, pues esto implicaría un previo y absoluto conocimiento de los requisitos, la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a escasos y pequeños desarrollos de sistemas.
13. Modelo Evolutivo: El software evoluciona con el tiempo. Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo. Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez más completas y complejas, hasta llegar al objetivo final deseado; incluso evolucionar más allá, durante la fase de operación. El modelo incremental: Este modelo mantiene la función anterior y aumenta otra, ya que puede ser que el primer incremento no hubiera tenido todos los requerimientos que necesitaba el proyecto. El modelo iterativo: Este modelo en cambio mejora cada versión es decir mejora la función que tiene la versión.
14. Modelo espiral: El modelo espiral fue propuesto inicialmente por Barry Boehm. Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemáticos del Modelo Cascada. Proporciona potencial para desarrollo rápido de versiones incrementales.
15. Modelo espiral Win & Win: El modelo Win-Win define un conjunto de actividades de negociación al principio de cada paso alrededor de la espiral; se definen las siguientes actividades: Identificación del sistema o subsistemas clave de los directivos(*) (saber qué quieren). Determinación de "condiciones de victoria" de los directivos (saber qué necesitan y los satisface) Negociación de las condiciones "victoria" de los directivos para obtener condiciones "Victoria & Victoria" (negociar para que ambos ganen). (*) Directivo: Cliente escogido con interés directo en el producto, que puede ser premiado por la organización si tiene éxito o criticado si no. El modelo Win & Win hace énfasis en la negociación inicial, también introduce 3 hitos en el proceso llamados "puntos de fijación", que ayudan a establecer la completitud de un ciclo de la espiral, y proporcionan hitos de decisión antes de continuar el proyecto de desarrollo del software.
16. ¿Qué Pasaría si los programadores Hicieran Los Aviones? 12- ¿Por qué se da ese fenómeno? Porque a los programadores les encanta construir e ir terminando sus programas cundo ya están en el mercado. 13-¿Cuan es el mensaje que te deja el video? Hacer un buen análisisporque no es correcto crear los programas sin haber hecho las pruebas y el mantenimiento necesario antes de sacar el software al mercado.
17. 14-¿Se hará realmente lo correcto? No, porque para mostrar el sistema al mercado es necesario haber hecho las pruebas y los pasos para estar seguros de que el sistema trabaja o funciona correctamente. 15-¿Qué estrategias proporciona la ingeniería de software para solventar esta situación? -Método de ciclo de vida para el desarrollo del sistema -Método del desarrollo del análisis estructurado -Método de prototipo de sistema
18. Ariane Flight 501 16-¿Que fue lo que sucedió? el software reutilizado las especificaciones del Ariane 4. Debido a la trayectoria de vuelo diferente, una conversión de datos de una de 64-bit de punto flotante de 16-bit firmado entero valor causado un hardware de excepción (más específicamente, un desbordamiento aritmético , ya que el número de punto flotante tenía un valor demasiado grande para ser representado por un 16-bits con signo). Consideraciones de eficiencia había dado lugar a la desactivación del controlador de software (en Ada código) para esta captura de error, aunque otras conversiones de variables comparables en el código se mantuvo protegida. Esto provocó una cascada de problemas, que culminaron en la destrucción de todo el vuelo.
19. 17- ¿que efecto tienen las fallas del software sobre los cohetes? el informe señala un error de software como la causa directa, otros investigadores ver las causas como fallas de diseño de sistemas y de gestión. Sobre la base de estos cálculos la computadora principal al mando de los inyectores de refuerzo, y algo más tarde de la tobera del motor principal también, para hacer una gran corrección de una desviación de la actitud de que no había ocurrido. Un cambio rápido de actitud se produjo, lo que provocó que el lanzador a desintegrarse a los 39 segundos después de H0 debido a las fuerzas aerodinámicas.
20. 18- ¿como afectan nuestras vidas que el software no sea de calidad? La calidad del software puede parecer un concepto alejado de la vida diaria de la mayoría de las personas, pero nada más lejos de la realidad. Cuando en nuestro ordenador aparece un mensaje de error o una pantalla azul, estamos ante un problema de calidad del software; cuando un fallo en el sistema de gestión aeroportuaria provoca retrasos, pérdidas de maletas o inutiliza pantallas de información, estamos ante un problema de calidad del software; cuando en un restaurante se bloquean los terminales de cobro y anotación de pedidos, estamos ante un problema de calidad del software. Es muy probable que hayamos sufrido los efectos de estos problemas de calidad en forma de retrasos, pérdidas de tiempo o dinero, etc. como simples ciudadanos. Lamentablemente, estos problemas pueden ser mucho más graves si afectan a sistemas críticos; es decir, aquellos cuyo fallo puede provocar graves pérdidas económicas o problemas ambientales o sociales e, incluso, la pérdida de vidas humanas. Un ejemplo bien documentado se produjo con el lanzamiento en 1996 del primer cohete Arianne 5 de la Agencia Espacial Europea. Este ingenio que costó 10 años y 7.000 millones de euros desarrollar, explotó por un defecto en el software de control interno antes de que pasara un minuto de vuelo.