Características del software

En el software podemos identificar un conjunto de características que permiten identificarlo.

– No tiene existencia física.
– Se desarrolla, no es manufacturado.
– Es una herramienta, un medio.
– La existencia del software sólo se da con la ayuda del hardware o computadora.
– Su entorno cambia constantemente.
– Depende de los requerimientos.
– Por lo general se construye a la medida.
– El desarrollo de software es un trabajo intelectual.
– Algunas partes se pueden utilizar en varios proyectos.
– El software no se estropea, ni desgasta, sólo se hace obsoleto.
– En desarrollos grandes se dificulta su control.
– Es maleable.

Por otra parte, desde la perspectiva de los modelos de calidad, el software debe de tener ciertas características que permitan determinar su calidad, de ellas las más comunes se pueden encontrar las siguientes:

Correcto. Grado con el cual un sistema o componente se encuentra libre de defectos en sus especificaciones, diseño e implementación. Grado en el cual el software, documentación u otros elementos cumplen con los requerimientos especificados.

Confiabilidad. Capacidad de un sistema o componente para desempeñar sus funciones requeridas bajo condiciones establecidas durante un periodo de tiempo específico.

Flexibilidad. Es la facilidad con la cual un sistema o componente puede ser modificado para ser utilizado en aplicaciones o ambientes diferentes a los que inicialmente diseñados.

Reusabilidad. Es el grado con el cual un módulo de software u otro producto pueden utilizarse en más de un programa de computadora o sistema de software.

Portabilidad. La facilidad con la cual un sistema o componente puede transferirse entre varios ambientes de hardware o software.

Comparabilidad. Capacidad de dos o más sistemas o componentes para desempeñar sus funciones especificadas mientras comparten el mismo ambiente de hardware o software. Capacidad de dos o más sistemas o componentes para intercambiar información.

Integridad. Grado con el cual un sistema un sistema o componente previene accesos no autorizados o modificaciones a programas de computadora o datos.

Funcionalidad. Capacidad del software de contener las funciones acordadas y las necesidades implicadas cuando el software es utilizado bajo condiciones específicas.

Fiabilidad. Capacidad del software para mantener un nivel específico de desempeño cuando es utilizado en condiciones específicas.

Facilidad de uso. Capacidad del software para ser entendido, enseñable, usado y atractivo al usuario cuando es utilizado en condiciones específicas.

Eficiencia. La capacidad del software para proporcionar un desempeño adecuado, relacionado a la cantidad de recursos utilizados en ciertas condiciones.

Facilidad de mantenimiento. La capacidad del software para ser modificado. Las modificaciones pueden incluir las correcciones, mejoras o adaptaciones a los cambio del entorno y en los requerimientos y especificaciones funcionales.

Portabilidad. Capacidad del software para ser transferido de un ambiente a otro.

Robustez. El software es robusto cuando se comporta razonablemente en circunstancias que no fueron anticipadas en los requerimientos.

Desempeño. El software es eficiente si utiliza los recursos de la computadora de manera económica.

Verificabilidad. El software es verificable cuando sus propiedades pueden ser verificadas fácilmente.

Reparable. El software tiene esta cualidad cuando permite reparar sus defectos con una limitada cantidad de trabajo.

Adaptabilidad. El software evoluciona cuando es modificado en el tiempo para proveer nuevas funciones o para modificar las que tiene.

Interoperabilidad. Es la habilidad del software para coexistir con otros sistemas. Estas últimas características permiten evaluar al software y algunas de ellas (dependiendo del modelo) se llegan a dividir en sub-características y atributos.

Los cuales pueden interactuar entre ellos. Con el tiempo, estas características han sido incorporadas por los modelos de calidad, lo cual no quiere decir que sean todas o que deban de utilizarse por completo cada vez que se realiza un desarrollo de software, ya que en algunos casos se dará preferencia a unas características sobre otras. Cada desarrollo tiene sus propias funciones y características e identificarlas es una habilidad que debe formarse por quienes se encargan de desarrollar software.

Fuente: Apuntes de Ingeniería del Software de la FCA de la UNAM