Semana_2_Tema_3_4

Page 1

Fundamentos de Ingeniería de Software

Educación a distancia

Ingeniería en Sistemas Computacionales Fundamentos de Ingeniería de Software

Semana 2. Unidad 1. Fundamentos Ingeniería de software. 1.3. Etapas del desarrollo software 1.4. Clasificación de la tecnología en el desarrollo de software (Tecnología Estructurada y Orientada a Objetos)

Antología realizada por: M.C. Gricelda Rodriguez Robledo

Semana 2


Educación a distancia

Fundamentos de Ingeniería de Software

C ONTENIDO Tema 1.3 Etapas del desarrollo software ............................................................................................................ 1 1.3.1 El ciclo de vida del software........................................................................................................................... 1 1.3.2 Modelos de ciclo de vida ................................................................................................................................ 3 1.3.2.1 El Modelo Lineal .................................................................................................................................... 3 1.3.2.2. El modelo en Cascada ........................................................................................................................... 4 1.3.2.3 Modelo de ciclo de vida en espiral ......................................................................................................... 4 1.3.2.4. MODELO INCREMENTAL ....................................................................................................................... 5 1.3.2.5. Iterativo e Incremental ......................................................................................................................... 6 1.3.2.6. Modelo De Prototipado (Modificadores De Los Modelos) .................................................................... 7

1.4. Metodologia en el desarrollo de software (Tecnología Estructurada y Orientada a Objetos) ...................... 8 1.4.1 Metodología de desarrollo ............................................................................................................................ 8 1.4.2 Opciones para la implantación de Metodologías: ........................................................................................ 11 1.4.2.1 Desarrollo Convencional:...................................................................................................................... 11 1.4.2.2 Desarrollo Estructurado: ...................................................................................................................... 11 1.4.2.3 Desarrollo Orientado a Objetos: .......................................................................................................... 12 1.4.2.4 Metodologías agiles ............................................................................................................................. 13 1.4.2.5 Ejemplos de Metodologias .................................................................................................................. 13 Referencias ............................................................................................................................................................... 17

i

Semana 2


Educación a distancia

Competencia específica a desarrollar Conocer las características de los paradigmas estructurado y orientado a objetos.

ii

Fundamentos de Ingeniería de Software

Actividades de Aprendizaje

Diseñar un cuadro comparativo de las diversas etapas y metodologías del desarrollo de software.

Semana 2


Fundamentos de Ingeniería de Software

Educación a distancia

T EMA 1.3 E TAPAS DEL DESARROLLO SOFTWARE

1.3.1 E L

CICLO DE VIDA DEL SO FTWARE El término ciclo de vida del software describe las etapas del desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.

Para la ISO/IEC 12207 (1995) El marco del ciclo de vida del software cubre desde la conceptuación de las ideas iniciales del producto hasta el fin de su uso (retirada). Es una sucesión de estados o fases por los cuales pasa un software a lo largo de su vida. Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados. Asi pues el proceso software es el conjunto de actividades que conducen a la creación de un producto software. Una actividad es un conjunto de tareas que se realizan con un propósito específco. Dependiendo del autor, el ciclo de vida básico de un software puede constar con más o menos los siguientes procedimientos: 

Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.

Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

Diseño: Sufinalidad fundamental es describir cómo va a desarrollar las especiaciones el sistema a construir. El resultado final es una especiación precisa de la estructura del software que satisfaga los requerimientos con la calidad necesaria. Se puede dividir en:

 o

Semana 2

Diseño general: requisitos generales de la arquitectura de la aplicación.

1


Educación a distancia o

Diseño en detalle: definición precisa de cada subconjunto de la aplicación.   

Fundamentos de Ingeniería de Software

Estructura de los datos a implementar. Representaciones de interfaz. Determinar los algoritmos.

Programación (programación e implementación) o

Programación : es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

o

Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.

o

Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.

o

Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.

o

Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.

Implementación : Se elabora la documentación necesaria para la operación y uso del sistema, se imparte la formación precisa, se realiza la carga inicial de datos y se pone el sistema en funcionamiento.

Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.

Semana 2

2


Educación a distancia

Fundamentos de Ingeniería de Software

