Sei sulla pagina 1di 16

13/01/2011

Universidad Metropolitana Castro Carazo


IN5034 Análisis y Diseño de Programas

Parte1. Proceso de desarrollo de Software


Andrés Moya Brizuela

Enero, 2011

Agenda

• Presentación de los colaboradores


• Revisión del paquete académico
• Proceso de desarrollo de software

¿Que queremos decir con proceso


de desarrollo de software?

Deseos,
necesidades, Proceso Software
Especificaciones,

1
13/01/2011

Introducción al proceso de
desarrollo.

• En general, cuando las personas abordan el


desarrollo de cualquier proyecto evolucionan
desde ideas abstractas hacia concreciones
realizables.

Normalmente el planteamiento es:

• Se debe desarrollar un sistema para un proceso

»Se elaboran las especificaciones

• En herramientas de desarrollo y base de datos

»Se realiza el diseño

• Aprobado el proyecto se procede a la


programación.

El grado de precisión con que se


lleve a cabo cada paso influirá en
el resultado

• El éxito del proyecto de desarrollo de software,


consiste principalmente, en que los entregables de
cada etapa de desarrollo se elaboren de manera
detallada y precisa.

• Además que sean totalmente interpetable por todos


los que participan en el desarrollo del proyecto,
incluyendo los interesados (stakeholders)

2
13/01/2011

Ingeniería e Ingeniería del


Software

• ¿Dónde nos encontramos?


• ¿Qué hace un Ingeniero?
• Definiciones de Ingeniería del software
• Técnicas básicas utilizadas históricamente

¿Dónde nos encontramos?

• Lo ideal es que contemos con:


 Técnicas de desarrollo que minimicen la complejidad de un
sistema software.

 Métodos y conceptos que permitan al desarrollador y al


cliente explorar la naturaleza del sistema software, lo mas
pronto posible.

 Técnicas que minimicen los efectos devastadores de las


modificaciones durante el desarrollo y la explotación.

¿Qué hace un Ingeniero?

• Construir artefactos dentro de unas limitaciones


de costos, utilizando el conocimiento y las teorías
científicas.

3
13/01/2011

Definición de la ingeniería del


software (NATO „68)

• La ingeniería del software es el


establecimiento y uso de principios de
ingeniería razonables con el objetivo de
obtener software económicamente, que sea de
confianza y trabaje eficientemente en las
maquinas reales.

Definición
(R.E. Fairley 1985)

• Hemos definido la Ingeniería del Software como la


disciplina tecnológica concerniente a la producción y
mantenimiento sistemáticos de productos software
que son desarrollados y modificados en el tiempo y
con los costos estimados...

• Además, la Ingeniería del software tiene que ver con


cuestiones de gestión que caen fuera del dominio de
la programación tradicional.

Características de la ingeniería del


software (Van Vliet 1993)

• Construcción de programas grandes


• Controlar la complejidad
• Cooperación entre las personas implicadas
(stakeholders)
• Evolución del software
• Eficiencia en el desarrollo
• Soporte real a los usuarios

4
13/01/2011

Modelo de la Ingeniería del software


(Thayer 1988)

Ingeniería
del software
Desarrollo Gestión de Metricas Mantenimiento
de Software proyectos del software de software
Analisis Planificación Fiabilidad Corrección de Errores
Diseño Organización Usabilidad Modificaciones
Codificación Reclutamiento Flexibilidad
Pruebas Dirección Mantenibilidad
Control Reusabilidad
Etc.

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.

5
13/01/2011

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.

En el desarrollo de software nos


encontramos con la siguiente
situación

Ciclos de Metodologías de
Vida del Desarrollo del
SOFTWARE SOFTWARE

6
13/01/2011

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.

Ciclos de Vida del Software

Se han propuesto muchos ciclos de vida para el


desarrollo del software, pero estos son los más
representativos:
 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.

Ciclo de vida clásico o en cascada.

• La Versión Ideal (Perfecta)


• El Modelo en V
• El Modelo Real
• Propuesta de Yourdon

7
13/01/2011

La Versión Ideal

Análisis Producción y
mantenimiento

Diseño
Conversión

Programación
Pruebas

El Modelo en V

Identificación
de Explotación
requerimientos

Especificación Validación
esencial

Especificación Empaquetado
física

Diseño Integración

Programación

El Modelo Real

Identificación
de Explotación
requerimientos

Especificación Validación
esencial

Especificación Empaquetado
física

Diseño Integración

Programación

8
13/01/2011

Propuesta de Yourdon

