Download - Tecnicasdedesarrollo

Transcript
Page 1: Tecnicasdedesarrollo

1

EL PROCESO DE EL PROCESO DE DESARROLLO DE DESARROLLO DE

SOFTWARESOFTWARE

Page 2: Tecnicasdedesarrollo

2

¿Que queremos decir con ¿Que queremos decir con proceso de desarrollo?proceso de desarrollo?

Deseos, necesidades, Especificaciones, …

Software

Page 3: Tecnicasdedesarrollo

3

Introducción al proceso Introducción al proceso de desarrollo.de desarrollo.

En general, cuando las personas En general, cuando las personas abordan el desarrollo de cualquier abordan el desarrollo de cualquier proyecto evolucionan desde ideas proyecto evolucionan desde ideas abstractas hacia concreciones abstractas hacia concreciones realizables.realizables.

Page 4: Tecnicasdedesarrollo

4

Es extraño que alguien Es extraño que alguien diga:diga:

"Me puse a programar y me salió una "Me puse a programar y me salió una contabilidad"contabilidad"

Algunas aplicaciones da la impresión de Algunas aplicaciones da la impresión de que...que...

Recordar que la probabilidad de que un mono Recordar que la probabilidad de que un mono teclee en una maquina de escribir y salga el teclee en una maquina de escribir y salga el quijote no es ceroquijote no es cero

Page 5: Tecnicasdedesarrollo

5

Normalmente el Normalmente el planteamiento es:planteamiento es:

Vamos a desarrollar una Vamos a desarrollar una contabilidad,contabilidad,

Hacer la especificación.Hacer la especificación.

en Visual BASIC y Access,en Visual BASIC y Access, Realizar el diseño.Realizar el diseño.

y se codifica la aplicación.y se codifica la aplicación.

Page 6: Tecnicasdedesarrollo

6

El grado de precisión con El grado de precisión con que se lleve a cabo cada que se lleve a cabo cada

paso influirá en el resultadopaso influirá en el resultado ¿Me podrías indicar, por favor, hacia ¿Me podrías indicar, por favor, hacia

dónde tengo que ir?dónde tengo que ir? Eso depende de adónde quieras Eso depende de adónde quieras

llegar, contesto el gato.llegar, contesto el gato. A mí no me importa demasiado A mí no me importa demasiado

adónde...- empezó a explicar Alicia.adónde...- empezó a explicar Alicia. En ese caso, da igual cualquier En ese caso, da igual cualquier

dirección - interrumpió el Gato.dirección - interrumpió el Gato. ...Siempre que llegue a alguna parte -...Siempre que llegue a alguna parte -

terminó Alicia a modo de explicación.terminó Alicia a modo de explicación. Basta que empieces a andar - le Basta que empieces a andar - le

aseguro el Gato-, dando un paso tras aseguro el Gato-, dando un paso tras otro.otro. Alicia en el país de las maravillasAlicia en el país de las maravillas

Page 7: Tecnicasdedesarrollo

7

Ingeniería e Ingeniería Ingeniería e Ingeniería del Softwaredel Software

¿Donde nos encontramos?¿Donde nos encontramos? ¿Que hace un Ingeniero?¿Que hace un Ingeniero? Definiciones de Ingeniería del Definiciones de Ingeniería del

softwaresoftware Técnicas básicas utilizadas Técnicas básicas utilizadas

históricamentehistóricamente

Page 8: Tecnicasdedesarrollo

8

¿Donde nos ¿Donde nos encontramos?encontramos?

Con Problemas, tendremos que disponer de:Con Problemas, tendremos que disponer de: Técnicas de desarrollo que Técnicas de desarrollo que minimicen la minimicen la

complejidadcomplejidad de un sistema software. de un sistema software. Métodos y conceptos que permitan al productor y Métodos y conceptos que permitan al productor y

al cliente al cliente explorar la naturaleza del sistemaexplorar la naturaleza del sistema software lo antes posible.software lo antes posible.

Técnicas que Técnicas que minimicenminimicen los los efectosefectos devastadores de las devastadores de las modificacionesmodificaciones durante el durante el desarrollo y la explotación.desarrollo y la explotación.

Page 9: Tecnicasdedesarrollo

9

¿Que hace un Ingeniero?¿Que hace un Ingeniero?

