440 likes | 683 Views
Unidad I – 1.1 Introducción a la Ingeniería del Software. Temas. 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del software 1.1.4 Ingeniería del Software 1.1.5 Estándares y modelos 1.1.6 Ppales. organizaciones de estandarización 1.1.7 Proyecto SWEBOK
E N D
Unidad I – 1.1 Introducción a la Ingeniería del Software Temas 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del software 1.1.4 Ingeniería del Software 1.1.5 Estándares y modelos 1.1.6 Ppales. organizaciones de estandarización 1.1.7 Proyecto SWEBOK 1.1.8 ISO 12207 1.1.9 Ingeniería de sistemas 1.1.10 Software e ingeniería del software 1.1.11 El papel evolutivo del software 1.1.12 El software 1.1.13 La naturaleza cambiante del software 1.1.14 Software heredado 1.1.15 El proceso de software 1.1.15.1 Visión general del proceso 1.1.15.2 Estratificación del proceso 1.1.15.3 Marco de trabajo 1.1.15.4 Modelos de proceso El contenido de los siguientes temas fue tomado del libro Un Enfoque Práctico de Pressman
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software El hardware es el conjunto de todos los elementos materiales (que se pueden tocar) como los dispositivos electrónicos y electromecánicos que pueden incluir: circuitos, cables, tarjetas, discos, unidades de disco, monitor, teclado, ratón (mouse), impresora, placas, chips y demás periféricos. En cambio, el software es intocable, existe como ideas, conceptos, símbolos, pero no tiene sustancia. Una buena metáfora sería un libro: las páginas y la tinta son el hardware, mientras que las palabras, oraciones, párrafos y el significado del texto son el software. Una computadora sin software sería tan inútil como un libro con páginas en blanco.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.2 Desarrollo del hardware La aparición de componentes que cada dos años doblan la capacidad de sus antecesores nos ha rodeado en menos de cuatro décadas de máquinas capaces de procesar miles de millones de operaciones por segundo(MTOPS). En 1946 ENIAC ocupaba una superficie de 160 m2, pesaba 30 toneladas, y ofrecía una capacidad de proceso de 30.000 instrucciones por segundo. En 2002 El microprocesador Pentium IV a 2 Ghz ocupa una superficie de 217 mm2 y tiene una capacidad de proceso de 5.300 MTOPS (“Millions of theoretical operations per second)
Unidad I – 1.1 Introducción a la Ingeniería del Software Este es el escenario creado por la industria del hardware, y que en las tres últimas décadas ha implicado a los desarrolladores de software en retos a los que no han sabido responder con solvencia.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.3 Crisis del software Este término fue acuñado en los años 70, cuando la industria del software ya había producido los suficientes programas para darse cuenta de que había algo que fallaba y formuló algunos interrogantes. ¿Por qué lleva tanto tiempo terminar los programas? ¿Por qué es tan elevado el coste? ¿Por qué no podemos encontrar todos los errores antes de entregar el software a nuestros clientes? ¿Por qué es tan difícil constatar el progreso durante el desarrollo? ¿Por qué es tan difícil calcular cuánto tiempo va a costar?
Unidad I – 1.1 Introducción a la Ingeniería del Software La industria del software no ha podido satisfacer la demanda. La complejidad del software producido y demandado se incrementa constantemente. El software es solicitado para ejecutar las tareas demandantes de hoy y está presente en todos los sistemas que van desde los más sencillos hasta los de misión crítica. Las aplicaciones de software son complejas porque modelan la complejidad del mundo real.
Unidad I – 1.1 Introducción a la Ingeniería del Software Si el cliente tiene claro qué quiere, interferirá mucho menos en el proceso de desarrollo obligando a cambiar aspectos que ya habían sido convenidos previamente. Y, aún así, a pesar de todo, lo hará. Decía un profesor de Ingeniera del Software: “El software no está en crisis, que tontería. La crisis le viene desde que nació. Lo que hay que plantearse es por qué no ha salido de esa crisis en todo este tiempo.“
Unidad I – 1.1 Introducción a la Ingeniería del Software Factores de Influencia Aumento del poder computacional. Reducción del costo del hardware. Personal de desarrollado y mantenimiento diferente. Tiempo costo y número de desarrolladores, Control administrativo y detalles técnicos Aumento en el conocimiento del problema. Cambios en el entorno: Tecnológicos (Internet, redes, ERP, CRM, SCM). Económicos (crisis económicas, globalización, etcétera). Sociales (nuevas necesidades, costumbres nuevas, etcétera).
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.4 Ingeniería del Software Es la rama de la ingeniería que crea y mantiene las aplicaciones de software aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, el ámbito de la aplicación, y otros campos. El software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente ubicuo de los dispositivos usados por las sociedades industrializadas. “Establecimiento y uso de principios de ingeniería para obtener software económico que trabaje de forma eficiente en máquinas reales”.
Unidad I – 1.1 Introducción a la Ingeniería del Software La Ingeniería en Software es la aproximación sistemática, disciplinada y cuantificable para desarrollar, operar y mantener software. El explosivo crecimiento del ámbito informático requiere de la participación de profesionales que sepan evaluar, generar y articular productos tecnológicos que satisfagan las crecientes necesidades de la sociedad moderna. La formación entrega criterios básicos para un Ingeniero en Software con una visión y capacidad de aplicar Tecnologías de Información y Comunicaciones de manera adecuada para la solución de problemas de software. El plan de estudios está constituido por un asignaturas de especialidad que incluye Algoritmos, Estructuras de Datos, Lenguajes de Programación, Análisis y Diseño de Software, Verificación y Validación de Software, Ingeniería y Construcción de Software, Software Incrustado, Costo y Precio del Software, entre otros.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.5 Estándares y modelos Definición: Son normas internacionales que reglamentan y controlan el desarrollo de software a nivel mundial. Los estándares son útiles porque: Agrupan lo mejor y más apropiado de las buenas prácticas y usos del desarrollo de software. Engloban los “conocimientos”. Proporcionan un marco para implementar procedimientos de aseguramiento de la calidad. Proporcionan continuidad y entendimiento entre el trabajo de personas y organizaciones distintas.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.6 Ppales. organizaciones de estandarización ISO: Organización Internacional para la Estandarización. En 1987 la (ISO) y la Comisión Internacional Electrotécnica (IEC), establecieron un Comité Internacional (JTC1) para las Tecnologías de la Información. La misión del JTC1 es la “estandarización en el campo de los sistemas de tecnologías de la información, incluyendo microprocesadores y equipos. Los estándares mas importantes para la I S O son. ISO/IEC 12207 ISO/IEC TR 15504
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.6 Ppales. organizaciones de estandarización SEI: Instituto de Ingeniería del software. IEEE: Instituto de Ingenieros en electricidad y electrónica Los estándares son útiles porque: Agrupan lo mejor y más apropiado de las buenas prácticas y usos del desarrollo de software. Engloban los “conocimientos”. Proporcionan un marco para implementar procedimientos de aseguramiento de la calidad. Proporcionan continuidad y entendimiento entre el trabajo de personas y organizaciones distintas. En 1987 la (ISO) y la Comisión Internacional Electrotécnica (IEC), establecieron un Comité Internacional (JTC1) para las Tecnologías de la Información. La misión del JTC1 es la “estandarización en el campo de los sistemas de tecnologías de la información, incluyendo microprocesadores y equipos. Los estándares mas importantes para la I S son. ISO/IEC 12207 ISO/IEC TR 15504
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.7 Proyectos SWEBOK SWEBOK da el primer paso necesario para constituir a la Ingeniería del Software como profesión: La delimitación del cuerpo de conocimiento que comprende la profesión. Sin esta delimitación no es posible validar de forma universal exámenes de licenciatura, no es posible la preparación para acceder a la profesión, y no hay un consenso sobre el contenido de su currículo. Gestión de la configuración Gestión Procesos Herramientas y métodos Calidad Requisitos Diseño Construcción Pruebas Mantenimiento El proyecto parte de la suposición de que es necesario establecer cuál es el cuerpo de conocimiento que deben conocer los ingenieros del software, y en su desarrollo ha agrupado este conocimiento en 10 áreas
1.1.7 Proyectos SWEBOK Es importante resaltar que estas áreas no incluyen aspectos importantes de las tecnologías de la información, tales como lenguajes específicos de programación, bases de datos relacionales o redes o tecnología de redes y comunicaciones. Esta es una consecuencia de la distinción que entre “esencia” y “accidente” se establece desde un enfoque de ingeniería. Por supuesto que un Ingeniero de Software debe conocer las técnicas de cada momento, pero la definición de procesos y metodología de trabajo es la “esencia” de la profesión. Así por ejemplo, el área de conocimiento de requisitos, sí que puede considerarse como “esencia” de la profesión. Los problemas que pueden derivarse en un proyecto por una mala obtención o gestión de los requisitos son indistintos del hardware o lenguaje de programación empleado. Eran los mismos hace dos décadas que ahora, y todo nos hace suponer que seguirán siendo idénticos dentro de otros cuatro lustros.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.8 ISO 12207 Establece un marco para el ciclo de vida del software para - Adquisición, suministro, desarrollo, operación y mantenimiento del software - Gestionar, controlar y mejorar el marco - Como base de referencia para el trabajo e intercambio entre organizaciones de software Ciclo de vida del software Periodo de tiempo que comienza al concebir la idea de un nuevo sistema de software, y termina cuando este se retira y deja de funcionar. La ISO 12207 Define el QUÉ, no el CÓMO. Dice cuáles son los procesos, actividades y tareas implicados en el desarrollo, mantenimiento y operación de los sistemas de software, asentando un marco estándar de referencia internacional, pero no se ocupa ni prescribe técnicas específicas. El estándar sirve de referencia desde dos perspectivas diferentes: Para la adquisición de sistemas y servicios de software. Para el suministro, desarrollo, mantenimiento y operación de productos de software. El estándar no cubre el desarrollo de productos de software para distribución comercial masiva (productos “en caja”).
Proceso 1 Ciclo de vida Proceso N Concepto … Retirada 1.1.8 ISO 12207 ISO 1227 define los procesos que componen el ciclo de vida del software Actividad 1 Tarea 1 Tarea 2 Actividad n Tarea 1 Tarea 2 - Un proceso está compuesto por actividades. - Una actividad está compuesta de tareas.
INICIO PLAN Tareas, agenda, asignaciones… ACT DO PROCESO Problemas y accionescorrectivas Ejecición de planesy tareas CHECK FIN Evaluación ymedición 1.1.8 ISO 12207 - La descomposición del proceso en actividades y tareas se realiza sobre el concepto de ciclo de mejora PDCA “Plan – Do – Chek – Act” (Planificación, ejecución, medición y mejora)
Sistema deEntrada Sistema Elemento delsistema Elemento delsistema Elemento delsistema Elemento delsistema Sistema deSalida Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.9 Ingeniería de sistemas - ISO 12207 establece un nexo con la Ingeniería de sistemas al considerar al software como parte de un sistema. - Desde esta perspectiva se establece a la Ingeniería de sistemas como fundamento de la Ingeniería del Software. ¿Qué es un sistema? Colección de componentes organizados para cumplir una función o conjunto de funciones específicas”. “Colección de elementos relacionados de forma que puedan realizar un objetivo tangible”.
1.1.9 Ingeniería de sistemas Sistema Conjunto de elementos de hardware, software, personas, procedimientos, herramientas y otros factores organizativos, organizados para llevar a cabo un objetivo común. Sistema de software Sistema o sub-sistema formado por una colección de programas y documentación que de forma conjunta satisfacen unos determinados requisitos. Un sistema de software puede ser en sí mismo un sistema independiente que, por ejemplo, realiza su objetivo en un ordenador independiente. A este tipo de sistemas se les denomina también “sistema intensivo de software”, porque el sistema es prácticamente software. Un sistema de software puede ser también una parte de un sistema mayor. En cuyo caso se trata en realidad de un “sub-sistema de software”. Por ejemplo, el sistema de software de un avión de combate es en realidad el sub-sistema de software del avión. Ingeniería de sistemas El término “Ingeniería de sistemas” surgió por primera vez en 1956, y fue propuesto por H. Hitch, presidente del departamento de Ingeniería Aeronáutica de la Universidad de Pensilvania, para intentar desarrollar una disciplina de ingeniería que pudiera abarcar el desarrollo de grandes sistemas que empleaban diversas disciplinas de ingenierías específicas: construcción de bombarderos, submarinos, etc. Los principios de Ingeniería de sistemas desarrollados en los 60 y 70 se aplicaron en programas como el Apolo, o el programa de misiles balísticos USAF/USN.
1.1.9 Ingeniería de sistemas Algunas definiciones Ingeniería de sistemas comprende la función de gestionar todo el esfuerzo de desarrollo para conseguir un balance óptimo entre todos los elementos del sistema. Es el proceso que transforma la necesidad operacional en la descripción de los parámetros del sistema, e integra esos parámetros para mejorar la eficiencia general del sistema. Defense Systems Management College, 1989 Los procesos de ingeniería de sistemas integran las secuencias de actividades y decisiones que transforman la definición de una necesidad en un sistema, que con un ciclo de vida optimizado, consigue un balance óptimo de todos sus componentes. USAF, 1985 La principal función de la ingeniería de sistemas es garantizar que el sistema satisface los requisitos durante todo el ciclo de vida. Todas las demás consideraciones se alinean sobre esta función. Wymore 1993 Funciones de la Ingeniería de sistemas - Definición del problema: Determinación de las expectativas hacia el producto, necesidades y restricciones obtenidas y analizadas en los requisitos del sistema. Trabaja cerca del cliente para establecer las necesidades operacionales. - Análisis de la solución: Determinar las opciones posibles para satisfacer los requisitos y las restricciones. Estudiar y analizar las posibles soluciones. Seleccionar la mejor, sopesando las necesidades inmediatas, opciones de implementación, utilidad, evolución del sistema… - Planificación de los procesos: Determinar los grupos de tareas técnicas que se deben realizar, el esfuerzo requerido para cada una, su prioridad y los riesgos que implican para el proyecto. - Control de los procesos: Determinar los métodos para controlar las actividades técnicas del proyecto y los procesos; la medición del progreso, revisión de los productos intermedios y ejecución de las acciones correctivas, cuando corresponda. - Evaluación del producto: Determinar la calidad y cantidad de los productos elaborados, a través de evaluaciones, pruebas, análisis, inspecciones…
Gestión de proyectos Planificación Organización Personal Dirección Control Ingeniería de sistemas Ingeniería del software Definición del problema Análisis de la solución Planificación de procesos Control de procesos Evaluación del producto Diseño del software Codificación Pruebas unitarias Int sub software 1.1.9 Ingeniería de sistemas Ingeniería de sistemas – Gestión de proyectos – Ingeniería del Soft.
1.1.9 Ingeniería de sistemas Ingeniería de sistemas – Ingeniería de sistemas de software – Ingeniería del software Análisis del sistema Pruebas del sistema Pruebas de integra. del sis Diseño del sistema Ingeniería de sistemas Ingeniería de sistemas de software Análisis de requi. del sw Pruebas del sistema de sw Diseño de la arquit. del sw Pruebas de integr. del sw Diseño detallado del software Pruebas del sub-sistema de softw. Ing. del software CodificaciónPruebas unitarias Ing. del software
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.10 Software e ingeniería del software En la actualidad, el software de computadora es la tecnología individual más importante en el ámbito mundial. Es común darse cuenta que la invención de una tecnología puede tener efectos profundos e inesperados en otras tecnologías con las que en apariencia no tiene ninguna relación. (ESTE FENOMENO SE COMO LA LEY DE LA S CONSECUENCIAS IMPREVISTAS). El software se ha convertido a través de los años en una tecnología indispensable en los negocios, la ciencia y la ingeniería. El software también ha permitido la creación de tecnologías nuevas como la ingeniería genética, ha permitido la expansión de tecnologías existentes como las telecomunicaciones, el fin de tecnologías antiguas como la industria de la impresión. En fin, se puede afirmar que el software es la fuerza conductora de la tecnología del presente, ya que está relacionado con sistemas de todo tipo: transporte, médicos, telecomunicaciones, militares, industriales, de entretenimiento, máquinas para oficina entre otros. El software de computadora es el producto que los Ingenieros de Software construyen: incluye los programas que se ejecutan dentro de una computadora de cualquier tamaño y arquitectura. Lo construyen los ingenieros de software y casi todos en el mundo industrializado lo usan de manera directa o indirecta. Es importante porque afecta de forma muy cercana todos los aspectos de nuestras vidas. Este software de computadora se construye de la misma forma que cualquier producto de éxito, mediante la aplicación de un proceso que conduzca a un resultado de alta calidad que satisfaga las necesidades de las personas que utilizaran el producto (se hace referencia a los programas , los cuales contienen los datos y los demás documentos que constituyen el software) desde el punto de vista del usuario el producto obtenido es la información. En la sociedad moderna el papel de la ingeniería es proporcionar sistemas y productos que mejoren los aspectos materiales de la vida humana, para que así la vida sea más fácil, segura y placentera. (Richard Fairley y Mery Willshire)
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.11 El papel evolutivo del software El software es tanto un producto como el vehículo para su entrega. Es el transformador de la información. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación y el control de otros programas (utilerías de software y ambientes)El software entrega el producto más importante de nuestro tiempo: información. Transforma los datos personales, por ejemplo las transacciones financieras de un individuo, de modo que los datos sean más útiles en un contexto local. Maneja información de negocio para mejorar la competitividad, proporciona una vía para las redes de información alrededor del mundo (Internet) y proporciona los medios para adquirir información en todas sus formas (páginas web).
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.12 El software El software es un elemento lógico en lugar de físico, de un sistema. El software se desarrolla o construye, no se manufactura (componentes del hardware, los cuales pueden incluir problemas de calidad inexistentes o sea, fácil de corregir en el software), el software no se desgasta, pero se deteriora (el cual se corrige con un mejor diseño: implementación)Los costos del software se concentran el la ingeniería, esto quiere decir que los proyectos de software no se pueden manejar como si fueran proyectos de manufactura. El hardware tiene un número considerablemente alto de posibles fallas al inicio de su vida útil, se hace referencia a defectos de diseño de fábrica (manufactura). También con el tiempo causa fallas en el hardware la acumulación de polvo, la alta vibración, el abuso del hombre sobre los diferentes componentes, las temperaturas extremas y muchos otros factores que hacen parte del medio ambiente. Se puede decir que el hardware comienza a desgastarse. El software es inmune a los males ambientales que desgastan al hardware. Los errores del software se corrigen, o sea que se implementan.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.13 La naturaleza cambiante del software • En la actualidad existen siete grandes categorías del software de computadora que presentan retos continuos para los ingenieros de software. • Software de sistemas: colección de programas escritos para servir a otros programas. Ejemplo: los compiladores, editores y utilerías para la administración de archivos, los cuales procesar estructuras de información complejas pero determinadas. Otras aplicaciones de sistemas como los componentes del sistema operativo, controladores, software de red, procesadores para telecomunicaciones, procesan datos indeterminados. • Software de aplicación: son programas independientes que resuelven una necesidad de negocios específica. Ejemplo: el procesamiento de transacciones en los puntos de venta. • Software científico y de ingeniería: se caracteriza por algoritmos. Abarca desde la astronomía hasta la vulcanología, desde el análisis de la tensión automotriz hasta la dinámica orbital de los transbordadores espaciales, y desde la biología molecular hasta la manufactura automatizada. Diseño asistido por computadora. • Software emportado o incrustado: reside en la memoria de solo lectura del sistema y con él se implementan y controlan características y funciones para el usuario final y el sistema mismo. Ejemplo: control del teclado de un horno microondas, las funciones digitales de un automóvil, como el control de combustible, los sistemas de frenado, entre otros.
1.1.13 La naturaleza cambiante del software • Software de línea de productos: diseñado para proporcionar una capacidad específica y la utilización de muchos clientes diferentes, se puede enfocar en un nicho de mercado limitado. Ejemplo: productos para el control de inventarios, hojas de cálculos , multimedia, entretenimiento, manejo de BD, administración de personal y finanzas en los negocios. • Aplicación basada en Web: las “WebApps” engloban un espectro amplio de aplicaciones. En su forma más simple, las WebApps son apenas un poco más que un conjunto de archivos de hipertexto ligados que presentan información mediante texto y algunas gráficas. Actualmente estas aplicaciones están integradas con base de datos y aplicaciones de negocios, ya que proporcionan características que les permite evolucionar hacia ambientes computacionales sofisticados. • Software de inteligencia: utiliza algoritmos no numéricos en la resolución de problemas complejos que es imposible abordar por medio de un análisis directo. Incluye la robótica, el reconocimiento de patrones (imagen y voz), los juegos de computadoras, entre otros.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.14 Software heredado Hace referencia a los software o programas viejos, aquellos que utilizan tan solo algunas entidades empresariales, gubernamentales o individuos. Estos fueron desarrollados hace décadas y han sido modificados en forma continua para cumplir los requerimientos de los cambios en los negocios y en las plataformas de cómputos. Ejemplo: Unix, foxpro, Dos, entre otros.Aquí se puede hacer énfasis a los programas de computadora que hacen parte de los siete grandes dominios de aplicación (la naturaleza cambiante del software) Algunas veces los software heredados tienen diseños imposibles de extender, códigos complicados, documentación escasa o inexistente, casos de prueba y resultados que nunca fueron archivados, un historial de cambio manejado con pobreza, etcétera. Sin embargo, estos software son indispensables para algunas entidades, por lo tanto, aunque el programa sea viejo, pero si presta su utilidad o satisface las necesidades del usuario y funciona de manera confiable, se dice que el sistema no está roto ni requiere arreglos. Sin embargo, conforme pasa el tiempo la tecnología evoluciona rápidamente, por lo tanto el software debe adaptarse para satisfacer las necesidades de los nuevos ambientes o las nuevas tecnologías de cómputos. El software debe mejorarse para una mejor implementación de su servicio, o sea rediseñarse.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.15 El proceso de software Son los pasos predecibles que hay que realizar para crear el programa. Es decir, un mapa de carretera que ayude a crear un resultado de alta calidad y a tiempo. (definirlo, construirlo y probarlo), es importante seguir los pasos porque ofrece estabilidad, control y organización a una actividad que puede volverse caótica si no se controla. Este enfoque debe ser ágil, debe requerir solo aquellas actividades, controles y documentaciones apropiados para el equipo del proyecto y el producto que ha de producirse. Se está seguro de que se ha hecho correctamente cuando se determina la madurez, la calidad, la viabilidad del producto que se construye.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.15.1 Visión general del proceso El desarrollo del software es un proceso de aprendizaje social, es un proceso iterativo de aprendizaje y como resultado la materialización del conocimiento recolectado, depurado y organizado conforme el proceso estuvo en ejecución. El proceso de un software es un marco de trabajo para las tareas que se requieren en la construcción de software de alta calidad. El proceso es un sinónimo de Ingeniería del Software. Un proceso de software define el enfoque que se adopta mientras el software está en desarrollo, pero la ingeniería del software también abarca las tecnologías que requiere el proceso (métodos técnicos y herramientas automatizadas)La ingeniería del software la realizan personas creativas y con conocimiento que deben trabajar en un proceso de software madurado que sea apropiado para el producto que construyen y para las demandas de sus mercados.
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.15.2 Estratificación del proceso Se aplica al desarrollo de software de computadora, de que manera se construye, económicamente que sea un software confiable, que funcione eficientemente en varias máquinas reales. Más que una disciplina o un cuerpo de conocimiento, la ingeniería es un verbo, una palabra de acción, una manera de abordar un problema el cual al final debe estar sustentado en un compromiso con la calidad. Enfoque en la calidad. La IS Es una tecnología estratificada, en donde todo debe estar sustentado en un compromiso con la calidad. Herramientas Métodos Proceso Un enfoque de calidad
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.15.3 Marco de trabajo Un marco de trabajo establece la base para un proceso de software completo al identificar un número pequeño de actividades del marco de trabajo aplicables a todos los proyectos de software, sin importar su tamaño o complejidad. Abarca un conjunto de actividades que a su vez contienen conjuntos de acciones, es decir una serie de tareas relacionadas que producen un producto del trabajo en la ingeniería del software. Un proceso define quien está haciendo qué, cuándo y cómo lograr cierta mente.(Ivar Jacobson, Grady Booch y James Rumbaugh) Marco de trabajo del proceso Actividades sombrilla Actividad del marco de trabajo Conjunto de tareas Acción de la ingeniería del software Conjunto de tareas Actividad del marco de trabajo Conjunto de tareas Acción de la ingeniería del software Conjunto de tareas
Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.15.4 Modelos de procesos • Comunicación: implica una intensa colaboración y comunicación con los clientes, además abarca la investigación de requisitos y otras actividades relacionadas. • Planeación: establece un plan para el trabajo de la ingeniería del software. Describe las tareas técnicas que deben realizarse, los riesgos probables, los recursos que serán requerido, los productos del trabajo que han de producirse y un programa de trabajo. • Modelado: Esta actividad abarca la creación de modelos que permiten al desarrollador y al cliente entender mejor los requisitos del software y el diseño que logrará satisfacerlo. • Construcción: esta actividad combina la generación del código (ya sea manual o automatizado) y la realización de pruebas necesarias para descubrir errores en el código. • Despliegue: El software se entrega al cliente parcialmente para que lo evalúe y a su vez para que proporcione la información basada en su evolución.
Unidad I – 2. Visión sistémica de la Ingeniería del Software Estructura del conocimiento en I.S. Herramientas Métodos Proceso (Gestión - Operativos) Filosofía - enfoque
Unidad I – 2. Visión sistémica de la Ingeniería del Software Estructura del conocimiento en I.S. Herramientas • Filosofía - Enfoque • ISO/IEC 15504/SPICE • Ing. de sistemas • Ing. de software • Ing. de requisitos • OO • UML • XMI • CMM y CMMI • IEEE • Ing. del software de sala limpia • Ing. del software basada en componentes • Reingeniería de software Métodos Proceso (Gestión - Operativos) Filosofía - enfoque
Unidad I – 2. Visión sistémica de la Ingeniería del Software Estructura del conocimiento en I.S. Herramientas • Proceso • Modelo O. Genérico (C.P.M.C.D.) • Modelos O. prescriptivos (C.V.) • Modelos O. ágiles • Modelos O. web • Modelos de gestión Métodos Proceso (Gestión - Operativos) Filosofía - enfoque
Unidad I – 2. Visión sistémica de la Ingeniería del Software Estructura del conocimiento en I.S. Herramientas • Métodos • Modelado del análisis • Ing. del diseño • Diseño arquitectónico • Diseño a nivel de componentes • Diseño de la interfaz de usuario • Estrategias de prueba de software • Técnicas de prueba de software • Métricas del software • Métodos formales y/o matemáticos Métodos Proceso (Gestión - Operativos) Filosofía - enfoque
Unidad I – 2. Visión sistémica de la Ingeniería del Software Estructura del conocimiento en I.S. Herramientas • Herramientas • Diagramas de escenarios • Diagramas de flujo • Diagramas de clases • Diagramas de comportamiento • Etc. Métodos Proceso (Gestión - Operativos) Filosofía - enfoque
Unidad I – 2. Visión sistémica de la Ingeniería del Software Nivel de complejidad del producto de la I.S. Sin asociatividad en un contexto. Ej.: edad. Datos Información Asociatividad en un contexto. Ej.: Menor de edad. Conocimiento Asociatividad en múltiples contextos. Ej.: Comportamiento usual de los menores de edad. Sabiduría Creación de principios generalizados con base en el conocimiento procedente de fuentes diferentes. Ej.: Según la psicología, la neuropsicología, la neurociencia y la sociología la situación se debe enfrentar con x decisiones.
Unidad I – 1.2 Visión sistémica de la Ingeniería del Software 1.2.2 Niveles de complejidad del producto de la I.S. • Planeación del proyecto, Gestión de requisitos, Medición y análisis, Gestión de la configuración, • Aseguramiento de la calidad del producto y del proceso • Niveles:Nivel 0: Incompleto: la gestión de requisitos no alcanza todas las metas y objetivos definidos para avanzar al nivel 1. • Nivel 1: Realizado: Las tareas especificas para producir el producto han sido realizadas. • Nivel 2: Administrado: Todos los criterios del nivel 1 han sido satisfechos. Toda la gente que ejecuta el trabajo tiene acceso a los recursos adecuados para realizar su labor, los clientes están implicados de manera activa, todas las tareas de trabajo y productos están monitoreados, controlados y revisados y son evaluados en apego a la descripción del proceso. • Nivel 3: Definido: todos los criterios del nivel 2 se han cumplido. • Nivel 4: Administrado en forma cuantitativa: todos los criterios del nivel 3 han sido cumplidos, además, el área del proceso se controla y mejora mediante mediciones y evaluación cuantitativa. Los objetivos cuantitativos para la calidad y el desempeño del proceso están establecidos y se utiliza como un criterio para administrar el proceso. • Nivel 5: Mejorado: Todos los criterios del nivel 4 han sido satisfecho. Además, el área del proceso se adapta y mejora mediante el uso de medios cuantitativos (estadísticos) para reconocer las necesidades cambiantes del cliente y mejorar de manera continua la eficacia del área del proceso que se está considerando.
Sin asociatividad en un contexto. Ej.: edad. Datos Información Asociatividad en un contexto. Ej.: Menor de edad. Conocimiento Asociatividad en múltiples contextos. Ej.: Comportamiento usual de los menores de edad. Sabiduría Creación de principios generalizados con base en el conocimiento procedente de fuentes diferentes. Ej.: Según la psicología, la neuropsicología, la neurociencia y la sociología la situación se debe enfrentar con x decisiones. 1.2.2 Niveles de complejidad del producto de la I.S.
Unidad I – 2. Visión sistémica de la Ingeniería del Software Premisas de la ingeniería del software • Cuando la ingeniería del software llegue hasta el antepenúltimo peldaño de la generación de conocimiento, a las puertas de la sabiduría, el mundo se habrá acabado. • Si acaso el software llegara a la sabiduría se encontraría con Dios. • El desarrollo de software se ve constantemente impedido por la lentitud en la creación de componentes hardware y mecanismos que servirán para que extienda su potencial. • La generación de nuevo hardware y de los diferentes mecanismos se realiza para el servir a las pretensiones reprimidas de la ingeniería del software. • La ingeniería del software simplemente obedece a las necesidades del bien y del mal y esto queda evidenciado cuando el desarrollo tecnológico es jalonado por los avances en la medicina y en la guerra.