Fases del ciclo de vida desde el punto de vista de diferentes autores: Kendall y kendall  Identificación de problemas, oportunidades y objetivos  Determinación de requerimientos de información  Análisis de las necesidades del sistema  Diseño del sistema recomendado  Desarrollo y documentación del software  Prueba del sistema y mantenimiento del sistema  . Implementación y evaluación del sistema Pressman  Análisis  Diseño  Codificación  Prueba  Mantenimiento

1.3.2 M ODELOS

Senn      

Investigación prliminar Determinación de requerimientos Diseño de sistemas Desarrollo del software Pruebas del sistema Implantación y evaluación

Whiteen, Bentley Y Barlow  Planificación  Análisis  Diseño  Implementación  Soporte

DE CICLO DE VIDA

Para facilitar una metodología común entre el cliente y la compañía de software, los modelos de ciclo de vida se han actualizado para reflejar las etapas de desarrollo involucradas y la documentación requerida, de manera que cada etapa se valide antes de continuar con la siguiente etapa. Al final de cada etapa se arreglan las revisiones de manera que

1.3.2.1 E L M OD E L O L I N E A L Este modelo, identificado a principios de la década de los 50, resulta muy rígido porque cada fase requiere como elemento de entrada el resultado completo de la anterior. Resulta apropiado para: -Desarrollar nuevas versiones de sistemas antiguos en los que el desconocimiento de las necesidades de los usuarios, o del entorno de operación no plantea riesgos. -Sistemas pequeños, sin previsión de evolución a corto plazo.

Semana 2

3


Fundamentos de Ingeniería de Software

Educación a distancia 1.3.2.2. E L

M OD E L O E N

C A S CA D A

Es una visión del proceso de desarrollo de software como una sucesión de etapas que producen productos intermedios, propuesta por Winston Royce en 1970, que muestra los bucles de retroalimentación para el mantenimiento durante la construcción del producto. Para que el proyecto tenga éxito deben desarrollarse todas las fases. Las fases continúan hasta que los objetivos se han cumplido. Si se cambia el orden de las fases, el producto final será de inferior calidad, Desventajas del modelo: No refleja realmente el proceso de desarrollo del software Se tarda mucho tiempo en pasar por todo el ciclo Perpetua el fracaso de la industria del software en su comunicación con el usuario final El mantenimiento se realiza en el código fuente Las revisiones de proyectos de gran complejidad son muy difíciles Impone una estructura de gestión de proyectos No se permiten las iteraciones. Los requisitos se congelan al principio del proyecto. No existe un proyecto “visible” hasta el final del proyecto.

1.3.2.3 M OD E L O

D E CI C LO D E V I D A E N E SP I R A L

En 1970 Winston Royce definió flujos de retorno sobre el modelo secuencial, acuñando así el modelo en cascada. El ciclo de iteración de este modelo evolutivo se convierte en una espiral, que al representarse sobre ejes cartesianos muestra en cada cuadrante una clase particular de actividad: Planificación, Análisis de riesgo, Ingeniería y Evaluación.

Trata de mejorar los ciclos de vida clásicos y prototipos. Permite acomodar otros modelos Incorpora objetivos de calidad y gestión de riesgos Elimina errores y alternativas no atractivas al comienzo Permite iteraciones, vuelta atrás y finalizaciones rápidas Semana 2

4


Educación a distancia

Fundamentos de Ingeniería de Software

Cada ciclo empieza identificando: Los objetivos de la porción correspondiente Las alternativas Restricciones Cada ciclo se completa con una revisión que incluye todo el ciclo anterior y el plan para el siguiente

1.3.2.4. MODELO INCREMENTAL El modelo incremental mitiga la rigidez del modelo en cascada, descomponiendo el desarrollo de un sistema en partes. Las ventajas que ofrece son: Es una repetición de varios ciclos de vida en cascada. El usuario dispone de pequeños subsistemas operativos que ayudan a perfilar mejor las necesidades reales del sistema en su conjunto. El modelo produce entregas parciales en periodos cortos de tiempo, comparados con el tiempo necesario para la construcción del sistema en su conjunto, y permite la incorporación de nuevos requisitos que pueden no estar disponibles o no ser conocidos al iniciar el desarrollo. Los ciclos se repiten hasta obtener un producto completo. Al final de cada ciclo se entrega una versión parcial del software incrementada con cierta funcionalidad nueva respecto a las entregas anteriores. Los usuarios disponen antes del software, aunque no sea completo, por lo que pueden sugerir mejoras. Se suele aplicar a desarrollos de gran tamaño.

Semana 2

