Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
17Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Cualidades Del Software

Cualidades Del Software

Ratings: (0)|Views: 4,373|Likes:
Published by ana9131

More info:

Published by: ana9131 on Apr 24, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See More
See less

04/12/2013

pdf

text

original

 
Introducción a la Ingeniería de Software Curso 2002Instituto de Computación Facultad de Ingeniería Universidad de la República Página 1 de 7
Cualidades del software
Correctitud (Correctness): ......................................................................................................... 1Confiabilidad (Reliability): .......................................................................................................... 1Robustez (Robustness): ............................................................................................................ 2Performance (también Eficciency): ............................................................................................. 2 Amigabilidad (Friendliness): ....................................................................................................... 2 Verificabilidad (Verifiability): ...................................................................................................... 3Mantenibilidad (Maintainability): ................................................................................................ 3
Reparabilidad (Reparability): ............................................................................................................. Evolucionabilidad (Evolvability): .........................................................................................................
Reusabilidad (Reusability): ........................................................................................................ 4Portabilidad (Portability): ........................................................................................................... 5Comprensibilidad (Understandability): ........................................................................................ 5Interoperabilidad (Interoperability): ........................................................................................... 6Productividad (Productivity): ...................................................................................................... 6Oportunidad (Timeliness) .......................................................................................................... 6 Visibilidad (Visibility): ................................................................................................................ 7
Correctitud (Correctness): 
Un programa es funcionalmente correcto si se comporta de acuerdo a la especificación de las funciones(especificación de requerimientos funcionales) que debería proveer. Esta definición de correctitud asume queexiste una especificación de requerimientos funcionales del sistema y que es posible determinar en forma noambigua si las cumple o no. Se presentan diversas dificultades cuando no existe dicha especificación, o siexiste pero está escrita informalmente utilizando, por ejemplo, lenguaje natural por lo que es posible quecontenga ambiguedades.La correctitud es una propiedad matemática que establece la equivalencia entre el software y suespecificación, por lo que cuanto más riguroso se haya sido en la especificación, más precisa y sistemáticapodrá ser su evaluación.Posteriormente se verá que la correctitud puede ser evaluada mediante diversos métodos, algunos deenfoque experimental como las pruebas, otros de enfoque analítico como verificación formal de lacorrectitud.Es de notar que esta definición de correctitud no toma en consideración el que la especificación en sí mismapuede ser incorrecta por contener inconsistencias internas, o no corresponder de forma adecuada a lasnecesidades para las que fue concebido el programa.
Confiabilidad (Reliability): 
Informalmente el software es confiable si el usuario puede tenerle confianza. Formalmente la confiabilidadse define en términos del comportamiento estadístico: la probabilidad de que el software opere como esesperado en un intervalo de tiempo especificado. Contrariamente a la correctitud que es una cualidadabsoluta, la confiabilidad es relativa. Cualquier desviación de los requerimientos hace que el sistema seaincorrecto, por otro lado, si la consecuencia de un error en el software no es seria, el software incorrectoaún puede ser confiable.En el caso ideal en el que la especificación de requerimientos funcionales captura todas las propiedadesdeseables de la aplicación y no hay propiedades indeseables erróneamente especificadas, el conjunto detodos los programas confiables incluye el conjunto de programas correctos, pero no a la inversa. En lapráctica, como la especificación es un modelo de lo que quiere el usuario que puede ser o no adecuado parasus necesidades y requerimientos reales, lo máximo que puede hacer el software es cumplir losrequerimientos especificados del modelo, sin asegurar la adecuación del mismo. Pueden tenerse aplicacionescorrectas diseñadas para requerimientos “incorrectos”, por lo que la correctitud del software puede no sersuficiente para garantizar al usuario que el software se comporta como “es esperado”.
 
