lq curva del error del software y hardware

6
Ingeniería del Software Definición 1: Ingeniería del Software es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978] Ingeniería del Software Definición 2: Ingeniería del Software es la aplicación práctica del conocimiento científico en eldiseño y construcción de programas de computadora y 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 del Software Definición 3: Ingeniería del 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] Ingeniería del Software Definición 4: 1. La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software; es decir, la aplicación de ingeniería al software. 2. El estudio de enfoques como en (1) [IEEE, 1993] Ingeniería del Software Definición 5: Es una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza. {Sommerville}.

Upload: ed-ober

Post on 03-Oct-2015

12 views

Category:

Documents


4 download

DESCRIPTION

La curva del error del Software y Hardware

TRANSCRIPT

Ingeniera del Software Definicin 1: Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978] Ingeniera del Software Definicin 2: Ingeniera del Software es la aplicacin prctica del conocimiento cientfico en eldiseo y construccin de programas de computadora y la documentacin asociada requerida para desarrollar, operar y mantenerlos. Se conoce tambin como desarrollo de software o produccin de software. [Bohem, 1976] Ingeniera del Software Definicin 3: Ingeniera del software trata del establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable que sea fiable y trabaje en mquinas reales. [Bauer, 1972] Ingeniera del Software Definicin 4: 1. La aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin (funcionamiento) y mantenimiento del software; es decir, la aplicacin de ingeniera al software. 2. El estudio de enfoques como en (1) [IEEE, 1993] Ingeniera del Software Definicin 5: Es una disciplina que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema, hasta el mantenimiento de ste despus de que se utiliza. {Sommerville}.

Hoy en da el software tiene un doble papel. Es un producto y, al mismo tiempo, el vehculo para entregarlo. Como producto, hace entrega de la potencia informtica que incorpora el hardware informtico o, ms ampliamente, una red de computadoras que es accesible por hardware local. Si reside dentro de un telfono celular u opera dentro de una computadora central, el software es un transformador de informacin, produciendo, gestionando, adquiriendo, modificando, mostrando o transmitiendo informacin que puede ser tan simple como un solo bit, o tan complejo como una presentacin en multimedia. Como vehculo utilizado para hacer entrega del producto, el software acta como la base de control de la computadora (sistemas operativos), la comunicacin de informacin (redes) y la creacin y control de otros programas (herramientas de software y entornos).

El papel del software informtico ha sufrido un cambio significativo durante un periodo de tiempo superior a 50 aos. Enormes mejoras en rendimiento del hardware, profundos cambios de arquitecturas informticas, grandes aumentos de memoria y capacidad de almacenamiento y una gran variedad de opciones de entrada y salida han conducido a sistemas ms sofisticados y ms complejos basados en computadora. La sofisticacin y la complejidad pueden producir resultados deslumbrantes cuando un sistema tiene xito, pero tambin pueden suponer grandes problemas para aquellos que deben construir sistemas complejos.

Libros populares publicados durante los aos 70 Y 80 proporcionan una visin histrica til dentro de la percepcin cambiante de las computadoras y del software, y de su impacto en nuestra cultura. Osborne [OSB79] hablaba de una nueva revolucin industrial. Toffler [TOF80] llam a la llegada de componentes microelectrnicos la tercera ola del cambio en la historia de la humanidad, y Naisbitt [NAI82] predijo la transformacin de la sociedad industrial a una sociedad de informacin. Feigenbaum y McCorduck [FEI83] sugirieron que la informacin y el conocimiento (controlados por computadora) seran el foco de poder del siglo veintiuno, y Stoll [ST089] argument que la "comunidad electrnica" creada mediante redes y software es la clave para el intercambio de conocimiento alrededor del mundo.

Al comienzo de los aos 90, Toffler [TOF90] describi un cambio de poder en el que las viejas estructuras de poder (gubernamentales, educativas, industriales, econmicas y militares) se desintegraran a medida que

las computadoras y el software nos llevaran a la democratizacin del conocimiento. A Yourdon [YOU92] le

. preocupaba que las compaas en Estados Unidos pudieran perder su competitividad en empresas relativas al software y predijo el declive y la cada del programador americano. Hammer y Champy [HAM93] argumentaron que las tecnologas de informacin iban a desempear el papel principal en la reingeniera de la compaa. A mediados de los aos 90, la persistencia de las computadoras y del software gener una erupcin de libros por neo-Luddites (por ejemplo: Resisting the Virtual Life, editado por James Brook y Ian Boal, y The Future Does not Compute de Stephen Talbot). Estos autores critican enormemente la computadora, haciendo nfasis en preocupaciones legtimas pero ignorando los profundos beneficios que se han llevado a cabo [LEV95].

