Desarrollo de Software

Page 1

Unidad 1.- Introducción a la Ingeniería de Software Ing. José Alberto Rojas Aragón Modelado de Procesos de Desarrollo de Software Tecnologías de la Información y Comunicación


Contenido

• Definición de Ingeniería de Software y su importancia • Ciclo de vida de un sistema de software

Modelado de Procesos de Desarrollo de Software


IngenierĂ­a de software y su importancia Modelado de Procesos de Desarrollo de Software


¿Qué es ser ingeniero?

• Ingeniero: Persona que aplica los conocimientos de una o varias ramas de la ciencia para resolver cierto tipo de necesidades de la gente – Mediante el diseño, construcción u operación de algún tipo de artefacto o sistema Modelado de Procesos de Desarrollo de Software


Características de una ingeniería

• Se necesitan conocimientos avanzados para diseñar y construir el tipo de sistemas que le caracteriza. Diferencia entre técnico e ingeniero. • Existen dos “momentos”: – Primero, conocer el problema, y – Sólo después, podemos diseñar y construir la solución.

• Para conseguir buenos resultados (en calidad, tiempo y costo) es necesario trabajar de forma organizada y sistemática. • La creatividad es necesaria (diseño), pero no es suficiente, Diferencia entre artista e ingeniero. Modelado de Procesos de Desarrollo de Software


• El sentido común es muy importante

Consideraciones

– Ley del mínimo esfuerzo • Entre las opciones correctas elegir la más sencilla • Reutilización (código, artefactos y conocimiento)

– No inventar la rueda • Emplear estándares y metodologías

– Aprender de la experiencia • Utilizar “buenas prácticas” y “lecciones aprendidas”

Modelado de Procesos de Desarrollo de Software


¿Qué es el Software?

• Software es la suma total de los programas de computadora, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo Modelado de Procesos de Desarrollo de Software


• A que se parece el software:

Modelado de Procesos de Desarrollo de Software


Tipos de Software

• Un producto de software es un producto diseñado para un usuario – Genéricos – Hechos a la medida

• Tipos de Software – Interfaces Hombre Maquina – Compiladores – Bases de Datos – Sistemas basados en Web – Sistemas Operativos – Etc…. Modelado de Procesos de Desarrollo de Software


Características de un buen software

• Mantenibles – Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones.

• Confiabilidad – El software no debe causar daños físicos o económicos en el caso de fallos.

• Eficiencia – El software no debe desperdiciar los recursos del sistema.

• Utilización adecuada – El software debe contar con una interfaz de usuario adecuada y su documentación. Modelado de Procesos de Desarrollo de Software


¿Qué es Ingeniería de Software?

• Ingeniería de Software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas (eficaces en costo o económicas) a los problemas de desarrollo de software.

Modelado de Procesos de Desarrollo de Software


Definición IEEE

• Aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software; es decir, la aplicación de los principios y hábitos de la ingeniería al software. • Instituto de Ingenieros en Electricidad y Electrónica (IEEE), 1993

Modelado de Procesos de Desarrollo de Software


Procesos de Desarrollo de Software

• Proceso de desarrollo de software – Conjuntos sistemático de actividades cuya meta es el desarrollo o la evolución del software

• No existe un proceso universal efectivo para todos los contextos de proyectos de desarrollo

Modelado de Procesos de Desarrollo de Software


Definiciones Básicas

• ¿Cuál es proceso de desarrollo del software? – Especificación: lo que el sistema debería hacer y sus restricciones de desarrollo – Desarrollo: producción del sistema – Validación: comprobar que el software es lo que el cliente quiere – Evolución: cambios y mantenimiento al software con relación a los cambios de requerimientos y demandas

Modelado de Procesos de Desarrollo de Software


Otra perspectiva

• Esta perspectiva establece relaciones entre elementos que permiten responder ¿Quién debe hacer? ¿Qué debe hacer? ¿Cómo debe hacerlo?

Modelado de Procesos de Desarrollo de Software


• Modelo de Cascada

Modelos de Proceso Genéricos

– Separar en distintas fases de especificación y desarrollo.

• Desarrollo Evolutivo – La especificación y el desarrollo están intercalados.

• Prototipado – Un modelo sirve de prototipo para la construcción del sistema final.

• Transformación Formal – Un modelo matemático del sistema se transforma formalmente en la implementación.

• Desarrollo basado en Reutilización – El sistema es ensamblado a partir de componentes existentes.