5


Educación a distancia

1.3.2.5. I T E R A T I V O

Fundamentos de Ingeniería de Software

E I N CR E M E N T A L

Una fortaleza , es que modela la producción del software de una manera muy parecida al mundo real En un desarrollo iterativo e incremental el proyecto se planifica en diversos bloques temporales llamados iteraciones. Las iteraciones se pueden entender como miniproyectos: en todas las iteraciones se repite un proceso de trabajo similar (de ahí el nombre “iterativo”) para proporcionar un resultado completo sobre producto final, de manera que el cliente pueda obtener los beneficios del proyecto de forma incremental. Para ello, cada requisito se debe completar en una única iteración: el equipo debe realizar todas las tareas necesarias para completarlo (incluuyendo pruebas y documentación) y que esté preparado para ser entregado al cliente con el mínimo esfuerzo necesario. De esta manera no se deja para el final del proyecto ninguna actividad arriesgada relacionada con la entrega de requisitos. En cada iteración el equipo evoluciona el producto (hace una entrega incremental) a partir de los resultados completados en las iteraciones anteriores, añadiendo nuevos objetivos/requisitos o mejorando los que ya fueron completados. Un aspecto fundamental para guiar el desarrollo iterativo e incremental es la priorización de los objetivos/requisitos en función del valor que aportan al cliente.

Semana 2

6


Educación a distancia

Fundamentos de Ingeniería de Software

1.3.2.6. M OD E L O D E P R OT OT I P A D O (M OD I FI C A D OR E S D E L O S M OD E L O S ) La construcción de prototipos se puede utilizar como un modelo del proceso independiente, se emplea más comúnmente como una técnica susceptible de implementarse dentro del contexto de cualquiera de los modelos del proceso expuestos. Los prototipos pueden ser: Ligeros: dibujos de pantallas de interfaz con simulación de funcionamiento por enlaces a otros dibujos. Operativos: Módulos de software con funcionamiento propio que se desarrollan sin cubrir las funcionalidades completas del sistema. Este modelo, para que sea efectivo: Debe ser un sistema con el que se pueda experimentar Debe ser comparativamente barato (< 10%) Debe desarrollarse rápidamente Énfasis en la interfaz de usuario Equipo de desarrollo reducido Emplear herramientas y lenguajes adecuados para producir rápidamente el prototipo Considerar que “El prototipado es un medio excelente para recoger el ‘feedback’ (realimentación) del usuario final” Desventajas del modelo: El cliente ve funcionando lo que para el es la primera versión del prototipo que ha sido construido con “plastilina y alambres”, y puede desilusionarse al decirle que el sistema aun no ha sido construido. El desarrollador puede caer en la tentación de ampliar el prototipo para construir el sistema final sin tener en cuenta los compromisos de calidad y de mantenimiento que tiene con el cliente.

Semana 2

7


Fundamentos de Ingeniería de Software

Educación a distancia

1.4.

M ETODOLOGIA EN EL DESARROLLO DE SOFTWARE (T ECNOLOGÍA E STRUCTURADA Y O RIENTADA A O BJETOS ) 1.4.1 M ETODOLOGÍA

DE DESARR OLLO

Una metodologia se entiende como el conjunto de métodos que se utilizan en una determinada actividad con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cómo realizarlos para finalizar una tarea. La Metodología de Desarrollo de Software se puede entender como: Conjunto de pasos y procedimientos que deben seguirse para el desarrollo de software. Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de SI. Conjunto de procedimientos, técnicas, herramientas y soporte documental que ayuda a los desarrolladores a realizar nuevo software.

La metodologia define una estrategia global para enfrentarse con el proyecto: Fases.

Semana 2

8


Educación a distancia o

Fundamentos de Ingeniería de Software

Tareas a realizar en cada fase.

Productos (final e intermedios). o

E/S de cada fase, documentos.

Procedimientos y herramientas. o

Apoyo a la realización de cada tarea.

Criterios de evaluación. o

Del proceso y producto.

o

Saber si se han logrado los objetivos

Una metodología puede seguir uno o varios modelos de ciclo de vida, es decir, el ciclo de vida indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto pero no cómo hacerlo. La metodología indica cómo hay que obtener los distintos productos parciales y finales Características deseables de una metodología Existencia de reglas predefinidas Cobertura total del ciclo de desarrollo Verificaciones intermedias Planificación y control Comunicación efectiva Utilización sobre un abanico amplio de proyectos Fácil formación Herramientas CASE Actividades que mejoren el proceso de desarrollo Soporte al mantenimiento Soporte de la reutilización de software

