Documentos de ciencia y tecnología

Atributo de calidad

Zhao Jiaming Gao Xinyue Bai Mingxia

(Escuela de Ingeniería de Software , Universidad Ferroviaria de    Shijiazhuang, Shijiazhuang 050300, provincia de Hebei)

Resumen : Desarrollar software de alta calidad es una tarea difícil. Una de las razones importantes es que la definición de "calidad" es diferente e impredecible. Cada año, una compañía de software premia al equipo de desarrollo de acuerdo con la calidad del software que desarrolla, y un equipo con buena calidad recibirá el premio correspondiente. Sin embargo, la forma de evaluar la calidad del software es un dolor de cabeza, por lo que utilizan indicadores cuantitativos, en función de la cantidad de defectos informados por los usuarios. Un software es de calidad superior y solo ha recibido un defecto desde que se introdujo en el mercado. ¿Pero es este software realmente un software de alta calidad? Como resultado, el contenido de este defecto es: "¡El software no se puede instalar!" Para comprender si la calidad del software cumple con los requisitos, debemos definir los atributos de calidad del software. Al mismo tiempo, los atributos de calidad también son factores importantes que afectan la arquitectura del software. La arquitectura del software está determinada principalmente por los requisitos. Los requisitos son funcionales y no funcionales. Los requisitos no funcionales se refieren principalmente a atributos de calidad, es decir, varios "atributos".

Palabras clave: atributos de calidad, objetivos cuantitativos, arquitectura de software.

Desarrollar software de alta calidad es una tarea difícil. Una de las razones importantes es que la definición de "calidad" es diferente e impredecible. Una empresa de software recompensará al equipo de desarrollo de acuerdo con la calidad del software desarrollado cada año, y el equipo con buena calidad será recompensado en consecuencia. Sin embargo, cómo evaluar la calidad del software es un dolor de cabeza, por lo que utilizan indicadores cuantitativos, basados ​​en la cantidad de defectos que los usuarios envían. La calidad de un software es superior. Desde su lanzamiento al mercado, solo se ha recibido un defecto. ¿Pero es este software realmente un software de alta calidad? El resultado de este defecto es: "¡el software no se puede instalar!" Para saber si la calidad del software cumple con los requisitos, debemos definir los atributos de calidad del software. Al mismo tiempo, el atributo de calidad también es un factor importante que afecta la arquitectura del software. La arquitectura del software está determinada principalmente por los requisitos, que son funcionales y no funcionales. Los requisitos no funcionales se refieren principalmente a atributos de calidad, es decir, varios "atributos".

Palabras clave: atributo de calidad; objetivos cuantitativos; arquitectura de software;

 

1. Introducción

 

Los sistemas de software generalmente pueden aumentar la flexibilidad mediante capas, componentes, etc. Kevin Kelly tiene la misma opinión en su libro "Fuera de control". La clave para construir un sistema de software flexible es encontrar el límite de esa unidad simple. Cada unidad debe ser lo suficientemente simple, pero no demasiado simple. Einstein dijo "¡Simple, pero no más simple!" Podemos ver que la mayoría de estos problemas Problemas de gestión. Personalmente, creo que para lograr la coherencia conceptual, los nuevos conceptos deben introducirse lo menos posible en el proceso de diseño de software. El proceso de diseño de software es un proceso abstracto. Resumimos sistemas de software complejos en capas, dominios problemáticos, procesos, módulos, servicios e interfaces. Todos estos son necesarios. Sin embargo, estas cosas deberían ser lo menos posible. Los problemas que se pueden resolver en una o dos capas nunca deben dividirse en cuatro o cinco capas, pueden proporcionar una interfaz API y nunca deben ser tres. La mayoría de las personas no se molestarán en comprender los nuevos conceptos que diseñó en la altura. Es probable que diseñen una solución paralela que les sea más fácil de entender para resolver el mismo problema.

 

2. Atributos de calidad

 

1. Disponibilidad

 

  La disponibilidad se refiere a la proporción de tiempo que el sistema funciona normalmente. La usabilidad se verá afectada por errores del sistema, ataques maliciosos, altas cargas y otros problemas.