Construir artefactos dentro de unas Construir artefactos dentro de unas limitaciones de coste, utilizando el limitaciones de coste, utilizando el conocimiento y las teorías de la conocimiento y las teorías de la ciencia sobre la cual se basa el ciencia sobre la cual se basa el artefacto.artefacto.

Page 10: Tecnicasdedesarrollo

10

Definición de la Definición de la ingeniería del software ingeniería del software

(NATO ‘68)(NATO ‘68) La ingeniería del software es el La ingeniería del software es el

establecimiento y uso de establecimiento y uso de principiosprincipios de ingeniería razonables con el de ingeniería razonables con el objetivo de objetivo de obtener software obtener software económicamenteeconómicamente, que sea , que sea de de confianzaconfianza y trabaje y trabaje eficientementeeficientemente en las maquinas reales. en las maquinas reales.

Page 11: Tecnicasdedesarrollo

11

Definición Definición (R.E. Fairley 1985)(R.E. Fairley 1985)

Hemos definido la Ingeniería del Software Hemos definido la Ingeniería del Software como la disciplina tecnológica concerniente a como la disciplina tecnológica concerniente a la la producción y mantenimientoproducción y mantenimiento sistemáticos sistemáticos de de productos softwareproductos software que son desarrollados que son desarrollados y modificados en el y modificados en el tiempo y con los costes tiempo y con los costes estimadosestimados......

Además, la Ingeniería del software tiene que Además, la Ingeniería del software tiene que ver con ver con cuestiones de gestióncuestiones de gestión que caen fuera que caen fuera del dominio de la programación tradicional.del dominio de la programación tradicional.

Page 12: Tecnicasdedesarrollo

12

Características de la Características de la ingeniería del software (Van ingeniería del software (Van

Vliet 1993)Vliet 1993) Construcción de programas grandesConstrucción de programas grandes Controlar la complejidadControlar la complejidad Cooperación entre las personas Cooperación entre las personas

implicadasimplicadas Evolución del softwareEvolución del software Eficiencia en el desarrolloEficiencia en el desarrollo Soporte real a los usuariosSoporte real a los usuarios

Page 13: Tecnicasdedesarrollo

13

Modelo de la Ingeniería Modelo de la Ingeniería del software (Thayer del software (Thayer

1988) 1988)

A na lis isD iseñoC od ificaciónP ruebas

D esarro llo de S oftware

P lanificaciónO rgan izaciónR eclu tam ien toD irecciónC ontro l

G estión de p royectos

F iabilidadU sabilidadF lexib ilidadM antenib ilidadR eusab ilidadE tc.

M etricasde l so ftw are

C orrección de E rroresM od ificaciones

M antenim ien to de so ftw are

Ingen ie ríade l so ftw are

Page 14: Tecnicasdedesarrollo

14

Técnicas básicas usadas Técnicas básicas usadas en las ingenieríasen las ingenierías

Históricamente se han utilizado Históricamente se han utilizado técnicas como:técnicas como: El modeladoEl modelado División del ProductoDivisión del Producto División del ProcesoDivisión del Proceso

En principio se deberían utilizar En principio se deberían utilizar estas técnicas, también en estas técnicas, también en informática .informática .

Page 15: Tecnicasdedesarrollo

15

El modelado. El modelado.

Simplificación del objeto en el Simplificación del objeto en el mundo real, pero que es mundo real, pero que es suficientemente realista como para suficientemente realista como para dar una idea de lo que ocurrirá en la dar una idea de lo que ocurrirá en la realidad y usarse como base del realidad y usarse como base del desarrollo.desarrollo.

Page 16: Tecnicasdedesarrollo

16

División del Producto.División del Producto.

Se fracciona el producto de modo Se fracciona el producto de modo que cada fragmento lo puede que cada fragmento lo puede realizar un miembro del grupo de realizar un miembro del grupo de desarrollo.desarrollo.

Page 17: Tecnicasdedesarrollo

17

¿Que?

División del Proceso.División del Proceso.

Implica dividir el desarrollo del artefacto Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de por fases. Normalmente se habla de especificación, diseño y fabricación. especificación, diseño y fabricación.

¿Como?

Realización Pruebas

Page 18: Tecnicasdedesarrollo

18

En el desarrollo de software nos En el desarrollo de software nos encontramos con la siguiente encontramos con la siguiente

situaciónsituación

Ciclos de Vida del

SOFTWARE

Metodologías de Desarrollo

del SOFTWARE

