DETERMINACIÓN DE LOS REQUISITOS NO FUNCIONALES DE LA APLICACIÓN


DESARROLLO DE APLICACIONES WEB EN MICROSOFT C# .NET MODELADAS EN UML.

Se debe definir los requisitos no funcionales del software a desarrollar. Implica la determinación de los atributos no funcionales asociadas a las facilidades, funcionalidades y de características generales del software como controles necesarios para garantizar la confiabilidad del sistema, seguridad propuesta, requisitos de la calidad, interfaces con otros sistemas de procesamiento manual o automatizado, ambiente de software y hardware.

Para la definición de los requisitos no funcionales se utilizará la clasificación de la Norma ISO-9126 (2000), el modelo de calidad que clasifica los atributos de la calidad del software en seis características, que son además divididas en sub-características. El efecto combinado de las características de calidad de software para el usuario se define como la calidad en el uso. Las características definidas son aplicables a todo tipo de software. La ISO 9126 permite especificar y evaluar la calidad del producto de software desde las perspectivas diferentes, asociados con la adquisición, regulación, desarrollo, uso, evaluación, apoyo, mantenimiento, aseguramiento de la calidad y auditoría del software. El modelo de calidad definido puede usarse para:

  • Validar la integridad de la definición de los requisitos;
  • Identificar los requisitos no funcionales del software (Este punto es el que interesa para este documento);
  • Identificar los objetivos del diseño del software;
  • Identificar los objetivos de prueba del software;
  • Identificar el criterio de aceptación de usuario para un producto de software completo.

Las seis características son:

  • Funcionalidad. La capacidad del software para proporcionar funciones que satisfacen las necesidades declaradas e implícitas cuando el software se usa bajo las condiciones especificadas. Esta característica está relacionada con lo que hace el software para satisfacer las necesidades.
    • La Idoneidad. La capacidad del software para mantener un conjunto apropiado de funciones para las tareas especificadas y los objetivos del usuario.
    • La Precisión. La capacidad del software para proporcionar efectos o resultados correctos o convenidos en cálculos y resultados.
    • La Interoperabilidad. La capacidad del software para actuar recíprocamente con uno o más sistemas especificados. La interoperabilidad se usa en lugar de la compatibilidad para evitar la posible ambigüedad
    • La Seguridad. La capacidad del software para proteger información y los datos, para que personas o sistemas desautorizados no puedan leer o pueden modificar los mismos, y a las personas o sistemas autorizados no les sea denegado el acceso a ellos. Debe aplicarse a los datos en transmisión. Debe tomarse en cuenta para la aplicación completa
    • La Conformidad. La capacidad del software para adherirse a las normas que se le apliquen , convenciones, regulaciones, leyes y las prescripciones similares
  • Confiabilidad. La capacidad del software para mantener su nivel de ejecución cuando se usa bajo las condiciones especificadas. El sobre uso o el envejecimiento no ocurre en el software
    • La Madurez. Capacidad del software de evitar errores como resultado de haberse producido un fallo del software
    • La Tolerancia ante fallos. Capacidad del software de mantener un nivel de ejecución específico en caso de fallos del software o de infracción de sus interfaces especificadas. Un nivel de ejecución específico puede incluir la falta la capacidad segura
    • La facilidad de restablecer. Capacidad del software de restablecer su nivel de ejecución y recobrar los datos directamente afectados en caso de avería.
  • Facilidad de Uso. La capacidad del software ser comprendido, aprendido, utilizado y de ser amigable para el usuario, cuando se emplee bajo las condiciones especificadas.
    • La Facilidad de Comprensión. La capacidad del producto de software para permitirle al usuario entender si el software es conveniente, y cómo puede usarse para las tareas particulares y condiciones de uso. Esto dependerá de la documentación y la impresión inicial dada por el software.
    • La Facilidad Cognoscitiva. La capacidad del producto del software para permitirle al usuario aprender su aplicación.
    • La Operabilidad. La capacidad del producto del software para permitirle al usuario operarlo y controlarlo. Operabilidad corresponde a la capacidad de ser controlado, la tolerancia ante errores y la conformidad con las expectativas del usuario
    • La Atracción. La capacidad del producto del software de ser amigable para el usuario. Esto se refiere a los atributos del software que se aplican para hacer el software más atractivo al usuario.
  • Eficiencia. La capacidad del software para proporcionar la requerida ejecución, en relación con la cantidad de recursos usados, bajo las condiciones declaradas.
    • El crono-comportamiento. La capacidad del software para proporcionar una respuesta apropiada y los tiempos de procesamiento y tasas de rendimiento de procesamiento al realizar su función, bajo condiciones declaradas.
    • La Utilización de los Recursos. La capacidad del software para usar los recursos apropiados en un plazo de tiempo adecuado cuando el software realiza su función bajo las condiciones declaradas
  • Facilidad de mantenimiento. La capacidad del software de ser modificado. Las modificaciones pueden incluir las correcciones, mejoras o adaptación del software a los cambios en el ambiente, y en los requisitos y las especificaciones funcionales.
    • La Facilidad de Diagnostico. La capacidad del producto del software ser diagnosticado para detectar deficiencias o causas de defectos o errores en el software y detectar a las partes para ser modificadas para ser identificadas
    • La Mutabilidad. La capacidad del producto del software para permitir llevar a cabo una modificación especificada. Incluye la codificación, diseño y documentación de los cambios.
    • La Estabilidad. La capacidad del software para minimizar los efectos inesperados de las modificaciones del software.
    • La facilidad de Comparación. La capacidad del producto del software para permitir validar el software modificado
  • Portabilidad. Capacidad de software ser transferido de un ambiente a otro. El ambiente puede incluir el ambiente del software, del hardware u organizacional
    • La facilidad de adaptación. La capacidad del software de ser modificado para los ambientes especificados sin aplicar acciones o medios de otra manera que aquellos suministrados con este propósito para el software considerado. Adaptabilidad incluye el escalado de la capacidad interna (por ejemplo los campos de la pantalla, las tablas, los volúmenes de transacción o los formatos de informes.).
    • La facilidad de Instalación. La capacidad del software ser instalado en un ambiente especificado
    • La coexistencia. La capacidad del software para coexistir con otro software independiente en un ambiente común que comparte los recursos comunes
    • La facilidad de Reemplazo. La capacidad del software ser usado en lugar de otro software especificado en el ambiente de ese software. Se usa en lugar de la compatibilidad para evitar la posible ambigüedad con el interoperabilidad.