Al desarrollar software de gestión en una empresa de almacenamiento, "HA" ( alta disponibilidad ) es un atributo de rendimiento que a menudo se menciona. "DU" (datos no disponibles) y "DL" (datos perdidos) son problemas de usabilidad muy graves.

Los principales problemas que enfrenta la usabilidad son:

Falla de la capa física: como el tiempo de inactividad del servidor de la base de datos, el corte de energía y los atrasos en la red , desconectado por China Telecom

Ataques maliciosos: como los ataques DOS ( denegación de servicio )

Problemas o errores de diseño de software : por ejemplo, un bloqueo de control de recursos incorrecto hace que cierto recurso esté ocupado durante mucho tiempo

Actualización o mantenimiento diario

Cómo diseñar la conmutación por error ( failover ), generalmente puede usar redundancia para eliminar puntos únicos de falla en el sistema. Puede ser una variedad de respaldo distribuido caliente y frío.

Cómo diseñar una actualización en línea. Una de mis principales responsabilidades en esa empresa de almacenamiento era hacer actualizaciones en línea, porque el dispositivo de almacenamiento consta de dos unidades que funcionan simultáneamente, por lo que el proceso de actualización es simplemente actualizar primero la primera unidad y luego actualizar la segunda unidad. Parece muy simple, pero el proceso de actualización real es muy complicado. Antes de la actualización, se realizarán muchas comprobaciones de estado, como verificar si ambas unidades funcionan correctamente, si hay un disco defectuoso y si la versión del dispositivo de almacenamiento es satisfactoria. Requerimientos, etc. En particular, debido a los complicados modelos de hardware y software de los dispositivos de almacenamiento, varios entornos operativos, varios errores de software y controles de salud son muy complejos. Por supuesto, en la mayoría de los casos, los usuarios pueden omitir la comprobación de estado, ¡pero el error de actualización causado por esto es bajo su propio riesgo!

Cómo diseñar el manejo de excepciones. El manejo de excepciones es un gran tema. Para admitir la alta disponibilidad, ¿cómo debemos manejar las excepciones? Por ejemplo, un sitio web tiene que procesar los pedidos de los usuarios, sin embargo, debido a la falla del servidor de la base de datos, aunque los servicios front-end son normales, los pedidos no pueden procesarse. ¿Cómo abordaría la situación anormal de este servidor de base de datos? La mayoría de los programadores escribirán un registro cuando detecten una excepción, registrarán la excepción y luego mostrarán un código de excepción en la interfaz de usuario del cliente que nadie puede entender. Tal manejo de excepciones es en realidad casi lo mismo que no hacerlo, o incluso peor. ¿Sería mejor traducir el código de excepción a un idioma que los usuarios puedan entender? Tal vez, si le dice al usuario que su base de datos no funciona, regrese mañana, ¡y se puede imaginar lo decepcionado que estará el usuario! Un buen manejo de excepciones es registrar la solicitud de pedido del usuario y enviarla para su procesamiento manual, o esperar a que la base de datos se procese automáticamente después de la recuperación, y decirle al usuario que el pedido ha sido procesado, y puede haber demoras.

 

2 , puede ser modificado de

  La flexibilidad se refiere a si el sistema puede adaptarse fácilmente a los cambios en el entorno y las necesidades.

Por ejemplo, ahora la demanda es devolver todos los números primos hasta el 10. Podemos usar los siguientes procedimientos:

función prime () {

    resultado var = [2,3,5,7];

    resultado de retorno;

}

Este programa es muy bueno, pero no es muy flexible. A través del análisis de los requisitos, parece que podemos prever que 10 es un cambio muy probable en la demanda, por lo que la forma de aumentar la flexibilidad es cambiar 10 en un parámetro variable :

función prime (rango) {

    resultado var = [];

    era yo, k;

    para (i = 2; i <= rango; i ++) {

      resultado.push (i);

    }

    for (i = 0; i <result.length; i ++) {

      para (k = i + 1; k <resultado.length; k ++) {

        if (resultado [k]% resultado [i] == 0) {

          result.splice (k, 1);

        }

      }

    }

    resultado de retorno;

}

Para aumentar la flexibilidad del segundo código, el código se vuelve más complejo y el tiempo de ejecución se alarga. Por supuesto, los números primos en la primera parte del código no se han verificado mediante cálculos, y yo mismo los calculé, porque una operación simple como números primos hasta 10 no requiere una computadora.