Page 19: Tecnicasdedesarrollo

19

Ciclo de Vida del Ciclo de Vida del SoftwareSoftware

Consiste en determinar:Consiste en determinar: las fases productivas de un proyecto,las fases productivas de un proyecto, los objetivos de cada fase productiva, ylos objetivos de cada fase productiva, y los productos obtenidos en cada una de los productos obtenidos en cada una de

estas fases así como sus características.estas fases así como sus características.

Page 20: Tecnicasdedesarrollo

20

Ciclos de Vida del Ciclos de Vida del SoftwareSoftware

Se han propuesto muchos ciclos de vida Se han propuesto muchos ciclos de vida para el desarrollo del software, pero para el desarrollo del software, pero estos son los más representativos:estos son los más representativos:

Poner la cola al burro.Poner la cola al burro. Ciclo de vida clásico o en cascada.Ciclo de vida clásico o en cascada. Construcción rápida de Prototipos DesechablesConstrucción rápida de Prototipos Desechables IncrementalIncremental Evolución de prototiposEvolución de prototipos Reutilización de Software Reutilización de Software Síntesis automática de softwareSíntesis automática de software En espiral.En espiral.

Page 21: Tecnicasdedesarrollo

21

Poner la cola al burroPoner la cola al burro

Se coge a uno o varios Se coge a uno o varios informáticos,informáticos,

Se les muestra más o Se les muestra más o menos el problema,menos el problema,

Se les deja solos en un Se les deja solos en un cuarto a oscuras,cuarto a oscuras,

Transcurrido un tiempo Transcurrido un tiempo se abre la puerta.se abre la puerta.

Page 22: Tecnicasdedesarrollo

22

Ciclo de vida clásico o en Ciclo de vida clásico o en cascada.cascada.

La Versión Ideal (Perfecta)La Versión Ideal (Perfecta) El Modelo en VEl Modelo en V El Helado de CucuruchoEl Helado de Cucurucho El Modelo Real El Modelo Real Propuesta de YourdonPropuesta de Yourdon

Page 23: Tecnicasdedesarrollo

23

Validación

Instalación, Explotación

Test y pruebas previas a la OPERACIÓN

OPERACIÓN Y MANTENIMIENTO

Estudio de Viabilidad

AnálisisEspecificación

Requerimientos del Software

DiseñoEspecificación de diseño

Diseño Preliminar y Detallado

CodificaciónAplicación

Codificación y Depuración

La Versión IdealLa 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

Page 24: Tecnicasdedesarrollo

24

El Modelo en VEl 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

Page 25: Tecnicasdedesarrollo

25

El Helado de El Helado de CucuruchoCucurucho

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

Page 26: Tecnicasdedesarrollo

26

El Modelo Real 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

Page 27: Tecnicasdedesarrollo

27

Propuesta de YourdonPropuesta 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

Page 28: Tecnicasdedesarrollo

28

Construcción Rápida de Construcción Rápida de Prototipos DesechablesPrototipos Desechables

Al igual que otras ingenierías se Al igual que otras ingenierías se utilizan los prototipos para que el utilizan los prototipos para que el cliente observe, confirme y mejore el cliente observe, confirme y mejore el productoproducto Este enfoque es apropiado cuando:Este enfoque es apropiado cuando:

El cliente no tiene claro lo que quiere,El cliente no tiene claro lo que quiere, Al cliente le gustaría ver algo similar para Al cliente le gustaría ver algo similar para

poder hacerse una idea de lo que obtendrápoder hacerse una idea de lo que obtendrá

Page 29: Tecnicasdedesarrollo

29

El ciclo de vida de El ciclo de vida de Prototipos Desechables Prototipos Desechables

es el siguiente: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

Page 30: Tecnicasdedesarrollo

30

Existen dos clases de Existen dos clases de prototiposprototipos

De INTERFACE.De INTERFACE. Usualmente un modelo de papel o sobre PC en Usualmente un modelo de papel o sobre PC en

el que se muestran pantallas y listados.el que se muestran pantallas y listados. De COMPORTAMIENTO:De COMPORTAMIENTO:

En anchura. Ofrece todos los menús del sistema En anchura. Ofrece todos los menús del sistema y simula débilmente los procesos.y simula débilmente los procesos.

En profundidad. Cubre funciones que presentan En profundidad. Cubre funciones que presentan ambigüedades al cliente o a los informáticos.ambigüedades al cliente o a los informáticos.