Los Elementos que integran a una Metodologías son: Actividades y Tareas • El Proceso se descompone hasta el nivel de Actividades y Tareas (actividades elementales) • Procedimientos Definen la forma de llevar a cabo las Tareas Vínculo de Comunicación entre Usuarios y Desarrolladores • Productos Semana 2

9


Educación a distancia

Fundamentos de Ingeniería de Software

Obtenidos como resultado de seguir un Procedimiento Pueden ser Intermedios o Finales Técnicas �Se utilizan para aplicar un Procedimiento �Pueden ser Gráficas y/o Textuales �Determinan el formato de los Productos resultantes en cada Tarea • Herramientas Software �Proporcionan soporte a la aplicación de las Técnicas Por tanto, una metodología representa el camino a seguir para desarrollar software de manera sistemática. Los objetivos que persigue son: �Mejores Aplicaciones. � Un mejor Proceso de Desarrollo que identifique salidas (o productos intermedios) de cada fase de forma que se pueda planificar y controlar los proyectos. �Un Proceso Estándar en la organización

Semana 2

10


Educación a distancia 1.4.2 O PCIONES

PARA LA IMPL ANTACIÓN D E

Fundamentos de Ingeniería de Software

M ETODOLOGÍAS :

La selección de entre un gran número de posibilidades y combinaciones de métodos de gestión, técnicas de desarrollo soporte automatizado, para crear y desarrollar una Metodología de Desarrollo Software específica, no es una tarea fácil. para ello es necesario analizar y evaluar las metodologías existentes y seleccionar la que más se adapte a las necesidades.

Factores que influyen en la selección de una metodología:

�Tamaño y estructura de la organización �Tipo de aplicaciones a desarrollar En los últimas 30 años se ha desarrollado software siguiendo tres filosofías principales : Convencional Estructurada Orientada a Objetos

1.4.2.1 D E SA R R O LL O C ON V E N C I O N A L : Surgió en los años 50, y se considera como desarrollo artesanal que no cuenta con el sustento de una Metodología, se enfocaba principalmente en la Tarea de Programación. Sus principales inconvenientes eran: Los resultados finales impredecibles No hay forma de controlar lo que está sucediendo en el Proyecto Los cambios organizativos afectan negativamente al proceso de desarrollo

1.4.2.2 D E SA R R O LL O E S T R U CT U R A D O : Surge en los años 60´s , impulsado por el entorno académico y continua su crecimiento a mediados de los 70 gracias al impulso de la industria. Examinar el sistema desde las funciones y tareas Este evoluciona y da origen al Diseño Estructurado (mitad años 70) que consigue un mayor nivel abstracción (independencia del lenguaje programación). El elemento básico de diseño: es el Módulo. La Modularidad permite impulsar medidas de Calidad de Programas representan los procesos, flujos y estructuras de datos, de una manera jerárquica, descendente.

Semana 2

11


Fundamentos de Ingeniería de Software

Educación a distancia

En la Programación Estructurada, se cuentan con normas para escribir código lo cual facilitaba comprensión de Programas así mismo se trabajaba para contar con normas para la aplicación de estructuras de datos y de control

1.4.2.3 D E SA R R O L LO O R I E N T A D O

A

O B JE T OS :

Este se entiende como un cambio profundo de las metodologías estructuradas que se ven como obsoletas Tiene como esencia el modelado del Sistema examinando el dominio del problema como un conjunto de objetos que interactúan entre sí mediante la Identificación y organización de conceptos del dominio de la aplicación y no tanto de su representación final en un lenguaje de programación. Surge a principios de los años 80 y este tipo de desarrollo trata la Funcionalidad y Datos de forma conjunta. Propone los principios de: Semana 2

12


Fundamentos de Ingeniería de Software

Educación a distancia Abstracción Ocultación de Información (Encapsulamiento) Modularidad

1.4.2.4 M E T OD OL OG Í A S

A G I LE S

Simplifican la complejidad de otras metodologías haciendo que la carga de gestión y control sea más liviana. La Agilidad es un aspecto que se puede incorporar a las metodologías estructuradas u OO. Entre las más conocidas se encuentran: o XP (eXtreme Programming) o SCRUMP o RAD (Rapid Application Development) Buscan reducir los esfuerzos que no están centrados en el puro código también tiene inconvenientes

