Code Monkey home page Code Monkey logo

hiconfit-core's People

Contributors

dependabot[bot] avatar manleviet avatar taburg avatar

Watchers

 avatar  avatar

hiconfit-core's Issues

Feature Model Filter app

An app filter out feature models that don't satisfy requirements

// filter out wrong feature models, for example,
// inconsistent
// don't have any constraints
// don't have any mandatory relationships
// don't have any optional relationships
// don't have any alternative relationships
// don't have any or relationships
// the ratio between cross-tree constraints and all constraints is less than 0.1
if (filter
        && (!featureModel.isConsistency()
        || featureModel.getNumOfConstraints() == 0
        || featureModel.getNumOfRelationships(RelationshipType.MANDATORY) == 0
        || featureModel.getNumOfRelationships(RelationshipType.OPTIONAL) == 0
        || featureModel.getNumOfRelationships(RelationshipType.ALTERNATIVE) == 0
        || featureModel.getNumOfRelationships(RelationshipType.OR) == 0
        || ctc < 0.1))
    continue;

Uses generics for feature model

The FeatureModel class will become FeatureModel<F, R>, where F stands for Feature and R stands for Relationship.

The Feature class maybe become IFeature.

Clean up code

  • Remove deprecated functions
  • Use annotations from Lombok
  • Clean up the code
  • Add documentation
  • Add logs

Classes:

  • Constraint
  • IOUtils - move getThreadString to ThreadUtils
  • ChocoSolverUtils
  • KB
  • Domain
  • CmdLineOptionsBase
  • Domain
  • Variable
  • IntVariable
  • BoolVariable
  • TestCase

Support arbitrary cross-tree constraints in FeatureIDEParser

@taburg recreate new package at.tugraz.ist.ase.fm.cove-v2 and (maybe) at.tugraz.ist.ase.fm.parser-v2, in which contain a new structure (tree) for feature model.

Maybe take a look at IFeatureModel of FeatureIDE https://github.com/FeatureIDE/FeatureIDE/blob/develop/plugins/de.ovgu.featureide.fm.core/src/de/ovgu/featureide/fm/core/io/xml/XmlFeatureModelFormat.java
Need to change the core of fm-package to support complex constraints

An example:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<featureModel>
	<properties>
		<graphics key="autolayoutconstraints" value="false"/>
		<graphics key="legendautolayout" value="true"/>
		<graphics key="showshortnames" value="false"/>
		<graphics key="layout" value="horizontal"/>
		<graphics key="showcollapsedconstraints" value="true"/>
		<graphics key="legendhidden" value="false"/>
		<graphics key="layoutalgorithm" value="1"/>
	</properties>
	<struct>
		<and abstract="true" mandatory="true" name="test1">
			<and mandatory="true" name="A">
				<feature mandatory="true" name="AA"/>
				<feature name="AB"/>
				<feature name="AC"/>
				<or mandatory="true" name="AD">
					<feature name="ADA"/>
					<feature name="ADB"/>
				</or>
			</and>
			<and name="B">
				<feature mandatory="true" name="BA"/>
				<feature name="BB"/>
				<feature name="BC"/>
			</and>
			<or name="C">
				<feature name="CA"/>
				<feature name="CB"/>
				<feature name="CC"/>
			</or>
			<alt mandatory="true" name="D">
				<or name="DA">
					<feature name="DAA"/>
					<feature name="DAB"/>
				</or>
				<feature name="DB"/>
			</alt>
		</and>
	</struct>
	<constraints>
		<rule>
			<imp>
				<var>AB</var>
				<not>
					<var>CB</var>
				</not>
			</imp>
		</rule>
		<rule>
			<imp>
				<var>AC</var>
				<not>
					<var>CC</var>
				</not>
			</imp>
		</rule>
		<rule>
			<not>
				<conj>
					<var>ADA</var>
					<var>AB</var>
				</conj>
			</not>
		</rule>
		<rule>
			<disj>
				<var>ADB</var>
				<not>
					<var>BC</var>
				</not>
			</disj>
		</rule>
		<rule>
			<disj>
				<var>BC</var>
				<imp>
					<var>CA</var>
					<var>CB</var>
				</imp>
			</disj>
		</rule>
		<rule>
			<imp>
				<var>DAA</var>
				<not>
					<conj>
						<var>AB</var>
						<var>AC</var>
					</conj>
				</not>
			</imp>
		</rule>
		<rule>
			<imp>
				<var>AB</var>
				<disj>
					<var>AC</var>
					<not>
						<var>DAB</var>
					</not>
				</disj>
			</imp>
		</rule>
		<rule>
			<imp>
				<var>DB</var>
				<not>
					<not>
						<var>AB</var>
					</not>
				</not>
			</imp>
		</rule>
		<rule>
			<imp>
				<var>DB</var>
				<not>
					<not>
						<not>
							<not>
								<var>AC</var>
							</not>
						</not>
					</not>
				</not>
			</imp>
		</rule>
		<rule>
			<imp>
				<var>DAA</var>
				<disj>
					<var>AB</var>
					<not>
						<var>AC</var>
					</not>
				</disj>
			</imp>
		</rule>
	</constraints>
</featureModel>

Feature Model Analysis

Implementation of some automated analysis of feature models.
Ex:

  • Towards Anomaly Explanation in Feature Models

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.