Completo pero de baja calidad y rendimiento.Completo pero de baja calidad y rendimiento.

Page 31: Tecnicasdedesarrollo

31

IncrementalIncremental

Requerimientos

Requerimientos

Diseño Implementación

PruebasBloque 1

Requerimientos

Diseño Implementación

PruebasBloque N

Requerimientos

Bloque 1

Diseño Implementación

Pruebas

Bloque N

Diseño Implementación

Pruebas

oPermite el desarrollo concurrente

Page 32: Tecnicasdedesarrollo

32

Evolución de PrototiposEvolución de Prototipos

ObservaciónRequerimiento

sAbstracciónValidación

EspecificaciónVerificación

PrototipoVerificación

ExperimentarValidación

Empezamos por los requerimientos más claros,

menos complejos y más necesarios.

Prototipo rápido

Page 33: Tecnicasdedesarrollo

33

Reutilización de Software Reutilización de Software

Tiene como objetivos:Tiene como objetivos: reducir el coste del software.reducir el coste del software. Producir sistemas de mayor calidad.Producir sistemas de mayor calidad.

Se basa en reutilizar Diseños, Se basa en reutilizar Diseños, programas, módulos y datos.programas, módulos y datos.

Es compatible con el prototipo Es compatible con el prototipo evolutivo.evolutivo.

Page 34: Tecnicasdedesarrollo

34

Síntesis automática de Síntesis automática de softwaresoftware

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

Page 35: Tecnicasdedesarrollo

35

En espiral.En espiral.

Determinar objetivos, alternativas, restricciones

Evaluar alternativas, identificar y resolver riesgos

Desarrollar, verificarPlanificar las próximas fases

REVISIÓNAcuerdo

Page 36: Tecnicasdedesarrollo

36

Metodologías de Metodologías de Desarrollo del SoftwareDesarrollo del Software

Métodos informalesMétodos informales Métodos SemiformalesMétodos Semiformales Métodos FormalesMétodos Formales

Page 37: Tecnicasdedesarrollo

37

Métodos informalesMétodos informales

Joaquín Lucio-Villegas los clasifica Joaquín Lucio-Villegas los clasifica como:como: Quick & Dirty (USA)Quick & Dirty (USA) Match stick box (Europa)Match stick box (Europa) Balones p'alante y maricón el últimoBalones p'alante y maricón el último

Page 38: Tecnicasdedesarrollo

38

Métodos SemiformalesMétodos Semiformales

Métodos EstructuradosMétodos Estructurados SA/SD (SA/SD (structured analysis & structured analysis &

structured designstructured design)) MétricaMétrica

Métodos Orientados a ObjetosMétodos Orientados a Objetos OMTOMT UMLUML

Page 39: Tecnicasdedesarrollo

39

PROCESOS DATOS

Métodos EstructuradosMétodos Estructurados

Métodos Orientados a la Estructura Métodos Orientados a la Estructura de los Datosde los Datos

Métodos de flujo de datosMétodos de flujo de datos

Page 40: Tecnicasdedesarrollo

40

Métodos Orientados a Métodos Orientados a ObjetosObjetos

Los métodos orientados a objeto Los métodos orientados a objeto describen e implementan los sistemas describen e implementan los sistemas de información desde un punto de vista de información desde un punto de vista ontológico.ontológico.

Page 41: Tecnicasdedesarrollo

41

Métodos FormalesMétodos Formales

Los métodos formales permiten al ingeniero de Los métodos formales permiten al ingeniero de software especificar, desarrollar y verificar un software especificar, desarrollar y verificar un sistema informático mediante la aplicación de una sistema informático mediante la aplicación de una notación matemática rigurosa. notación matemática rigurosa.

Utilizando un lenguaje de especificación formal, Utilizando un lenguaje de especificación formal, un método formal proporciona los medios de un método formal proporciona los medios de especificar un sistema de forma que se aseguren, especificar un sistema de forma que se aseguren, de forma sistemática, la consistencia, la de forma sistemática, la consistencia, la completitud y la corrección.completitud y la corrección.

Se suelen basar en notaciones matemáticas Se suelen basar en notaciones matemáticas similares a las del álgebra de conjuntos y la lógicasimilares a las del álgebra de conjuntos y la lógica

Page 42: Tecnicasdedesarrollo

42

Madurez del proceso en Madurez del proceso en la organización de la organización de