Al final de los aos 90, Yourdon [YOU96] volvi a evaluar las perspectivas del software profesional y sugiri la resurreccin y elevacin del programador americano. A medida que Internet creci en importancia, su cambio de pensamiento demostr ser correcto. Al final del siglo veinte, el enfoque cambi una vez ms. Aqu tuvo lugar el impacto de la bomba de relojera Y2K (por ejemplo: [YOU98b], [DEJ98], [KAR99]). Aunque muchos vieron las predicciones de los crticos del Y2K como reacciones, sus populares lecturas devolvieron la difusin del software a sus vidas. Hoy en da, la computacin omnipresente [NOR98] ha producido una generacin de aplicaciones de informacin que tienen conexin en banda ancha a la Web para proporcionar una capa de conexin sobre nuestras casas, oficinas, y autopistas [LEV99]. El papel del software contina su expansin.

El programador solitario de antao ha sido reemplazado por un equipo de especialistas del software, cada uno centrado en una parte de la tecnologa requerida para entregar una aplicacin concreta. Y de este modo, las cuestiones que se preguntaba el programador solitario son las mismas cuestiones que nos preguntamos cuando construimos sistemas modernos basados en computadoras:

En 1970, menos del uno por ciento de las personas podra haber descrito inteligentemente lo que significaba software de computadora. Hoy, la mayora de los profesionales y muchas personas en general piensan en su mayora que comprenden el software. Pero lo entienden realmente?

1.2.1. Caractersticas del software

Para poder comprender lo que es el software (y consecuentemente la ingeniera del software), es importante examinar las caractersticas del software que lo diferencian de otras cosas que los hombres pueden construir. Cuando se construye hardware, el proceso creativo humano (anlisis, diseo, construccin, prueba) se traduce finalmente en una forma fsica. Si construimos una nueva computadora, nuestro boceto inicial, diagramas formales de diseo y prototipo de prueba, evolucionan hacia un producto fsico (chips, tarjetas de circuitos impresos, fuentes de potencia, etc.).

El software es un elemento del sistema que es lgico, en lugar de fsico. Por tanto el software tiene unas caractersticas considerablemente distintas a las del hardware:

1. El software se desarrolla,

no se fabrica en un sentido clsico.

Aunque existen similitudes entre el desarrollo del software y la construccin del hardware, ambas actividades son fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseo, pero la fase de construccin del hardware puede introducir problemas de calidad que no existen (o son fcilmente corregibles) en el software. Ambas actividades dependen de las personas, pero la relacin entre las personas dedicadas y el trabajo realizado es completamente diferente para el software (vase el Captulo 7). Ambas actividades requieren la construccin de un producto pero los enfoques son diferentes.

Los costes del software se encuentran en la ingeniera. Esto significa que los proyectos de software no se pueden gestionar como si fueran proyectos de fabricacin.

2. El software no se estropea.

La Figura 1.1 describe, para el hardware, la proporcin

de fallos como una funcin del tiempo. Esa relacin, denominada frecuentemente curva de baera, indica qu el hardware exhibe relativamente muchos fallos al principio de su vida (estos fallos son atribuibles normalmente a defectos del diseo o de la fabricacin); una vez corregidos los defectos, la tasa de fallos cae hasta un nivel estacionario (bastante bajo, con un poco de optimismo) donde permanece durante un cierto periodo de tiempo. Sin embargo, conforme pasa el tiempo, el hardware empieza a desgastarse y la tasa de fallos se incrementa.

El software no es susceptible a los males del entorno que hacen que el hardware se estropee. Por tanto, en teora, la curva de fallos para el software tendra la forma que muestra la Figura 1.2. Los defectos no detectados harn que falle el programa durante las primeras etapas de su vida. Sin embargo, una vez que se corrigen (suponiendo que no se introducen nuevos errores) la curva se aplana, como se muestra. La curva idealizada es una gran simplificacin de los modelos reales de fallos del software. Sin embargo la implicacin es clara, el software no se estropea. Pero se deteriora!

Se estropea

Tiempo

FIGURA 1.1. Curva de fallos del hardware.

Esto que parece una contradiccin, puede comprenderse mejor considerando la curva actual mostrada en la Figura 1.2. Durante su vida, el software sufre cambios (mantenimiento). Conforme se hacen los cambios, es bastante probable que se introduzcan nuevos defectos, haciendo que la curva de fallos tenga picos como se ve en la Figura 1.2. Antes de que la curva pueda volver al estado estacionario original, se solicita otro cambio, haciendo que de nuevo se cree otro pico. Lentamente, el nivel mnimo de fallos comienza a crecer ---el software se va deteriorando debido a los cambios-o