Como se puede comprender, sobre estas características o atributos del software, es muy importante tenerlas muy en cuenta y definirlas. Es claro que para un determinado software se seleccionan algunas de estas características, esto se debe a gran variedad de tipos de software que se pueden desarrollar, no es lo mismo desarrollar un editor de texto que una aplicación de gestión de información. Pero al seleccionar, estos atributos, implica un compromiso de demostrar al final del desarrollo que se ha llegado a una conformidad exitosa de estas. En próximos cursos se hablará de métricas de software que ayudan a validar el software sobre las características definidas y el como evaluar.

Para este documento, la visión de la utilización de estas características es poder identificar a los requisitos no funcionales de la aplicación que se está modelando. De este modo se definirá algunas de las características que a consideración del Grupo de Investigación corresponden para la aplicación Hotelera.

REQUISITOS NO FUNCIONALES PARA LA APLICACIÓN

FUNCIONALIDAD

  • La Idoneidad. La aplicación debe proporcionar opciones bien descritas para los usuarios, explicando la operación que se puede realizar.
  • La Precisión. Debe proporcionar al usuario opciones que permiten realizar el trabajo y deben estar correctamente descritas y debe existir una orientación para cada una de ellas. No debe presentarse al usuario opciones restringidas
  • La Seguridad. El acceso a la aplicación debe estar controlada por una contraseña y nombre de usuario. La contraseña debe estar protegida de acuerdo a un algoritmo de encriptación a un nivel internacional, correctamente documentado. Debe garantizarse que la información transmitida no pueda ser capturada o interpretada.

CONFIABILIDAD.

  • La Madurez. Debe presentarse al usuario información sobre los errores que comete al utilizar al aplicación, estos errores deben estar bien identificados y en el idioma Español. Los mensajes de error deben contar con una ayuda para orientar al usuario en su trabajo así no cometer reiteradamente el mismo error, además debe existir una explicación del por qué del error.

FACILIDAD DE USO.

  • La Facilidad de Comprensión. La aplicación debe ayudar al trabajo o al interés del usuario. Debe explicarse de una manera correcta las distintas opciones que le permite la aplicación o una determinada interfaz. Cada opción debe escribirse de forma completa
  • La Facilidad Cognoscitiva. Debe considerarse imágenes para la mejor comprensión y aprendizaje de la aplicación, tomando en cuenta el tiempo de ejecución.
  • La Atracción. Debe definirse un estándar de interfaz tomando en cuenta los colores de la institución y los colores de la empresa que desarrolla la aplicación, ya que con estas dos combinaciones se tiene la probabilidad de que el usurario este cómodamente trabajando con la aplicación. No se debe olvidar el estándar que proporciona la interfaz Windows y el diseño de interfaz que muestra Microsoft para las paginas Web.

