2. INGENIERIA DE SOFTWARE
Uno de los problemas más importantes con los que se enfrentan los ingenieros en software y los
programadores en el momento de desarrollar un software de aplicación, es la falta de marcos
teóricos comunes que puedan ser usados por todas las personas que participan en el desarrollo
del proyecto informático para aplicaciones generales.
La ingeniería de software está compuesta por una serie de modelos que abarcan los métodos,
las herramientas y los procedimientos. Estos modelos se denominan frecuentemente paradigmas
de la ingeniería del software y la elección de un paradigma se realiza básicamente de acuerdo al
tipo del proyecto y de la aplicación, los controles y las entregas a realizar.
3. METODOLOGIA DE DESARROLLO DE SOFTWARE
La Ingeniería de software es la disciplina o área de la Ingeniería que ofrece métodos, técnicas y
herramientas para desarrollar y mantener software. El desarrollo de software es un proceso
intrínsecamente creativo y la Ingeniería del Software busca sistematizar este proceso con el fin
de minimizar el riesgo en el desarrollo del mismo.
4. Enfoque de Calidad Gestión total de calidad, mejora continua del proceso.
Procesos
El proceso se define como el conjunto de tareas que se requieren para construir un software de alta calidad.
Por lo tanto, debe ser tratado como un producto que debe satisfacer unos requerimientos específicos, este
caso los requerimientos de una aplicación de tipo educativa, donde se involucran métodos, técnicas y
herramientas que garanticen la calidad en la construcción del software.
Métodos
Indican como desarrollar el software, a través del ciclo de vida del software, incluye tareas como: Análisis de
requisitos, diseño, desarrollo, pruebas, implementación, mantenimiento.
Herramientas
Uso de tecnologías para asistir el desarrollo del software y asegurar el cumplimiento de los objetivos del
mismo, constituyen un soporte automático / semiautomático para el proceso y los métodos.
Técnicas
Son herramientas desarrolladas por autores que nos permiten utilizar elementos como símbolos, descriptores
e identificadores que son fundamentales en el momento de representar un modelo o plano del sistema.
5. 3. El proceso de desarrollo de software 5
Modelo de la Ingeniería del software
(Thayer 1988)
Analisis
Diseño
Codificación
Pruebas
Desarrollo
de Software
Planificación
Organización
Reclutamiento
Dirección
Control
Gestión de
proyectos
Fiabilidad
Usabilidad
Flexibilidad
Mantenibilidad
Reusabilidad
Etc.
Metricas
del software
Corrección de Errores
Modificaciones
Mantenimiento
de software
Ingeniería
del software
6. 3. El proceso de desarrollo de software 6
Técnicas básicas usadas en las
ingenierías
◦ Históricamente se han utilizado técnicas como:
◦ El modelado
◦ División del Producto
◦ División del Proceso
◦ En principio se deberían utilizar estas técnicas, también en
informática .
7. 3. El proceso de desarrollo de software 7
El modelado.
◦ Simplificación del objeto en el mundo real, pero que es
suficientemente realista como para dar una idea de lo que
ocurrirá en la realidad y usarse como base del desarrollo.
8. 3. El proceso de desarrollo de software 8
División del Producto.
◦ Se fracciona el producto de modo que cada fragmento lo puede
realizar un miembro del grupo de desarrollo.
9. 3. El proceso de desarrollo de software 9
¿Que?
División del Proceso.
◦ Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de
especificación, diseño y fabricación.
¿Como? Realización Pruebas
10. 3. El proceso de desarrollo de software 10
En el desarrollo de software nos encontramos con la siguiente situación
Ciclos de Vida del
SOFTWARE
Metodologías de
Desarrollo del
SOFTWARE
11. 3. El proceso de desarrollo de software 11
Ciclo de Vida del Software
◦ Consiste en determinar:
◦ las fases productivas de un proyecto,
◦ los objetivos de cada fase productiva, y
◦ los productos obtenidos en cada una de estas fases así como sus
características.
12. 3. El proceso de desarrollo de software 12
Ciclo de vida clásico o en cascada.
◦ La Versión Ideal (Perfecta)
◦ El Modelo en V
◦ El Helado de Cucurucho
◦ El Modelo Real
◦ Propuesta de Yourdon
13. 3. El proceso de desarrollo de software 13
Validación
Instalación, Explotación
Test y pruebas previas a la OPERACIÓN
OPERACIÓN Y MANTENIMIENTO
Estudio de Viabilidad
Análisis
Especificación
Requerimientos del
Software
Diseño
Especificación de diseño
Diseño Preliminar y
Detallado
Codificación
Aplicación
Codificación y Depuración
La Versión Ideal
A alguien se le ha ocurrido la Brillante idea de Informatizar
¿?
Investigación Inicial, Identificación de Necesidades,
Encuesta, etc.
Requerimientos del
Sistema
14. 3. El proceso de desarrollo de software 14
El Modelo en V
Identificación
de Necesidades
Especificación
Esencial
Especificación
Física
Diseño
Codificación
Integración
Empaquetado
Validación
Explotación
15. 3. El proceso de desarrollo de software 15
Identificación
de Necesidades
Especificación
Esencial
Especificación
Física
Diseño
Codificación
Integración
Empaquetado
Validación
Explotación
USUARIOS
CLIENTES
ANALISTA
DISEÑADORES Y
CODIFICADORES
16. 3. El proceso de desarrollo de software 16
El Modelo Real
Identificación
de Necesidades
Especificación
Esencial
Especificación
Física
Diseño
Codificación
Integración
Empaquetado
Validación
Explotación
17. 3. El proceso de desarrollo de software 17
Propuesta de Yourdon
Encuesta
Análisis
diseño
Preliminar
Estudio
del HW
Diseño
Detallado
Codificación
Prueba de
Unidad
Prueba de
subsistema
Prueba de
Sistema
Requerimientos del Usuario
Especificación
Funcional
Necesidades de
Rendimiento
Especificación
del Sistema
Configuración
Final
Especificación
de los
Programas
Módulos
Codificados
Módulos
Probados
Subsistemas
Probados
Sistema
Probado
18. 3. El proceso de desarrollo de software 18
Construcción Rápida de Prototipos
◦ Al igual que otras ingenierías se utilizan los prototipos para que el
cliente observe, confirme y mejore el producto
◦ Este enfoque es apropiado cuando:
◦ El cliente no tiene claro lo que quiere,
◦ Al cliente le gustaría ver algo similar para poder hacerse una idea
de lo que obtendrá
19. 3. El proceso de desarrollo de software 19
El ciclo de vida de Prototipos
Desechables es el siguiente:
Aceptado
NO Aceptado
Evaluación
Cliente
Mejora de la
Especificación
Construcción
Prototipo
Obtención
Especificación
Ciclo de
Vida
Clásico
20. 3. El proceso de desarrollo de software 20
Existen dos clases de prototipos
◦ De INTERFACE.
◦ Usualmente un modelo de papel o sobre PC en el que se muestran pantallas y
listados.
◦ De COMPORTAMIENTO:
◦ En anchura. Ofrece todos los menús del sistema y simula débilmente los
procesos.
◦ En profundidad. Cubre funciones que presentan ambigüedades al cliente o a
los informáticos.
◦ Completo pero de baja calidad y rendimiento.
21. 3. El proceso de desarrollo de software 21
Evolución de Prototipos
Observación
Requerimientos
Abstracción
Validación
Especificación
Verificación
Prototipo
Verificación
Experimentar
Validación
Empezamos por los requerimientos más
claros, menos complejos y más necesarios.
Prototipo rápido
22. 3. El proceso de desarrollo de software 22
Reutilización de Software
◦ Tiene como objetivos:
◦ reducir el coste del software.
◦ Producir sistemas de mayor calidad.
◦ Se basa en reutilizar Diseños, programas, módulos y datos.
◦ Es compatible con el prototipo evolutivo.
23. 3. El proceso de desarrollo de software 23
Síntesis automática de software
Requerimientos
Informales Análisis de Requerimientos Especificación Formal
(Prototipo)
Validación
Mantenimiento Optimización Mecánica
Desarrollo
Formal
Ajuste
(tuning)
Programa
Fuete
Racionalidad y
Decisiones
24. 3. El proceso de desarrollo de software 24
En espiral.
Determinar objetivos,
alternativas, restricciones
Evaluar alternativas,
identificar y resolver
riesgos
Desarrollar, verificarPlanificar las próximas
fases
REVISIÓN
Acuerdo
25. 3. El proceso de desarrollo de software 25
PROCESOS DATOS
Métodos Estructurados
◦ Métodos Orientados a la Estructura de los Datos
◦ Métodos de flujo de datos
26. 3. El proceso de desarrollo de software 26
Métodos Orientados a Objetos
◦ Los métodos orientados a objeto describen e implementan los sistemas de información desde un punto de vista
ontológico.
27. 3. El proceso de desarrollo de software 27
Métodos Formales
◦ Los métodos formales permiten al ingeniero de software especificar,
desarrollar y verificar un sistema informático mediante la aplicación de una
notación matemática rigurosa.
◦ Utilizando un lenguaje de especificación formal, un método formal
proporciona los medios de especificar un sistema de forma que se
aseguren, de forma sistemática, la consistencia, la completitud y la
corrección.
◦ Se suelen basar en notaciones matemáticas similares a las del álgebra de
conjuntos y la lógica
28. 3. El proceso de desarrollo de software 28
Madurez del proceso en la organización
de desarrollo
◦ La misma industria, diferentes niveles de madurez.
29. 3. El proceso de desarrollo de software 29
Madurez del proceso en la organización
de desarrollo
◦ Hay factores que no quedan claramente reflejados en el ciclo de vida ni
en las técnicas de desarrollo.
◦ Los factores no estudiados son:
◦ El cumplimiento de los plazos de entrega.
◦ La calidad (número de errores en el Software).
◦ El coste del proyecto.
30. 3. El proceso de desarrollo de software 30
Inicial
Repetible
Optimización
Gestionado
Definido
Control
Básico
Definición
del
Proceso
Medición
del
Proceso
Control
del
Proceso
Evolución de las organizaciones según
el CMM
31. 3. El proceso de desarrollo de software 31
Correlación entre estimaciones y niveles de
madurez
32. 3. El proceso de desarrollo de software 32
Nivel Inicial.
◦ Según las circunstancias utilizamos un proceso distinto. (algunos caóticos)
◦ A medida,
◦ Poco formalizado,
◦ Uso de herramientas informales.
◦ Pocos procesos definidos.
◦ El éxito depende del esfuerzo individual.
33. 3. El proceso de desarrollo de software 33
Nivel de Repetición.
◦ Se tiene procesos estables de desarrollo, con control estadístico.
◦ Uso de datos historicos
◦ Establecimiento de procesos de gestión de proyecto, para hacer seguimiento de:
◦ Coste.
◦ Planificación.
◦ Funcionalidad.
34. 3. El proceso de desarrollo de software 34
Nivel de Definición.
◦ Proceso de desarrollo perfectamente definido y estandarizado.
◦ Integrado en la organización.
◦ Bien documentado.
◦ Todos los proyectos utilizan una versión documentada y aprobada de proceso.
35. 3. El proceso de desarrollo de software 35
Nivel de Gestión.
◦ Mejoras de calidad sustanciales.
◦ Control cuantitativo de productos y proceso a través de
◦ Mediciones del proceso comprensibles.
◦ Mediciones de la calidad
36. 3. El proceso de desarrollo de software 36
Nivel de Optimización.
◦ A través de mediciones del proceso utilizando ideas y tecnologías
innovadoras obtenemos:
◦ Mejoras en calidad y cantidad.