1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware -...

44
1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 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

Transcript of 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware -...

Page 1: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

1

Temas Temas

Unidad I – 1.1 Introducción a la Ingeniería del SoftwareUnidad I – 1.1 Introducción a la Ingeniería del Software

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

Page 2: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

2

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.1 Definición Hardware - Software1.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.

Page 3: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

3

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.2 Desarrollo del hardware 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)

Page 4: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

4

Unidad I – 1.1 Introducción a la Ingeniería del Software 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.

Page 5: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

5

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.3 Crisis del software1.1.3 Crisis del software

Page 6: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

6

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

Page 7: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

7

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

Page 8: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

8

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

Page 9: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

9

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.4 Ingeniería del Software 1.1.4 Ingeniería del Software

Page 10: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

10

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

Page 11: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

11

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.5 Estándares y modelos1.1.5 Estándares y modelos

Page 12: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

12

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.6 Ppales. organizaciones de estandarización1.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

Page 13: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

13

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.6 Ppales. organizaciones de estandarización1.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

Page 14: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

14

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  

 

 

 

 

 

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.7 Proyectos SWEBOK1.1.7 Proyectos SWEBOK

Page 15: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

15

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.

Page 16: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

16

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”).

 

 

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.8 ISO 122071.1.8 ISO 12207

Page 17: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

17

1.1.8 ISO 12207

Page 18: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

18

1.1.8 ISO 12207

ISO 1227 define los procesos que componen el ciclo de vida del software

Ciclo de vida

Concepto

Retirada

Actividad 1Proceso

1

…Proceso

N

Tarea 1

Tarea 2

Actividad nTarea 1

Tarea 2

- Un proceso está compuesto por actividades.- Una actividad está compuesta de tareas.

Page 19: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

19

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)

PLANPLANTareas, agenda, asignaciones…

CHECKCHECK

Evaluación ymedición

DODO

Ejecición de planesy tareas

ACTACT

Problemas y acciones

correctivas

PROCESO

INICIO

FIN

Page 20: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

20

- 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”.

 

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.9 Ingeniería de sistemas1.1.9 Ingeniería de sistemas

Elemento delsistema

Elemento delsistema

Elemento delsistema

Elemento delsistema

Elemento delsistema

Elemento delsistema

Elemento delsistema

Elemento delsistema

Sistema de

Entrada

Sistema de

Salida

Sistema

“Colección de elementos relacionados de forma que puedan realizar un objetivo tangible”.

Page 21: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

21

1.1.9 Ingeniería de sistemas1.1.9 Ingeniería de sistemasSistemaConjunto de elementos de hardware, software, personas, procedimientos, herramientas y otros factores organizativos, organizados para llevar a cabo un objetivo común.Sistema de softwareSistema 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 sistemasEl 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.

Page 22: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

22

1.1.9 Ingeniería de sistemas1.1.9 Ingeniería de sistemasAlgunas 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, 1989Los 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…

Page 23: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

23

1.1.9 Ingeniería de sistemas1.1.9 Ingeniería de sistemasIngeniería de sistemas – Gestión de proyectos – Ingeniería del Soft.

Gestión de proyectos

Planificación

Organización

Personal

Dirección

Control

Ingeniería del software

Diseño del software

Codificación

Pruebas unitarias

Int sub software

Ingeniería de sistemas

Definición del problema

Análisis de la solución

Planificación de procesos

Control de procesos

Evaluación del producto

Page 24: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

24

1.1.9 Ingeniería de sistemas1.1.9 Ingeniería de sistemasIngeniería de sistemas – Ingeniería de sistemas de software – Ingeniería del software

Análisis del sistema

Análisis del sistema

Pruebas del sistema

Pruebas del sistema

Diseño del sistemaDiseño del sistema Pruebas de integra. del sis

Pruebas de integra. del sis

Análisis de requi. del sw

Análisis de requi. del sw

Ingeniería de sistemas

Ingeniería de sistemas de software

Pruebas del sistema de swPruebas del

sistema de sw

Diseño de la arquit. del swDiseño de la

arquit. del swPruebas de integr.

del swPruebas de integr.

del sw

Ing. del software

