Cap 7 ingenieria del software

18
Universidad Pedagógica Nacional de Francisco Morazán PREUFOD Clase: INFORMATICA BASICA. Lic. Marció Rodas. Exposición: Ingeniería del Software Cap. 7 Tegucigalpa M.D.C. 8 de Junio del 2016

Transcript of Cap 7 ingenieria del software

Page 1: Cap 7 ingenieria del software

Universidad Pedagógica Nacional de Francisco Morazán

PREUFOD

Clase: INFORMATICA BASICA.

Lic. Marció Rodas.

Exposición:

Ingeniería del Software Cap. 7

Tegucigalpa M.D.C. 8 de Junio del 2016

Page 2: Cap 7 ingenieria del software

2¿Que es Ingeniería del Software?

Es la rama de las Ciencias de la Computación que busca principios que sirvan como guía para el desarrollo de sistemas software complejos y de gran tamaño.

La ingeniería del software incluye temas tales como:

La gestión personalLa gestión de proyectos, que suelen asociarse mas con La gestión empresarial que con las ciencias de la computación.

Page 3: Cap 7 ingenieria del software

3La disciplina de la ingeniería del software

La ingeniería es un campo bien consolidado, podríamos pensar que existe una gran cantidad de técnicas de ingeniería previamente desarrolladas que puedan ser útiles para responder cuestiones como:

Seleccionar un dispositivo complejo de gran tamaño (un automóvil, un edificio de oficina de varios pisos, o quizás una catedral) e imaginar que nos piden que lo diseñemos y que luego supervisemos su construcción. ¿Cómo podemos estimar el coste en tiempo, dinero y otros recursos necesarios para completar el proyecto?

Page 4: Cap 7 ingenieria del software

4Diferencias en la disciplina de la ingeniería del software y otras

disciplinas de la ingeniería

Una de las diferencias implica la capacidad de construir sistemas a partir de componentes genéricos prefabricados.

. Otra diferencia es la falta de técnicas cuantitativas, denominadas métricas, para medir las propiedades del software. Ejemplo:Para proyectar el coste de desarrollar un sistema software, a uno le gustaría estimar la complejidad del producto propuesto, pero los métodos para medir la complejidad del software son ellos mismos muy difusos.

Page 5: Cap 7 ingenieria del software

5ACMAssociation for Computing Machinery, Asociación de Hardware de Computación)

Fundada en 1947 Como una organización internacional de carácter científico y educativo dedicada al progreso de la ingeniería , las ciencias y las aplicaciones de la tecnología de la información

Incluye numerosos grupos especiales que se centran en temas tales como:La arquitectura de computadoras, la inteligencia artificial, la computación biomédica, la interacción entre computadoras y sociedad, la pedagogía de las ciencias de la computación, los gráficos por computadora, hipertexto/hipermedia, sistemas operativos, lenguajes de programación, simulación y modelado e ingeniería del software.

Page 6: Cap 7 ingenieria del software

6Ciclo de vida del Software Entra en un ciclo de utilización y mantenimiento, un ciclo que continua durante el resto de la vida útil de ese software. Ese patrón es común también para muchos otros productos manufacturados.

La diferencia es que en el caso de otros productos, la fase de mantenimiento tiende a ser un proceso de reparación, mientras que en el caso del software, la fase de mantenimiento suele consistir en correcciones y actualizaciones.

Desarrollo

Mantenimiento

Uso

Page 7: Cap 7 ingenieria del software

7Fase de desarrollo tradicional del ciclo de

vida del softwareAnálisis de requisitos: su objetivo consiste en especificar que servicios proporcionara el sistema propuesto, identificar las condiciones impuestas a esos servicios(restricciones temporales de seguridad, etc.) y definir como interactúa el mundo exterior con el sistema.

Diseño: implica crear un plan para la construcción de ese sistema propuesto. En cierto sentido, el análisis de requisitos consiste en identificar el problema que hay que resolver, mientras que el diseño trata de desarrollar una solución para ese problema.

Implementación: Implica la estructura de programas, la creación de archivos de datos y el desarrollo de bases de datos.

Pruebas: se consideran ahora solo como de una de las tareas dentro del intento global del proceso del aseguramiento de la calidad del software, que es un objetivo que impregna todo el ciclo de vida del software.

Page 8: Cap 7 ingenieria del software

8IEEEInstitute of Electrical and Electronics Engineers) es una organización de Ingenieros Eléctricos, Electrónicos y de fabricación fundada en 1963 como resultado de la fusión del Instituto Americano de Ingenieros Eléctricos ( fundado en 1884 por 25 ingenieros eléctricos, entre los que estaba Thomas Edison) y el Instituto de Ingenieros de Radio (fundado en 1912).

Este instituto incluye numerosas sociedades técnicas como la :Sociedad Aeroespacial, y de Sistemas ElectrónicosSociedad de Laceres y ElectroópticaSociedad de Robótica y de AutomatizaciónSociedad Tecnología Vehicular y la Sociedad de Computadoras.

Page 9: Cap 7 ingenieria del software

9Metodologías de Ingeniería del software