Otro aspecto de ese deterioro ilustra la diferencia entre el hardware y el software. Cuando un componente de hardware se estropea se sustituye por una pieza de repuesto. No hay piezas de repuesto para el software. Cada fallo en el software indica un error en el diseo o en el proceso mediante el que se tradujo el diseo a cdigo mquina ejecutable. Por tanto, el mantenimiento del software tiene una complejidad considerablemente mayor que la del mantenimiento del hardware.

3. Aunque la industria tiende a ensamblar componen

, la mayora del software se construye a medida.

Consideremos la forma en la que se disea y se construye el hardware de control para un producto basado en computadora. El ingeniero de diseo construye un sencillo esquema de la circuitera digital, hace algn anlisis fundamental para asegurar que se consigue la funcin adecuada y va al armario donde se encuentran los catlogos de componentes digitales. Despus de seleccionar cada componente, puede solicitarse la compra.

Incremento del ndice de fallos por efectos laterales

Curva idealizada

Tiempo

FIGURA 1.2. Curvas de fallos real e idealizada del software.

A medida que la disciplina del software evoluciona, se crea un grupo de componentes de diseo estndar. Tomillos estndar y circuitos integrados preparados para la venta son solamente los dos mil componentes estndar que utilizan ingenieros mecnicos y elctricos cuando disean nuevos sistemas. Los componentes reutilizables se han creado para que el ingeniero pueda concentrarse en elementos verdaderamente innovadores de un diseo, por ejemplo, las partes del diseo que representan algo nuevo. En el mundo del hardware, la reutilizacin de componentes es una parte natural del proceso de ingeniera. En el mundo del software es algo que slo ha comenzado a lograrse en una escala amplia.

El componente de software debera disearse e implementarse para que pueda volver a ser reutilizado en muchos programas diferentes. En los aos 60, se construyeron bibliotecas de subrutinas cientficas reutilizables en una amplia serie de aplicaciones cientficas y de ingeniera. Esas bibliotecas de subrutinas reutilizaban de forma efectiva algoritmos bien definidos, pero tenan un dominio de aplicacin limitado. Hoy en da, hemos extendido nuestra visin de reutilizacin para abarcar no slo los algoritmos, sino tambin estructuras de datos. Los componentes reutilizables modernos encapsulan tanto datos como procesos que se aplican a los datos, permitiendo al ingeniero del software crear nuevas aplicaciones a partir de las partes reutilizables. Por ejemplo, las interfaces grficas de usuario de hoy en da se construyen frecuentemente a partir de componentes reutilizables que permiten la creacin de ventanas grficas, de mens despleglables y de una amplia variedad de mecanismos de interaccin.

1.2.2. Aplicaciones del software

El software puede aplicarse en cualquier situacin en la que se haya definido previamente un conjunto especfico de pasos procedimentales (es decir, un algoritmo) (excepciones notables a esta regla son el software de los sistemas expertos y de redes neuronales). El contenido y el determinismo de la informacin son factores importantes a considerar para determinar la naturaleza de una aplicacin de software. El contenido se refiere al significado y a la forma de la informacin de entrada y salida. Por ejemplo, muchas aplicaciones bancarias usan unos datos de entrada muy estructurados (una base de datos) y producen informes con determinados formatos. El software que controla una mquina automtica (por ejemplo: un control numrico) acepta elementos de datos discretos con una estructura limitada y produce rdenes concretas para la mquina en rpida sucesin.

6

El determinismo de la informacin se refiere a la predecibilidad del orden y del tiempo de llegada de los datos. Un programa de anlisis de ingeniera acepta datos que estn en un orden predefinido, ejecuta el algoritmo(s) de anlisis sin interrupcin y produce los datos resultantes en un informe o formato grfico. Se dice que tales aplicaciones son determinadas. Un sistema operativo multiusuario, por otra parte, acepta entradas que tienen un contenido variado y que se producen en instantes arbitrarios, ejecuta algoritmo s que pueden ser interrumpidos por condiciones externas y produce una salida que depende de una funcin del entorno y del tiempo. Las aplicaciones con estas caractersticas se dice que son indeterminadas.

Algunas veces es difcil establecer categoras gen_

