Ingenieria En Software
Roze8 de Diciembre de 2013
3.641 Palabras (15 Páginas)225 Visitas
2.1 definición de ING de software
Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software.1 Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.2
Se pueden citar otras definiciones enunciadas por prestigiosos autores:
• Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
• Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
• Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.
Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software". En Hispanoamérica el término usado normalmente es el primero de ellos.
La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa.
La IS se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la forma más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.
2.2 características y mitos del software
• CARACTERÍSTICAS DEL SOFTWARE:
• Fiable
Capacidad de ofrecer los mismos resultados bajo las mismas condiciones
• Eficiente
Utilización óptima de los recursos de la máquina
• Robusto
No poseer un comportamiento catastrófico ante situaciones excepcionales (Tolerante a fallos)
• Correcto
Se ajusta a las especificaciones dadas por el usuario
• Portable
Capaz de integrarse en entornos distintos con el mismo esfuerzo
• Adaptable (extensibilidad
Modificar alguna función sin que afecte a sus actividades
• Inteligible
Diseño claro, bien estructurado y documentado
• No Erróneo
No exista diferencia entre los valores reales y los calculados
• Reutilizable (reusabilidad)
• Mantenibilidad
• Confiabilidad
o fiabilidad
o seguridad
o protección
• Eficiencia
• Usabilidad
• Elemento lógico, no físico
• Desarrollado, no ‘fabricado’
• No se ‘estropea’, ¡se deteriora! (Deterioro por ‘cambios’)
• Mayoritariamente cerrado
• Medido
• La mayoría del software se hace a la medida.
• No se ensambla de componentes
• Útil (al cliente)
• Integridad
• Resultados correctos con alto grado de exactitud
• Consistencia de función
• Accesible (al usuario)
• Buena ingeniería humana
• Fácil de aprender y usar
• MITOS DEL SOFTWARE:
• El costo de computadores es menos que él de dispositivos analógicos o electromecánicos.
La verdad es que el hardware es barato. Pero el costo de escribir y certificar software muy confiable y seguro, más el costo de la manutención sin poner en peligro la confiabilidad y la seguridad, puede ser enorme. Por ejemplo, el software del trasbordador espacial (400.000 palabras) cuesta más de US$100.00.000 por año a mantener. Un sistema electromecánico es frecuentemente más barato, particularmente si se pueden usar diseños estándares.
• Es fácil cambiar el software.
Los cambios son fáciles, pero hacer cambios sin introducir errores es muy difícil. Hay que verificar el software de nuevo con cada cambio. También, con cambios el software se pone frágil.
• Los computadores proveen más confiabilidad que los dispositivos que reemplazan.
Es verdad que el software no falla como dispositivos normales, pero hay poca evidencia que indica que el comportamiento erróneo de software no es un problema significativo.
Estudios de sistemas muy críticos a la seguridad han mostrado que hasta 10% de los módulos se desviaron de la especificación en un modo o más de operación. Muchos errores eran pequeños, pero aproximadamente 1 en 20 producía efectos directos y observables en el sistema controlado.
Parece que la solución es sencillamente implementar el software correctamente. Pero esto es mucho más difícil que esperado.
Por ejemplo, el software del trasbordador espacial ha sido usado desde 1980 y NASA ha invertido recursos enormes en la verificación y manutención de este software. Sin embargo, desde la operación del trasbordador se han encontrado 16 errores de grado de severidad 1 (pueden producir una pérdida del trasbordador y su tripulación) en software liberado, de que ocho estaban en código usado en vuelos. Otros errores de menor severidad han ocurrido durante misiones (tres amenazaron el cumplimiento de la misión) a pesar que NASA tiene uno de los procesos de desarrollo y verificación de software más completos existentes.
No existen técnicas coma la redundancia para aumentar sencillamente la confiabilidad del software. Y aun cuando sea posible escribir software sin errores, las condiciones ideales para desarrollar software (dinero y tiempo sin límites) nunca existen.
• Mayor confiabilidad de software aumenta la seguridad.
Se puede mejorar la confiabilidad de software eliminando errores sin relación a la seguridad del sistema, así aumentando la confiabilidad sin aumentar la seguridad.
También, la confiabilidad de software se define como conformidad con los requerimientos, mientras que la mayoría de los errores de software crítico a la seguridad son debidos a errores en los requerimientos. El software puede ser correcto y todavía causar accidentes graves.
• La prueba o verificación formal del software puede eliminar todos los errores.
Las limitaciones de la prueba de software son bien conocidas. Básicamente hay demasiados estados en software real para probarlo completamente.
En el futuro la verificación puede chequear la consistencia entre las especificaciones y la implementación, pero esto requiere que las especificaciones (escritas en notación formal) son libres de errores.
También, muchos errores importantes son debidos a cosas que no están en el código. Por ejemplo, muchos accidentes relacionados a software han involucrado sobrecarga. Un sistema para los servicios de emergencia dejó de funcionar cuando recibió demasiadas llamadas.
• El rehúso de software aumenta la seguridad.
Aunque el reuso puede aumentar la confiabilidad, puede disminuir la seguridad. La razón es porque engendra el falso sentido de seguridad y porque no se consideraron los peligros específicos del sistema nuevo cuando el software fue diseñado originalmente. Ejemplos:
1. El Therac-20, partes de lo cual se usaban en el Therac-25, contenía el mismo error que causó dos muertes en el Therac-25. El error no causó problemas en el Therac-20 porque resultó solamente en un plomo fundido en vez de un sobredosis masivo de radiación.
2. Software de control del tráfico aéreo usado muchos años en los Estados Unidos no se pudo reutilizar en Gran Bretaña. Los desarrolladores norteamericanos han ignorado el problema de cero grados de longitud.
3. Software de aviación escrito para uso en el hemisferio boreal frecuentemente crea problemas cuando usado en el hemisferio austral. También software para cazas F-16 ha causado accidentes cuando usado en Israel en aviones volados sobre el Mar Muerto, donde la altitud es menor que el nivel del mar.
La seguridad no es una propiedad del software, sino es una combinación del diseño del software y del ambiente en que es usado.
• Los computadores disminuyen el riesgo por contraste con los sistemas mecánicos.
Los computadores tienen esta potencial y pueden automatizar tareas peligrosas como el pintar de espray. Pero otros argumentos son discutibles:
Los computadores permiten un control más fino ya que pueden revisar parámetros más frecuentemente, hacer calculaciones en tiempo real,
...