SlideShare una empresa de Scribd logo
1 de 43
Ingeniería de Software
Prof. Santiago Mena Zorrilla
¿Que hace un Ingeniero?
• Construir artefactos dentro de unas limitaciones
de coste, utilizando el conocimiento y las teorías
de la ciencia sobre la cual se basa el artefacto.
¿Qué ingeniería de software?
Según la IEEE, la ingeniería de software:
• La aplicación de un enfoque sistemático,
disciplinado y cuantificable al desarrollo,
operación y mantenimiento del software, es
decir, la aplicación de la ingeniería al software.
• El estudio de enfoques.
• La Ingeniería del software es una tecnología
multicapa
Pasos de desarrollo de un sistema de software
Justificación
• Es realmente necesario?
• Se necesita desarrollar el software?
• Análisis
• ¿Cuáles son lo procesos que se necesitan?
• ¿Qué datos están disponibles y qué información se requiere?
• ¿Cómo debe ser la interacción entre usuarios y sistema para llevar a cabo
las tareas necesarias?
• Casos de uso
• Escenarios de interacción entre los usuarios y el sistema, indicándose el
flujo de datos y de información, para cada tarea necesaria.
• Prototipo
• Diseño de interfaces para la interacción de los usuarios con el sistema,
correspondiente a sus tareas.
• Estimación de tiempo y costos
• requiere una estimación lo más formal posible.
• Estudio costo vs beneficio.
Diseño
• Solución de problema.
Generalmente se diseña el sistema en una arquitectura MVC [Model‐View‐Controller]
• Model
Modelado de los datos en el programa.
Modelado de la base de datos.
• View
Modelado de las interfaces.
• Controller
Modelado de las funciones de almacenamiento de datos y recuperación de
información.
Programación
Automatización de la solución determinada en el diseño.
Pruebas
Determinar que el sistema funciona adecuadamente, cumpliendo con las necesidades.
Tipos de pruebas
• Prueba de desempeño: que haga lo que tiene que hacer y no otra cosa.
• Prueba de estrés: que soporte situaciones críticas [número de usuarios].
• Prueba de usabilidad: que los usuarios puedan llevar a cabo sus tareas de manera
eficiente.
Mantenimiento
• Actualización del software de acuerdo a los cambios de la
organización de los requerimientos.
• El mantenimiento solamente es posible si se tiene la
documentación completa y los programas están codificados
claramente y con comentarios.
Migración
• Proceso de cambiar el software elaborado en un lenguaje
de programación ya obsoleto a un lenguaje de
programación actual.
Crear una pagina web en Faceboock
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 .
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.
División del Producto.
• Se fracciona el producto de modo que cada
fragmento lo puede realizar un miembro del
grupo de desarrollo.
División del Proceso.
• Implica dividir el desarrollo del artefacto por
fases. Normalmente se habla de especificación,
diseño y fabricación.
3. El proceso de desarrollo de software 11
Ciclos de Vida del Software
– Se han propuesto muchos ciclos de vida para el
desarrollo del software, pero estos son los más
representativos:
– Poner la cola al burro.
– Ciclo de vida clásico o en cascada.
– Construcción rápida de Prototipos Desechables
– Incremental
– Evolución de prototipos
– Reutilización de Software
– Síntesis automática de software
– En espiral.
3. El proceso de desarrollo de software 12
Poner la cola al burro
• Se coge a uno o varios
informáticos,
• Se les muestra más o menos
el problema,
• Se les deja solos en un
cuarto a oscuras,
• Transcurrido un tiempo se
abre la puerta.
3. El proceso de desarrollo de software 13
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
3. El proceso de desarrollo de software 14
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
3. El proceso de desarrollo de software 15
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
3. El proceso de desarrollo de software 16
El Helado de Cucurucho
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
3. El proceso de desarrollo de software 17
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
3. El proceso de desarrollo de software 18
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
3. El proceso de desarrollo de software 19
Construcción Rápida de Prototipos
Desechables
• 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á
3. El proceso de desarrollo de software 20
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
3. El proceso de desarrollo de software 21
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.
3. El proceso de desarrollo de software 22
Incremental
Requerimientos
Requeri
mientos
Diseño Impleme
ntación
Pruebas
Bloque 1
Requeri
mientos
Diseño Impleme
ntación
Pruebas
Bloque N
Requerimientos
Bloque 1
Diseño Impleme
ntación
Pruebas
Bloque N
Diseño Impleme
ntación
Pruebas
o
Permite el
desarrollo
concurrent
e
3. El proceso de desarrollo de software 23
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
3. El proceso de desarrollo de software 24
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.
3. El proceso de desarrollo de software 25
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
3. El proceso de desarrollo de software 26
En espiral.
Determinar objetivos,
alternativas, restricciones
Evaluar alternativas,
identificar y resolver
riesgos
Desarrollar, verificarPlanificar las próximas
fases
REVISIÓN
Acuerdo
3. El proceso de desarrollo de software 27
Metodologías de Desarrollo del
Software
• Métodos informales
• Métodos Semiformales
• Métodos Formales
3. El proceso de desarrollo de software 28
Métodos informales
• Joaquín Lucio-Villegas los clasifica como:
– Quick & Dirty (USA)
– Match stick box (Europa)
– Balones p'alante y maricón el último
3. El proceso de desarrollo de software 29
Métodos Semiformales
• Métodos Estructurados
– SA/SD (structured analysis & structured design)
– Métrica
• Métodos Orientados a Objetos
– OMT
– UML
3. El proceso de desarrollo de software 30
PROCESOS DATOS
Métodos Estructurados
• Métodos Orientados a la Estructura de los
Datos
• Métodos de flujo de datos
3. El proceso de desarrollo de software 31
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.
3. El proceso de desarrollo de software 32
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
3. El proceso de desarrollo de software 33
Madurez del proceso en la
organización de desarrollo
• La misma industria, diferentes niveles de
madurez.
3. El proceso de desarrollo de software 34
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.
3. El proceso de desarrollo de software 35
CMM (Capability Maturity Model)
• Proporciona una Guía sobre como
– controlar los procesos:
• de desarrollo del software.
• de mantenimiento.
– Hacer evolucionar hacia una cultura de:
• Ingeniería del software.
• Gestión eficiente.
3. El proceso de desarrollo de software 36
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
3. El proceso de desarrollo de software 37
Correlación entre estimaciones y niveles de
madurez
3. El proceso de desarrollo de software 38
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.
3. El proceso de desarrollo de software 39
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.
3. El proceso de desarrollo de software 40
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.
3. El proceso de desarrollo de software 41
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
3. El proceso de desarrollo de software 42
Nivel de Optimización.
• A través de mediciones del proceso utilizando
ideas y tecnologías innovadoras obtenemos:
– Mejoras en calidad y cantidad.
3. El proceso de desarrollo de software 43
Resumen
• Hemos visto:
– Como trabajan los ingenieros,
– Definiciones de ingeniería del software,
– El ciclo de vida del software,
– Metodológicas de desarrollo
– Madurez del proceso de desarrollo.