¿Cuáles son los problemas en el desarrollo de software que causarán una disminución de la flexibilidad?

Un sorprendente número de códigos debido a varias razones.

b. Código demasiado complejo

c, el código que se repite constantemente

3 , el rendimiento

  El rendimiento generalmente se refiere a la eficiencia "espacio-temporal" del software, no solo a la velocidad del software. Requiere que tanto el caballo corra rápido como el caballo que coma menos. El trabajo clave de la optimización del rendimiento es encontrar el "cuello de botella" que limita el rendimiento. No estar ocupado con la optimización del rendimiento. Es como exprimir el agua de una esponja. Si no exprime, el agua no saldrá. Cuanto más exprime la esponja, más seco.

4 , la facilidad de uso

  La facilidad de uso se refiere a la causa raíz de la facilidad de uso del software por parte de los usuarios. La causa raíz de la poca facilidad de uso del software : hay un defecto en la educación de las universidades de ciencia e ingeniería, y los desarrolladores han hecho problemas de "colocación incorrecta". La facilidad de uso del software debe ser evaluada por los usuarios.

 

5 , la seguridad  

  La seguridad aquí se refiere a la seguridad de la información, el inglés es seguridad en lugar de seguridad. La seguridad se refiere a la capacidad de evitar que el sistema sea invadido ilegalmente, que es tanto un problema técnico como un problema de gestión. Hacker: ¡Es realmente "un pie de alto, un demonio de alto"! Los desarrolladores y los clientes están dispuestos a invertir fondos limitados para mejorar la seguridad, y deben considerar que el valor no vale la pena. ¿Qué tipo de seguridad es satisfactoria? En general, si el costo de piratear intrusiones ilegales (considerando el tiempo, el costo, el riesgo y otros factores) es mayor que los beneficios, entonces dicho sistema puede considerarse seguro. Para el software ordinario, no es necesario perseguir un alto grado de seguridad, ni puede ignorar por completo la seguridad, primero debemos analizar el comportamiento de piratería.  

6. Testabilidad

  La portabilidad del software se refiere a la capacidad del software para ejecutarse en diferentes entornos de software y hardware ( CPU, SO y compilador) sin modificaciones o ligeras modificaciones , lo que se refleja principalmente en la portabilidad del código. Cuanto más bajo es el lenguaje de programación, más difícil es escribir programas escritos con él, y más fácil es lo contrario. Esto se debe a que las diferentes arquitecturas de hardware (como la CPU Intel y la CPU SPARC) utilizan diferentes conjuntos de instrucciones y longitudes de palabras, y el sistema operativo y los compiladores pueden proteger esta diferencia, por lo que los lenguajes de alto nivel son más portátiles. Los programas Java se conocen como "compilar una vez, ejecutar en todas partes" y son 100% portátiles. Para mejorar el rendimiento de los programas Java, el último estándar Java permite a las personas utilizar algunas técnicas de optimización relacionadas con la plataforma, de modo que aunque los programas Java optimizados no pueden "compilarse una vez y ejecutarse en todas partes", aún pueden "programar una vez y compilarse en todas partes". El diseño del software debe separar los "programas relacionados con el dispositivo" de los "programas independientes del dispositivo" y los "módulos funcionales" de las "interfaces de usuario".

3. Conclusión

Los atributos de calidad del software se dividen en dos categorías: atributos de calidad de tiempo de ejecución y atributos de calidad de desarrollo. Los atributos de calidad durante el período de desarrollo en realidad incluyen todos los atributos de calidad relacionados con los tres tipos de actividades, tales como desarrollo de software, mantenimiento y portabilidad. Estos son atributos que los desarrolladores, gerentes de desarrollo y personal de mantenimiento están muy preocupados . Para los usuarios finales, estos Los atributos solo promueven indirectamente la satisfacción de las necesidades del usuario, mientras que los atributos de calidad de tiempo de ejecución son un tipo de atributos que los usuarios finales pueden sentir directamente durante la operación del sistema de software. Estos atributos de calidad afectan directamente la satisfacción del usuario con los productos de software.

Supongo que te gusta

Origin www.cnblogs.com/zjm15511858030/p/12757782.html
Recomendado
Clasificación