Modelo en Cascada: Analógico con el hecho de que al proceso de desarrollo solo se dejaba fluir en una dirección.

Modelo Incremental: Primer sistema una versión simplificada del producto final, con una funcionalidad limitada.

Modelo Iterativo: Similar al modelo incremental y en ocasiones se identifica con el, aunque se trata de dos modelos distintos.

Modelo XP: El software se desarrollada incrementalmente por medio de ciclos diarios repetidos de análisis de requisitos, diseño, implementación y pruebas, todos ellos de carácter informal.

Page 10: Cap 7 ingenieria del software

10ModularidadEs la división del software en unidades mas manejables, que se denominan de forma genérica módulos, de cada una de las cuales trata únicamente con una parte de las tareas globales asignadas al software.

Page 11: Cap 7 ingenieria del software

11UML

Los diagramas de flujo de datos y los diccionarios de datos eran herramientas del arsenal de la ingeniería del software mucho antes de la aparición del paradigma de orientación a objetos y han continuado encontrando un papel útil que desempeñar, aun cuando el paradigma imperativo para el que fueron originalmente desarrollados sea ahora menos popular.

Lenguaje Unificado de Modelado, que fue desarrollado teniendo en mente el paradigma de orientación a objetos.

Page 12: Cap 7 ingenieria del software

12

Patrones de diseño

Es un modelo predesarrollado para la resolución de un problema recurrente en el diseño del software. Ejemplo:

El patrón Adapter (adaptador) proporciona una solución a un problema que a menudo aparece al construir software a partir de módulos prefabricados.

Page 13: Cap 7 ingenieria del software

13Tragedias históricas del diseño de sistemas

Un buen ejemplo de la necesidad de disciplinas de diseño apropiadas son los problemas con los que se encontró el Therac-25 que era un sistema de radioterapia acelerador de electrones basado en computadoras, que la comunidad medica estuvo utilizando a mediados de la década de los 80.

Los fallos en el sistema de la maquina contribuyeron a la aparición de seis casos de sobredosis de radiación, tres de ellos con resultado de muerte, entre los fallos:

1) Un diseño inadecuado de la interfaz de la maquina, que permitía que el operador comenzara a aplicar la radiación antes de que la maquina se hubiera ajustado para la dosis apropiada.

2) Una mala coordinación entre el diseño del hardware y del software, que condujo a que no se incorporaran ciertas características de seguridad.

Page 14: Cap 7 ingenieria del software

14Documentación

La documentación es una parte importante del paquete software final y como consecuencia uno de los temas importantes de la ingeniería del software.

La documentación del software sirve para tres cosas distintas:

1) Documentación del usuario: Es explicar las características del software y describir como utilizarlo.

2) Documentación del sistema: Es describir la composición interna del software, de modo que este pueda ser mantenido en las etapas posteriores de su ciclo de vida.

3) Documentación técnica: es describir como hay que instalar y dar servicio a un sistema software(como por ejemplo cual es la forma de ajustar los parámetros de operación, como instalar actualizaciones y como informar e los problemas al desarrollador del software).

Page 15: Cap 7 ingenieria del software

15Interfaz persona-maquina

los seres humanos deberían poder emplear un sistema software como una herramienta abstracta. Esta herramienta debería de ser fácil de aplicar y estar diseñada para minimizar (idealmente eliminar) los errores de comunicación entre el sistema y los usuarios humanos.

La interfaz persona-maquina se ha convertido en una de los proyectos de desarrollo software y es uno de los campos de mayor crecimiento dentro de la ingeniería del software.

La investigación de interfaces persona-maquina se apoya fuertemente en las áreas de la ingeniería denominadas ergonomía, que trata con el diseño de sistemas que armonicen con las capacidades físicas de los seres humanos, y cognetica, que trata del diseño de sistemas que armonicen con las habilidades mentales de las personas.

Page 16: Cap 7 ingenieria del software

16

La interacción mental con las maquinas, por el contrario, es un fenómeno relativamente nuevo y es por eso que la cognetica ofrece el mayor potencial para futuras investigaciones de provecho y para el aprendizaje de nuevas lecciones acerca de la interacción persona-maquina.

Page 17: Cap 7 ingenieria del software

17Propiedad del software y responsabilidad legal

La mayoría de las personas estarían de acuerdo en que una empresa o un individuo tienen derecho a recuperar la inversión necesaria para desarrollar un software de calidad y a obtener beneficio económico de la misma. En caso contrario, es poco probable que hubiera muchas personas dispuestas a cometer la tarea de fabricar el software que nuestra sociedad desea.

Una licencia de software es un acuerdo legal entre el propietario y el usuario de un producto software que concede al usuario ciertos permisos para utilizar el producto sin transferirle los derechos de propiedad intelectual sobre el mismo.

Page 18: Cap 7 ingenieria del software

18

La importancia de conocer copyright, las licencias de software y las patentes es enorme en el proceso de la ingeniería del software. A la hora de desarrollar un producto software, los ingenieros de software a menudo incorporan software de otros productos ; ya sea un producto completo, un subconjunto de componentes o incluso partes de código fuentes descargadas a través de internet.