Más contenido relacionado

La actualidad más candente (12)

Paradigmas
ParadigmasParadigmas
Paradigmas
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de Software
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.software
 
Proceso de dasarrollo de software
Proceso de dasarrollo de softwareProceso de dasarrollo de software
Proceso de dasarrollo de software
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidad
 
Elproceso de desarrollo de software
Elproceso de desarrollo de softwareElproceso de desarrollo de software
Elproceso de desarrollo de software
 
Elproceso de desarrollo de software
Elproceso de desarrollo de softwareElproceso de desarrollo de software
Elproceso de desarrollo de software
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Prototipado del software
Prototipado del softwarePrototipado del software
Prototipado del software
 
Ingeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoIngeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemático
 
Administracion y Gestion de Proyectos
Administracion y Gestion de ProyectosAdministracion y Gestion de Proyectos
Administracion y Gestion de Proyectos
 
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
 

Destacado (6)

Un mètode per la ciència
Un mètode per la ciènciaUn mètode per la ciència
Un mètode per la ciència
 
Sr. Moacir Escola Menodora
Sr. Moacir Escola MenodoraSr. Moacir Escola Menodora
Sr. Moacir Escola Menodora
 
Primer parcial expo
Primer parcial expoPrimer parcial expo
Primer parcial expo
 
e-OER ETT - Software ETT - programa informático ETTs
e-OER ETT - Software ETT - programa informático ETTse-OER ETT - Software ETT - programa informático ETTs
e-OER ETT - Software ETT - programa informático ETTs
 
Declaração Leonardo
Declaração LeonardoDeclaração Leonardo
Declaração Leonardo
 
Kiya bad-mazhab-syed-hain
Kiya bad-mazhab-syed-hainKiya bad-mazhab-syed-hain
Kiya bad-mazhab-syed-hain
 