Introducción a la Ingeniería de Software Curso 2002Instituto de Computación Facultad de Ingeniería Universidad de la República Página 2 de 7Los productos de la ingeniería son confiables, pero desafortunadamente los productos del software son engeneral liberados conjuntamente con una lista de “bugs” conocidos. Este es uno de los síntomas de lainmadurez de la Ingeniería de Software como disciplina ingenieril y sólo podrá alcanzar ese estatus cuandose logre que la confiabilidad en el software sea comparable a la confiabilidad en otros productos como porejemplo los automóviles.
Robustez (Robustness): 
Un progama es robusto si se comporta en forma razonable aún en circunstancias que no fueron anticipadasen la especificación de requerimientos; por ejemplo cuando encuentra datos de entrada incorrectos o algúnmalfuncionamiento del hardware como rotura de disco. Un programa que genere un error no recuperable entiempo de ejecución tan pronto como el usuario ingrese inadvertidamente un comando incorrecto no serárobusto, aunque podría ser correcto si en la especificación de requerimientos no se establece la acción atomar si se ingresa un comando incorrecto.La robustez es una cualidad difícil de definir, ya que si se pudiera establecer en forma precisa lo que sedebiera hacer para obtener una aplicación robusta, se podría especificar completamente el comportamiento “razonable”, con lo cual sería equivalente a la correctitud, o a la confiabilidad en el caso ideal mencionado enla definición anterior.Se puede observar que la robustez y la correctitud están fuertemente relacionadas: si se incluye unrequerimiento en la especificación será un tema de correctitud, si no se incluye podría ser un tema derobustez. La línea divisoria entre ambos es la especificación del sistema. La relación con la confiabilidadsurge del hecho de que no todos los comportamientos incorrectos significan problemas igualmente serios,algunos comportamientos incorrectos pueden ser tolerados.
Observación: 
La correctitud, confiabilidad y robustez también se aplican al proceso de producción del software, porejemplo un proceso es robusto si puede adaptarse a cambios no previstos en el entorno como ser una nuevaliberación del sistema operativo o una transferencia repentina de la mitad de los empleados a otra sección,un proceso es confiable si lleva consistentemente a la producción de productos de alta calidad.
Performance (también Eficciency): 
En la Ingeniería de Software generalmente performance equivale a eficiencia. Un sistema de software eseficiente si utiliza los recursos computacionales en forma económica. La performance de un sistema esimportante porque afecta su usabilidad, por ejemplo, si es muy lento reduce la productividad de losusuarios, si usa demasiado espacio de disco puede ser muy caro de ejecutar, si utiliza demasiada memoriapuede afectar al resto de las aplicaciones que se están ejecutando o ejecutarse demasiado lentamentemientras el sistema operativo intenta balancear el uso de la memoria por parte de las distintas aplicaciones.Detrás de estos problemas están los límites cambiantes de la eficiencia según cambia la tecnología, ya quela visión de “demasiado caro” cambia constantemente según los avances tecnológicos, actualmente unacomputadora cuesta bastante menos que hace unos años y son bastante más poderosas. La performance deun sistema también afecta su escalabilidad: un algoritmo de orden al cuadrado puede funcionar bien conentradas pequeñas y no funcionar para nada con entradas muy grandes.
 Amigabilidad (Friendliness): 
Un sistema de software es amigable si un usuario humano lo encuentra fácil de utilizar. Esta definiciónrefleja la naturaleza subjetiva de la amigabilidad: una aplicación utilizada por usuarios no experientes calificacomo amigable por varias propiedades distintas a las de una aplicación utilizada por programadoresexpertos, por ejemplo, los primeros apreciarían el uso de menúes mientras los segundos se sentirían máscómodos ingresando comandos.
 
