KumbangSec: An Approach for Modelling Functional and Security Variability in Software Architectures Varvana Myll¨arniemi, Mikko Raatikainen, Tomi M¨annist¨o Helsinki University of Technology Software Business and Engineering Institute P.O. Box 9210, 02015 TKK, Finland {varvana.myllarniemi, mikko.raatikainen, tomi.mannisto}@tkk.fi Abstract Software products often need to vary in terms of functionality, but also in terms of quality attributes. We describe KumbangSec, which in an approach for modelling functional and security variability applying different architectural viewpoints. KumbangSec builds on an existing variability modelling method, Kumbang, by extending it with security engineering concepts. KumbangSec consists of a conceptualisation and a language implementing the conceptualisation. The semantics for the conceptualisation has been described using natural language; the syntax for the language has been defined in a grammar. KumbangSec can be supported with a configurator, which is an intelligent tool supporting derivation of products that each satisfy specific and different functional and security requirements. Such a tool, KumbangSec configurator, is currently being developed. 1 Introduction Quality attributes, such as performance, security and availability, are important in many industrial software products. Quality attribute has been defined as a feature or characteristic that affects an item’s quality [16]. Many quality attributes are architectural, meaning that the architecture of the software is critical to their realisation, and these qualities should be designed in and evaluated at the architectural level [4]. Today, many software product companies have to face the diversity of customer needs. Instead of developing a single product as a compromise of these needs, many companies offer several software products with slightly varying capabilities. Variability is the ability of a system to be efficiently extended, changed, customised or configured for use in a particular context [36]. Feature models [19] are one of the first widely known approaches to express variability. Recently, several other approaches to express variability by modelling have emerged. Modelling methods such as orthogonal variability modelling [27] and COVAMOF [33] augment other models of software to express variability. These methods can be used at any level of modelling: at the requirements, architecture or detailed design level. In contrast, Koala [37] and its derivate Koalish [2] are modelling methods that contain specific constructs for variability and address only architectural level modelling. Finally, despite the lack of explicit constructs for variability, existing modelling methods such as UML are used to express variability [11]. However, research on variability rarely addresses quality attributes. In particular, most variability modelling approaches do not have explicit constructs for quality attributes. Despite this, there are industrial cases in which the products in a product family have different quality attribute requirements; such examples of varying qualities include security [10] and performance [25]. Thus quality attribute variability needs to be realised [12, 22, 26, 24]. Since software architecture is critical to the realisation of many quality attributes, modelling quality attribute variability is relevant at the architectural level. Further, the fact that software architecture is a key asset in realising software product family variability [6] stresses the importance of addressing quality attribute variability at the architectural level. In this paper, we describe KumbangSec, which is an approach for modelling functional and security variability in software architectures. KumbangSec is built on the concepts of product configuration, software architectures, feature modelling, and security engineering. To address functional and security concerns, KumbangSec has been organised into four architectural viewpoints [15]: functional view, component view, deployment view and security policy view. KumbangSec approach consists of a conceptualisation and a language. The language has been unambiguously specified in such a way that KumbangSec models can be configured with a configurator. A configurator is an intelligent tool that enables derivation of products satisfying specified functional and security requirements; such a configurator tool is currently being developed. The rest of the paper is organised as follows. Firstly, Section 2 outlines the background for KumbangSec. Thereafter, Section 3 introduces KumbangSec. Section 4 discusses the validity of KumbangSec. Finally, Section 5 draws conclusions and discusses future work. 2 Previous work This section discusses the research on which KumbangSec is based. 2.1 Figure 1. ISO/IEC 15408 security concepts [17] Quality attributes in software architectures According to [15], software architecture is the fundamental organisation of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. State of the practice is to model and document software architectures using different viewpoints and views as described in IEEE Standard [15]. A view is a representation of a whole system from the perspective of a related set of concerns. Example viewpoints include module view that describes the decomposition of code units, and deployment view that describes how software is allocated to physical devices. Typically, certain viewpoints are used to answer concerns related to certain quality attributes; e.g. process view is often used when addressing performance concerns. The goal of KumbangSec is to enable tool-supported derivation of products that satisfy varying quality attribute requirements. In order to target this goal, the approach should include a mechanism for ensuring that quality attribute requirements are met. This can be done in two ways. Firstly, the approach can apply well-known quality attribute solutions, such as patterns [31] or tactics [4]. Secondly, the approach can evaluate quality attributes from the architectural models. When applications are built by reusing existing components, as is the case with configurable component-based products, the task of evaluating quality attributes from the architectural models can utilise information about the characteristics of components. The problem of predictable assembly [7] is as follows: given a set of components with know property p, and the composition of these components, how can system-wide property P be evaluated? Several approaches have been presented, e.g., for static memory consumption [9], performance [5], and reliability [28]. How- ever, some quality attributes, such as security or safety, are more difficult in the sense that their prediction requires more information [21]. A prediction mechanism for security has also been proposed [30]. However, a problem with security is that it is not trivial to come up with a quantitative, composable metric that captures security concepts well. 2.2 Software security According to ISO/IEC 9126 [18], security is the capability of the software to protect information and data so that unauthorised persons or systems cannot read or modify them and authorised persons or systems are not denied access to them. That is, security is a composite of confidentiality, integrity and availability [3]. Confidentially means absence of unauthorised disclosure of information; integrity means absence of unauthorised system alternations [3]; and availability means readiness for correct service for authorised actions [3]. Figure 1 illustrates high-level security concepts of ISO/IEC 15408 [17]. Security is concerned with the protection of assets from threats [17]; assets are defined to be information or resources to be protected with countermeasures [17]. A threat exploits vulnerability in the software. In order to reduce vulnerabilities, countermeasures are imposed in the software (see Figure 1). The definition of ISO/IEC 9126 [18] makes a distinction between authorised and unauthorised persons or systems; these parties are termed as principals (e.g.[29, 20]). In order to specify authorisation, an access policy (also called security policy) should be defined. In the security perpective tactics by Rozanki and Woods [29], access policy is constructed by first identifying assets and principals, classifying them, and then mapping principal classes to asset classes. Principals can also be software systems; in fact, some studies on security of component-based software treat components as principals (e.g.[20]). As noted in ISO/IEC 9126 [18], security also applies to data in transmission. In order to ensure that security policies are not violated when components transmit information with each other, Herrmann [13] has proposed an approach for analysing information flow in component-structured architectures by labeling pieces of information with access policies. The idea is to prevent information from flowing to unauthorised principals. The concepts illustrated in Figure 1 are to some extent reflected in the conceptual model of reference architectures for software product lines with varying security requirements [10]. The model consists of three submodels [10]. Security submodel deals with risk assessment; core concepts include threat, asset, vulnerability, unwanted incident and risk. An architecture submodel incorporates architectural solutions, that is, countermeasures that promise to address security requirements. A decision support submodel supports security requirements through scenarios. 2.3 Kumbang Variability has been studied in the domain of traditional products, i.e. mechanical and electrical ones. This domain of research is called product configuration, and it pertains to modifying the general design of a product in prescribed ways to produce product individuals that match the specific needs of customers [35]. The results include a number of conceptualisations [34], languages and tools. Recently, these same concepts have been applied to software products [1] [14]. Kumbang [1] is a domain ontology for modelling the variability in software product families. It includes concepts for modelling variability both from an architectural and feature point of view. From architectural point of view, Kumbang builds on Koala [37], which is an architecture description language developed and used in Philips. More specifically, the modelling concepts include components and features with compositional structure, attributes, the interfaces of components and connections between these, and constraints. Hence, Kumbang enables modelling variability in parallel from an architectural and feature point of view as well as describing how features are implemented by the architectural elements. The semantics of Kumbang is rigorously described using natural language and a UML profile. A language based on the Kumbang ontology likewise called Kumbang has been defined. Kumbang has been provided with formal semantics by defining and implementing a translation from Kumbang to WCRL (Weight Constraint Rule Language) [32], a general-purpose knowledge representation language with formal semantics. Kumbang addresses only functional aspects of configurable software products. This means that using Kumbang, it is possible to derive configurations in which the component architecture satisfies functional requirements, which are specified through features. It is possible to model quality attribute variability with features [14]. However, Kumbang does not provide explicit constructs for modelling quality attributes, which makes it more difficult to address quality attribute variability. 3 KumbangSec In this section, we describe KumbangSec that builds on the concepts outlined in Section 2. KumbangSec is an approach that includes a conceptualisation and a language for modelling component-based products that satisfy varying functional and security requirements. The ultimate goal of KumbangSec is to provide intelligent tool support for deriving these products from family models. Firstly, Section 3.1 gives an overview of the approach. Thereafter, Section 3.2 describes the conceptualisation KumbangSec is based on, and how this conceptualisation makes a distinction between instances and types. Finally, Section 3.3 describes the language that implements the conceptualisation. 3.1 Overview of KumbangSec approach 3.1.1 Basic ideas KumbangSec is an approach for modelling componentbased architectures from functional, compositional and security point of view. KumbangSec builds on Kumbang language [1] by extending it with concepts from security engineering. KumbangSec is organised to reflect the idea of separate architectural viewpoints discussed in IEEE 1471-2000 standard [15]. The viewpoints in KumbangSec are feature viewpoint, component viewpoint, deployment viewpoint, and security policy viewpoint. Features mean user visible characteristics of a system. Components refer to the reused software entities that are connected to form an application. Deployment shows the software components operating on physical devices and networks; this information is needed in order to analyse security threats. Security policy specifies the threats and applied countermeasures; countermeasures are realised within the component architecture. The viewpoints can be linked with constraints in such a way that a change in one viewpoint is reflected to other viewpoints as well. The foundation of Kumbang, and therefore also of KumbangSec, lies on the dichotomy between types and instances, and between a configuration model and configuration, respectively. The situation is illustrated in Figure 2. Figure 2. Metamodel of KumbangSec configuration models, configurations, types and instances. A configuration describes one particular software product variant, while a configuration model describes the rules and the structure upon which valid configurations can be constructed. A configuration contains instances of types defined in the configuration model. Types in the configuration model contain variability, while instances in the configuration do not; a configuration has been resolved from all variability. This dichotomy is similar to development for reuse and development with reuse; domain and application engineering in family based development; and types and instances in object oriented programming. A corollary of this position is that we need to capture a configuration model only, since a configuration can be derived from the configuration model by selecting one variant for each variation point. Therefore, KumbangSec provides a language that can be used for describing configuration models. An essential aspect of this language is that it can be translated to a form that enables tool support for deriving configurations from configuration models. 3.1.2 Security in KumbangSec In order to address security, KumbangSec conceptualises assets, principals, threats and countermeasures. In component-based systems and component models, information is not usually explicitly modelled, but is encapsulated in the components and their connections. In order to support explicit reasoning about security, KumbangSec contains concepts for modelling assets. An asset in KumbangSec is information that needs to be protected. However, only information that is relevant to security reasoning needs to be modelled. Since the number of different assets can be considerable, it is possible to classify assets that have similar security requirements into groups; such a group is called an asset class. Instead of considering stakeholders as principals, KumbangSec adopts the approach by Khan and Han [20] to treat software components as principals. However, components represent different stakeholders through their origin or role in the system. In a similar fashion to assets, principals can be classified into principal classes. Typically, threats and countermeasures that are relevant to an application are very much dependant on the domain at hand. As a consequence, it is difficult to come up with a fixed set of threats and countermeasures that are suitable to all applications. Therefore, threats and countermeasures can be specified in the configuration model to match security requirements at hand. Threats and countermeasures are specified in a security policy. One threat can be addressed by several countermeasures. A countermeasure represents a constraint that is implemented by the component and deployment architecture. In order to achieve finer granularity, one countermeasure can be selected individually for different elements; for example, it is possible to specify for each network which kind of encryption to use. To exemplify how threats and countermeasures can be represented, we have modelled three threats to confidentiality and integrity, and corresponding countermeasures to them. Firstly, information should not flow to unauthorised components; this threat is addressed by preventing such connections between components. Secondly, malicious components may try to access or modify information in the memory; this can be prevented by instantiating components into separate, restricted processes. Thirdly, connections that transmit assets over networks are vulnerable to eavesdropping; this can be addressed by encrypting such connections. 3.1.3 Variability in KumbangSec As is illustrated in Figure 2, configuration models describe the types from which instances in configurations are instantiated. Therefore, configuration models specify variability, whereas all variability has been bound in configurations. There are four kinds of variability in KumbangSec. Firstly, functional variability is specified through features. This variability is achieved through subfeature structures, in which the number and types of subfeatures can vary. Further variability can be achieved through attributes. Secondly, security variability is specified through security policy. Threats cannot be varied, but for each threat, the desired countermeasures (if any) can be varied. Thirdly, architectural variability is specified through component and interface structures. For each component, the number and types of contained components can vary. Further, interfaces can be optional, and interfaces can be bound in different ways. Finally, variability can be achieved by characterising components with attributes. Finally, it is possible to vary deployment by varying the number and types of devices that are deployed to networks. For further discussion about variability in types, please refer to Section 3.2.2. Figure 4. An example how components are deployed to devices and networks tree; a configuration contains exactly one root feature. Further, features can be characterised with attributes: a feature can be attached with an attribute that is a name/value pair. Figure 3. KumbangSec instance metamodel 3.2 KumbangSec conceptualisation The following describes the conceptualisation upon which KumbangSec is based. We first describe the concepts that are reflected in the configuration, that is, KumbangSec instances. Thereafter, we discuss how KumbangSec types are used to characterise instances in the configuration model. 3.2.1 KumbangSec instances A configuration in KumbangSec consists of instances that are features, components, interfaces, bindings, assets, networks, devices, threats, and countermeasures. Figure 3 shows the metamodel of these instances. A configuration provides a set of features, and adheres to a security policy. Components provide or require interfaces that can be bound together, and can form structures in terms of other components as parts. Components are deployed to devices, which reside on networks. Components handle and store assets and transfer them through interfaces. Feature instances The basic representation of a functional requirement in KumbangSec configuration is a feature. Since the number of features in a typical application can be considerable, features can be composed into hierarchies. Thus there can be is-subfeature-of relation between two features in a configuration. Feature hierarchies form a Component and interface instances The basic building block of KumbangSec component architecture is a component. The components in KumbangSec configuration are conceptually much akin to Koala components. However, any component technology with similar concepts can be used for implementing KumbangSec components. A component can specify a number of interfaces, which are sets of operation specifications. The interfaces that a component specifies have a direction, i.e., interfaces are either provided or required. A provided interface offers its operations for other components to use, while a required interface states that the component needs other components to provide the operations. Interfaces can be bound with each other according to the rules specified in [37]. Components can be organised into hierarchies. A component can contain other components; thus components are in a compositional relation with each other, and this hierarchy forms a tree. Also, components may be characterised with attributes. An attribute is a name/value pair that can be used, e.g., for parameterisation of the component. Device and network instances Software components in the configuration may be deployed to separate physical devices; these devices are deployed in a network. Figure 4 illustrates an example situation of deployment. A network can contain several different devices, but devices cannot contain other devices. Networks can form hierarchies through subnets similarly as, e.g., corporate intranet is a part or subnet of Internet. A configuration that has more than one device is distributed. A binding that crosses device borders is a distributed binding, which represents communication over network. Asset, threat and countermeasure instances Assets are attached to components in three different ways. Firstly, a component may handle an asset, which means it stores it in random access memory. Secondly, a component may also store the asset in a permanent storage, for example to a file on the disk. Thirdly, a component may transmit an asset to another component via its interfaces. Security policy specifies how threats are addressed with countermeasures. Each configuration has one security policy, which lists a number of threats. For each threat, a number of countermeasures can be selected to address the threat. In the most simple case, a countermeasure selection is either applied or not applied; in the former case, the countermeasure is enforced in the architecture, while in the latter case not. In general, a countermeasure can be characterised with a selection, which acts as a parameter for implementing the countermeasure in the architecture. For example, a countermeasure that encrypts communication may be attached with a selection SSL 2.0, RSA 128 bit encryption, which specifies the encryption protocol to use. 3.2.2 KumbangSec types As is illustrated in Figure 2, types are the elements in the configuration models, from which instances in the configurations are instantiated. Figure 5 illustrates the metamodel of KumbangSec types. All instances in Figure 3 have a respective type, and vice versa. However, there are two exceptions to this rule. Firstly, binding instances are defined solely upon their connected interface instances, and thus they need no information from the types. Secondly, principal classes and asset classes do not have respective instances, since they are already instantiated by component instances and asset instances, respectively. A distinctive difference to the metamodel of instances (Figure 3) is the use of definitions. A definition separates typing from the structure, and acts as a point of variability. For example, a part definition specified by a component type C states what kind of components a component instantiated from C can contain. As an example, a part definition named database in component type Server may specify that possible component types are Oracle and mySQL and that cardinality is (0, 1). This means that a component instance of type Server may contain zero or one Oracle or mySQL component instances. Similar compositional structures can be defined between features, or between networks and devices or devices and components. Another example is the use of attribute definitions. Attribute value types specify the value range of attributes; for example, attribute value type Boolean may specify value range (yes, no). Attribute value types are attached to feature and component types through attribute definitions; for Figure 5. KumbangSec type metamodel example, feature type Map may define an attribute definition zoomable of type Boolean. To summarise, variability may occur in the compositional structure of networks, features, and components; in attributes; and in what interfaces components contain and which bindings between interfaces exist. The variability in compositional structures is specified using part definitions: the number and type of parts an entity has may vary. Features and components can be parameterised using attributes. Similarly, interfaces may be defined optional and be of different types. Finally, security policies can vary how countermeasures are applied. 3.3 KumbangSec language In order to use KumbangSec concepts for modelling product families, a language that captures the conceptualisation described in Section 3.2 has been developed. The language has been constructed in such a way that it enables development of tool support. Since KumbangSec configurations are derived from KumbangSec configuration models (Figure 2), only a language for specifying configuration models is required. The language represents KumbangSec types (see metamodel in Figure 5). KumbangSec language is specified using XML. KumbangSec grammar has been described as an XML schema, whereas the configuration models are XML instance documents from the schema. XML was chosen due to its widespread use; for example, a number of parsers and editors are available for XML. The XML schema that represents KumbangSec grammar has been specified. Each definition and each type in KumbangSec type metamodel (Figure 5) has its own XML schema data type in the grammar. For example, the XML schema definition for ComponentType is illustrated in Figure 6(a). This snippet states that each component type has a name, a principal class, defines any number of interfaces, any number of component parts, any number of attributes and any number of assets. Finally, a component type can specify constraints on its elements. An example of the corresponding component type specification is shown in Figure 6(b). It specifies a component type named ServerMain that belongs to principal class InHouse. Further, the component type contains two interfaces, named TransmitInterface and StorageInterface, and specifies that is handles an asset nodeLocation belonging to asset class Location. A component instance instantiated from type ServerMain is visualised in the lower part of Figure 7. In order to give formal semantics to KumbangSec, KumbangSec has been provided with a translation to WCRL (Weight Constraint Rule Language) [32]. WCRL is a form of logic programming, using which one can specify a set of atoms, statements concerning atoms and rules that extend these statements [32]. Further, this translation makes it possible to utilise smodels [32] inference engine to automatically verify whether the configuration matches the rules of the configuration model. The translation to WCRL utilises the fact a translation from Kumbang to WCRL has already been defined [1]. Therefore, KumbangSec is provided with the translation by first translating KumbangSec to Kumbang, and then using the existing translation to WCRL. The translation between KumbangSec and Kumbang treats assets, devices and networks as special kind of components, and policies as special kind of features. Figure 6(c) illustrates part of the WCRL that has been translated from the component specification in Figure 6(b). The first line specifies that component of type ServerMain is an InHouse component. The second and the third line specify the two interfaces this component has. The fourth line specifies that this component defines an asset named nodeLocation. 4 Evaluation In this section, the validity of KumbangSec is evaluated from the following viewpoints. How well does KumbangSec address the problem; are the conceptualisation and language sound; and can KumbangSec be applied in practice, integrated with component implementation technologies and supported with tools? Addressing the problem. The aim of KumbangSec is to study how security variability and functional variability can be modelled from architecture point of view. To target this aim, several existing approaches are integrated into one. The novelty of KumbangSec is combining existing concepts to model variability, while the concepts themselves are based on existing studies. Therefore, the soundness of KumbangSec concepts can be argued from these existing studies. For functional and architectural variability, KumbangSec is based on Kumbang, which in turn is based on feature modelling, Koala, and traditional product configuration concepts. For security variability, KumbangSec extends Kumbang with established security concepts that underlie many studies, including ISO/IEC standard 15408 [17] and security model presented in [10]. However, it is yet unknown how well this combination of concepts addresses the problem. For example, it is unknown whether explicit concepts for risks or vulnerabilities should be included, or how well the conceptualisation supports definition of different kinds of threats and countermeasures. Figure 6. Example translations from a weather station network configuration model. (a) A snippet from the XML schema that defines how component types are specified. (b) An example component type specification in a configuration model. (c) Few lines of the WCRL that is produced from the component type specification. Figure 7. A screenshot of KumbangSec configurator under development (some inconsistencies with current conceptualisation may occur) Soundness of conceptualisation and language. To address the problem of modelling functional and security variability, KumbangSec conceptualisation has been defined. The concepts and their relations have been specified using natural language and metamodels. Further, the separation between instances and types has been specified. To implement the conceptualisation, KumbangSec language has been defined. The semantics of KumbangSec language follows the semantics of KumbangSec conceptualisation. The syntax of the language has been described using an XML schema, which validates that the language can be captured with a grammar. Moreover, using the grammar, it has been possible to parse XML instance documents that represent KumbangSec configuration models. Further, KumbangSec has been given a semantics by providing a translation to WCRL. This validates that the approach can be subjected to automated reasoning. Practical feasibility. KumbangSec has been used to model two small configurable products. Firstly, we have modelled a weather station network that is loosely based on a real software product family. Secondly, we are currently modelling a map viewer application for Nokia 770 Internet Tablet. This application is currently being developed to demonstrate the approach. Hence, it has been shown that it is possible to model products using KumbangSec. However, the limitation to this validity is that no industrial products have been modelled. Further, there is no general knowledge on how easily KumbangSec constructs can be used for capturing product characteristics. Further studies on KumbangSec applicability are therefore required. Integration with component implementation technology. The scope of KumbangSec is high-level variability modelling. That is, KumbangSec is not limited to any particular component implementation technology, but it can be integrated with any approach that is compatible with the conceptualisation, and is able to enforce the specified countermeasures. At the moment, we are integrating KumbangSec with a component technology developed within the research project. Tool support. Finally, the validity of the approach can be demonstrated by building a configurator tool to support derivation of products based on KumbangSec configuration models. We are currently developing KumbangSec configurator by extending previously developed Kumbang configurator [23]. The configurator utilises smodels [32] inference engine for implementing the configuration reasoning in an efficient manner. Further, it is being developed in Java programming language on top of Eclipse platform [8]. A preliminary screenshot of KumbangSec configurator is illustrated in Figure 7. The current results seem to indicate the feasibility of constructing such a configurator. 5 Conclusions We have presented KumbangSec, which is an approach for modelling functional and security variability in software architectures. To address functional and security concerns, KumbangSec has been organised into functional view, component view, deployment view and security policy view. KumbangSec approach consists of a conceptualisation and a language. They have been constructed in such a way that they can be supported with a configurator, which is an intelligent tool that enables derivation of products satisfying specified functional and security requirements. However, the work is still in progress. We are working on developing a configurator tool that supports derivation by extending existing Kumbang configurator. Further, we are validating the approach by modelling product families or configurable products with KumbangSec language. There are several directions to which this approach can be extended. Firstly, KumbangSec assets are considered to be information. However, it is possible that also resources or operations could be treated as assets that need protection. We seek to extend the concept of asset to cover also these, e.g., by classifying interfaces in components according to asset classes. Secondly, more threats and countermeasures should be modelled to study how the conceptualisation can be used to capture different kinds of security characteristics. Finally, different aspects of quality may require different concepts and viewpoints. It has proven to be laborous to extend existing languages with new concepts in such a way that existing tools can be reused efficiently. Therefore, we are currently working on a meta-language, using which concrete languages can be specified; corresponding configurator tool implementation can be generated from the specification. Acknowlegments This research is being carried out in participation of Nokia within Trust4All ITEA project. The authors acknowledge Nokia and all other participants of Trust4All project who have provided feedback and comments on this work. References [1] T. Asikainen, T. M¨annist¨o, and T. Soininen. Kumbang: A domain ontology for modelling variability in software prod- [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] uct families. Advanced engineering informatics journal, Accepted, 2007. T. Asikainen, T. Soininen, and T. M¨annist¨o. A Koala-based approach for modelling and deploying configurable software product families. In Proc. of Workshop on Product Family Engineering, 2003. A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr. Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing, 1(1), 2004. L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley, 2nd edition, 2003. E. Bondarev, M. R. V. Chaudron, and P. H. N. de With. A process for resolving performance trade-offs in componentbased architectures. In Proceedings of International Symposium on Component-Based Software Engineering, 2006. P. Clements and L. Northrop. Software Product Lines— Practices and Patterns. Addison-Wesley, 2001. I. Crnkovic, H. Schmidt, J. Stafford, and K. Wallnau. Anatomy of a reseach project in predictable assembly. In Proc. of 5th Workshop on Component-Based Software Engineering, 2002. Eclipse, http://www.eclipse.org/. E. Eskenazi, A. Fioukov, D. Hammer, and M. Chaudron. Estimation of static memory consumption for systems built from source code components. In Proceedings of the 9th IEEE Conference and Workshops on Engineering of Computer-Based Systems, 2002. T. E. Fægri and S. Hallsteinsen. A software product line reference architecture for security. In T. K¨ak¨ol¨a and J. C. Due˜nas, editors, Software Product Lines—Research Issues in Engineering and Management. Springer, 2006. H. Gomaa. Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison-Wesley, 2004. S. Hallsteinsen, T. E. Fægri, and M. Syrstad. Patterns in product family architecture design. In Proc. of Workshop on Product Family Engineering, 2003. P. Herrmann. Information flow analysis of componentstructured applications. In Proceedings 17th Annual Computer Security Applications Conference (ACSAC 2001), 2001. L. Hotz, K. Wolter, T. Krebs, J. Nijhuis, S. Deelstra, M. Sinnema, and J. MacGregor. Configuration in Industrial Product Families—The ConIPF Methodology. IOS Press, 2006. IEEE Std 1471-2000. IEEE recommended practice for architectural description of software-intensive systems, 2000. IEEE Std 610.12-1990. IEEE standard glossary of software engineering terminology, 1990. ISO/IEC 15408-1. Information technology—security techniques—evaluation criteria for IT security—part 1: Introduction and general model, 1999. ISO/IEC 9126-1. Software engineering—product quality— part 1: Quality model, 2001. K. Kang, S. Cohen, J. Hess, W. Novak, and A. Peterson. Feature-oriented domain analysis (FODA) feasibility study. Technical Report CMU/SEI-90-TR-21, ADA 235785, Software Engineering Institute, 1990. [20] K. Khan and J. Han. Composing security-aware software. IEEE Software, 19(1):34–41, 2002. [21] M. Larsson. Predicting Quality Attributes in Componentbased Software Systems. PhD thesis, M¨alardalen University, 2004. [22] M. Matinlassi. Quality-driven software architecture model transformation. In Proc. of Working IEEE/IFIP Conference on Software Architecture, 2005. [23] V. Myll¨arniemi, T. Asikainen, T. M¨annist¨o, and T. Soininen. Kumbang configurator—a configuration tool for software product families. In IJCAI-05 Workshop on Configuration, 2005. [24] V. Myll¨arniemi, T. M¨annist¨o, and M. Raatikainen. Quality attribute variability within a software product family architecture. In Short paper in Conference on the Quality of Software Architectures (QoSA), 2006. [25] V. Myll¨arniemi, M. Raatikainen, and T. M¨annist¨o. Interorganisational approach in rapid software product family development—a case study. In Proc. of International Conference on Software Reuse (ICSR), 2006. [26] V. Olumofin, F.G.; Misic. Extending the ATAM architecture evaluation to product line architectures. In Proc. of Working IEEE/IFIP Conference on Software Architecture, 2005. [27] K. Pohl, G. B¨ockle, and F. van der Linden. Software Product Line Engineering. Springer, 2005. [28] R. Reussner, H. Schmidt, and I. Poernomo. Reliability prediction for component-based software architectures. Journal of Systems and Software, 66(3), 2003. [29] N. Rozanski and E. Woods. Software Systems Architecture. Addison-Wesley, 2005. [30] V. S. Sharma and K. S. Trivedi. Architecture based analysis of performance, reliability and security of software systems. In Proceedings of the 5th International Workshop on Software and Performance, 2005. [31] M. Shaw and D. Garlan. Software Architecture–Perspectives on an Emerging Discipline, chapter 2. Prentice Hall, 1996. [32] P. Simons, I. Niemel¨a, and T. Soininen. Extending and implementing the stable model semantics. Artificial Intelligence, 138(1–2), 2002. [33] M. Sinnema, S. Deelstra, J. Nijhuis, and J. Bosch. COVAMOF: A framework for modeling variability in software product families. In Proc. of Software Product Line Conference (SPLC 2004), 2004. [34] T. Soininen, J. Tiihonen, T. M¨annist¨o, and R. Sulonen. Towards a general ontology of configuration. AI EDAM (Artificial Intelligence for Engineering Design, Analysis and Manufacturing), 12(4):357–372, 1998. [35] T. Soininen, J. Tiihonen, T. M¨annist¨o, and R. Sulonen. Special issue: Configuration (guest editorial introduction. AI EDAM (Artificial Intelligence for Engineering Design, Analysis and Manufacturing), 17(1–2), 2002. [36] M. Svahnberg, J. van Gurp, and J. Bosch. A taxononomy of variability realization techniques. Software—Practice and Experience, 35(8), 2005. [37] R. van Ommering, F. van der Linden, J. Kramer, and J. Magee. The Koala component model for consumer electronics software. IEEE Computer, 33(3):78–85, 2000.
© Copyright 2024