Similar a Ingeniería de software

02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevida
claudiappaez
 
Prototipado rapido de interfaces
Prototipado rapido de interfacesPrototipado rapido de interfaces
Prototipado rapido de interfaces
Gaby Fernandez
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
Pablo Niama
 

Similar a Ingeniería de software (20)

Clase 11
Clase 11Clase 11
Clase 11
 
Desarrollo INGENIERIA EN SOFTWARE.pptx
Desarrollo INGENIERIA EN SOFTWARE.pptxDesarrollo INGENIERIA EN SOFTWARE.pptx
Desarrollo INGENIERIA EN SOFTWARE.pptx
 
Ciclosdevida procesos
Ciclosdevida procesosCiclosdevida procesos
Ciclosdevida procesos
 
Introducción al Desarrollo de Software
Introducción al Desarrollo de SoftwareIntroducción al Desarrollo de Software
Introducción al Desarrollo de Software
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
El Proceso De Desarrollo De Software
El Proceso De Desarrollo De SoftwareEl Proceso De Desarrollo De Software
El Proceso De Desarrollo De Software
 
Mod 6.2 introducción al análisis
Mod 6.2 introducción al análisisMod 6.2 introducción al análisis
Mod 6.2 introducción al análisis
 
Espoch
EspochEspoch
Espoch
 
02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevida
 
procesos de desarrollo de sw
procesos de desarrollo de swprocesos de desarrollo de sw
procesos de desarrollo de sw
 
Prototipado rapido de interfaces
Prototipado rapido de interfacesPrototipado rapido de interfaces
Prototipado rapido de interfaces
 
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptxPROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
 
Clase1
Clase1Clase1
Clase1
 
Prototipos
PrototiposPrototipos
Prototipos
 
Ciclo de vida
Ciclo de vidaCiclo de vida
Ciclo de vida
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Presentaciã³n1
Presentaciã³n1Presentaciã³n1
Presentaciã³n1
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 

Más de 142918

Virus, gusanos y troyanos
Virus, gusanos y troyanosVirus, gusanos y troyanos
Virus, gusanos y troyanos
142918
 
Clase 8-internet
Clase 8-internetClase 8-internet
Clase 8-internet
142918
 
Clase 10-bases de datos
Clase 10-bases de datosClase 10-bases de datos
Clase 10-bases de datos
142918
 
Clase 9-comunidades virtuales
Clase 9-comunidades virtualesClase 9-comunidades virtuales
Clase 9-comunidades virtuales
142918
 
Clase 8-internet
Clase 8-internet Clase 8-internet
Clase 8-internet
142918
 
Clase 8-internet
Clase 8-internetClase 8-internet
Clase 8-internet
142918
 
Clase 6-almacenamiento
Clase 6-almacenamientoClase 6-almacenamiento
Clase 6-almacenamiento
142918
 
Clase 7-redes
Clase 7-redesClase 7-redes
Clase 7-redes
142918
 
Clase 5-software[1]
Clase 5-software[1]Clase 5-software[1]
Clase 5-software[1]
142918
 
Clase 5-software[1]
Clase 5-software[1]Clase 5-software[1]
Clase 5-software[1]
142918
 
Clase 4-la computadora 2
Clase 4-la computadora 2Clase 4-la computadora 2
Clase 4-la computadora 2
142918
 
Clase 3.1-por qué binario
Clase 3.1-por qué binarioClase 3.1-por qué binario
Clase 3.1-por qué binario
142918
 
Clase 3-algoritmos
Clase 3-algoritmosClase 3-algoritmos
Clase 3-algoritmos
142918
 
Clase 2-la%20 computadora%20digital[1]
Clase 2-la%20 computadora%20digital[1]Clase 2-la%20 computadora%20digital[1]
Clase 2-la%20 computadora%20digital[1]
142918
 
Clase 1
Clase 1Clase 1
Clase 1
142918
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
142918
 

Más de 142918 (20)

Virus, gusanos y troyanos
Virus, gusanos y troyanosVirus, gusanos y troyanos
Virus, gusanos y troyanos
 
Clase 8-internet
Clase 8-internetClase 8-internet
Clase 8-internet
 
Clase 10-bases de datos
Clase 10-bases de datosClase 10-bases de datos
Clase 10-bases de datos
 
Clase 9-comunidades virtuales
Clase 9-comunidades virtualesClase 9-comunidades virtuales
Clase 9-comunidades virtuales
 
