Está en la página 1de 4

Desarrollo de Software

Clase 1

21/10/2002

Clasificacin de las cualidades del software


Las cualidades del software se pueden dividir en cualidades externas e internas. Las
cualidades externas son aquellas visibles a los usuarios del sistema. Las cualidades
internas son aquellas que son de importancia a los desarrolladores del sistema. En
general, para los usuarios del sistema solo son importantes las cualidades externas sin
embargo, son las cualidades internas las que asisten a los programadores a lograr las
cualidades externas.

Correcto, fiabilidad y robustez


Por lo general estos tres trminos son utilizados en forma alterna para caracterizar una
cualidad del software que implica que la aplicacin realiza todas sus funciones con
resultados esperados.

Correcto (correctness)
Un programa est funcionalmente correcto si se comporta de acuerdo a las
especificaciones de las funciones que debera proveer (especificaciones de requerimientos
funcionales, casos de uso, etc.). La definicin de correcto asume que existen las
especificaciones del sistema y que es posible determinar sin ambigedades si un
programa cumple con las especificaciones. El hecho de que un programa este correcto es
una propiedad matemtica que establece una equivalencia entre el programa y sus
requerimientos. Claramente, es una propiedad deseada en cualquier sistema.

Robustez (robustness)
Un programa es robusto si se comporta razonablemente, hasta en circunstancias que no
fueron anticipadas en las especificaciones de requerimientos. Un programa que asume la
entrada de datos perfecta y tan pronto como el usuario ejecute un comando incorrecto
genera un error de tiempo de ejecucin del cual no se puede recobrar, no se considera un
programa robusto. Obviamente, esta cualidad es difcil de definir, ya que si se pudiera
definir precisamente lo que se necesita para crear una aplicacin robusta, tambin se
pudiera especificar el comportamiento de dicha aplicacin. La robustez complementa a lo
correcto.

Especificacin
Correcto
Robusto
Fiabilidad (reliability)
Se define como la probabilidad de que el software opere de la manera esperada durante
un intervalo de tiempo. El hecho de que un sistema este correcto es una cualidad

Desarrollo de Software

Clase 1

21/10/2002

absoluta: cualquier desviacin de los requerimientos y el sistema est incorrecto. En


cambio, la nocin de confiabilidad o fiabilidad es relativa: si la consecuencia de un error
del software no es seria, entones el sistema incorrecto todava puede ser considerado
como confiable.

Desempeo (performance)
En la ingeniera de software por lo general se compara desempeo con eficiencia. Un
sistema de software es eficiente si utiliza los recursos de computacin econmicamente.
El desempeo es una importante cualidad ya que afecta la usabilidad del sistema. Existen
varias formas de evaluar el desempeo de un sistema. Un mtodo es medir la eficiencia
del programa analizando la complejidad de los algoritmos del programa. En la prctica,
existen tres enfoques diferentes para evaluar el desempeo de un sistema, estos son:
medidas, anlisis y simulacin.

Amigabilidad con el usuario (user friendliness)


Un sistema de software es amigable al usuario si los usuarios humanos lo encuentran fcil
de utilizar. Esta definicin refleja la naturaleza subjetiva de la amigabilidad con el
usuario. La interfaz del usuario es un componente importante de sta cualidad.

Verificabilidad (verifiability)
Un sistema de software es verificable si sus propiedades pueden ser fcilmente
verificadas. Por ejemplo, el desempeo de un sistema de software es un propiedad que es
de gran importancia verificar.
La verificacin se puede realizar a travs de mtodos formales de anlisis o a travs de
pruebas. Por lo general, la verificabilidad es una cualidad interna, aunque a veces tambin
se convierte en una cualidad externa.

Mantenibilidad (maintainability)
El trmino "mantenimiento de software" se utiliza comnmente para referirse la las
modificaciones hechas a un sistema de software luego de su estreno inicial. Existe
evidencia que demuestra que los costos de mantenimiento a un programa exceden el 60%
del costo total del software. Para analizar los factores que afectan tales costos, se
acostumbra dividir el mantenimiento de software en tres categoras: correctivo, adaptivo
y perfectivo.
Mantenimiento correctivo tiene que ver con la supresin de errores residuales presentes
en el producto cuando fue estrenado, como tambin errores que fueron introducidos al
sistema durante su mantenimiento.
Mantenimiento adaptivo implica ajustar la aplicacin a cambios en el ambiente o entorno.
Por ejemplo, cambios en el sistema operativo, cambio de sistema manejador de bases de
datos, etc.
Mantenimiento perfectivo implica cambios en el software para mejorar algunas de sus
cualidades.
El mantenimiento de software se visualiza como dos cualidades diferentes: reparabilidad
y evolucionabilidad. El software es reparable si permite eliminar sus defectos; es

Desarrollo de Software

Clase 1

21/10/2002

evolucionable o permite su evolucin si permite introducir cambios para satisfacer


nuevos requerimientos.

Reparabilidad (repairability)
Un sistema de software es reparable si permite la correccin de sus defectos con una
cantidad de trabajo limitado. La reparabilidad de un producto afecta su confiabilidad. Por
otro lado, la necesidad de reparabilidad disminuye mientras aumenta la confiabilidad.

Evolucionabilidad
Como otros productos de ingeniera, los productos de software son modificados a travs
del tiempo para proveer nuevas funciones o para cambiar funciones existentes. El hecho
que el software sea un producto tan maleable hace sea extremadamente fcil aplicar
modificaciones a una implementacin.

Reusabilidad (reusability)
La reusabilidad es la habilidad que tienen elementos de software para servir en la
construccin de diferentes aplicaciones.
La reusabilidad est relacionada con la evolucionabilidad. Durante la evolucin de un
producto, se modifica para construir una nueva versin del mismo producto. Durante el
reuso de un producto, se utiliza ese producto, quizs no en su totalidad, para crear otro
producto diferente. La reusabilidad es muy difcil de conseguir a posteriori, por lo tanto
se deben realizar esfuerzos durante el proceso de desarrollo de componentes de software
para conseguir la reusabilidad de esos componentes.

Portabilidad (portability)
El software es portable si puede ser ejecutado en diferentes ambientes. el trmino
ambiente se refiere a plataformas de hardware o ambientes de software como lo son los
sistemas operativos. Con la proliferacin de diferentes procesadores y sistemas
operativos, la portabilidad se ha convertido en una cualidad importante para los
ingenieros de software.

Comprensibilidad (understandability)
La comprensibilidad, desde el punto de vista interno, es una cualidad de un sistema de
software que ayuda a alcanzar muchas otras cualidades como evolucionabilidad y
verificabilidad. Desde el punto de vista externo, el usuario considera al sistema
comprensible si posee un comportamiento predecible. La comprensibilidad externa es un
componente de la amigabilidad con el usuario.

Interoperabilidad (interoperability)
La interoperatibilidad se refiere a la habilidad de un sistema de coexistir y cooperar con
otros sistemas. Esta cualidad aunque rara en los productos de software, abunda en otros
productos de la ingeniera. La interoperabilidad se consigue a travs de la estandarizacin
de interfaces.

Desarrollo de Software

Clase 1

21/10/2002

Eficiencia
Eficiencia es la habilidad que tiene un sistema de imponer la menor cantidad de
demandas como sea posible sobre recursos de hardware, como tiempo del procesador,
espacio que ocupa en la memoria interna y externa, ancho de banda utilizado en
dispositivos de comunicacin, etc.

También podría gustarte