Introducción a la Ingeniería de Software Curso 2002Instituto de Computación Facultad de Ingeniería Universidad de la República Página 3 de 7La interfaz de usuario es un componente importante de la amigabilidad al usuario, siguiendo el ejemplo, unsistema con una interfaz de ventana y un mouse es más amigable para un usuario no experiente, mientrasque un usuario más avanzado podría preferir utilizar un conjunto de comandos. La amigabilidad es más quela interfaz de usuario, por ejemplo, un sistema embebido no tiene interfaz humana, ya que sólo interactúacon hardware y quizás con otros sistemas. En este caso la amigabilidad está dada por la facilidad con que elsistema puede configurarse y adaptarse al ambiente de hardware.Las cualidades del software vistas previamente también afectan a la amigabilidad, por ejemplo un sistemaque produce respuestas erróneas no es amigable sin importar lo “linda” que sea la interfaz de usuario, delmismo modo que un sistema que produce respuestas más lentas de lo que requiere el usuario no esamigable aunque estas respuestas sean desplegadas en colores.
Verificabilidad (Verifiability): 
Un sistema de software es verificable si sus propiedades pueden ser verificadas fácilmente. Por ejemplo, lacorrectitud o la performance de un sistema son propiedades que interesa verificar. El diseño modular,prácticas de codificación disciplinadas, y la utilización de lenguajes de programación adecuados contribuyena la verificabilidad de un sistema.La verificabilidad es en general una cualidad interna pero a veces también puede ser externa, por ejemplo,en muchas aplicaciones de seguridad crítica, el cliente requiere la verificación de ciertas propiedades.
Mantenibilidad (Maintainability): 
El término mantenimiento del software es utilizado generalmente para referirse a las modificaciones que serealizan a un sistema de software luego de su liberación inicial, siendo visto simplemente como “correcciónde bugs”. Algunos estudios han mostrado sin embargo, que la mayor parte del tiempo utilizado enmantenimiento es para agregarle al producto características que no estaban en las especificacionesoriginales o estaban definidas incorrectamente.En realidad la palabra “mantenimiento” no es apropiada para el software ya que cubre un amplio rango deactividades que tienen que ver con la modificación de un software existente para lograr una mejora, untérmino que se aplica mejor a este proceso es “evolución del software”. Además en otros productos deingeniería como hardware de computadoras, automóviles o máquinas de lavar, el mantenimiento se refiereal costo de reparación del producto en respuesta al deterioro gradual de sus partes debido a su uso, sinembargo, se seguirá utilizando este término también para el software. Hay evidencia de que los costos demantenimiento exceden el 60% del total de los costos del software. Para analizar los factores que afectanestos costos, es usual dividir el mantenimiento del software en tres categorías: correctivo, adaptativo yperfectivo.El mantenimiento correctivo tiene que ver con la eliminación de errores residuales presentes en el productoal ser liberado así como errores introducidos al software durante su mantenimiento. Este tipo demantenimiento corresponde aproximadamente al 20% de los costos de mantenimiento.El mantenimiento adaptativo involucra el ajuste de la aplicación a cambios en el entorno, por ejemplo unanueva liberación de hardware o del sistema operativo, o un nuevo sistema de bases de datos. En este casola necesidad de cambios al software no puede ser atribuida a una característica del software en sí mismocomo la inhabilidad de proporcionar determinada funcionalidad requerida por el usuario o errores residuales,sino que se originan debido a cambios en su entorno. Este tipo de mantenimiento correspondeaproximadamente a otro 20% de los costos de mantenimiento.El mantenimiento perfectivo involucra cambios en el software para mejorar algunas de sus cualidades, loscuales se deben a la necesidad de modificar las funciones ofrecidas por la aplicación, agregar nuevasfuncionalidades, mejorar la performance, facilitar su utilización, entre otras. Estos cambios pueden seroriginados tanto por el ingeniero de software para mejorar el estatus del producto en el mercado, como porel cliente debido a nuevos requerimientos. Este tipo de mantenimiento corresponde a más del 50% de loscostos de mantenimiento.

Activity (17)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Omar Martínez liked this
Patricia Pessino liked this
Guby Caballero liked this
Kimbelys Pacheco liked this
Pablo Ramirez liked this
Robert Rosas liked this
pssssssssssss liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->