1.4.2.5 E JE M P L OS

DE

M E T OD O L OG I A S

M E T O D O L O G Í A M ER IS E :

Desarrollada por la Administración Pública Francia (1976) Consta de las Fases: Estudio preliminar Estudio detallado Implementación Realización y puesta en marcha

M E T O D O L O G Í A S S A DM : Desarrollada por la Administración Pública Reino Unido (1980)

Semana 2

13


Educación a distancia

Fundamentos de Ingeniería de Software

M ETR IC A V . 3

Desarrollada por la administración Pública España en el 2001, se basa en los Procesos: 1. Planificación de Sistemas de Información – (PSI) 2. Desarrollo de Sistemas de Información: a. Estudio de Viabilidad del Sistema (EVS) b. Análisis del Sistema de Información (ASI) c. Diseño del Sistema de Información (DSI) d. Construcción del Sistema de Información (CSI) e. Implantación y Aceptación del Sistema (IAS) 3. Mantenimiento de Sistemas de Información (MSI) Con una única estructura común cubre dos tipos de desarrollo: �Estructurado, y �Orientado a objetos. A través de interfaces se facilita la realización de diversos procesos de soporte y organizativos: �Gestión de Proyectos, �Gestión de Configuración, �Aseguramiento de Calidad, y �Seguridad. Emplea un patrón de Tarea: participantes, productos de entrada y salida, técnicas y prácticas.

Semana 2

14


Educación a distancia

Fundamentos de Ingeniería de Software

M AN T EM A

Desarrollada por la Universidad de Castilla-La Mancha en 1999 y es una de las pocas metodologias especializada en Mantenimiento en lugar de desarrollo. Contempla los siguientes tipos de mantenimiento: �No Planificable (NP): • Correctivo Urgente (UC): localizar y eliminar los posibles defectos que bloquean el programa o los procesos de funcionamiento de la empresa.

�Planificable (P): • Correctivo No Urgente (NUC): localizar y eliminar los posibles defectos de los programas que no son bloqueantes. • Perfectivo (PER): añadir al software nuevas funcionalidades solicitadas por los usuarios. • Adaptativo (A): modificar el software para adaptarlo a cambios en el entorno de trabajo (hardware o software). • Preventivo (PRE): modificar el software para mejorar sus propiedades (calidad, mantenibilidad, etc.).

Su modelo de proceso establece cuatro grupos de actividades, y una colección de técnicas útiles.

Semana 2

15


Educación a distancia

Fundamentos de Ingeniería de Software

RU P

RUP: Rational Unified Process. Metodología de desarrollo Orientado a Objetos iterativo e incremental que emplea el lenguaje UML

OPENUP

Hace uso de RUP abierto. El ciclo de desarrollo es: � Iterativo, � Micro-Incrementos, � Gestión Ágil del Proyecto

Semana 2

16


Educación a distancia

Fundamentos de Ingeniería de Software

XP XP: eXTreme Programming. No es propiamente una metodología. El XP, Pone más enfásis en la adaptabilidad que en la previsibilidad: “los cambios de requisitos son un aspecto natural e , inevitable en un proyecto”. Se basa en la adopción de una serie de prácticas: Desarrollo iterativo e incremental. Pruebas unitarias frecuentes y automatizadas. Peer programming (programación por parejas). Cliente in-situ. Refactorización del código (reescribir). Responsabilidad compartida sobre el código.

R EFERENCIAS •

Schach Stephen (2006). Ingeniería de Software clásica y orientada a objetos.

Whitten Jeffrey,Bentley Lonnie y Barlow Víctor (1997). Análisis y Diseño de Sistemas de Información

Kendall & Kendall (2005). Análisis y Diseño de Sistemas. Consultado abril 2 de 2010, en: www.navegapolis.net/files/cis/CIS_1_05.pdf

• •

Francisco Ruiz(s.f) Procesos de Ingeniería del Software . Consultado abril 2 de 2010, en: http://www.ctr.unican.es/asignaturas/is1/is1-t02-trans.pdf Mario G. Piattini Velthuis (2009) Análisis y diseño de aplicaciones informáticas de gestión. Una perspectiva de ingeniería del software. Editorial Ra-ma

Semana 2

17


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.