Adquisición de TIC - Código Abierto
2
3
Cuestionamientos sobre los resultados del desarrollo de SW Los sistemas no responden a las expectativas de los usuarios. Los programas fallan con cierta frecuencia. La modificación del software es una tarea difícil y costosa. Normalmente, es difícil cambiar de entorno software por mal diseño y mantenimiento de los sistemas. 4
Cuestionamientos sobre los resultados del desarrollo de SW El software se suele presentar fuera del plazo establecido y con menos características de las consideradas inicialmente. Los costos del software son difíciles de prever y normalmente superan las estimaciones. El aprovechamiento óptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) no suele cumplirse. 5
6
Deficiencias comunes en el desarrollo de software Reporte del Caos 2006 Reporte del Caos 2004 Reporte del Caos 2009 7
Deficiencias comunes en el desarrollo de software Estimaciones imprecisas de plazos y costos. Excesiva e irracional presión en los plazos Escaso o deficiente control en el progreso del proceso de desarrollo. No se hace gestión de riesgos formalmente Escasa o tardía validación con el cliente. Inadecuada gestión de los requerimientos. 8
Deficiencias comunes en el desarrollo de software No existe medición del proceso ni registro de datos históricos. No se realizan revisiones técnicas formales e inspecciones de código. No se realiza un proceso formal de pruebas. No se planifica la puesta en producción de los sistemas. 9
10
Computación vs Ing. Software La computación concierne a la teoría y fundamentos de cualquier sistema de computo, sea de hardware o de software. La Ingeniería de software concierne solo al desarrollo de sistemas o productos de software. La Ingeniería de Software todavía esta lejos de ser una ciencia como los son la Química, la Ingeniería Civil o la Electrónica. 11
12
Ing. Sistemas e Ing. Software La Ingeniería de Sistemas concierne a todos los aspectos del desarrollo de sistemas basados en cómputo, que incluyen hardware, software y el proceso de Ingeniería. La Ingeniería de Software es solo parte de este proceso. 13
14
Herramientas Mejores Prácticas Administración de requerimientos Modelado visual Pruebas automatizadas Administración de cambios Guía de Procesos Guía de Herramientas específicas Desarrollo iterativo Administrar requerimientos Reutilización del software Modelo visual Verificar calidad continuamente Administrar cambios 15
16
Ingeniería de software La aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento del software. [IEEE] Herramientas Métodos Proceso Enfoque de calidad 17
Enfoques de la ingeniería de software Cualquier disciplina de ingeniería (incluida la ingeniería del software) debe descansar sobre un esfuerzo de organización de calidad. La gestión total de la calidad y las filosofías similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez más robustos para la ingeniería del software. El fundamento de la ingeniería de software es la capa proceso. El proceso define un marco de trabajo para un conjunto de áreas clave, las cuales forman la base del control de gestión de proyectos de software y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente. 18
Enfoques de la ingeniería de software Los métodos de la ingeniería de software indican cómo construir técnicamente el software. Los métodos abarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. Las herramientas de la ingeniería del software proporcionan un soporte automático o semi-automático para el proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering). 19
El proceso de desarrollo de SW Tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Requisitos nuevos o modificaciones Nuevo sistema o sistema modificado 20
Axiomas del proceso de desarrollo de SW 1. Es la base para desarrollar de forma estándar, con buenos niveles de calidad y para aumentar la probabilidad de éxito. 2. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. 3. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software. 21
Actividades fundamentales Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. Diseño e Implementación: Se diseña el software de acuerdo a la especificación. Implementación: Se programa el software de acuerdo a las especificaciones y diseño Pruebas: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. Mantenimiento: El software debe evolucionar, para adaptarse a las necesidades del cliente 22
Actividades de apoyo Administración de proyectos Administración de la configuración y el cambio Administración del ambiente Mediciones Gestión de riesgos 23
Elementos imprescindibles 24
25
Modelo de desarrollo de software Es un marco de referencia, un enfoque particular que agrupa una serie de principios, prácticas y guías que definen una filosofía para desarrollar software. Este se puede adoptar de forma total o parcial para definir una metodología basada en él, que permita estructura formalmente las actividades de la ingeniería de software. 26
Funciones de un modelo 1. Determinar el orden de las fases del proceso software 2. Establecer los criterios de transición para pasar de una fase ala siguiente. 3. Definir las entradas y salidas de cada fase. 4. Describir los estados por los que pasa el producto. 5. Describir las actividades a realizar para transformar el producto 27
Metodología de desarrollo de SW Conjunto de procedimientos, técnicas, entregables y herramientas que permiten estructurar, planificar y controlar el proceso de ingeniería de software. 29
Modelo de desarrollo vs metodología Una metodología puede seguir uno o varios modelos de desarrollo, pues el modelo de desarrollo es el que indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto, sin embargo no indica cómo hacerlo eso es el trabajo de la metodología. 30
Beneficios de las metodologías Optimiza el proceso y el producto software. Métodos que guían en la planificación y en el desarrollo del software. Define qué hacer, quién lo hace, cómo lo hace y cuándo se hace durante todo el desarrollo y mantenimiento de un proyecto 31
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 32
Adquisición de TIC - Código Abierto