Clase 8-internet
Clase 8-internet Clase 8-internet
Clase 8-internet
 
Clase 8-internet
Clase 8-internetClase 8-internet
Clase 8-internet
 
Clase 6-almacenamiento
Clase 6-almacenamientoClase 6-almacenamiento
Clase 6-almacenamiento
 
Clase 7-redes
Clase 7-redesClase 7-redes
Clase 7-redes
 
Clase 5-software[1]
Clase 5-software[1]Clase 5-software[1]
Clase 5-software[1]
 
Clase 5-software[1]
Clase 5-software[1]Clase 5-software[1]
Clase 5-software[1]
 
Clase 4-la computadora 2
Clase 4-la computadora 2Clase 4-la computadora 2
Clase 4-la computadora 2
 
Clase 3.1-por qué binario
Clase 3.1-por qué binarioClase 3.1-por qué binario
Clase 3.1-por qué binario
 
Clase 3-algoritmos
Clase 3-algoritmosClase 3-algoritmos
Clase 3-algoritmos
 
Clase 2-la%20 computadora%20digital[1]
Clase 2-la%20 computadora%20digital[1]Clase 2-la%20 computadora%20digital[1]
Clase 2-la%20 computadora%20digital[1]
 
Clase 1
Clase 1Clase 1
Clase 1
 
Estructura de las bases de datos
Estructura de las bases de datosEstructura de las bases de datos
Estructura de las bases de datos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Sistema binario2
Sistema binario2Sistema binario2
Sistema binario2
 
Sistema binario2
Sistema binario2Sistema binario2
Sistema binario2
 
Avances tecnológicos del siglo xxi (word)
Avances tecnológicos del siglo xxi (word)Avances tecnológicos del siglo xxi (word)
Avances tecnológicos del siglo xxi (word)
 

