Clase 1

16
13/01/2011 1 Parte1. Proceso de desarrollo de Software Andrés Moya Brizuela Enero, 2011 Universidad Metropolitana Castro Carazo IN5034 Análisis y Diseño de Programas 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, Especificaciones, Software Proceso

Transcript of Clase 1

Page 1: Clase 1

13/01/2011

1

Parte1. Proceso de desarrollo de Software

Andrés Moya Brizuela

Enero, 2011

Universidad Metropolitana Castro Carazo

IN5034 Análisis y Diseño de Programas

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,

Especificaciones,

SoftwareProceso

Page 2: Clase 1

13/01/2011

2

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)

Page 3: Clase 1

13/01/2011

3

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.

Page 4: Clase 1

13/01/2011

4

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

Page 5: Clase 1

13/01/2011

5

Modelo de la Ingeniería del software

(Thayer 1988)

AnalisisDiseñoCodificaciónPruebas

Desarrollo de Software

PlanificaciónOrganizaciónReclutamientoDirecciónControl

Gestión de proyectos

FiabilidadUsabilidadFlexibilidadMantenibilidadReusabilidadEtc.

Metricasdel software

Corrección de ErroresModificaciones

Mantenimiento de software

Ingenieríadel software

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.

Page 6: Clase 1

13/01/2011

6

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

Vida del

SOFTWARE

Metodologías de

Desarrollo del

SOFTWARE

Page 7: Clase 1

13/01/2011

7

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

Page 8: Clase 1

13/01/2011

8

La Versión Ideal

Análisis

Diseño

ProgramaciónPruebas

Conversión

Producción y

mantenimiento

El Modelo en V

Identificación

de

requerimientos

Explotación

Especificación

esencialValidación

Especificación

físicaEmpaquetado

Programación

Diseño Integración

El Modelo Real

Identificación

de

requerimientos

Explotación

Especificación

esencialValidación

Especificación

físicaEmpaquetado

Programación

Diseño Integración

Page 9: Clase 1

13/01/2011

9

Propuesta de Yourdon

Requerimientos del Usuario

Encuesta

Análisis

Estudio

del HWNecesidades de

Rendimiento

Especificación

Funcional

Diseño

Preliminar

Especificación

del Sistema Diseño

Detallado

Configuración

Final

Especificaciones

de los Programas

Codificación Módulos

Codificados

Pruebas de

Unidad

Módulos

Probados

Pruebas de

Subsistemas

Subsistemas

Probados

Pruebas de

Sistema

Sistema

Probado

26

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á

El ciclo de vida de Prototipos

Desechables es el siguiente:

Aceptado

NO Aceptado

Evaluación

Cliente

Mejora de la

Especificación

Construcción

PrototipoObtención

Especificación

Ciclo de

Vida

Clásico

Evaluación

del cliente

Page 10: Clase 1

13/01/2011

10

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

Requerimien

tos

Bloque

1

Bloque

N

Bloque

1

Bloque

N

oPermite el

desarrollo

concurrente

Requerimien

tos

DiseñoImplementa

ciónPruebas

Requerimien

tosDiseño

Implementa

ciónPruebas

DiseñoImplementa

ciónPruebas

DiseñoImplementa

ciónPruebas

30

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

Page 11: Clase 1

13/01/2011

11

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

Requerimientos

Especificación

Formal (Prototipo)

Validación

Mantenimiento Optimización

Mecánica

Desarrollo

Formal

Ajuste

(tuning)

Programa

Fuete

Racionalidad

y Decisiones

En espiral.

Determinar objetivos,

alternativas, restricciones

Evaluar alternativas,

identificar y resolver

riesgos

Desarrollar, verificarPlanificar las próximas

fases

REVISIÓN

Acuerdo

Page 12: Clase 1

13/01/2011

12

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

Page 13: Clase 1

13/01/2011

13

PROCESOS DATOS

Métodos Estructurados

• Métodos Orientados a la Estructura de los

Datos

• Métodos de flujo de 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.

Page 14: Clase 1

13/01/2011

14

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”

Page 15: Clase 1

13/01/2011

15

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

Page 16: Clase 1

13/01/2011

16

Muchas gracias

Andrés Moya Brizuela

Enero, 2011

Universidad Metropolitana Castro Carazo

Licenciatura en Ingeniería Informática

Calidad de software