Modelado de Procesos de Desarrollo de Software


¿Cuánto cuesta hacer Sofwtare?

• Los costos del software a menudo dominan al costo del sistema. El costo del software en un PC es a menudo mas caro que la PC. • Cuesta mas mantener el software que desarrollarlo. Para sistemas con una larga vida, este costo se multiplica. • La distribución de los costos depende del modelo empleado para el desarrollo del software Modelado de Procesos de Desarrollo de Software


Costo de Eficiencia

Costos

Eficiencia Modelado de Procesos de Desarrollo de Software


Metodologías de Desarrollo de Software

• Proceso de desarrollo de software detallado y completo • Definen con precisión los artefactos, roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de herramientas de apoyo, etc. • Metodologías tradicionales (no ágiles) – Fuerte planificación durante todo el proceso de desarrollo – Intensa etapa de análisis y diseño antes de la construcción del sistema.

• Metodologías ágiles – incremental (entregas pequeñas de software, con ciclos rápidos) – cooperativo (cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación) – sencillo (el método en sí mismo es fácil de aprender y modificar, bien documentado) – adaptable (permite realizar cambios de último momento)

Modelado de Procesos de Desarrollo de Software


MetodologĂ­as

Tradicional RUP

Agil SCRUM

Extreme Programming AUP Crystal Modelado de Procesos de Desarrollo de Software


Herramientas CASE

• Sistemas de software cuya finalidad es la de proveer soporte automatizado para actividades de proceso o desarrollo de software. • Los sistemas CASE son usados con frecuencia como soporte dentro de la metodología de desarrollo. – Herramientas CASE tempranas o Superiores • Herramientas para soportar las actividades tempranas de requerimientos y diseño dentro del proceso de software;

– Herramientas CASE tardías o Inferiores • Herramientas para soportar actividades posteriores como ser la programación, depuración y prueba o testeo.

Modelado de Procesos de Desarrollo de Software


Desafíos de la Ingeniería de Software

• Heterogeneidad, entrega y confianza. • Heterogeneidad – Técnicas de desarrollo para la construcción de software que puedan encararse con plataformas heterogéneas y ambientes de ejecución apropiados;

• Entrega – Técnicas de desarrollo que lleven a una entrega de software más rápida;

• Confianza – Técnicas de desarrollo que demuestren que el software es de confianza para con sus usuarios. Modelado de Procesos de Desarrollo de Software


Responsabilidad ética y profesional

• La Ingeniería de Software implica responsabilidades mayores que el simple uso de habilidades técnicas • Los ingenieros de software deben comportarse de manera honesta y éticamente responsable si van a ser respetados como profesionales • Comportamiento éticamente responsable es mucho más que simplemente actuar dentro de la ley Modelado de Procesos de Desarrollo de Software


Aspectos de responsabilidad profesional

• Confidencialidad – Los ingenieros deberían normalmente respetar la confidencialidad de sus clientes independientemente de que se haya firmado o no un previo acuerdo de confidencialidad.

• Capacidad – Los ingenieros no deberían pretender tener mayor capacidad (intelectual y laboral) de la que tienen, deben aceptar conscientemente trabajo que esté acorde a su capacidad.

Modelado de Procesos de Desarrollo de Software


Aspectos de responsabilidad profesional

• Derechos de propiedad intelectual – Los ingenieros deberían estar conscientes de las leyes que gobiernan el uso de propiedad intelectual, como ser patentes y derechos reservados. Deben ser cuidadosos al garantizar que la propiedad intelectual de sus clientes está protegida.

• Mal uso de la computadora – Los ingenieros de software no deberían usar sus habilidades técnicas para un mal uso de las computadoras de otras personas. El mal uso de una computadora comprende desde lo relativamente simple (jugar en la computadora del cliente) hasta lo extremamente serio (diseminar virus). Modelado de Procesos de Desarrollo de Software


• Juicio

Código de Etica Principios

– Los ingenieros de software mantendrán su integridad e independencia de juicio como profesional.

• Gerencia – Gerentes y líderes de Ingeniería de Software suscribirán y promoverán un acercamiento ético hacia el manejo de desarrollo de software y evolución.

• Profesión – Los ingenieros de Software incrementarán la integridad y reputación de la profesión en constancia con el interés público. Modelado de Procesos de Desarrollo de Software


• Colegas

Código de Etica Principios