desarrollodesarrollo La misma industria, diferentes La misma industria, diferentes

niveles de madurez.niveles de madurez.

Page 43: Tecnicasdedesarrollo

43

Madurez del proceso en Madurez del proceso en la organización de la organización de

desarrollodesarrollo Hay factores que no quedan Hay factores que no quedan

claramente reflejados en el ciclo de claramente reflejados en el ciclo de vida ni en las técnicas de desarrollo.vida ni en las técnicas de desarrollo.

Los factores no estudiados son:Los factores no estudiados son: El cumplimiento de los plazos de El cumplimiento de los plazos de

entrega.entrega. La calidad (número de errores en el La calidad (número de errores en el

Software).Software). El coste del proyecto.El coste del proyecto.

Page 44: Tecnicasdedesarrollo

44

CMM (Capability CMM (Capability Maturity Model)Maturity Model)

Proporciona una Guía sobre comoProporciona una Guía sobre como controlar los procesos:controlar los procesos:

de desarrollo del software.de desarrollo del software. de mantenimiento.de mantenimiento.

Hacer evolucionar hacia una cultura de:Hacer evolucionar hacia una cultura de: Ingeniería del software.Ingeniería del software. Gestión eficiente.Gestión eficiente.

Page 45: Tecnicasdedesarrollo

45

Inicial

Repetible

Optimización

Gestionado

DefinidoControl Básico

Definición del Proceso

Medición del Proceso

Control del Proceso

Evolución de las Evolución de las organizaciones según el organizaciones según el

CMMCMM

Page 46: Tecnicasdedesarrollo

46

Correlación entre Correlación entre estimaciones y niveles de estimaciones y niveles de

madurezmadurez

Page 47: Tecnicasdedesarrollo

47

Nivel Inicial.Nivel Inicial.

Según las circunstancias utilizamos un Según las circunstancias utilizamos un proceso distinto. (algunos caóticos)proceso distinto. (algunos caóticos)

A medida, A medida, Poco formalizado, Poco formalizado, Uso de herramientas informales.Uso de herramientas informales. Pocos procesos definidos.Pocos procesos definidos. El éxito depende del esfuerzo El éxito depende del esfuerzo

individual.individual.

Page 48: Tecnicasdedesarrollo

48

Nivel de Repetición.Nivel de Repetición.

Se tiene procesos estables de desarrollo, Se tiene procesos estables de desarrollo, con control estadístico.con control estadístico.

Uso de datos historicosUso de datos historicos Establecimiento de procesos de gestión Establecimiento de procesos de gestión

de proyecto, para hacer seguimiento de:de proyecto, para hacer seguimiento de: Coste.Coste. Planificación.Planificación. Funcionalidad.Funcionalidad.

Page 49: Tecnicasdedesarrollo

49

Nivel de Definición.Nivel de Definición.

Proceso de desarrollo perfectamente Proceso de desarrollo perfectamente definido y estandarizado.definido y estandarizado.

Integrado en la organización.Integrado en la organización. Bien documentado.Bien documentado. Todos los proyectos utilizan una Todos los proyectos utilizan una

versión documentada y aprobada de versión documentada y aprobada de proceso.proceso.

Page 50: Tecnicasdedesarrollo

50

Nivel de Gestión.Nivel de Gestión.

Mejoras de calidad sustanciales.Mejoras de calidad sustanciales. Control cuantitativo de productos y Control cuantitativo de productos y

proceso a través deproceso a través de Mediciones del proceso comprensibles.Mediciones del proceso comprensibles. Mediciones de la calidadMediciones de la calidad

Page 51: Tecnicasdedesarrollo

51

Nivel de Optimización.Nivel de Optimización.

A través de mediciones del proceso A través de mediciones del proceso utilizando ideas y tecnologías utilizando ideas y tecnologías innovadoras obtenemos:innovadoras obtenemos: Mejoras en calidad y cantidad.Mejoras en calidad y cantidad.

Page 52: Tecnicasdedesarrollo

52

ResumenResumen

Hemos visto:Hemos visto: Como trabajan los ingenieros,Como trabajan los ingenieros, Definiciones de ingeniería del software,Definiciones de ingeniería del software, El ciclo de vida del software,El ciclo de vida del software, Metodológicas de desarrolloMetodológicas de desarrollo Madurez del proceso de desarrollo.Madurez del proceso de desarrollo.