False optional features
Description: Identifies features that appear to be optional but, due to constraints and dependencies in the feature model, must be included in every valid product configuration. These features are typically indicative of modeling errors.
Application: Helps in debugging feature models to ensure that the optional features behave as intended.
Example: A feature that is marked as optional but is required by every product configuration due to a constraint with other mandatory features.
Code Examples
Command line usage
flamapy false_optional_features "path/to/feature/model"
Python easy to use facade usage
from flamapy.interfaces.python.flamapy_feature_model import FLAMAFeatureModel
# Load the feature model
fm = FLAMAFeatureModel("path/to/feature/model")
# This method could be called with the param with_sat: bool = True if you want to force pysat (useful for WASM enviroments)
result = fm.false_optional_features()
print(result)
Python flamapy framework usage
from flamapy.core.discover import DiscoverMetamodels
# Initiallize the dicover metamodel
dm = DiscoverMetamodels()
# Call the operation. Transformations will be automatically executed
# Use BDDConfigurations if you want to rely on BDD solver
result = dm.use_operation_from_file("PySATFalseOptionalFeatures","path/to/feature/model")
print(result)
Python flamapy framework ADVANCED usage
from flamapy.core.discover import DiscoverMetamodels
# Initiallize the dicover metamodel
dm = DiscoverMetamodels()
# Get the fm metamodel representation using the transformation
# required to get to the fm metamodel
feature_model = dm.use_transformation_t2m("path/to/feature/model",'fm')
# Manually call a M2M transformation to Pysat
sat_model = dm.use_transformation_m2m(feature_model,"pysat")
# Get the operation
operation = dm.get_operation(sat_model,'PySATFalseOptionalFeatures')
# Execute the operation
operation.execute(sat_model)
# Get and print the result
result = operation.get_result()
print(result)