6 Data
6.3 Variables
6.3.4 Demographic variables
Com o objetivo de dar continuidade à pesquisa desenvolvida nessa dissertação, alguns trabalhos futuros podem ser relacionados, tais com:
• Adotar à abordagem utilizada no Framework para Identificação de Similaridades e Variabilidades em Documentos de Requisitos (Alférez et al, 2008), que se baseia na hipótese de que features são grupos coesos de requisitos, dessa forma, o número de features é reduzido. Além disso, este framework também possui uma etapa de nomeação, onde cada feature é nomeada com base nos requisitos que ela se propõe a satisfazer. Assim, as features recebem nomes mais adequados. Isto solucionaria o problema mencionado nas restrições 3 e 4 (seção 3.2.3);
• Implementar em ReqSys-MDD um editor gráfico de Modelos de Features, para que seja possível criar e visualizar os modelos gerados sem depender de XFeature, evitando que suas limitações sejam estendidas à ReqSys-MDD;
• Implementar em ReqSys-MDD um editor de especificações PL-AOVgraph no modo gráfico, possibilitando outra visão da especificação, não se limitando apenas a forma textual.
• Elaborar e implementar em ReqSys-MDD um mecanismo de rastreabilidade entre PL-AOVgraph e Modelo de Features, de forma que sempre que houverem alterações em um destes artefatos, o usuário seja comunicado quanto ao artefato afetado e o impacto causado;
• Realizar outro experimento controlado com um número maior de participantes distribuídos em grupos através de sorteio, para uma melhor avaliação da abordagem.
• Estender o processo de mapeamento até outros níveis de desenvolvimento, como projeto detalhado e implementação.
Referências
(Acceleo, 2011) ACCELEO. Disponível em: <http://www.eclipse.org/acceleo>. Acesso em: agosto de 2011.
(Alférez et al, 2008) ALFÉREZ, M. et al. A Metamodel for Aspectual Requirements
Modelling and Composition. AMPLE Project deliverable D1.3, September 2008.
(Atkinson et al, 2002) ATKINSON, C.; BAYER, J.; BUNSE, C.; KAMSTIES, E.; LAITENBERGER, O.; LAQUA, R.; MUTHIG, D.; PAECH, B.; WÜST, J.; ZETTEL, J.
Component-based product line engineering with UML. USA: Addison-Wesley, 2002.
(Atlas, 2003) ATLAS (Atlas Transformation Language). Disponível em: <http://www.eclipse.org/m2m/atl>. Acesso em: agosto de 2011.
(Batista et al, 2009) BATISTA, T. et al. Um Estilo Arquitetural para Linhas de Produtos
de Software. Simpósio Brasileiro de Componentes, Arquitetura e Reuso de Software -
SBCARS, 2009.
(Berg et al, 2005) BERG, K.; BISHOP, J. Tracing Software Product Line Variability –
From Problem to Solution Space. Proceedings of SAICSIT, 2005.
(Bézivin et al, 2003) BÉZIVIN, J.; BRETON, E.; DUPÉ, G.; VALDERIEZ, P. The ATL
Transformation-based Model Management Framework. Res. Report no. 03.08, IRIN,
Univ. de Nantes, Sept. 2003.
(Budinsky, 2004) BUDINSKY, F. Eclipse Modeling Framework: A developers´s Guide. England: Addisson Wesley, 2004.
(Castro, 2008) CASTRO, C. E. P.L. Rastreabilidade de Requisitos em Linhas de Produto
de Software. Recife, 2008. Monografia – UFPE.
(Clements et al, 2001) CLEMENTS, P.; NORTHROP, L. Software Product Lines: Practices
and Patterns. Addison-Wesley, 2001.
(Coelho, 2012) COELHO, K. J. L. Dos Requisitos à Arquitetura em Linhas de Produtos
de Software: Uma Estratégia de Transformações entre Modelos. Natal, 2012. 98p.
Dissertação de Mestrado em Sistemas e Computação. Universidade Federal do Rio Grande do Norte – UFRN.
(Czarnecki et al, 2005a) CZARNECKI, K.; ANTKIEWICZ, M. Mapping Features to
Models: A Template Approach Based on Superimposed Variants. Proceedings of the 4th
International Conference on Generative Programming and Component Engineering, Tallinn, Estonia, 2005, pp. 422-437.
(Czarnecki et al, 2005b) CZARNECKI, K.; KIM, C. H. P. Cardinality-Based Feature
Modeling and Constraints: A Progress Report. In: Proceedings of the OOPSLA’05 -
(Eclipse, 2011) ECLIPSE. Disponível em: <http://www.eclipse.org/>. Acesso em: agosto de 2011.
(EMF, 2011) EMF. Disponível em: <http://www.eclipse.org/modeling/emf>. Acesso em: agosto de 2011.
(Filman et al, 2005) FILMAN, R. E. et al. Aspect-Oriented Software Development. Addison-Wesley, 2005.
(Giorgini et al, 2002) GIORGINI, P.; MYLOPOULOS, J.; NICCHIARELLI, E.; SEBASTIÁN, R. Reasoning with goal models. Proceedings of the 21st International Conference on Conceptual Modeling; p.167-181; 2002.
(Grau et al, 2008) GRAU, G.; FRANCH, X.; MAIDEN, N. PRiM: An i*-based process
reengineering method for information systems specification. Information and Software
Technology 50, 2008, pp. 76-100.
(Guimarães, 2010) GUIMARÃES, T. E. MaRiSA-AOCode: Uma Abordagem Genérica
para Geração de Código Orientado a Aspectos. Natal, 2010. 121p. Dissertação de
Mestrado em Sistemas e Computação. Universidade Federal do Rio Grande do Norte – UFRN.
(Jouault et al, 2003) JOUAULT, F; BÉZIVIN, J.; KURTEV, I. KM3: a DSL for
Metamodelo Specification. In: IFIP International Conference on Formal Methods for Open
Object-Based Distributed Systems, 8., Bologna, Italy, 2003. Proceedings of 8th IFIP. Bologna, Italy, 2003. p. 171-185.
(Kang et al, 1990) KANG, K.; COHEN, S.; HESS, J.; NOWAK, W.; PETERSON, S.
Feature-oriented domain analysis (FODA) feasibility study. Technical Report CMU/SEI-
90TR-21, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA, Nov. 1990.
(Lucrédio, 2009) LUCRÉDIO, D. Uma Abordagem Orientada a Modelos para
Reutilização de Software. São Carlos, 2009. 287p. Tese de Doutorado em Ciências de
Computação e Matemática Computacional. Universidade de São Carlos – USP.
(Medeiros, 2008) MEDEIROS, A. L. F. MARISA-MDD: Uma Abordagem para
Transformações entre Modelos Orientados a Aspectos: dos Requisitos ao Projeto Detalhado. Natal, 2008. 112p. Dissertação de Mestrado em Sistemas e Computação.
Universidade Federal do Rio Grande do Norte – UFRN.
(Neiva, 2008) NEIVA, D. F. S. Engenharia de Requisitos para Linha de Produto de
Software. Recife, 2008. Monografia – UFPE.
(OMG/MOF, 2005) OBJECT MANAGEMENT GROUP (OMG). MOF QVT Final
Adopted Specification (ptc/05-11-01). Disponível em: <http://www.omg.org/docs/ptc/05-11-
01.pdf>. Acesso em: agosto de 2011.
(OMG/XMI, 2011) OBJECT MANAGEMENT GROUP (OMG). XMI – XML Metadata
(OMG/XML, 2011) OBJECT MANAGEMENT GROUP (OMG). XML Valuetype
Language Mapping. Disponível em: <http://www.omg.org/spec/XML/>. Acesso em: agosto
de 2011.
(OMG/OCL, 2003) OBJECT MANAGEMENT GROUP (OMG). UML 2.0 OCL
Specification. 2003. Disponível em: <http://www.omg.org/docs/ptc/03-10-14.pdf>.
(Sánchez et al, 2007) SÁNCHEZ, P.; GÁMEZ, N.; FUENTES, L.; LOUGHRAN, N.; GARCIA, A. A Metamodel for Designing Software Architectures of Aspect-Oriented
Software Product Lines. AMPLE Project deliverable D2.2, September 2007.
(Santos, 2010) SANTOS, L. O. PL-AOVgraph: Uma extensão de AOV-Graph para Linha
de Produto de Software. Natal, 2010. 84p. Monografia. Universidade Estadual do Rio
Grande do Norte - UERN. https://sites.google.com/site/plaovgraph.
(Santos, 2011a) SANTOS, L. O.; BATISTA, T. V.; SILVA, L. F. ReqSys – an Eclipse Plug-
in for PL-AOVGraph and Feature Model Mapping. In: Internacional Workshop on Early
Aspects at AOSD’11, 2011, Porto de Galinhas, Pernambuco.
(Santos, 2011b) SANTOS, L. O.; SILVA, L. F.; BATISTA, T. V. On the Integration of the
Feature Model and PL-AOVGraph. In: Internacional Workshop on Early Aspects at
AOSD’11, 2011, Porto de Galinhas, Pernambuco.
(Silva, 2006) SILVA, L. F. Uma Estratégia Orientada a Aspectos para Modelagem de
Requisitos. Rio de Janeiro, 2006. 222p. Tese de Doutorado em Engenharia de Software.
Pontifica Universidade Católica do Rio de Janeiro - PUC-Rio.
(Silva et al, 2010a) SILVA, C.; BORBA, C.; CASTRO, J. G2SPL:
Um Processo de Engenharia de Requisitos Orientada a Objetivos para Linhas de Produtos de Software. In: 13th Workshop on Requirements Engineering (WER 2010),
2010, Cuenca. Proceeding of the 13th Workshop on Requirements Engineering, 2010. p. 1-11
(Silva et al, 2010b) SILVA, L.; BATISTA, T.; SOARES, S.; SANTOS, L. On the Role of
Features and Goals Models in the Development of a Software Product Line. In:
Internacional Workshop on Early Aspects at AOSD’10, 2010.
(Simão, 2010) SIMÃO, I. C. N. Adaptação da Abordagem Theme para Linhas de
Produtos de Software. Lisboa, 2010. 173p. Dissertação de Mestrado em Engenharia de
Informática. Universidade Nova de Lisboa.
(Stahl et al, 2006) STAHL, T. et al. Model-Driven Software Development, Technology,
Engineering, Management. England: John Wiley & Sons, 2006.
(Yu et al, 2004) YU, Y.; LEITE, J.; MYLOPOULOS, J. From goals to aspects: discovering
aspects from requirements goal models. In: Proc. of IEEE International Symposium on
Requirements Engineering (RE'04), Japan, 2004. pp.38-47.
(XFeature, 2011) XFEATURE, XFeature -- Feature Modelling Tool. Disponível em: <http://www.pnp-software.com/XFeature/>. Acesso em: agosto de 2011.
(XText, 2011) XTEXT. Disponível em: <http://www.eclipse.org/ Xtext>. Acesso em: agosto de 2011.
Apêndice A – XMI da especificação PL-AOVGraph de Smart Home
<?xml version="1.0" encoding="ASCII"?>
<plaovgraph:Aspect_Oriented_Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:plaovgraph="http://plaovgraph/1.0"> <goalmodel name="Smart Home">
<element name="Doors Management"> <element name="Open Door"> <element name="Authentication"> <element name="Card Reader">
<relationship xsi:type="plaovgraph:Contribution" label="xor"/> </element>
<element name="Keypad">
<relationship xsi:type="plaovgraph:Contribution" label="xor"/> </element>
<element name="Eye Recognition">
<relationship xsi:type="plaovgraph:Contribution" label="xor"/> </element>
<element name="Finger Print">
<relationship xsi:type="plaovgraph:Contribution" label="xor"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Validate [data]">
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Authorization"> <element name="Select [permissions]">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Control [access]">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Close Door">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Windows Management"> <element name="Open Window">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Close Window">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Regulate Blind">
<element name="Open Window" type="task_ref"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Light Management"> <element name="Regulate Intensity Light">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<element name="Select Predefined Values [Light]"> <element name="Select mode [TV watching]">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<element name="Select mode [Reading]">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<element name="Select mode [Normal]">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Climate Management"> <element name="Measure Temperature">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Regulate Thermostat"> <element name="Heat"> <relationship xsi:type="plaovgraph:Contribution"/> </element> <element name="Refrigerate"> <relationship xsi:type="plaovgraph:Contribution"/> </element> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Windows Management" type="task_ref"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Presence Simulation">
<element name="Regulate Blind" type="task_ref">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Fire Detection"> <element name="Activate Alarm"> <element name="Activate Alarm [Visual]">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> <property xsi:type="plaovgraph:IsFeature"/>
</element>
<element name="Activate Alarm [Sound]">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> <property xsi:type="plaovgraph:IsFeature"/>
</element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Indicate Emergency Exits"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Sprinkle Water">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Minimize Waste of Energy"> <element name="Measure Luminosity">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Detect Movement">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Turn Off">
<element name="Regulate Thermostat" type="task_ref">
<relationship xsi:type="plaovgraph:Contribution" label="inc_or"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Safety" type="softgoal"> <element name="Reliable" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Safety to control [Doors]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Safety to control [Windows]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
<element name="Safety to control [Blinds]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Safety to Sprinkle Water" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Security" type="softgoal">
<element name="Maintaining Privacy" type="softgoal"> <element name="Access Control" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Protect Communications" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Low Response Time" type="softgoal">
<element name="Low Response Time [Sprinkle Water]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Activate Alarm]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Detect Fire]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Light Control]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Windows Control]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Doors Control]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Low Response Time [Blinds Control]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<element name="Low Response Time [Thermostat Control]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Usability" type="softgoal"> <element name="Easy to Use" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Inform Users of States_and_Shares"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Availability" type="softgoal">
<element name="Availability [Sensors]" type="softgoal">
<element name="Availability [Movement Sensor]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Temperature Sensor]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Luminosity Sensor]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Fire Sensor]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Availability [Actuators]" type="softgoal"> <element name="Availability [Door Actuators]" type="softgoal">
<relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Availability [Window Actuators]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Light Actuators]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Climate Actuators]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/>
</element>
<element name="Availability [Fire Actuators]" type="softgoal"> <relationship xsi:type="plaovgraph:Contribution"/> </element> <relationship xsi:type="plaovgraph:Contribution"/> </element> <relationship xsi:type="plaovgraph:Contribution"/> </element>
<element name="Accessibility" type="softgoal">
<relationship xsi:type="plaovgraph:Contribution" label="or"/> </element>
<relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.7" target="//@goalmodel.0/@element.9" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.8" target="//@goalmodel.0/@element.9" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.8" target="//@goalmodel.0/@element.10" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.9" target="//@goalmodel.0/@element.11" label="help"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.9" target="//@goalmodel.0/@element.10" label="help"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.9" target="//@goalmodel.0/@element.7" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.9" target="//@goalmodel.0/@element.8" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.10" target="//@goalmodel.0/@element.8" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.11" target="//@goalmodel.0/@element.9" label="hurt"/> <relationship xsi:type="plaovgraph:Correlation" source="//@goalmodel.0/@element.11" target="//@goalmodel.0/@element.8" label="hurt"/> <relationship xsi:type="plaovgraph:Crosscutting" source="//@goalmodel.0/@element.2">
<pointcut name="PC1"> <operand joinpointPointcut="//@goalmodel.0/@element.4"/> <operand joinpointPointcut="//@goalmodel.0/@element.6/@element.2"> <operator/> </operand> </pointcut>
<advice joinpointAdvice="//@goalmodel.0/@element.2/@element.0" idPointcut="PC1"/> </relationship>
<relationship xsi:type="plaovgraph:Crosscutting" source="//@goalmodel.0/@element.1"> <pointcut name="PC2"> <operand joinpointPointcut="//@goalmodel.0/@element.3/@element.1/@element.0"/> <operand joinpointPointcut="//@goalmodel.0/@element.3/@element.1/@element.1"> <operator operator="or"/> </operand> </pointcut>
<advice type="before" joinpointAdvice="//@goalmodel.0/@element.1/@element.1" idPointcut="PC2"/> </relationship>
<relationship xsi:type="plaovgraph:Crosscutting" source="//@goalmodel.0/@element.12"> <pointcut name="PC3">
<operand primitive="substitute" joinpointPointcut="//@goalmodel.0/@element.0/@element.0/@element.0/@element.1"/> </pointcut> <pointcut name="PC4"> <operand joinpointPointcut="//@goalmodel.0/@element.0/@element.0/@element.0/@element.0"/> <operand joinpointPointcut="//@goalmodel.0/@element.0/@element.0/@element.0/@element.1"> <operator/> </operand> <operand joinpointPointcut="//@goalmodel.0/@element.0/@element.0/@element.0/@element.2"> <operator/> </operand> <operand joinpointPointcut="//@goalmodel.0/@element.0/@element.0/@element.0/@element.3"> <operator/> </operand> </pointcut>
<intertype type="attribute" idPointcut="PC3">
<newAttribute type="Keypad Type" value="Embossed keys"/> </intertype>
<intertype idPointcut="PC4">
<newElement name="Reposition Authentication Device"> <relationship xsi:type="plaovgraph:Contribution"/> </newElement>
</intertype> </relationship>
Apêndice B – XMI do Modelo de Features de Smart Home
<?xml version="1.0" encoding="ISO-8859-1"?>
<featuremodel:FeatureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:featuremodel="http://featuremodel/1.0"> <containsRoot name="SmartHome">
<containsFeature name="Floor">
<containsRelation xsi:type="featuremodel:Mandatory" source="//@containsRoot.0" target="//@containsRoot.0/@containsFeature.0" cardinalityMin="1" cardinalityMax="n"/> <containsFeature name="Room">
<containsRelation xsi:type="featuremodel:Mandatory" source="//@containsRoot.0/@containsFeature.0" target="//@containsRoot.0/@containsFeature.0/@containsFeature.0" cardinalityMin="1" cardinalityMax="n"/> <containsFeature name="RoomDevice">
<containsRelation xsi:type="featuremodel:Optional" source="//@containsRoot.0/@containsFeature.0/@containsFeature.0" target="//@containsRoot.0/@containsFeature.0/@containsFeature.0/@containsFeature.0" cardinalityMin="0" cardinalityMax="n"/> </containsFeature>
<containsFeature name="WaterSprinkler">