Diseño detallado del software

Diseño detallado del software

Pruebas del sub-sistema de softw.Pruebas del sub-sistema de softw.

CodificaciónPruebas unitarias

CodificaciónPruebas unitarias

Ing. del software

Page 25: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

25

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.10 Software e ingeniería del software1.1.10 Software e ingeniería del software

Page 26: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

26

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.11 El papel evolutivo del software1.1.11 El papel evolutivo del software

Page 27: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

27

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.12 El software1.1.12 El software

Page 28: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

28

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.

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.13 La naturaleza cambiante del software1.1.13 La naturaleza cambiante del software

Page 29: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

29

1.1.13 La naturaleza cambiante del software1.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.

Page 30: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

30

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.14 Software heredado1.1.14 Software heredado

Page 31: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

31

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.15 El proceso de software1.1.15 El proceso de software

Page 32: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

32

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 Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.15.1 Visión general del proceso1.1.15.1 Visión general del proceso

Page 33: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

33

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.

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.15.2 Estratificación del proceso1.1.15.2 Estratificación del proceso

Un enfoque de calidad

Proceso

Métodos

Herramientas

Page 34: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

34

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)

Unidad I – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.15.3 Marco de trabajo1.1.15.3 Marco de trabajo

Marco de trabajo del procesoActividades sombrilla

Conjunto de tareas

Conjunto de tareas

Conjunto de tareas

Conjunto de tareas

Actividad del marco de trabajo

Actividad del marco de trabajo

Acción de la ingeniería del software

Acción de la ingeniería del software

Page 35: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

35

•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 – 1.1 Introducción a la Ingeniería del Software Unidad I – 1.1 Introducción a la Ingeniería del Software

1.1.15.4 Modelos de procesos1.1.15.4 Modelos de procesos

Page 36: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

36

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Filosofía - enfoque

Proceso(Gestión - Operativos)

Métodos

Herramientas

Estructura del conocimiento en I.S.Estructura del conocimiento en I.S.

Page 37: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

37

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Filosofía - enfoque

Proceso(Gestión - Operativos)

Métodos

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

Estructura del conocimiento en I.S.Estructura del conocimiento en I.S.

Page 38: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

38

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Filosofía - enfoque

Proceso(Gestión - Operativos)

Métodos

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

Estructura del conocimiento en I.S.Estructura del conocimiento en I.S.

Page 39: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

39

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Filosofía - enfoque

Proceso(Gestión - Operativos)

Métodos

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

Estructura del conocimiento en I.S.Estructura del conocimiento en I.S.

Page 40: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

40

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Filosofía - enfoque

Proceso(Gestión - Operativos)

Métodos

Herramientas Herramientas•Diagramas de escenarios

•Diagramas de flujo

•Diagramas de clases

•Diagramas de comportamiento

•Etc.

Estructura del conocimiento en I.S.Estructura del conocimiento en I.S.

Page 41: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

41

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Sabiduría

Conocimiento

Información

Datos

Asociatividad en múltiples contextos. Ej.: Comportamiento usual de los menores de edad.

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.

Asociatividad en un contexto. Ej.: Menor de edad.

Sin asociatividad en un contexto. Ej.: edad.

Nivel de complejidad del producto de la I.S.Nivel de complejidad del producto de la I.S.

Page 42: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

42

Unidad I – 1.2 Visión sistémica de la Ingeniería del Software 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.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.

Page 43: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

43

1.2.2 Niveles de complejidad del producto de la I.S.

Sabiduría

Conocimiento

Información

Datos

Asociatividad en múltiples contextos. Ej.: Comportamiento usual de los menores de edad.

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.

Asociatividad en un contexto. Ej.: Menor de edad.

Sin asociatividad en un contexto. Ej.: edad.

Page 44: 1 Temas Unidad I – 1.1 Introducción a la Ingeniería del Software 1.1.1 Definición Hardware - Software 1.1.2 Desarrollo del hardware 1.1.3 La crisis del.

44

Unidad I – 2. Visión sistémica de la Ingeniería del Software Unidad I – 2. Visión sistémica de la Ingeniería del Software

Premisas de la ingeniería del softwarePremisas 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.