– Los ingenieros de software serán condescendientes y brindarán apoyo a sus colegas.

• Uno Mismo – Los ingenieros de software participarán en la formación continua con respecto a la práctica de su profesión y promoverán un acercamiento ético a la práctica de la profesión.

Modelado de Procesos de Desarrollo de Software


Dilemas Eticos

• Desacuerdo en principio con las políticas de administración superior. • El empleador actúa de un modo no ético y lanza un sistema de seguridad crítico sin terminar la prueba del sistema. • Participación en el desarrollo de armamento militar o sistemas nucleares.

Modelado de Procesos de Desarrollo de Software


Ciclos de Vida del Software Modelado de Procesos de Desarrollo de Software


Modelos de Desarrollo de Software

• Representación formal o simplificada del proceso de software. • Modelos Genéricos: – Modelo de Cascada: Separar en distintas fases de especificación y desarrollo

– Desarrollo Evolutivo: La especificación y el desarrollo están intercalados

– Prototipado: Un modelo sirve de prototipo para la construcción del sistema final

– Transformación Formal: Un modelo matemático del sistema se transforma formalmente en la implementación

– Desarrollo basado en Reutilización: El sistema es ensamblado a partir de componentes existentes

Modelado de Procesos de Desarrollo de Software


Modelo de Cascada (gráfica)

Definición de Requerimientos

Diseño del Software y del Sistema

Implementación y Prueba de unidades

Integración y Prueba del Sistema

Operación y Mantenimiento

Modelado de Procesos de Desarrollo de Software


Fases del Modelo de Cascada

• Análisis de requerimientos y definición. • Diseño del sistema y del software. • Implementación y prueba de unidades • Integración y prueba del sistema. • Operación y mantenimiento. • La dificultad en esta modelo reside, en la dificultad de hacer cambios entre etapas.

Modelado de Procesos de Desarrollo de Software


Desarrollo Evolutivo

Actividades Concurrentes

Especificaciรณn

Descripciรณn del sistema

Modelado de Procesos de Desarrollo de Software

Versiรณn Inicial

Desarrollo

Versiones Intermedias

Validaciรณn

Versiรณn Final


• Problemas

Desarrollo Evolutivo

– – –

Poca visibilidad en el proceso Los sistemas están pobremente especificados Se requieren habilidades especiales.

• Aplicabilidad – – –

Para sistemas interactivos pequeños o medianos. Para partes de sistemas grandes (p.ej. la interfaz de usuario). Para sistemas de corta vida.

Modelado de Procesos de Desarrollo de Software


• Prototipado exploratorio

Prototipado

– El objetivo es trabajar con clientes hasta evolucionar a un sistema final, a partir de una especificación inicial. Se debe comenzar con unas especificaciones bien entendidas.

• Prototipado de “throw-away”. –

El objetivo es entender los requerimientos del sistema. Se puede comenzar con especificaciones poco entendidas.

Modelado de Procesos de Desarrollo de Software


Problemas y Riesgos con los Modelos.

• Cascada. – Alto riesgo en sistemas nuevos debido a problemas en las especificaciones y en el diseño. – Bajo riesgo para desarrollos bien comprendidos utilizando tecnología conocida. • Prototipado. – Bajo riesgo para nuevas aplicaciones debido a que las especificaciones y el diseño se llevan a cabo paso a paso. – Alto riesgo debido a falta de visibilidad • Evolutivo. – Alto riesgo debido a la necesidad de tecnología avanzada y habilidades del grupo desarrollador. Modelado de Procesos de Desarrollo de Software


Manejo de Riesgos

• La tarea principal del administrador consiste en minimizar riesgos. • El “riesgo” inherente en una actividad es se mide en base a la incertidumbre que presenta el resultado de esa actividad. • Las actividades con alto riesgo causan sobre-costes en cuanto a planeación y costos • El riesgo es proporcional al monto de la calidad de la información disponible. Cuanto menos información, mayor el riesgo. Modelado de Procesos de Desarrollo de Software


Modelos de Procesos Híbridos

• Los sistemas grandes están hechos usualmente de varios subsistemas. • No es necesario utilizar el mismo modelo de proceso para todos los subsistemas. • El prototipado es recomendado cuando existen especificaciones de alto riesgo. • El modelo de cascada es utilizado en desarrollos bien comprendidos.

Modelado de Procesos de Desarrollo de Software


Modelo de Proceso de Espiral Modelado de Procesos de Desarrollo de Software