EFICIENCIA.

  • La Utilización de los Recursos. Debe utilizarse procedimientos almacenados básicos, que no tengan más de una sentencia, esto para el acceso a la base de datos. Los filtros de búsquedas o logica del negocio para los datos debe implementarse en la capa de negocio.

FACILIDAD DE MANTENIMIENTO.

  • La Facilidad de Diagnostico. Debe realizarse la Prueba con la ayuda de los casos de uso de prueba. De esta forma garantizar el buen funcionamiento de la aplicación.

PORTABILIDAD.

  • La facilidad de adaptación. Se debe utilizar un marco de trabajo que garantice un mantenimiento respecto a la tecnología que pueda aparecer y a los paradigmas de desarrollo de interfaz. Además, la interfaz a desarrollar debe ser probada en distintos escenarios de navegadores y/o computadoras, para de esta forma garantizar la adaptación de la aplicación.
  • La facilidad de Instalación. Debe crearse para la aplicación un paquete de instalación con su respectivo manual para que los encargados de la aplicación puedan restablecer con bastante rapidez la aplicación, debe tomarse en cuenta que pude ser más de un instalador ya que la aplicación está orientada a los Servicios. Solo se tomará en cuenta la tecnología Windows para desarrollar el paquete de instalación.
  • La coexistencia. Debe poderse instalar en una sola computadora toda la aplicación, ya sea los Servicios Web como las Aplicaciones Web. Pero, deben tener características independientes.

De esta forma se ha especificado los Requisitos No Funcionales para la aplicación de Hotel.

Como se ha dicho anteriormente, al describir los atributos se llega a un compromiso de cumplimiento de cada uno de estos. Este curso no demostrará el cumplimiento de estos ya que se tiene que estudiar parte de la teoría de Mediciones y Métricas en el Software.

Luego de determinar y explicar como tiene que llevarse a cabo los requisitos no funcionales se deben realizar varias actividades adicionales son las siguientes:

– Determinar la importancia y el riesgo

– Separar en ciclos (Priorizar).

– Determinar los paquetes

– Detallar de forma expandida (completa)

DETERMINAR LA IMPORTANCIA Y EL RIESGO

Para realizar estas dos tareas, las cuales se las puede llevar conjuntamente se debe realizar un análisis por cada caso de uso y determinar la importancia que tiene en la aplicación, se puede utilizar una escala del 1 al 5, donde 5 es más significativo. Esto se realiza para determinar parte del dominio del riego por requisito y determinar cual caso de uso debe ser más estudiado para no tener dificultades. Luego se determina el total del dominio de riesgo por cada caso de uso, para esto se realiza un estudio del flujo básico de cada caso de uso y los procesos de la empresa a través del los diagrama de actividad. El riego es considerado como el cambio que se puede producir en el requisito. Muchos de los requisitos (casos de uso) pueden cambiar en su flujo básico de interacción con el usuario o que la empresa cambie sus procesos que van a influenciar al requisito, este cambio implica un cambio total en todas las etapas. Por este motivo es muy importante determinar el riesgo de cada caso de uso. El riesgo y la importancia que se determinen permitirán realizar un seguimiento correcto a los casos de uso.

En este curso no se ve como llevar a cabo estas tareas.

SEPARAR EN CICLOS DE DESARROLLO.

Una vez determinada la importancia de los casos de uso se pueden separar por ciclos de desarrollo. Un ciclo de desarrollo será llevado a cabo de principio a fin, logrando en su finalización un producto que funcione y que este probado. Cada ciclo, que esta compuesto por casos de uso, seguirá un ciclo de vida del producto.

A continuación se ve un ejemplo de cómo se ha determinado los ciclos de desarrollo.

Se ve en la Figura 1 un diagrama de casos de uso que corresponde a una aplicación que distribuye productos de todo tipo.

clip_image002

Figura 1. Diagrama de Casos de Uso Distribución de Productos

La Figura 2 muestra el Primer Ciclo de desarrollo

clip_image004

Figura 2. Primer Ciclo de Desarrollo

En la siguiente figura, Figura 3, se ve el Segundo ciclo.

