2. Hace referencia a los programas y toda la información asociada y
materiales necesarios para soportar su instalación, operación, reparación
y mejora. Para construir un nuevo elemento software se necesita:
¿Qué es el Software?
1. Detallar las especificaciones
2. Diseñar la solución
3. Codificar el algoritmo
4. Probar el programa
5. Documentar
6. Mantener
. Es lo que se conoce como el ciclo de vida del software.
software
3. Las economías de todos las países son cada vez más y más
dependientes del software.
Cada vez más y más sistemas están controlados por software
El gasto en desarrollo de software está aumentando su porcentaje
en el PIB de todos las países
Importancia del software
4. Según B. Bohem la Ingeniería del Software es la aplicación práctica
del conocimiento científico en el diseño y construcción de programas
de computadora y la documentación asociada requerida para
desarrollar, operar y mantenerlos. Se conoce también como desarrollo
de software o producción de software“
En esta definición del proceso de desarrollo Software, se introduce
como parte inherente del producto a obtener, la perspectiva de las
necesidades de usuario a las que debe dar respuesta:
“Aquellos en los que las necesidades del usuario se traducen en
requerimientos, estos se transforman en diseño y este a su vez
se implementa en código que es probado, documentado y certificado
para su uso”
G. Booch, I. Jacobson, y J. Rumbaugh
Ingeniería de software
5. Mejorar la calidad del software
Acortar los tiempos de desarrollo
Aumentar la productividad
Incrementar la reutilización del software
comprender los procesos técnicos del desarrollo.
dar a conocer, los principios más relevantes de dirección y control
de los procesos.
desarrollar de nuevas teorías, métodos y herramientas de apoyo a la
producción del software
Objetivos
6. diferencia entre Ingeniería del Software y las Ciencias de la
Computación:
Las Ciencias de la Computación tienen que ver con teorías y
fundamentos
La Ingeniería del Software tiene que ver con los aspectos prácticos
del desarrollo del software.
diferencia entre Ingeniería del Software e Ingeniería de Sistemas:
La Ingeniería de Sistemas tiene que ver con todos los aspectos del
desarrollo de sistemas basados en computadoras: hardware, software
e Ingeniería de procesos.
Ingeniería del Software es una parte de este proceso
Gonzalo León Serrano
Diferencias
7. desarrollo de un producto software de cierta complejidad es un desafío
intelectual tanto para la organización en la que se desarrolla como para cada
una de las personas que intervienen. Estos dos factores, humano y
organizativo, se imbrican durante el proceso de gestación del producto.
Producto y proceso concentran por tanto la atención en ingeniería de
sistemas de software. Sobre el producto porque en él deben incorporarse los
requisitos que el usuario desea y es el resultado final del desarrollo; sobre el
proceso de desarrollo porque de él depende el que esos requisitos sean
realmente satisfechos en el producto final dentro de las restricciones de
tiempo y coste establecidas.
Gonzalo León Serrano
Perspectivas del proceso de desarrollo de
software
8. Sistemas de Tiempo Real
Sistemas Empotrados
Sistemas de Gestión
Sistemas de Ingeniería y científicos
Sistemas de Inteligencia Artificial
Sistemas de Ordenadores Personales
Gonzalo León Serrano
Clasificación del Software según los
campos de aplicación
9. Deben responder a eventos externos, asegurando un tiempo máximo de
respuesta determinado.
La secuencia de ejecución no sólo está determinada por decisiones del
sistema, sino también por eventos que ocurren en el mundo real.
Habitualmente requieren interfaces con una gran cantidad de sensores y
actuadores.
Deben ser muy confiables. Su respuesta debe ser controlada, incluso en
condiciones de sobrecarga
Gonzalo León Serrano
Sistemas Software de Tiempo Real
10. 1. Los límites de tiempo son estrictos.
2. El no cumplimiento puede tener consecuencias más o menos
graves.
3. En algunos casos puede ser preferible un trabajo imperfecto pero
terminado a tiempo.
4. Ej.: control de un reactor nuclear.
.Sistemas de tiempo real blando (soft real-time)
1. Los límites de tiempo son flexibles.
2. Ej.: sistema de reserva de pasajes. Software de Tiempo Real
. Sistemas de tiempo real firme (firm real-time)
1. Sistemas de tiempo real duro que pueden tolerar pérdidas, si la
probabilidad de ocurrencia de las mismas es baja.
Sistemas de tiempo real duro (hard real-time)
11. Se integran con un hardware pasando a formar parte del nuevo entorno.
Algunas propiedades:
Eficiencia
Gran parte de los sistemas de control deben responder con gran rapidez a los
cambios en el sistema controlado.
Interacción con dispositivos físicos
Los sistemas empotrados interaccionan con su entorno mediante diversos tipos
de dispositivos que normalmente no son convencionales (teclados,
impresoras, ...): convertidores A/D y D/A, pwm, entradas y salidas digitales
paralelo y serie, ... (interfases con sensores, actuadores, periféricos
especiales, ...)
Los componentes del software que controlan el funcionamiento de estos
dispositivos (manejadores, "drivers") son, en general, dependientes del sistema
concreto
Sistemas software empotrados
(embedded systems)
12. Objetivo General
Familiarizar al estudiante con los principales conceptos del proceso de desarrollo de
sistemas para proporcionarle un punto de inicio en el cual fundamentar el futuro desarrollo
de conocimientos en áreas y técnicas específicas que le ayuden a llevar a cabo
exitosamente proyectos complejos de desarrollo de software.
Objetivos Específicos
Manejar los principales conceptos asociados a las herramientas y técnicas disponibles para
organizar, dirigir y controlar el proceso de desarrollo de sistemas de software.
Identificar las principales metodologías disponibles para la recolección y manejo de
requerimientos que deben cumplir los sistemas en desarrollo.
Aplicar principios generales de análisis y diseño de sistemas en la creación de productos de
trabajo que proporcionen las entradas necesarias para la fase de codificación de
aplicaciones.
Conocer las principales herramientas de verificación y validación de software y su utilidad
en las diferentes fases del desarrollo de sistemas.
Objetivo general y especifico