wuolah-free-Resumen-IISSI-1-TEMA-1-gulag-free.pdf
Document Details
Uploaded by Deleted User
Tags
Full Transcript
TEMA 1. INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE El software... - Es tangible - Se desarrolla, no se fabrica - No se estropea (se puede quedar obsoleto) Tipos de software Evolución del coste del software Hardware...
TEMA 1. INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE El software... - Es tangible - Se desarrolla, no se fabrica - No se estropea (se puede quedar obsoleto) Tipos de software Evolución del coste del software Hardware Software - Válvulas de vacío - Interfaces gráficas de usuario - Transistores - Internet - Circuitos integrados - La nube - Microprocesador → ordenador personal Evolución del Hardware / Software 1ª Generación (1945-56) 1ª Generación (1945-56) - Electrónica con tubos vacío - Lenguaje máquina (ensamblador) - ENIAC-1946, primer ordenador. IBM 701, - Trabajo secuencial: perforación, ejecución, primer ordenador comercializado impresión - 10K instrucciones por segundo 2ª Generación (1957-63) 2ª Generación (1957-63) - Electrónica con transistores, memoria con - Lenguajes alto nivel: COBOL, FORTRAN, núcleos de ferrita ALGOL - Procesamiento por lotes, máquinas dedicadas a E/S 3ª Generación (1964-71) 3ª Generación (1964-71) - Electrónica con circuitos integrados, - Utilización de SSOO memoria en chips - 5M instrucciones por segundo 4ª Generación (1972-81) 4ª Generación (1972-81) - Microprocesadores y chips de memoria - Lenguaje C / Unix. Programas de amplio - Mayor capacidad de integración (VLSI) uso - 200M instrucciones por segundo 5ª Generación (1982-89) 5ª Generación (1982-89) - Microprocesadores en paralelo. Redes de - Internet. Lenguajes simbólicos. Programas computadores más complejos - Componentes ópticos (CD/DVD) - 1G instrucción por segundo 6ª Generación (1990-Actualidad) 6ª Generación (1990-Actualidad) - Arquitecturas paralelas y distribuidas - Programación funcional - Procesadores especializados - Desarrollo de la inteligencia artificial Chaos Reports Intentan identificar los principales problemas del desarrollo software. Realizado por la consultora Standish Group. Clasifica miles de proyectos reales como: - Éxito: finalizado dentro del plazo y presupuesto y cumpliendo todos los requisitos. - Con problemas: finalizado pero fuera de plazo, fuera de presupuesto y sin cumplir todos los requisitos. - Fracaso: cancelado durante el desarrollo ¿Qué es una Ingeniería? Actividades propias de los Ingenieros: - Conciben, proyectan, construyen y gestionan la explotación eficiente de: obras públicas, máquinas, sistemas de control, redes de comunicaciones, centrales energéticas, sistemas de regadíos… Y el software. Científicos: Realizan actividad sistemática para adquirir nuevos conocimientos. Pilares de una Ingeniería - Vocabulario: conjunto de términos que se usan en un campo concreto (interfaz, clase, objeto, variable, interface, requisito…). - Tecnología: instrumentos, procedimientos o recursos usados en un campo (Java, Python, JS, HTML, Oracle, TCP/IP…). - Herramientas: conjunto de instrumentos para desempeñar un trabajo concreto (Eclipse, Aptana, VSCode, SQLDeveloper…). - Buenas prácticas: conjunto de acciones que dan buenos resultados en un campo (PMBOK, ITIL, CMMI…). - Metodologías: conjunto de procedimientos bien definidos para obtener buenos resultados (SCRUM, RUP, XP, AUP…). Orígenes de la Ingeniería del software El término software apareció por primera vez en la Software Engineering Conference (SEC) de la OTAN en Garmisch, Alemania (1968). Esta conferencia decidió tomar un enfoque ingenieril como solución a lo que se denominó la crisis del software. El término se atribuye a Fritz Bauer. Se definió el concepto de ciclo de vida del software y se identificaron los principales problemas asociados al software: sobrecostes, retrasos, baja calidad, mantenimiento difícil, etc. Definiciones de Ingeniería del Software - (a) la aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software. (b) el estudio de los enfoques como los descritos en (a). - La aplicación inteligente de principios probados, técnicas, lenguajes y herramientas para la creación y mantenimiento, dentro de un coste razonable, de software que satisfaga las necesidades de los usuarios. Definición de Proyecto Un proyecto es un esfuerzo temporal que se lleva a cabo para crear un producto, servicio o resultado único. Hay distintos tipos de proyectos: productivo, público, social, de vida y científico. Etapas de un proyecto (PDCA): Ciclo de Deming 1. Plan: organizar y planificar los pasos a seguir en el proyecto. 2. Do: llevar a cabo parte del plan. 3. Check: analizar los resultados. 4. Act: hacer los cambios necesarios para resolver los fallos. Roles en un proyecto software Productos de la ingeniería del software Durante un proyecto deben entregarse productos al cliente denominados “entregables”. - Entregables previos al comienzo: 1. Petición de propuestas. 2. Pliego de Prescripciones. 3. Oferta. 4. Contrato. - Entregables habituales: 1. Plan de proyecto. 2. Informes de seguimiento. 3. Especificaciones de requisitos. 4. Documento de diseño. 5. Plan de pruebas. 6. Código fuente. 7. Software ejecutable. 8. Manuales de usuario. Normas y estándares del ciclo de vida del software - ISO/IEC/IEEE 12027:2017: Es un estándar que trata sobre los procesos del ciclo de vida del software, sin fomentar ningún modelo concreto de ciclo de vida. Tampoco indica cómo realizar ninguna de las actividades indicadas en la normativa. Distingue dos tipos de procesos: específicos del software y del contexto del sistema. - CMMI-DEV (2010): Se trata de un modelo para la mejora y evaluación de procesos de desarrollo, mantenimiento y operación de sistemas software. Mide la madurez de los procesos de negocio. Al solicitar la certificación CMMI se obtiene un nivel acorde al cumplimiento de la normativa por parte de la entidad solicitante. Mantenimiento del software - Es necesario para mejorar, adaptar o corregir el software. - El coste de mantenimiento es el más alto de todo el ciclo de vida. - Tipos de mantenimiento: Evolutivo (60%), Adaptativo (18%), Correctivo (17%), Perfectivo (5%). Gestión de incidencias - Restaurar cuanto antes la operativa normal del servicio minimizando el impacto negativo en las operaciones de negocio. - Detección, registro, categorización, priorización, diagnóstico, escalado, resolución y cierre. Calidad del software Los gastos en análisis de calidad se compensan con el ahorro en solución de errores. Calidad de un proyecto: - Cumplir los requisitos. - Cumplir los estándares de desarrollo necesarios. - Tener las características implícitas que se esperan de todo software profesional. Equipo de SQA (Software Quality Assurance): - Establecer el plan de SQA del proyecto. - Participar en la creación del plan del proyecto. - Documentar e informar de los aspectos a mejorar que se detecten en las revisiones técnicas formales (RTF). Gestión de la configuración Se encarga de identificar, controlar e informar de los cambios producidos en los productos. Actividades: - Determinar los productos bajo control de configuración. - Control de cambios y versiones. - Auditoría de la configuración. - Generación de informes del estado de la configuración. Línea base (baseline): - Versión cerrada de algún elemento de configuración a partir de la cual es necesario aplicar la política de control de cambios antes de modificarlo. CMS/CMDB: - Configuration Management System / Configuration Management Database. - Infraestructura de la organización de TI, típicamente compuesta por varias bases de datos que almacenan información acerca de los elementos software bajo control de versiones.