ricas para las aplicaciones del software que sean significativas. Conforme aumenta la complejidad del software, es ms difcil establecer compartimentos ntidamente separados. Las siguientes reas del software indican la amplitud de las aplicaciones potenciales:

Software de sistemas. El software de sistemas es un conjunto de programas que han sido escritos para servir a otros programas. Algunos programas de sistemas (por ejemplo: compiladores, editores y utilidades de gestin de archivos) procesan estructuras de informacin complejas pero determinadas. Otras aplicaciones de sistemas (por ejemplo: ciertos componentes del sistema operativo, utilidades de manejo de perifricos,

procesadores de telecomunicaciones) procesan datos en gran medida indeterminados. En cualquier caso, el rea del software de sistemas se caracteriza por una fuerte interaccin con el hardware de la computadora; una gran utilizacin por mltiples usuarios; una operacin concurrente que requiere una planificacin, una comparticin de recursos y una sofisticada gestin de procesos; unas estructuras de datos complejas y mltiples interfaces externas.

Software de tiempo real. El software que coordina/analiza/controla sucesos del mundo real conforme ocurren, se denomina de tiempo real. Entre los elementos del software de tiempo real se incluyen: un componente de adquisicin de datos que recolecta y da formato a la informacin recibida del entorno externo, un componente de anlisis que transforma la informacin segn lo requiera la aplicacin, un componente de contro/salida

que responda al entorno externo, y un componente de monitorizacin que coordina todos los dems componentes, de forma que pueda mantenerse la repuesta en tiempo real (tpicamente en el rango de un milisegundo a un segundo).

Software de gestin. El proceso de la informacin comercial constituye la mayor de las reas de aplicacin del software. Los sistemas discretos (por ejemplo: nminas, cuentas de haberes-dbitos, inventarios, etc.) han evolucionado hacia el software de sistemas de informacin de gestin (SIG) que accede a una o ms bases de datos que contienen informacin comercial. Las aplicaciones en esta rea reestructuran los datos existentes para facilitar las operaciones comerciales o gestionar la toma de decisiones. Adems de las tareas convencionales de procesamiento s de datos, las aplicaciones de software de gestin tambin realizan clculo interactivo (por ejemplo: el procesamiento de transacciones en puntos de ventas).

Software de ingeniera y cientfcos. El software de ingeniera y cientfico est caracterizado por los algoritmos de manejo de nmeros. Las aplicaciones van desde la astronoma a la vulcanologa, desde el anlisis de la presin de los automotores a la dinmica orbital de las lanzaderas espaciales y desde la biologa molecular a la fabricacin automtica. Sin embargo, las nuevas aplicaciones del rea de ingeniera/ciencia se han alejado de los algoritmos convencionales numricos. El diseo asistido por computadora (del ingls CAD), la simulacin de sistemas y otras aplicaciones interactivas, han comenzado a coger caractersticas del software de tiempo real e incluso del software de sistemas.

Software empotrado. Los productos inteligentes se han convertido en algo comn en casi todos los mercados de consumo e industriales. El software empotrado reside en memoria de slo lectura y se utiliza para controlar productos y sistemas de los mercados industriales y de consumo. El software empotrado puede ejecutar funciones muy limitadas y curiosas (por ejemplo: el control de las teclas de un horno de microondas) o suministrar una funcin significativa y con capacidad de control (por ejemplo: funciones digitales en un automvil, tales como control de la gasolina, indicadores en el salpicadero, sistemas de frenado, etc.).

Software de computadoras personales. El mercado del software de computadoras personales ha germinado en las pasadas dos dcadas. El procesamiento de textos, las hojas de clculo, los grficos por computadora, multimedia, entretenimientos, gestin de bases de datos, aplicaciones financieras, de negocios y personales y redes o acceso a bases de datos externas son algunas de los cientos de aplicaciones.

Software basado en Web. Las paginas Web buscadas por un explorador son software que incorpora instrucciones ejecutables (por ejemplo, CGI, HTML, Perl, o Java), y datos (por ejemplo, hipertexto y una variedad de formatos de audio y visuales). En esencia, la red viene a ser una gran computadora que proporciona un recurso software casi ilimitado que puede ser accedido por cualquiera con un modem.

Software de inteligencia artificial. EI software de inteligencia artificial (IA) hace uso de algoritmos no numricos para resolver problemas complejos para los que no son adecuados el calculo 0 el anlisis directo. Los sistemas expertos, tambin llamados sistemas basados en el conocimiento, reconocimiento de patrones (imgenes y voz), redes neuronales artificiales, prueba de teoremas, y los juegos son representativos de las aplicaciones de esta categora.