Dimensions and Types of Non-Functional ?· 11 . Dimensions and Types of Non-Functional Requirements…

  • Published on
    25-Sep-2018

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

  • 11

    Dimensions and Types of Non-Functional Requirements NFR

    Dimensiones y tipos de Requisitos No-Funcionales RNF

    Michael Pierdin1, Geraldin Bulder2 University of Toronto 1 mpierdin(AT)utoronto.ca, 2 gbulder(AT)mail.utoronto.ca INFORMACIN DEL ARTCULO Tipo de artculo: Investigacin. Historia del artculo Recibido: 20-12-2011 Correcciones: 10-04-2012 Aceptado: 12-04-2012 Categories and Subject Descriptors D.2.1 [Software Engineering]: Requirements/Specifications. General Terms Software Engineering, Requirements Engineering. Keywords Non-Functional Requirements, Software Engineering, type of system, application domain. Palabras clave Requisitos No-funcionales, Ingeniera de Software, tipos de sistemas, dominio de aplicacin.

    ABSTRACT In spite of Non-functional requirements-RNF-are recognized as an important component to the success of software projects, in the community of software engineering studies indicate, so far, that there is not still a general consensus with respect to its definition. This paper presents the results of an extensive and systematic analysis around three existing dimensions about the NFR: (1) definition and terminology, (2) types and (3) RNF relevant in various types of systems and application domains. It is also describe two different perspectives to examine and presents a wide range of types of catalogs, highlighting the most frequently considered in the projects. It is also presented an innovative classification based on the types of systems and application domains, which could help developers to identify which are important in a particular application domain and for which specific systems. RESUMEN A pesar de que los requisitos No-funcionales RNF se reconocen como un componente importante para el xito de los proyectos software, en la comunidad de la Ingeniera de Software los estudios indican, hasta el momento, que an no existe un consenso general con respecto a su definicin. En este trabajo se presenta el resultado de un anlisis amplio y sistemtico a la literatura existente alrededor de tres dimensiones de los RNF: (1) definicin y terminologa, (2) tipos y (3) RNF relevantes en diversos tipos de sistemas y dominios de aplicacin. Tambin se describen dos perspectivas diferentes para examinarlos y se presenta un amplio catlogo de tipos, resaltando los que con mayor frecuencia se consideran en los proyectos. Tambin se presenta una clasificacin novedosa con base en los tipos de sistemas y los dominios de aplicacin, lo que podra ayudar a los desarrolladores para identificar cules son importantes en un dominio de aplicacin particular y para cules sistemas especficos.

    2012 IAI. All rights reserved.

    1. INTRODUCCIN Los requisitos no-funcionales se reconocen como factor muy importante para alcanzar el xito de los proyecto software [1-3]. Si los RNF no se tratan adecuadamente, puede surgir un nmero de problemas potenciales. Por ejemplo, software incongruente y de mala calidad, insatisfaccin de clientes, usuarios finales y desarrolladores, lo que causa sobrecosto e incrementa el tiempo para encontrar los errores del producto [1]. En el ciclo de vida del desarrollo de software, los RNF se consideran como las restricciones o aptitudes de operacin [4]. Los RNF imponen restricciones en el producto en desarrollo, en el proceso de desarrollo y en limitaciones externas especficas que el producto debe exhibir [5]. A menudo, los RNF son ms importante que los Requisitos Funcionales (FRS) para determinar el xito o el fracaso de un sistema [6, citado por 7, 8]. Cuando se descuidan los

    RNF se origina una serie de fallos del software [3, 9-12], como el fallo sistmico en el London Ambulance System [10, 11], el fallo del sistema causado por problemas de escalabilidad y rendimiento en el New Jersey Department of Motor Vehicles Licensing System [13] y algunos otros ejemplos que se describen en [10, 13-15]. A pesar de que los RNF se reconocen ampliamente como muy importante, una revisin a la literatura demuestra que a menudo son ignorados, mal entendidos y no se consideran adecuadamente en el desarrollo de software. En el desarrollo del sistema software los usuarios se focalizan naturalmente en la especificacin de sus requisitos funcionales o de comportamiento, es decir, las cosas que el producto tiene que hacer [1, 7]. Por lo tanto, los RNF se pasan por alto en el proceso de desarrollo de software [3, 16]. En varios estudios acerca de las prcticas de investigacin en la industria del software reportan que los desarrolladores comnmente no prestan suficiente

    RACCIS, 2(1), 11-17, 2012.

    Revista Antioquea de las

    Ciencias Computacionales y la Ingeniera de Software

    ISSN: 2248-7441

    www.fundacioniai.org/raccis/index.htm

    raccis@fundacioniai.org

  • 12

    atencin a los RNF [3, 16-18], que no se elicitan al mismo tiempo y con el mismo nivel de detalle que los FR y que a menudo son mal articulados en el documento de requisitos [17, 18]. Adems, estas investigaciones demuestran que el trato negligente a los RNF en el desarrollo de un sistema software est fuertemente influenciado por sus caractersticas: que son subjetivos, relativos y que interactan [1], que son abstractos [10, 19] y que no presentan una naturaleza uniforme [2]. Estas caractersticas hacen los RNF sean difciles de tratar, modelar, verificar, probar y de comparar con los FR [1, 8, 20, 21]. Asimismo, que es difcil capturarlos, especificarlos y gestionarlos porque la mayora de desarrolladores no tienen un conocimiento adecuado de ellos y a que en la literatura existe poca ayuda disponible [22]. La mayora de las investigaciones en Ingeniera de Software, particularmente en la Ingeniera de Requisitos, se orienta a los requisitos funcionales, es decir, se trata de asegurar que se entregue la funcionalidad necesaria del sistema al usuario [23]. El trmino requisitos no-funcionales se ha utilizado por casi tres dcadas, sin embargo, los estudios realizados hasta la fecha indican que actualmente an no existe un consenso general en la comunidad de la Ingeniera de Software con respecto a su nocin [1, 7, 24, 25]. Glinz [24, 25], incluso argumenta que es necesario replantear la nocin de RNF debido a que no se encuentra un concepto claro acerca de lo que realmente son. La revisin a la literatura tambin demostr que no se conoce bien una serie de aspectos esenciales relacionados con los RNF, como una variedad de perspectivas para considerarlos y su relevancia en diversos tipos de sistemas y dominios de aplicacin. Estos hechos motivaron este trabajo en el que se describe una investigacin exhaustiva y sistemtica de la nocin de RNF en la literatura de la Ingeniera de Software con el objetivo de mejorar los niveles de comprensin acerca de este complejo y multifactico fenmeno. Este estudio abarca tres dimensiones esenciales de los requisitos no-funcionales: (1) definicin y terminologa, (2) tipos y (3) RNF relevantes en diversos tipos de sistemas y dominios de aplicacin. De estos tres parmetros se ha derivado una serie de preguntas de investigacin: 1. Qu perspectivas existen en la comunidad de la

    Ingeniera de Software al considerar los RNF? 2. Cul es la tipologa de los RNF? 3. Qu tipos de RNF se consideran o discuten

    comnmente en la literatura? 4. Qu tipos de RNF son motivo de preocupacin en los

    diferentes tipos de sistemas? 5. Qu tipos de RNF son motivo de preocupacin en los

    diferentes dominios de aplicacin? Las principales contribucin de este trabajo es una clasificacin novedosa de RNF con base en la tipologa, la definicin, los tipos de sistemas y los dominios de aplicacin. Esta contribucin beneficiar de muchas maneras a la comunidad de la Ingeniera de Software es

    decir, a investigadores y profesionales. La correspondencia entre los RNF y los tipos de sistemas y entre los RNF y los dominios de aplicacin se desarrolla mediante la realizacin de un anlisis a las referencias cruzadas de la literatura. Este artculo est organizado en cuatro secciones: en la primera se presenta la introduccin en la que se describe la importancia de los RNF en el desarrollo de software; en la segunda se describe el enfoque de la investigacin y la fuente de informacin; los resultados de la investigacin se describen en la seccin tres y la seccin 4 contiene las conclusiones, la discusin y los futuros trabajos, poniendo de relieve algunas cuestiones abiertas que surgen a partir de esta investigacin. 2. METODOLOGA APLICADA La investigacin se llev a cabo a partir de 182 fuentes de informacin publicadas en las ltimas tres dcadas. La mayora son artculos acadmicos relacionados con la disciplina de la Ingeniera de Software en general y con la Ingeniera de Requisitos en particular por ejemplo, artculos de revistas, ponencias en conferencias y estndares IEEE/ISO, y unos pocos son reportes de la industria por ejemplo, reportes tcnicos y white papers. Todas estas fuentes cubren diferentes temas de RNF, como se ilustra en la Figura 1. El punto de partida para seleccionar los documentos a revisar fue el estudio de Chung et al. [1]. La composicin detallada de la literatura de Ingeniera de Software investigada se presenta en la Tabla 1.

    Figura 1. Temticas de investigacin en RNF

    Tabla 1 Fuentes de informacin

    Tipo Cantidad Revista 78 Ponencia 70 Libro 16 Otros 18

    Cada artculo fue analizado sistemtico utilizando la tcnica de anlisis de contenido [26, 27]. Se seleccion el anlisis de contenido porque les permite a los investigadores identificar tendencias y patrones en la literatura a travs de la frecuencia de palabras clave y mediante la codificacin y la categorizacin de los datos en un grupo de palabras con significado o connotaciones similares [27, 28]. Esta tcnica tambin es aplicable a todos los contextos de dominio [26, 29]. Se definieron tres dimensiones esenciales como lnea base de investigacin: (1) definicin y terminologa, (2) tipos y

  • 13

    (3) RNF relevantes en diversos tipos de sistemas y dominios de aplicacin. Para la primera dimensin se catalogaron cada una de las definiciones y las terminologas que se encontraron en la literatura y posteriormente se analizaron los aspectos de similitud y de diferencia entre ellos. A partir de este proceso fue posible visualizar las diferentes perspectivas de cmo la comunidad de la Ingeniera de Software considera los RNF y las terminologas introducidas para representarlos cada perspectiva. Para la segunda dimensin se recolectaron todos los tipos desde catlogo de tipos de RNF y se registr su definicin y atributo el trmino atributo se considera aqu como el componente principal de cada tipo de RNF; en la literatura, atributo tambin se conoce como un sub-factor de calidad [32-34] o sub-tipo de RNF [1]. Posteriormente, se llev a cabo el anlisis de frecuencia para cada tipo con el fin de identificar los RNF comnmente considerados, es decir, los que frecuentemente figuran en los catlogos de tipos de RNF. Para la dimensin tres se realiz un mapeo entre los tipos de sistemas y los dominios de aplicacin y los tipos de RNF considerados en cada tipo de sistema o dominio de aplicacin. En este estudio se identificaron cinco diferentes tipos de sistemas con sus RNF relevantes, mientras que para el dominio de aplicacin se adopt la Digitals Industry Taxonomy [30, 31]. 3. RESULTADOS Con respecto a las preguntas de investigacin los hallazgos de esta investigacin se clasifican en: 3.1 Definicin y terminologa de los RNF La Figura 2 muestra los resultados acerca de la definicin y la terminologa de los RNF en la literatura. Se puede observar que, generalmente, el trmino RNF se considera para dos perspectivas diferentes: (1) como los requisitos que describen las propiedades, caractersticas o limitaciones que un sistema software debe exhibir y (2) como los requisitos que describen los atributos de calidad que el producto software debe tener. En la primera perspectiva, los RNF consisten de varios aspectos, como las restricciones de desarrollo, las reglas de negocio, las interfaces externas, los atributos de calidad y cualquier otro requisito que no describa la funcionalidad del sistema. Para representar los RNF en

    esta perspectiva tambin se utilizan trminos como restricciones, requisitos sin comportamiento, preocupaciones, objetivos y requisitos extra-funcionales. La segunda perspectiva toma el enfoque limitado de RNF para considerar slo los atributos de calidad; por lo tanto, esta perspectiva es un sub-conjunto de la primera. Los trminos requisitos de calidad, atributos del sistema software y atributos de calidad, tambin se utilizan para representar RNF.

    Figura 2. Definicin y terminologa de RNF

    3.2 Tipos de RNF En esta investigacin se identificaron en la literatura 252 tipos de RNF. Generalmente, consisten de atributos de calidad mantenimiento, rendimiento y fiabilidad, restricciones de desarrollo tiempo, costo y equipo de desarrollo, requisitos de interfaces externas interfaz de usuario y factores humanos, apariencia y sensacin e interfaz del sistema, reglas de negocio produccin en el ciclo de vida y otros culturales, polticos y ambientales. Entre estos 252 tipos, 114 corresponden a las definiciones de RNF que se han discutido especficamente en relacin con "calidad". La lista de estos 114 tipos se presenta en la Tabla 2. En esta lista se muestra que 23 tipos de RNF (20,18%) tienen definicin y atributos, que 30 (26,32%) slo tienen definicin y que los dems 61 tipos (53,50%) fueron introducidos sin definicin o atributos. La lista de detalles de esta clasificacin se ilustra en la Tabla 3.

    Tabla 2 Tipos de RNF

    Agilidad Durabilidad Facilidad de recuperacin Nivel de madurez Ajustabilidad Efectividad Facilidad de reemplazo Nivel de medicin Asequibilidad Eficiencia Facilidad de repeticin Nivel de permanencia Atomicidad Escalabilidad Facilidad de revisin Nivel de resumen Atractividad Estabilidad Facilidad de transferencia Nivel de simpata Auto-descripcin Exhaustividad Facilidad de verificacin Nomadismo Calidad de servicio Expresividad Facilidad operativa Operatividad Capacidad de adaptacin Extensibilidad Factibilidad Portabilidad Capacidad de ampliacin Facilidad de acceso Flexibilidad Precisin Capacidad de anonimato Facilidad de anlisis Formalidad Privacidad Capacidad de aprendizaje Facilidad de cambios Funcionalidad Probabilidad Capacidad de comunicacin Facilidad de comprensin Grado de supervivencia Rendimiento Capacidad de estructuracin Facilidad de confeccin Idoneidad Replicabilidad Capacidad de formacin Facilidad de configuracin Inmunidad Responsabilidad

  • 14

    Capacidad de incremento Facilidad de control Integridad Reusabilidad Capacidad de integracin Facilidad de demostracin Inter-operatividad Robustez Capacidad de soporte Facilidad de descomposicin Legibilidad Seguridad Capacidad evolutiva Facilidad de estandarizacin Mejorabilidad Simplicidad Capacidad sumativa Facilidad de expansin Movilidad Sostenibilidad Compatibilidad Facilidad de instalacin Nivel de certeza Susceptibilidad Complejidad Facilidad de intercambio Nivel de completitud Tolerancia a fallos y errore...

Recommended

View more >