clip_image006

Figura 3. Segundo Ciclo de Desarrollo

La siguiente Figura 3 muestra el último ciclo de desarrollo.

clip_image008

Figura 4. Tercer Ciclo de Desarrollo

Como se puede observar, cada ciclo representa parte de las funcionalidades futuras de la aplicación de la aplicación que se irán construyendo.

A continuación, se lleva a cabo el análisis de los ciclos para la aplicación que sirve de emplo.

La Pantalla 1 es el resultado del desarrollo del Diagrama de Casos de Uso, el cual no servirá para analizar los ciclos de desarrollo.

clip_image010

Pantalla 1. Diagrama de Casos de Uso

Existen muchas alternativas para definir los ciclos de desarrollo. Se puede dividir en ciclo de desarrollo, por ejemplo, por Actor de la aplicación, es decir tener cuatro ciclos de desarrollo, que serian:

– Primer Ciclo: Gestionar Empleados, Gestionar Bebidas, Gestionar Cocina.

– Segundo Ciclo de Desarrollo: CU Reservar Habitación, CU Confirmar Reserva, CU Salir del Hotel.

– Tercer Ciclo de Desarrollo: Cambiar Contraseña, Autenticar Empleado.

– Cuarto Ciclo de Desarrollo: CU Registrar Solicitud de Servicio a la Habitación, CU Registrar Solicitud de Servicio Básico.

También, se puede dividir por funcionalidad de los casos de uso, es decir, los que estén relacionados para realizar una actividad completa, por ejemplo:

– Primer Ciclo de Desarrollo: Gestionar Empleados, Autenticar Empleado, Cambiar Contraseña.

– Segundo Ciclo de Desarrollo: CU Reservar Habitación, CU Confirmar Reserva, Salir Hotel.

– Tercer Ciclo de Desarrollo: Gestionar Bebidas, Gestionar Cocina, CU Registrar Solicitud de Servicio Básico, CU Registrar Solicitud de Servicio a la Habitación.

Como se puede ver, en los dos casos, al final de cada ciclo el resultado debe ser una aplicación que pueda realizar algunas de las tareas necesarias para el usuario. Dentro del primer ciclo se debe seleccionar a los casos de uso que sean independientes, con poco acoplamiento entre los otros. Por ejemplo, para reservar una habitación, el Empleado debe estar autenticado y tener autorización para realizar esta actividad, caso contrario no se podría reserva la habitación, por este motivo es necesario desarrollar el primero el caso de uso que es Gestionar Empleado, luego Autenticar Empleado y Cambiar Contraseña. Este tipo de análisis se debe realizar para determinar cada ciclo de desarrollo.

Para el ejemplo de desarrollo, se toma la segunda opción de división de ciclos. Como se puede ver en las siguientes Pantallas, se ha dividido por ciclo.

El primer Ciclo a desarrollar se pude ver en la Pantalla 2.

clip_image012

Pantalla 2. Primer Ciclo de Desarrollo

El Segundo Ciclo de Desarrollo se puede ver en la Pantalla 3.

clip_image014

Pantalla 3. Segundo Ciclo de Desarrollo

El Tercer Ciclo de Desarrollo se puede ver en la Pantalla 4.

clip_image016

Pantalla 4. Tercer Ciclo de Desarrollo

Cada uno de estos ciclos tendrá las siguientes características (Ejemplo):

– Planificación para llevar a cabo el desarrollo por cada caso de uso

– Asignación de personas para el desarrollo

– Plan de revisiones

– Plan de integración

– La disciplina de Análisis si es que se debe hacer

– La Disciplina de diseño

– La Disciplina de Implementación

– La disciplina de Prueba

Cada ciclo que se determine tendrá muchos artefactos que le acompañen, esto implica realizar todas las actividades del desarrollo de software. En el curso no se llevará acabo el desarrollo por ciclos, solo se utilizara dos casos de uso que permitan ejemplificar algunas de las actividades necesarias para tener una aplicación.

Los otros dos puntos de Determinar los Paquetes y Detallar de forma Expandida se verán con mayor detalle en los próximos documentos.

One thought on “DETERMINACIÓN DE LOS REQUISITOS NO FUNCIONALES DE LA APLICACIÓN

  1. Its like you read my mind! You appear to know a lot about this, like you wrote the book in it or something.

    I think that you could do with some pics to drive the message
    home a little bit, but other than that, this is magnificent
    blog. A great read. I will certainly be back.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s