Assessment for quality product derivation from a software product
Transcription
Assessment for quality product derivation from a software product
(2015). RACCIS 5(2), pp. 48-59 Revista Antioqueña de las Ciencias Computacionales y la Ingeniería de Software ISSN: 2248-7441 www.fundacioniai.org/raccis [email protected] Assessment for quality product derivation from a software product line reference architecture Asesoría para la derivación de productos de calidad a partir de una arquitectura de referencia de línea de productos software Francisca Losavio1, Oscar Ordaz2, Henry Márquez3 Universidad Central de Venezuela. Caracas. francislosavio(AT)gmail.com, oscarordaz55(AT)gmail.com. Universidad de Oriente. Cumaná, Venezuela. Henrylmarquez(AT)gmail.com. 1,2 3 INFORMACIÓN DEL ARTÍCULO Artículo de Investigación Recibido: 19-10-2015 Correcciones: Aceptado: 23-12-2015 Keywords Software product line; reference architecture; product derivation; product configuration. Palabras clave Línea de productos de software; arquitectura de referencia; derivación de productos; configuración de productos. ABSTRACT Reference Architecture (RA) in Software Product Lines (SPL) is the main artifact to derive concrete products. SPL is a family of software intensive systems or products sharing a common set of features satisfying a particular market sector, such as the Integrated Healthcare Information Systems domain. The Assessment Process (ASSPRO), goal of this work, concerns product configuration, the first stage of SPL product derivation, and starts with RA, a connected graph or valid architectural configuration built by a bottom-up process. Product configuration is selected among an optimal set of feasible solutions (FS), representing valid architectural configurations. Functional and non-functional customer requirements are considered, using weight-based heuristic assignment to select convenient FS. A problem in the SPL product derivation is to manage the huge amount of non-functional variants, which are identified in ASSPRO as solutions to satisfy precise quality requirements; variants’ choices are handled by applying appropriated strategies. The “best” FS is selected among an FS optimal set. ASSPRO does not pretend to compete with established industrial and academic SPL derivation approaches, but offers an agile way of specifying valid architectural configurations, meeting justified quality requirements; it is a “front-end” for the automatic product development stage. RESUMEN La Arquitectura de Referencia (AR) es utilizada para derivar productos en Líneas de Productos de software (LPS), quienes conforman una familia de sistemas de software complejos, que comparten características comunes de un sector del mercado (dominio), como Sistemas de Información de Salud Integrados. ASSPRO, proceso de asesoría objetivo del trabajo, trata la configuración de productos concretos, en la primera etapa de derivación de productos LPS; inicia con AR, grafo conexo o configuración arquitectónica válida, construida en trabajos previos, por un proceso bottom-up. La “mejor” configuración del producto es seleccionada entre soluciones factibles (FS) de un conjunto óptimo, representadas por configuraciones arquitectónicas válidas; para esta evaluación, pesos son asignados heurísticamente a las FS adecuadas, considerando requisitos funcionales y no funcionales del cliente. Uno de los mayores problemas en la derivación de productos en una LPS es el gran número de variantes no funcionales, las cuales son identificadas en ASSPRO como soluciones que satisfacen requisitos de calidad precisos; la selección de variantes es realizada aplicando estrategias apropiadas. ASSPRO no compite con métodos establecidos industriales o académicos, sino ofrece una manera ágil de especificar configuraciones arquitectónicas válidas, respondiendo a requisitos de calidad justificados; es una entrada para la etapa de desarrollo automático de productos. © 2015 IAI. All rights reserved 1. Introduction A Software Product Line (SPL) is a family of software intensive systems or products sharing a common and organized set of features that satisfy specific requirements of a market sector or domain. These features are developed from a common set of assets that are reused in different products of the SPL family [3]. In consequence, the SPL approach favors reuse and claims to reduce coding effort and time to market. The SPL complete development or SPL Engineering (SPLE) is a complex process that covers two main disciplines, Domain and Application Engineering [16]. In Domain Engineering, domain knowledge is captured to construct a Reference Architecture (RA) and the assets repository; the RA, also known in the literature as SPL Architecture (SPLA) [15], is the main artefact shared by all members of the SPL family and it covers common and variable parts of the SPL. In the Application Engineering, new concrete 48 products are derived from RA, which is used as an instantiable schema or framework, and the SPL family and asset repository are enriched with new elements from the derived products. SPL variants are differentiated in terms of features, usually functional requirements (FR), perceived by the user [9, 18]. However, there are features that are not visible to the users, the non-functional requirements (NFR), and in general they are not explicitly considered at early stages of software development; however, NFR drive most of the SPL variability. In this context, the ISO/IEC 25010 Quality Model standard [8] will be used to specify NFR, to respond to Software Engineering best practices and to facilitate communication among groups of stakeholders. This standard quality model translates product quality into abstract properties or quality characteristics that in general cannot be measured and are refined into subcharacteristics, until the measurable elements or quality attributes. Quality characteristics are inherent software properties, such as usability, efficiency and security, they change if software changes, in opposition with assigned properties like cost, price or delivery time, which can change without changing the software [8]. Figure 1 shows the ISO/IEC 25010 Quality Model. Figure 1. ISO/IEC 25010 Quality Model [8] A problem in SPL product derivation is that many different requirements, often contradictory, can appear during the identification of variant components while instantiating RA constituted by a “core” or set of common components (CC) and a set of variation points [16], denoted by <<vp>>, which are composed by a set of variant components performing similar tasks. RA satisfies main domain requirements by construction. The set of <<vp>> conforms the RA variability model [16]. As a result of the high variability of quality properties, it is not clear what is the FR selection that is responsible of certain NFR [19]; Goal-ORiented Engineering (GORE) approaches have been used to establish traceability between FR and NFR [1, 7, 14, 15, 20]. Our RA has been constructed by a bottom-up process [11, 12, 13], based on refactoring architectures of existing products and captures NFR and architectural styles from the refactored products, taking into account these quality aspects and their traceability w.r.t. FR. In this work, the architecture of a product is represented by a connected graph or valid architectural configuration (P, R), where P are the nodes or components and R, subset of P P, is a symmetric relation representing the edges or connectors of the architecture [13], and each edge is denoted by aRb with a, b in P. Only the logic view of the architecture expressing static aspects is considered and will be specified in UML 2.0, as an ADL (Architecture Description Language). The bottom-up process consists in performing the union of the components of each product, preserving the connections; CC is constituted by the common components in the union and the non-common components are considered variants. The derivation of a concrete software product is the instantiation of some RA variation point, keeping the CC core. A feasible solution (FS) is a set of components satisfying customer FR and NFR, that is consistent when the constraints among RA components are verified, and that is working when it holds a correct architectural behavior w.r.t. a minimal set of FR and NFR. Moreover, the graph induced by FS in RA is connected; i.e., RAFS = (FS, R) is a valid architectural configuration. The induced graph RAFS is defined as an architectural solution or Feasible Architecture (FA). The RAFS evaluation is defined as its FS evaluation, i.e., to optimize a set of FA implies to evaluate and optimize the associated set of FS. The main goal of this work is to offer an Assessment Process (ASSPRO) to choose the “best” concrete product architectural configuration RAFS, among an optimal set of FS, where FS satisfies consistency, is a working solutions and is connected,. Each FS is constituted by RA components, satisfying a specific scenario of quality requirements, with their architectural solutions [10], [11, 12]. A weight-based heuristic is proposed to evaluate each FS and select an optimal RAFS, taking into account trade-offs among domain and customer NFR. In the Application Engineering discipline [16], three basic stages conform the SPL derivation process, according to [6]: Product Specification, Product Development and Onsite product configuration (see Figure 2); the development stage is concerned with the product implementation using the SPL asset repository; it implies to retrieve code of components’ modules, etc. The on-site configuration refers to the deployment of the demanded product on the customer work platform. ASSPRO is concerned with the Product Specification stage. Our approach will be applied to the Integrated Healthcare Information Systems (HIS) domain [10, 11, 12, 17]. HIS are complex information systems, generally located in different and distant institutions and with mandatory NFR requirements, such as interoperability, availability and security. They are supported by a hybrid SOA/Layers architectural style [10], with SOA (Service-Oriented Architecture) [21] integrating an Event-Driven Style [22]. HIS must facilitate transparent sharing of different kinds of medical records, offering also telemedicine services that can be performed online at remote locations, with wide information and communication technology support. Moreover, in actual medical practice, SPL for HIS have not yet been completely defined, developed and adopted; the lack of agreement on standards makes difficult the interoperability of Electronic Health Records (EHR), a basic HIS functionality, and HIS general adoption is still difficult. Network providers are now offering HIS 49 cloud solutions, which will not be treated in this work. According to the studies in [10, 17], the open source systems OpenEMR, PatientOS with a 90% and 92% usage respectively and Care2X, similar to OpenEMR, used recently in health national projects, have been refactored into the HIS-RA [11] considered in this work (see Figure 4). The HIS domain quality model (HIS-DQM) [8, 11] is constituted by seven inherent quality characteristics and sub-characteristics representing HIS domain global NFR; Figure 3 shows the HIS-DQM. assessment process for product derivation with the weight-based heuristic; the fourth section applies ASSPRO to the HIS domain, and finally the fifth section is dedicated to main related works. 2. Reference architecture for the his domain 2.1 HIS-RA The Components and Connectors Table (C&CT), shows the refactored architectures’ components and their connectors for the three products considered (see Table 1 for HIS-C&CT). Table 1. HIS-C&CT: Components and Connectors Table Figure 2. Assessment Process (ASSPRO) in the SPLE context – gray blocks concern the present research [6] Figure 3. HIS-DQM: Quality Model for the HIS Domain – Source: authors, adapted from [8]. HIS must facilitate transparent sharing of different kinds of medical records, offering also telemedicine services that can be performed online at remote locations, with wide information and communication technology support. Moreover, in actual medical practice, SPL for HIS have not yet been completely defined, developed and adopted; the lack of agreement on standards makes difficult the interoperability of Electronic Health Records (EHR), a basic HIS functionality, and HIS general adoption is still difficult. Network providers are now offering HIS cloud solutions, which will not be treated in this work. According to the studies in [10, 17], the open source systems OpenEMR, PatientOS with a 90% and 92% usage respectively and Care2X, similar to OpenEMR, used recently in health national projects, have been refactored into the HIS-RA [11] considered in this work (see Figure 4). The HIS domain quality model (HIS-DQM) [8, 11] is constituted by seven inherent quality characteristics and sub-characteristics representing HIS domain global NFR; Figure 3 shows the HIS-DQM. Besides this introduction and the conclusion, this paper is structured with a second section dedicated to the HIS-RA description; a third section presenting the ASSPRO OpenEMR a. Presentation Layer Components: a1. Web pages-Browser a2. Patient Portal a3. Reports Connectors: a1Ra2 a1Ra3 a1Rd1 a1Rd2 b. Process Layer Components: b1. Patient b2. EHR Management b3. Report System Connectors: b1Rc1 b1Rd1 b1Rd2 b2Rc1 b2Rd1 b2Rd2 b3Rc1 b3Rd1 b3Rd2 c. Data Layer Components: c1. Data Base c2. HL7 CDA Engine Connectors: c1Rc2 d. Transmission Components: d1. Internet d2. Satellite PatientOS a. Present Layer Components: a2 a3 a4. GUI Connectors: a4Ra2 a4Ra3 a4Rb5 b. Business logic Components: b1. Patient business model b2 b3 b4. Mirth (HL7 engine) b5. GUI – Server Side Connectors: b1Rc1 X b1Rb5 b2Rc1 X b2Rb4 b2Rb5 b3Rc1 X b3Rb5 b5Rd1 c. Data Layer Components: c1 Connectors: d. Transmission Components: d1 - Care2x a. Present Layer Components: a1 a2 a3 Connectors: a1Ra2 a1Ra3 a1Rd1 a1Rd2 b. Process Layer Components: b1 b2 b3 Connectors: b1Rc1 b1Rd1 b1Rd2 b2Rc1 b2Rd1 b2Rd2 b3Rc1 b3Rd1 b3Rd2 c. Data Layer Components: c1 c3. HXP Engine Connectors: c1Rc3 d. Transmission Components: d1 d2 Let us denote by (Pi, Ri), i=1, 2, 3 the valid architectural configurations of the three products considered, where Pi is the set of components or nodes and Ri is the set of edges or connectors. Let CA = (P, R) be an initial architecture obtained automatically, where P = Pi and R = Ri, i = 1, 2, 3. An edge aRb R is variant, and will be denoted by aRb if and 50 only if i, j such that a, b Pi Pj and a Ri b and a Rj b. The fact that a, b Pi and a Ri b for some i, was signaled in Table 1 by “X”. Common and variant components and connectors are also shown; the “-” symbol indicates the absence of a specific connector, since one of its component is absent. In consequence, from Table 1 we have CA= (P, R), where: P = {a1, a2, a3, a4, b1, b2, b3, b4, b5, c1, c2, c3, d1, d2}, R = {a1Ra2, a1Ra3, a1Rd1, a1Rd2, a4Ra2, a4Ra3, a4Rb5, b1Rc1, b1Rd1, b1Rd2, b1Rb5, b2Rc1, b2Rd1, b2Rd2, b2Rb4, b2Rb5, b3Rc1, b3Rd1, b3Rd2, b3Rb5, b5Rd1, c1Rc2, c1Rc3}. b7*, c4, c5, c6, c7, c8 and c9*. The connectors of these new variant components are: b6Rb1, b6Rb3, b7Rb1, b7Rb2, b7*Rb3, c4Rc1, c5Rc1, c6Rc1, c7Rc1, c8Rc1, c9*Rc1. Note that this issue is not treated in most of the FODA approaches [11, 16, 19], where in general only components functional variability is focused. The “*” indicates multiple alternatives (see Table 3), Figure 4 shows HIS-RA with <<vp>> denoted by the stereotype <<component name>>; common components are directly denoted by their names. 2.2 HIS-RA documentation RA is described in the Documentation Table (RADT), see Table 2 for the HIS-RADT. Note that RA has imbedded the global domain quality properties; the FODA model can be deduced from the RADT. An ontology-based approach could also be used to improve the consistency checking to find the set of FS [5]. 2.3 Architectural Solutions The Architectural Solutions Table (AST), see Table 3 for the HIS-AST, is constructed from RADT, including architectural solutions for each variant, their quality properties with priorities and trade-offs with respect to the domain quality model. 3. Product derivation from quality-driven feasible solutions 3.1 Preliminaries The derivation of a software product is based on the instantiation of some RA variation points, maintaining CC. Recall that a feasible solution (FS) is a set of components satisfying customer FR and NFR, is consistent, working, and the graph induced by FS in RA is connected, i.e., RAFS = (FS, R) is a valid architectural configuration. The relation R will be defined as follows: Let a, b FS then aRb is defined by the alternatives: Figure 4. HIS-RA with variability model [11] In order to satisfy quality requirements, the initial CA is completed using the GORE approach [1, 20]. With the following new components to satisfy quality goals: b6, aRb {xRy : x, y CC} aRb {x R <<Ai>> for some i and x CC} aRb {<<Ai>> R <<Aj>> for some i, j}. Table 2. HIS-RADT: Reference Architecture Documentation Table (RADT) HIS-RA <<vp>>, components, connectors a. Presentation Layer Components <<a5>> User Interface CC components, connectors and <<vp>> variant components a1. Web pages – Browser a4. GUI a2, a3 Connectors <<a5>>R<<d3>> <<a5>>Ra2 <<a5>>Ra3 b. Process Layer Components <<b8>> Computation modules; a2. Patient Portal; a3. Reports Comments/Constraints - User access control and interaction with main HIS functionalities and/or Web server - MVC-based client-side GUI Constraints: a1 and a4 cannot be executed together, only one of them can be present in one architectural configuration; a1 or a4 are mandatory - Common components to access main HIS functionalities Constraints: a2 is mandatory; a3 is optional {a1R d1, a1Rd2, a4Rb5Rd1}; {a1Ra2, a4Ra2}; {a1Ra3, a4Ra3}; b6. Algorithms * - Computations required for precise results, where * indicates multiplicity. Constraints: if b1 or b3 are present, b6 must be also present 51 <<b9>> Security modules b7. Data Security * - b7b (solo HTTPS) - b7+b7a (b7+ HTTP) - b7+b7b (b7+ HTTPS) b1, b2, b3 b1. Patient b2. EHR Manag. b3. Report System <<b10>> <<b11>> Connectors b1R<<d3>> b2R<<d3>> b3R<<d3>> b3R<<b8>> b1R<<b8>> b1R<<b9>> b2R<<b9>> b3R<<b9>> b2R<<b10>> b1Rc1; b2Rc1; b3Rc1; b1Rb5; b2Rb5; b3Rb5; <<b11>>R<<a3>> <<b11>>R<<d3>> c. Data Layer Components <<c10>> Addition of new medical standards <<c11>> Data Integrity <<c12>> Data Availability <<c13>> Data Persistency <<c14>> DB APIs b4. Mirth Engine b5. GUI Server-side {b1Rd1, b1Rd2}; {b2Rd1, b2Rd2}; {b3Rd1, b3Rd2}; {b3Rb6}; {b1Rb6}; {b1Rb7b, b1Rb7+b7a, b1Rb7+b7b}; {b2Rb7b, b2Rb7+b7a, b2Rb7+b7b}; {b3Rb7b, b3Rb7+b7a, b3Rb7+b7b}; {b2Rb4}; b1Rc1; b2Rc1; b3Rc1; b1Rb5; b2Rb5; b3Rb5; {b5Ra4}; {b5Rd1}; Connectors c1R<<c10>>; c1R<<c11>>; c1R<<c12>>; c1R<<c13>> c1R<<c14>> c1R<<c15>> d. Transmission Layer Components <<d3>> Network - Common components, main HIS functionalities Constraints: b1 and b2 must be present, b1 and b2 are mandatory - HL7 Engine for interoperability in Process Layer - GUI server side to access main HIS functionalities in Process Layer and remote services via Internet - b1Rd1, b2Rd1, b3Rd1 are variant connectors because they are absent in one of the products - a1 and a4 instances cannot be present at the same time - d2 instance cannot be used with b5 c4. New medical standards * c8. Integrity mechanisms * c9. Availability mechanisms * - c9a. Mirror DB - c9b. Mirror DB with replication c7. Hibernate - Addition of new medical standards (diagnosis catalogues, etc.) for system scalability (evolution) - APIs solutions for integrity for each data base - Mechanisms for data availability: two optional solutions mirror data base or mirror data base with replication Constraints: c9a or c9b are optional - Data persistency mechanism for Java platform c5. JDBC c6. ODBC - APIs solutions for portability to other data bases under Java platform - APIs solutions for portability to other data bases Constraints: c5 or c6 are mandatory c2. HL7 CDA Engine c3. HXP Engine - Interoperability XML/ HL7 - Interoperability XML/HXP Constraints: c2 or c3 are mandatory c1. Data Base - Commercial data base Constraints: c1 is mandatory <<c15>> HL7 Data Model Engine c1. Data Base - Services or algorithms required to handle card, password, biometrics data, etc. devices for user authentication and for user access rights for confidentiality of medical data - HTTPS internet secure channels protocols for special message transmission security - HTTP internet protocols for ordinary message transmission security Constraints: Internet communication only via HTTPS or b7+ HTTP or b7+HTTPS; Internet communication only via HTTP is not possible due to HIS requirements; only one of the 3 alternatives b7b, b7+b7a, b7+b7b must be present and it is mandatory {c1Rc4}; {c1Rc8}; {c1Rc9a, c1Rc9b}; {c1Rc7}; {c1Rc5, c1Rc6}; {c1Rc2, c1Rc3} d1. Internet - b7a (HTTP) - b7b (HTTPS) d2. Satellite - b7a (HTTP) - b7b (HTTPS) - Request/response for efficient, adequate, available, secure and interoperable services using Internet protocols. Notice that d1 is a common mandatory component, however it has been marked as variant since d2 is an optional alternative variant and they share the same variation point <<d3>> Network. Constraints: d1 is mandatory, d2 is optional but it cannot be used with b5; HTTP or HTTPS are optional; HTTP is impossible without b7, due to HIS requirements 52 Table 3. HIS-AST: Architectural Solutions Table (AST) with priority assigned to quality properties HIS-RA <<vp>> Components <<a5>> User Interface <<variant>> Components (RADT) a1. Web pagBrowser Architect. solution SOA (eventbased style) SOAP messages protocol (digital signature) a4. GUI <<b8>> Computation modules <<b9>> Security modules <<b10>> HL7 Interoperability Engine <<b11>> GUI Server <<c10>> Addition of new medical standards <<c11>> Data Integrity <<c12>> Data availability <<c13>> Data persistency <<c14>> DB APIs <<c15>> HL7 Data Model Engine <<d3>> Network MVC architectural pattern b6. Algorithms* Module b7. Data security* - b7+b7a (b7 + HTTP) - b7b (only HTTPS) - b7+b7b (b7 con HTTPS) Module b4. Mirth Engine b5. GUI Server-side - Module + protocol - Protocol - Module + protocol Engine to translate XML/HL7 Module Quality properties for each <<variant>> with priority [1p3], 1 maximum w.r.t. HIS domain (1) Availability (w.r.t network) Completeness (+), resource utiliz. (+), time behav. (- ) (1) Interoperability (w.r.t web services) Completeness (+), modif. (+), adaptability (+), time behav. (-), (2) adaptability-scalability (w.r.t web services) Completeness (+), interop. (+), modif. (+), time behav. (-) (1) Authenticity, (1) confidentiality, (1) integrity (w.r.t transmission) (2) Time behavior (3) Modifiability Completeness (+), time behav. (-), resource utiliz. (-) (3) modularity, Time behav. (-), resource utiliz. (--), completeness (+), modif. (+) Completeness (+), time behav. (--), resource utiliz. (--) (1) Authenticity, (1) confidentiality, (1) integrity (2) Time behavior (2) Correctness-precision (1) Authenticity, (1) confidentiality, (1) integrity Availability (++) Time behave. (-), resource utilize. (-), completeness (+), modif. (-) Time behav. (-), resource utiliz. (-), completeness (+), modif. (-) (3) Modifiability Time behav. (-), resource utiliz. (--), completeness (+), adapt. (+) (3) modularity Time behav. (-), resource utiliz. (--), completeness (+), modif. (+) (2) Time behavior (3) Modifiability, (2) adaptability-scalability (2) Correctness-precision Availability (++) Time behave. (-), resource utilize. (-), completeness (+), modif. (-) Time behave. (-), resource utilize. (-), completeness (+), modif. (-) Completeness (+), resource utiliz. (+), time behav. (- ) Completeness (++), resource utiliz. (++), time behav. (-- ) Completeness (+), resource utiliz. (+), time behav. (-), Resource utiliz. (-), modif. (+), completeness (+), time behav. (-) Modif. (+), completeness (+), resource utiliz. (-), time behav. (-) - Copy of DB - Peer-to-peer, merge, etc. (1) Availability c7. Hibernate System images (1) Availability c5. JDBC c6. ODBC c2. HL7 CDA Engine c3. HXP Engine API (2) Adaptability-scalability Engines for translation XML/HL7 (1) Interoperability Protocols HTTP/ HTTPS/ Proxy server/ Gateway Protocols HTTP/ HTTPS/ Proxy server/ Gateway (1) Availability (1) Authenticity, (1) confidentiality, (1) integrity d2. Satellite Time behav. (-), resource utiliz. (--), completeness (+), adapt. (+) Modif. (-), completeness (+), resource utiliz. (-), time behav. (--) Module d1. Internet Availability (-), modif. (-) (1) Interoperability c4. New medical standards * c8. Integrity mechan. * c9. Availab. Mechan. - c9a. Mirror DB - c9b. Mirror DB with replication Module Trade-offs w.r.t. HIS domain quality model improve (+) (++), worsen (-) (--) (1) Availability (1) Interoperability (1) Availability (1) Authenticity, (1) confidentiality, (1) integrity Modif. (+), completeness (+), resource utiliz. (-), time behav. (--) Completeness (+), authenticity (+), confidentiality (+), integrity (+), resource util. (-), time behav.(-), interoperability (+), adaptabilityscalability (+) Completeness (+), authenticity (+), confidentiality (+), integrity (+), resource util. (-), time behav.(-), interoperability (+), adaptabilityscalability (+) 53 FS is obtained preserving CC and instantiating those variation points <<Ai>> corresponding to customer requirements. The induced graph RAFS = (FS, R) is defined as a Feasible Architecture (FA). Evaluation and optimization will be performed on a set of FS, i.e., optimize a set of FA implies to evaluate and optimize the associated set of FS. To evaluate the FS we apply the following heuristic: 1. A Weight Table (WT) (see Table 4 for the HIS-WT) is constructed, where the rows are the RA variation points involving more than one variant, with their variants, demanded by the customer; the columns are quality properties also involved in customer requirements. A weight is assigned by the expert to each <<vp>> variant, such that their sum is equal to 1. These weights are assigned according to the satisfaction to the main domain quality properties, considering the trade-offs listed in Table AST (see Table 3 for the HIS-AST), to consider the impact of the quality properties derived from the customer requirements, on the variant w.r.t. the global domain quality properties specified by the DQM (see Figure 3 for the HIS-DQM). The degree of satisfaction in WT is expressed by +/++ or –/-- on the customer NFR and translated to a numerical value that is the weight of the variant; 0 is placed when the variant is not involved with the quality property. Common components and <<vp>> with only one variant are assigned a weight of 1 and are not shown in WT; it has to be noticed that the weights assigned to the variants of a <<vp>> are independent from the weights assigned to other <<vp>> variants. 2. FS Evaluation: is defined as the average of the FS components’ weights. 3. Find the set of Optimal Feasible Solution (OFS): many real problems involve simultaneous optimization of different competing objectives [18]. The expert obtains OFS considering a subset of FS of greatest average satisfying the customer demand and that may compete with other objectives, emphasizing other customer priority requirements, such as cost. The above preliminary remarks, with artifacts RADT, AST, DQM for the specific domain, HIS in our case, and the customer requirements, are considered to start the process. 3.2 ASSPRO: Heuristic-based assessment process for SPL Product Derivation 3.2.1 Preparation for the FS computation 1. From RADT, an initial set B is constructed by the expert containing common components. Other components can be included to reflect the customer FR and NFR necessary to make the product “work”; however, the required product quality could be only partially fulfilled. This set is not necessarily an FS. 2. Other variation points <<Ai >> i = 1, 2, ..., s with their variants from RA, that the expert considers satisfying NFR which are not fulfilled in the initial B, are chosen to get the first set of FS; pairs <<Ai>>, <<Aj>> must be checked to consider alternatives, <<Ai>>OR<<Aj>> or <<Ai>>XOR<<Aj>>. 3. Once the first FS set is obtained, other variation points can be instanciated by the expert to increase some of the required qualities; these instances are added to the first FS set to obtain a new FS set. 4. The Table WT, obtained from Table AST, customer requirements and DQM, with the weights for each variant integrating <<Ai >> i=1, 2, .., s. Notice that in steps 2 and 3 connectivity checking must be performed when adding new instances. 3.2.2 Process specification 1. FS computation: B = B <<A1>> <<A2>> ... <<As>>, where B <<A1>> = {B a: a <<A1>>}. Notice that is similar to a concat operator. If B = {FS(1), FS(2), …, FS(k)} then B <<Ai>>={FS(j) <<Ai>>: j = 1, ..., k}, for some <<Ai>>. It must be checked for each FS, that RAFS is connected. This can be done by checking the adjacency matrix representing RAFS . 2. Compute the average weight for each FS in B. 3. Compute the Optimal set of FS (OFS): Analyze those FS with the greatest average among all FS, in a range established by the expert; the optimization objective is established w.r.t. customer NFR, as it has been already explained; another optimization objective could be considered over OFS, for example, the cost, towards a more accurate choice of the leading FS. 4. Construct the documentation for each FS in OFS. 5. Construct the architectural configurations RAFS = (FS, R) for the corresponding FS in OFS. 3.2.3 Output Display in UML the RAFS present in OFS . Discussion with customer about the solutions offered in OFS with the documentation, showing also the RAFS of the most adequate FS in OFS, considered by the expert. 4. Applying ASSPRO to the his domain 4.1 Preparation for the FS computation 1. Customer requirements for a new HIS Assume that customer requirements for a new product of the HIS SPL family are the following: A web-based system of low cost (priority requirement) to handle basic functionalities of patient data, HER management, besides medical reports and statistics with some administrative services, Java platform and Oracle database. For this study, if a customer requirement cannot be accomplished with the present RA, it will not be considered; else, the option of extending RA with the new requirements should be studied. 54 The expert extracts the following inherent quality requirements from the HIS DQM: interoperability, security (authenticity, confidentiality, integrity) for HER, data adaptability-scalability, and HER availabilitypersistency [8]. Effect on global cost of product Weight a1. Web pages a4. GUI c5. JDBC c6. ODBC c2. HL7 CDA Engine c3. HXP Engine + 0 0 0 ++ + + 0 0 0 + + 0 0 0 + + 0 0 0 ++ 0 0 0 + ++ ++ + 0 + - -++ 0 0 - 0.8 0.2 0.8 0.2 0.7 + 0 0 0 0 0 + 0.3 b7+ b7a (b7+HTTP) b7b (only HTTPS) b7+b7b (b7+HTTPS) d1. Internet d2. Satellite 0 + + + + + - - 0.4 0 + - + - - + -- 0.5 0 + + + + + - ++ 0.1 + + + + + + + + - + + - ++ 0.8 0.2 HIS-RA Variant components Time behaviour {FS(46), FS(47), …, FS(90}} = {FS(1), FS(2), …, FS(15), …, FS(45)} Δ c8 = {FS(1) c8, FS(2) c8, …, FS(45) c8}. Adaptability— scalability We get 30 FS that added to the first 15 FS give 45 FS considering additional availability. Now, additional security <<c11>> = c8 is added to obtain: Availabilitypersistency To get more availability, <<c12>> = {c9a, c9b} is added: {FS(16), FS(17), …, FS(45)} = {FS(1), FS(2), …, FS(15)} {c9a, c9b} = {FS(1) c9a, FS(2) c9a, …, FS(15) c9a, FS(1) c9b, FS(2) c9b, …, FS(15) c9b}. Integrity 3. III. Additional variation points to increase quality requirements can be used to construct another set of FS, besides the first one. Confidentiality {FS(1), FS(2), …, FS(15)} = B Δ <<b9>>Δ (<<b10>> OR <<c15>>) = {a1, a2, a3, d1, b1, b2, b3, b6, c1, c4, c5, c7} Δ {b7b, b7+b7a, b7+b7b} Δ {b4, c2, c3, {b4, c2}, {b4, c3}}. Customer Quality Req. Authenticity 2. Other variation points required to construct the first set of FS. In the HIS case, <<Ai >> are security, interoperability and availability. In general, the expert can recommend a minimal set of <<vp>> that must be present to obtain a first set of FS. In the HIS case, availability is already present in initial B with c7. Hibernate for persistency; security <<b9>>= {b7b, b7+b7a, b7+b7b}, interoperability <<b10>> = {b4} OR <<c15>> = {c2, c3} = {b4, c2, c3, {b4, c2}, {b4,c3}} are considered to obtain the 15 first FS;: Table 4. HIS-WT: Weights Table (WT) - in gray components favoring lower cost Interoperability Construction of the initial set B In our case, B = {a1, a2, a3, d1, b1, b2, b3, b6, c1, c4, c5, c7} contains mandatory common components that will be shared by all FS, and notice that B is not necessarily an FS; component b6. Precision is required by b1 and b3. On the other hand, c1. Data Base is mandatory for HIS and customer requires Oracle/Java, then we have c5. JDBC; c4. Addition of new medical standards satisfies scalability customer requirement; instead, c7. Hibernate for persistency is placed by the expert because a low cost system is required and other safeguard mechanisms can increase the global cost. property [8], and it was added to the set of the customer “inherent” quality properties to consider the effects of the variants selection on the global cost. Since the customer requires a minimal cost, the global weight of the variant will be greater if cost decreases. The expert plays a very important role to identify the adequate trade-offs involved. 4.2 ASSPRO for HIS SPL product derivation 1. Computation of the FS set 90 FS are obtained, as it was explained in section 4.1. In case of considering the expression <<b10>>XOR <<c15>> instead of <<b10>> OR <<c15>>, we get the first 54 FS. 2. Computation of the weight’s average for each FS in B Notice that the global cost of the product in Table WT is an “assigned” software quality property, and it was added to the set of the customer “inherent” quality properties to consider the effects of the variants selection on the global cost. Since the customer requires a minimal cost, the global weight of the variant will be greater if cost decreases. The expert plays a very important role to identify the adequate trade-offs involved (see Tables 3 and 4). We get 45 new FS considering additional security. 90 FS is obtained. Notice that the 90 FS are consistent by construction and they are working solutions, since they have CC and fulfill in some measure all priority quality requirements. They are shown in the Appendix. Notice that RAFS is connected since RAB is connected and the <<vp>> considered to be operated with Δ are connected to RAB. The <<vp>> instantiation must be checked against the constraints present in RADT for consistency checking. 3. Computation of the set of Optimal FS (OFS) Let FS(i) w be the ith FS and FS(i) w its weight. The “best” solutions with greatest averages within the interval [0.89, 0.91] of the 90 FS is selected, FS(2)w = 0.90, FS(47)w = 0.91, FS(7)w=0.89, FS(52)w = 0.90, FS(62)w = 0.89 (see them in gray in the Appendix), FS(47) is optimal w.r.t. customer and domain inherent quality properties. Now, these FS can be checked against the cost, as an additional optimization objective, and FS(2) is optimal w.r.t. minimal cost, since it provides a lower cost, in spite of having FS(2)w<FS(47)w . 4. IV. Computation of Table HIS-WT. Notice that the global cost of the product in HIS-WT (see Table 4) is an “assigned” software quality 4. Construction of the Documentation for each FS in OFS Two examples of FS documentation are provided in what follows, for FS(47) which is optimal w.r.t 55 inherent customer and domain priority quality properties, and FS(2) which is optimal w.r.t. the cost assigned quality property. All FS in OFS must be documented to be presented for final assessment to the customer, to decide on product adoption. FS Documentation some data availability; security level is minimal since it only uses HTTPS in message transmission; Oracle data base is also portable to Java platform with c5. 5. Construction of the architectural configuration RAFS = (FS, R). Description of FS(47) components and justification of accomplished quality properties FS(47) = {a1, a2, a3, d1, b1, b2, b3, b6, b7b, c1, c2, c4, c5, c7, c8} with 15 components, where: a1. Web pages – Firefox Browser, hybrid style SOA/Layers; complete availability of Web Server cannot be guaranteed by SOA [21], then completeness is affected; to decrease response time in web pages display, Apache and PHP with AOdb library can be used; a2, a3 access HIS functionalities, d1. Internet (SOAP for digital security/HTTPS, besides Internet Access Control Service; b1, b2, b3 are HIS functionalities, b6. Algorithms guarantee precision on patient information and medical reports; b7b. Data security, only considers the HTTPS/Internet Security service option; b1, b2 y b3 can access d1 also with HTTP or HTTPS; c1. Data Base, with c5. JDBC API for Oracle and Java platform portability; c2: HL7 CDA Engine to translate HL7 to XML, for HER interoperability, increasing response time; c4. New medical standards for scalability means to consider increase in resources; c8. Integrity, to guarantee that medical data is not corrupted is included as an additional option by the expert to increase minimal security level: c7. Hibernate, for persistency to have availability in Data Layer without special safeguard mechanisms, since a low cost system is demanded. Evaluation of FS(47) FS(47) decreases response time, increases resource utilization, in consequence it increases global cost; quality of service for security is low, however c8, a component for integrity is added to increase this quality of service; since availability only depends on Internet protocols, a persistency component, c7, is also present. Oracle database is portable to Java platform with c5. Description of FS(2) components and justification of accomplished quality properties FS(2) = {a1, a2, a3, d1, b1, b2, b3, b6, b7b, c1, c2, c4, c5, c7} with 14 components. The only difference w.r.t. FS(47) is the integrity component c8, which is missing in FS(2). Evaluation of FS(2) It is a lower cost solution than FS(47), with fewer components and less response time. And low availability since it depends on the availability of the Web Server /Internet connection in Transmission Layer; however it has a data persistency mechanism in Data Layer to have Figure. 4. Architecture of the new product RAFS(2) = (FS(2), R) Source: authors 4.3 Output Display in UML of all RAFS in OFS. Figure 4 shows the architectural configuration for RAFS(2) = (FS(2), R) in UML. Assessment for optimal FS. RAFS(2) = (FS(2), R) is shown in Figure 4 as the minimal cost solution, even if it is not optimal w.r.t. customer and domain quality properties, since FS(2)w<FS(47)w. All FS documentation in OFS with the respective evaluation is also presented, see FS(2) documentation. Notice that FS(2) is preferred over FS(47) and FS(52), since these solution have the c8. Integrity component, increasing cost of both solutions. FS(2) is compliant with demanded FR, and NFR and with the low cost requirement. In conclusion FS(2) is the lowest cost solution in resources and time behavior, however it is less secure and reliable; however, the customer may consult also the assessment for FS(47) optimal w.r.t. “inherent” domain and customer NFR. It is clear that these solutions are only a simple example to illustrate our approach. The case study shows the need of automatic tool support for the assessment process, as in most of the derivation approaches in industrial scenarios. 5. Related works ASSPRO concerns the specification of the product as the first stage of the SPL derivation process, and it involves the stage for the derivation of the product architectural configuration (see Figure 1). The stage of product configuration is discussed, with two approaches, assembly and configuration selection in [4]; three types of assembly 56 approaches are identified, construction, generation and composition. We are concerned here with construction and generation. Assembly – Construction. This approach, similar to ours, starts deriving the product architecture from the components of RA. The last step is to provide the parameters for each component with their respective values to select [4]. Within this approach, we have: Product derivation from RA: these works are related with derivation from RA and not from the feature model. An interesting work is that of Durán-Limón and others [5], which use an ontology combined with the MDA (Model Driven Architecture) approach to define transformation rules for the derivation of the new product. They consider, as we do, variability of components and connectors, but not explicitly the variability of NFR related to FR or domain, nor their specification with a standard quality model. Assembly – Generation: for the initial configuration, the shared artifacts are modeled by a modeling language. Many works on SPL product derivation using MDA approaches are found [2, 7], essentially focusing product derivation from FODA models [9, 16]. They are widely used in industrial and academic scenarios; however the feature model structure is not an architecture; only FR are specified by FODA, and NFR are missing [7], [14], [18], [19]; to get the RA, other models and transformations must be created, the modules connections are not explicitly specified either. Many of the approaches studied are supported by automatic tools such as GenArch [2] and SPL Conqueror [19], which inspired parts of this work. In [2], [7], [14] important literature reviews can be found on the SPL product derivation topic. 6. Conclusion ASSPRO, for concrete product configuration, within the SPL product derivation stage of the Application Engineering discipline, has been presented. The process starts with RA with imbedded domain knowledge, and not from a feature model [9], as many derivation approaches do [7], [16] since they do not consider quality properties associated to FR or global domain NFR, which drive most of the SPL variability as much as the FR. A heuristic is used to compute weights on the quality of the RA components and w.r.t. customer requirements, to choose an optimal FS, providing justified documentation. The heuristic may appear naive for the simple weight average computation; however, a much more complex formula can be introduced, since the process is general. The combinatorial explosion produced by the NFR variability is trimmed by the operation to construct valid FS and by connectivity checking. We do not pretend to compete with sound approaches used in academic and industrial scenarios for SPL product development from reusable code assets [2], [7], [14], [18], [19]; nevertheless, ASSPRO can be used as a “front-end” in any of these approaches. A limitation is that expert knowledge plays a major role; however, this aspect is shared by most of the known SPL engineering approaches. In future works the ontological approach [5] will be exploited to improve the specification of the product configuration from the domain knowledge gathered in RA. The ASSPRO support tool is now under construction. Acknowledgment This work has received partial support from different national projects and institutions: projects PEII DISoft 2011001343 of Fonacit, Venezuela and DARGRAF PG 03-8730-2013-1 of the CDCH (Consejo de Desarrollo Científico y Humanístico), Venezuela Central University, the Postgraduate Studies of Computer Science, Faculty of Science, Venezuela Central University, and the Banco Cemtral de Venezuela (BCV). References [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Chung, L. et al. (2000). Non-Functional Requirements in Software Engineering. USA: Springer. Cirilo, E., Kulesza, U. & Pereira, C. (2007). GenArch – A model-based product derivation tool. Proceedings Simpósio brasileiro de componentes, arquitetura e reutilização de software (pp. 31-44). Campinas, Brasil. Clements, P. & Northrop, L. (2001). Software product lines: Practices and patterns. Readings: Addison Wesley. Deelstra, S., Sinnema, M. & Bosch, J. (2005). Product derivation in software product families: A case study. Journal of Systems and Software 74(2), pp. 173-194. Durán, H., Castillo, F. & López, R. (2011). Towards an ontology-based approach for deriving product architectures. Proceedings of the 15th International Software Product Line Conference (Article 29). Munich, Germany. Elsner, C. (2012). Automating staged product derivation for heterogeneous multi–product-lines. P.h.D Thesis. Friedrich-Alexander-Universität, Germany. González, J. (2014). Derivación, evaluación y mejora de la calidad de arquitecturas software en el desarrollo de líneas de producto software dirigido por modelos. P.h.D Tesis. Universidad Politécnica de Valencia, España. ISO/IEC (2011). Systems and software engineering Systems and software Quality Requirements and Evaluation (SQuaRE). System and software quality models, ISO/IEC JTC1/SC7/WG6. USA: ISO. Lee, K., Kang, K. & Lee, J. (2002). Concepts and guidelines of feature modeling for product line software engineering. Proceedimngs 7th International Conference on Software Reuse: Methods, Techniques, and Tool (pp. 62-77). Austin, USA. Losavio, F., Ordaz, O. & Santos, I. (2015). Proceso de análisis del dominio ágil de sistemas integrados de salud en un contexto venezolano. ENL@CE 12(1), pp. 101-134, Losavio, F., Ordaz, O. & Esteller, V. (2015). Quality-based bottom-up design of reference architecture applied to HIS. Proceddings 9th International Conference on Research Challenges in Information Science (pp. 76-81). Athens, Greece. Losavio, F., Ordaz, O. & Levy, N. (2014). Refactoring graph for reference architecture design process. Proceedings Journées Nationales GDR GPL - AFADL - CAL - CIEL 2014 (pp. 1-6). Paris, France. Losavio, F. et al. (2013). Graph modelling of a refactoring process for product line architecture design. Proceedings XXXIX Latin American Computing Conference (pp. 1-12). Naiguata, Venezuela. Luimnigh, O. (2010). Towards a product derivation process reference model for software product line organisations. P.h.D Thesis. University of Limerick, Ireland. 57 [15] Matinlassi, M. (2004). Comparison of software product line architecture design Methods: COPA, FAST, FORM, KobrA and QADA. Proceedings 26th International Conference on Software Engineering (pp. 127-136). Edinburgh, UK. [16] Pohl, K., Böckle, G. & Linden, F. (2005). SPL Engineering Foundations, principles, and techniques. USA: Springer. [17] Samilovich, S. (2010). OpenEMR – Historia Clínica Electrónica de codigo abierto y distribuicón gratuita, apta para su uso en el sistema de salud Argentina. Proceedings CAIS 2010 Congreso Argentino de Informática y Salud. Buenos Aires, Argentina. [18] Sayyad, A. et al. (2013). Optimum feature selection in SPL: Let your model and values guide your search. Proceedings First International Workshop on Combining Modelling and [19] [20] [21] [22] Search-Based Software Engineering (pp. 22-27). San Francisco, USA. Siegmund, N. et al. (2012). SPL-Conqueror: Toward optimization of non-functional properties in SPL. Software Quality Journal 20(3), 487-517. Supakkul, S. & Chung, L. (2004). Integrating FRs and NFRs: A use case and goal driven approach. Lecture Notes in Computer Science 3647, pp. 29-41. Booth, D. et al. (2004). Web services architecture requirements. USA: World Wide Web Consortium. Shaw, M. & Garlan, D. (1996). Software architecture: Perspectives on an emerging discipline. New York: Prentice Hall. APPENDIX Table of FS obtained by ASSPRO – the FS belonging to the OFS set are shown in gray a1 a2 a3 d1 b1 b2 b3 b6 c1 Components & Weights c4 c5 c7 b7b b7+b7a FS(1) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(2) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(3) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(4) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(5) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(6) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(7) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(8) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(9) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(10) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(11) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(12) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(13) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(14) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(15) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(16) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(17) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(18) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(19) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(20) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(21) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(22) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(23) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(24) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(25) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(26) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(27) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(28) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(29) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(30) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(31) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(32) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(33) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(34) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(35) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(36) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(37) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(38) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(39) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(40) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(41) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 FS b7+ b7b b4 c2 c3 Average Total 12.1/14 0.86 12.6/14 0.90 12.2/14 0.87 12.8/15 0.85 12.4/15 0.83 12.0/14 0.86 12.5/14 0.89 12.1/14 0.86 12.7/15 0.85 12.3/15 0.82 11.7/14 0.84 12.2/14 0.87 11.8/14 0.84 12.4/15 0.83 12.0/15 0.80 0.6 12.7/15 0.85 0.6 13.2/15 0.88 0.6 12.8/15 0.85 0.6 13.4/16 0.84 0.6 13.0/16 0.81 0.6 12.6/15 0.84 0.6 13.1/15 0.87 0.6 12.7/15 0.85 0.6 13.3/16 0.83 0.6 12.9/16 0.81 0.6 12.3/15 0.82 0.6 12.8/15 0.85 0.6 12.4/15 0.83 0.6 13.0/16 0.81 0.6 12.6/16 0.79 0.4 12.5/15 0.83 0.4 13.0/15 0.87 0.4 12.6/15 0.84 0.4 13.2/16 0.83 0.4 12.8/16 0.80 0.4 12.4/15 0.83 0.4 12.9/15 0.86 0.4 12.5/15 0.83 0.4 13.1/16 0.82 0.4 12.7/16 0.79 0.4 12.1/15 0.81 c9a c9b 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.2 0.7 0.2 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.1 0.2 0.7 0.3 c8 58 FS(42) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(43) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.7 FS(44) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(45) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(46) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(47) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(48) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(49) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(50) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(51) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(52) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(53) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(54) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(55) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(56) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(57) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(58) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(59) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(60) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(61) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(62) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(63) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(64) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(65) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(66) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(67) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(68) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(69) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(70) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(71) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(72) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(73) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(74) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(75) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(76) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(77) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(78) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 FS(79) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(80) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.5 0.2 FS(81) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(82) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(83) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 FS(84) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(85) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.4 0.2 FS(86) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(87) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(88) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 FS(89) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 FS(90) 0.8 1.0 1.0 0.8 1.0 1.0 1.0 1.0 1.0 1.0 0.8 1.0 0.1 0.2 0.4 12.6/15 0.84 0.4 12.2/15 0.81 0.4 12.8/16 0.80 0.4 12.4/16 0.78 1.0 13.1/15 0.87 1.0 13.6/15 0.91 1.0 13.2/15 0.88 1.0 13.8/16 0.86 1.0 13.4/16 0.84 1.0 13.0/15 0.87 1.0 13.5/15 0.90 1.0 13.1/15 0.87 1.0 13.7/16 0.86 1.0 13.3/16 0.83 1.0 12.7/15 0.85 1.0 13.2/15 0.88 1.0 12.8/15 0.85 1.0 13.4/16 0.84 1.0 13.0/16 0.81 0.6 1.0 13.7/16 0.86 0.6 1.0 14.2/16 0.89 0.6 1.0 13.8/16 0.86 0.6 1.0 14.4/17 0.85 0.6 1.0 14.0/17 0.82 0.6 1.0 13.6/16 0.85 0.6 1.0 14.1/16 0.88 0.6 1.0 13.7/16 0.86 0.6 1.0 14.3/17 0.84 0.6 1.0 13.9/17 0.82 0.6 1.0 13.3/16 0.83 0.6 1.0 13.8/16 0.86 0.6 1.0 13.4/16 0.84 0.6 1.0 14.0/17 0.82 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.2 0.7 0.3 0.7 0.3 0.6 1.0 13.6/17 0.80 0.4 1.0 13.5/16 0.84 0.4 1.0 14.0/16 0.88 0.4 1.0 13.6/16 0.85 0.4 1.0 14.2/17 0.84 0.4 1.0 13.8/17 0.81 0.4 1.0 13.4/16 0.84 0.4 1.0 13.9/16 0.87 0.4 1.0 13.5/16 0.84 0.4 1.0 14.1/17 0.83 0.4 1.0 13.7/17 0.81 0.4 1.0 13.1/16 0.82 0.4 1.0 13.6/16 0.85 0.4 1.0 13.2/16 0.83 0.4 1.0 13.8/17 0.81 0.4 1.0 13.4/17 0.79 59