Sistema
Probado
Requerimientos del Usuario
Pruebas de
Sistema
Encuesta
Subsistemas
Probados

Especificación
Funcional Análisis Pruebas de
Subsistemas

Diseño Estudio
Preliminar del HW Módulos
Necesidades de
Rendimiento Probados
Pruebas de
Configuración Unidad
Especificación Final
del Sistema Diseño
Detallado Codificación Módulos
Especificaciones Codificados
de los Programas

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á

26

El ciclo de vida de Prototipos


Desechables es el siguiente:

Aceptado

Construcción Evaluación Ciclo de


Obtención
Prototipo del cliente Vida
Especificación
Clásico
Mejora de la
Especificación NO Aceptado

Evaluación
Cliente

9
13/01/2011

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:
– 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.

Incremental

Bloque Diseño
Implementa
Pruebas
1 ción

Requerimien Implementa
Bloque tos
Diseño
ción
Pruebas
N
o
Requerimien Requerimien Permite el
tos tos
desarrollo
Implementa
Bloque Diseño
ción
Pruebas concurrente
1

Bloque Implementa
Diseño Pruebas
N ción

Evolución de Prototipos

Observación
Requerimientos

Abstracción
Validación

Especificación
Verificación

Prototipo
Empezamos por los Verificación
requerimientos más claros,
menos complejos y más Experimentar
necesarios. Validación 30
Prototipo rápido

10
13/01/2011

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.

Síntesis automática de
software

Requerimientos
Informales Análisis de Especificación
Requerimientos Formal (Prototipo)

Validación

Mantenimiento Optimización
Mecánica

Racionalidad
y Decisiones
Ajuste
(tuning)

Desarrollo Programa
Formal Fuete

En espiral.

Determinar objetivos, Evaluar alternativas,


alternativas, restricciones identificar y resolver
riesgos

Acuerdo
REVISIÓN

Planificar las próximas Desarrollar, verificar


fases

11
13/01/2011

Metodologías de Desarrollo del


Software

• Métodos informales
• Métodos Semiformales
• Métodos Formales

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

Métodos Semiformales

• Métodos Estructurados
– SA/SD (structured analysis & structured
design)
– Métrica
• Métodos Orientados a Objetos
– OMT
– UML

12
13/01/2011

Métodos Estructurados

• Métodos Orientados a la Estructura de los


Datos
• Métodos de flujo de datos

PROCESOS DATOS

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.

Modelo de Construcción de
Prototipos

El desarrollador y el cliente deben ser conscientes de que el


prototipo se utiliza para precisar los requisitos del software y
así evitar inconvenientes como:

– El cliente cree que el prototipo es una primera versión


funcional del Sistema.
– El desarrollador construye el prototipo rápidamente y
en ocasiones sin hacer uso de la tecnología optima
disponible.

13
13/01/2011

Modelo de Desarrollo Rápido de


Aplicaciones (DRA)

• Basado en el Modelo Lineal Secuencial


• Modelo llevado a cabo por varias equipos de trabajo que
siguen las etapas del proceso de manera simultanea.
• Modelo aplicable a la construcción de sistemas de
información fácilmente modularizables.
• El Modelo DRA necesita clientes y desarrolladores
comprometidos con el proceso.
• No es muy útil para aplicaciones que requieren adopción
de nuevas tecnologías porque la curva de aprendizaje
puede afectar el cronograma del proyecto.

Modelo de Desarrollo Rápido de


Aplicaciones (DRA)

Modelo de Métodos Formales

• El proceso de desarrollo se basa en la transformación


matemática formal de la especificación del sistema a un
programa ejecutable
• Facilita la verificación de programas a través de un
riguroso análisis matemático.
• La ejecución de este tipo de modelos requiere mucho
tiempo y esfuerzo.
• “Ingeniería de Software de Sala Limpia”

14
13/01/2011

Modelo de Métodos Formales

• Ventaja: Consistencia!!!

• Desventaja: complejo, demanda mucho tiempo

Técnicas de cuarta generación

• Facilita al ingeniero desarrollador del software la


especificación de las características del software a alto
nivel, con el fin de generar automáticamente el código a
partir de allí.
• Existencia de herramientas CASE (Computer Aide
Software Engineering) Ingeniería de software asistida por
computador

Algunos métodos de desarrollo


de software

• RUP
• CDM
• FDD
• XP
• UN-METODO

15
13/01/2011

Universidad Metropolitana Castro Carazo


Licenciatura en Ingeniería Informática
Calidad de software

Muchas gracias
Andrés Moya Brizuela

Enero, 2011

16

Potrebbero piacerti anche