Ingeniería de software

  • 1. Ingeniería de Software Prof. Santiago Mena Zorrilla
  • 2. ¿Que hace un Ingeniero? • Construir artefactos dentro de unas limitaciones de coste, utilizando el conocimiento y las teorías de la ciencia sobre la cual se basa el artefacto.
  • 3. ¿Qué ingeniería de software? Según la IEEE, la ingeniería de software: • La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software, es decir, la aplicación de la ingeniería al software. • El estudio de enfoques. • La Ingeniería del software es una tecnología multicapa
  • 4. Pasos de desarrollo de un sistema de software Justificación • Es realmente necesario? • Se necesita desarrollar el software? • Análisis • ¿Cuáles son lo procesos que se necesitan? • ¿Qué datos están disponibles y qué información se requiere? • ¿Cómo debe ser la interacción entre usuarios y sistema para llevar a cabo las tareas necesarias? • Casos de uso • Escenarios de interacción entre los usuarios y el sistema, indicándose el flujo de datos y de información, para cada tarea necesaria. • Prototipo • Diseño de interfaces para la interacción de los usuarios con el sistema, correspondiente a sus tareas. • Estimación de tiempo y costos • requiere una estimación lo más formal posible. • Estudio costo vs beneficio.
  • 5. Diseño • Solución de problema. Generalmente se diseña el sistema en una arquitectura MVC [Model‐View‐Controller] • Model Modelado de los datos en el programa. Modelado de la base de datos. • View Modelado de las interfaces. • Controller Modelado de las funciones de almacenamiento de datos y recuperación de información. Programación Automatización de la solución determinada en el diseño. Pruebas Determinar que el sistema funciona adecuadamente, cumpliendo con las necesidades. Tipos de pruebas • Prueba de desempeño: que haga lo que tiene que hacer y no otra cosa. • Prueba de estrés: que soporte situaciones críticas [número de usuarios]. • Prueba de usabilidad: que los usuarios puedan llevar a cabo sus tareas de manera eficiente.
  • 6. Mantenimiento • Actualización del software de acuerdo a los cambios de la organización de los requerimientos. • El mantenimiento solamente es posible si se tiene la documentación completa y los programas están codificados claramente y con comentarios. Migración • Proceso de cambiar el software elaborado en un lenguaje de programación ya obsoleto a un lenguaje de programación actual. Crear una pagina web en Faceboock
  • 7. 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 .
  • 8. 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.
  • 9. División del Producto. • Se fracciona el producto de modo que cada fragmento lo puede realizar un miembro del grupo de desarrollo.
  • 10. División del Proceso. • Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de especificación, diseño y fabricación.
  • 11. 3. El proceso de desarrollo de software 11 Ciclos de Vida del Software – Se han propuesto muchos ciclos de vida para el desarrollo del software, pero estos son los más representativos: – Poner la cola al burro. – Ciclo de vida clásico o en cascada. – Construcción rápida de Prototipos Desechables – Incremental – Evolución de prototipos – Reutilización de Software – Síntesis automática de software – En espiral.
  • 12. 3. El proceso de desarrollo de software 12 Poner la cola al burro • Se coge a uno o varios informáticos, • Se les muestra más o menos el problema, • Se les deja solos en un cuarto a oscuras, • Transcurrido un tiempo se abre la puerta.
  • 13. 3. El proceso de desarrollo de software 13 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
  • 14. 3. El proceso de desarrollo de software 14 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
  • 15. 3. El proceso de desarrollo de software 15 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
  • 16. 3. El proceso de desarrollo de software 16 El Helado de Cucurucho 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
  • 17. 3. El proceso de desarrollo de software 17 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
  • 18. 3. El proceso de desarrollo de software 18 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
  • 19. 3. El proceso de desarrollo de software 19 Construcción Rápida de Prototipos Desechables • 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á
  • 20. 3. El proceso de desarrollo de software 20 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
  • 21. 3. El proceso de desarrollo de software 21 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.
  • 22. 3. El proceso de desarrollo de software 22 Incremental Requerimientos Requeri mientos Diseño Impleme ntación Pruebas Bloque 1 Requeri mientos Diseño Impleme ntación Pruebas Bloque N Requerimientos Bloque 1 Diseño Impleme ntación Pruebas Bloque N Diseño Impleme ntación Pruebas o Permite el desarrollo concurrent e
  • 23. 3. El proceso de desarrollo de software 23 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
  • 24. 3. El proceso de desarrollo de software 24 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.
  • 25. 3. El proceso de desarrollo de software 25 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
  • 26. 3. El proceso de desarrollo de software 26 En espiral. Determinar objetivos, alternativas, restricciones Evaluar alternativas, identificar y resolver riesgos Desarrollar, verificarPlanificar las próximas fases REVISIÓN Acuerdo
  • 27. 3. El proceso de desarrollo de software 27 Metodologías de Desarrollo del Software • Métodos informales • Métodos Semiformales • Métodos Formales
  • 28. 3. El proceso de desarrollo de software 28 Métodos informales • Joaquín Lucio-Villegas los clasifica como: – Quick & Dirty (USA) – Match stick box (Europa) – Balones p'alante y maricón el último
  • 29. 3. El proceso de desarrollo de software 29 Métodos Semiformales • Métodos Estructurados – SA/SD (structured analysis & structured design) – Métrica • Métodos Orientados a Objetos – OMT – UML
  • 30. 3. El proceso de desarrollo de software 30 PROCESOS DATOS Métodos Estructurados • Métodos Orientados a la Estructura de los Datos • Métodos de flujo de datos
  • 31. 3. El proceso de desarrollo de software 31 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.
  • 32. 3. El proceso de desarrollo de software 32 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
  • 33. 3. El proceso de desarrollo de software 33 Madurez del proceso en la organización de desarrollo • La misma industria, diferentes niveles de madurez.
  • 34. 3. El proceso de desarrollo de software 34 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.
  • 35. 3. El proceso de desarrollo de software 35 CMM (Capability Maturity Model) • Proporciona una Guía sobre como – controlar los procesos: • de desarrollo del software. • de mantenimiento. – Hacer evolucionar hacia una cultura de: • Ingeniería del software. • Gestión eficiente.
  • 36. 3. El proceso de desarrollo de software 36 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
  • 37. 3. El proceso de desarrollo de software 37 Correlación entre estimaciones y niveles de madurez
  • 38. 3. El proceso de desarrollo de software 38 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.
  • 39. 3. El proceso de desarrollo de software 39 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.
  • 40. 3. El proceso de desarrollo de software 40 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.
  • 41. 3. El proceso de desarrollo de software 41 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
  • 42. 3. El proceso de desarrollo de software 42 Nivel de Optimización. • A través de mediciones del proceso utilizando ideas y tecnologías innovadoras obtenemos: – Mejoras en calidad y cantidad.
  • 43. 3. El proceso de desarrollo de software 43 Resumen • Hemos visto: – Como trabajan los ingenieros, – Definiciones de ingeniería del software, – El ciclo de vida del software, – Metodológicas de desarrollo – Madurez del proceso de desarrollo.