Fases del Modelo de Espiral

• Planteamiento de Objetivos – Se identifican los objetivos específicos para cada fase del proyecto

• Identificación y reducción de riesgos. – Los riesgos clave se identifican y analizan, y la información sirve para minimizar los riesgos

• Desarrollo y Validación. – Se elige un modelo apropiado para la siguiente fase del desarrollo • Planeación. – Se revisa el proyecto y se trazan planes para la siguiente ronda del espiral

Modelado de Procesos de Desarrollo de Software


Plantilla para una ronda del espiral

• • • • • • • •

Objetivos. Restricciones. Alternativas. Riesgos. Resolución de riesgos. Resultados. Planes. Garantías (commitments).

Modelado de Procesos de Desarrollo de Software


Ventajas del Modelo de Espiral

• Centra su atención en la reutilización de componentes y eliminación de errores en información descubierta en fases iniciales. • Los objetivos de calidad son el primer objetivo. • Integra desarrollo con mantenimiento. • Provee un marco de desarrollo de hardware/software.

Modelado de Procesos de Desarrollo de Software


Problemas con el Modelo de Espiral

• El desarrollo contractual especifica el modelo del proceso y los resultados a entregar por adelantado. • Requiere de experiencia en la identificación de riesgos. • Requiere refinamiento para uso generalizado.

Modelado de Procesos de Desarrollo de Software


Que modelo utilizar ?

• Para sistemas bien comprendidos utiliza el Modelo de Cascada. La fase de análisis de riesgos es relativamente fácil. • Con requerimientos estables y sistemas de seguridad críticos, utiliza modelos formales. • Con especificaciones incompletas, utiliza el modelo de prototipado. • Pueden utilizarse modelos híbridos en distintas partes del desarrollo. Modelado de Procesos de Desarrollo de Software


Visibilidad de Procesos

• Los sistemas de software son intangibles por lo que los administradores necesitan documentación para identificar el progreso en el desarrollo. • Esto puede causar problemas.. •El

tiempo planeado para entrega de resultados puede no coincidir con el tiempo necesario para completar una actividad. •La necesidad de producir documentos restringe la iteración entre procesos. •.El tiempo para revisar y aprobar documentos es significativo.

• El modelo de cascada es aún el modelo basado en resultados mas utilizado. Modelado de Procesos de Desarrollo de Software


Documentos del Modelo de Cascada

Actividad

Documentos Producidos

Análisis de Requerimientos

Documento de Requerimientos

Definición de Requerimientos

Documento de Requerimientos.

Especificación del Sistema.

Codificación

Especificación Funcional, Plan de Pruebas de Aceptación. Especificación de la Arquitectura, y Plan de Pruebas del Sistema Especificación de la Interfaces y Plan de pruebas de Integración. Especificación del diseño y Plan de prueba de Unidades. Código de Programa

Prueba de Unidades

Reporte de prueba de unidades

Prueba de Módulos

Reporte de prueba de módulos

Prueba de Integración

Reporte de prueba de integración y Manual de usuario final Reporte de prueba del sistema

Diseño Arquitectural Diseño de Interfaces Diseño Detallado

Prueba del Sistema Prueba de Aceptación Modelado de Procesos de Desarrollo de Software

Sistema final mas la documentación.


Visibilidad del Modelo

Modelo de Proceso

Visibilidad del Proceso

Modelo de Cascada

Buena visibilidad, cada actividad produce un documento o resultado

Desarrollo Evolutivo

Visibilidad pobre, muy caro al producir docuementos en cada iteraci贸n.

Modelos Formales

Buena visibilidad, en cada fase deben producirse documentos.

Desarrollo orientado a la reutilizaci贸n

Visibilidad moderada. Importante contar con documentaci贸n de componentes reutilizables.

Modelo de Espiral

Buena visibilidad, cada segmento y cada anillo del espiral debe producir un documento.

Modelado de Procesos de Desarrollo de Software


Actividades de Evaluación

Modelado de Procesos de Desarrollo de Software

• Construye un mapa conceptual sobre los conceptos tratados en esta presentación Modo de entrega: correo electrónico • Realiza un investigación sobre los ciclos de vida y las metodologías de Desarrollo que se mencionan en la presentación. Recuerda agregar tu cuestionario. Min. 5 Max. 10 Preguntas Modo de entrega: impreso


Turn static files into dynamic content formats.

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