GithubHelp home page GithubHelp logo

sintef-9012 / bvr Goto Github PK

View Code? Open in Web Editor NEW
11.0 11.0 5.0 1.71 GB

Base Variability Resolution (BVR) metamodel, engine and editors

HTML 43.19% CSS 0.01% Java 56.48% MATLAB 0.12% D 0.14% M 0.01% ANTLR 0.01% GAP 0.04% Objective-C 0.01%

bvr's People

Contributors

brice-morin avatar daisukeshimbara avatar mbholos avatar oysteinh avatar toeklk avatar vassik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bvr's Issues

product generation is wrong

YetiHierarchy2.zip

I forbindelse med kurset mitt kom jeg inn på Yeti-modellene igjen og en av mine studenter påpekte at min kompakte hierarkiske løsning ikke var korrekt fordi det var mulig både å ha en svak og en sterk motor (både hp110 ett sted og hp140 et annet). Det hadde han rett i og det var tydelig ved å generere alle mulige løsninger. En eksplisitt contraint (hp 140 implies not hp110) gjør susen. I originalen er bare hp140 mandatory under Parking Assistant.

Men så tenkte jeg følgende: Hva om vi under Parking Assistant lager en xor-gruppe der hp140 er mandatory, og hp110 er optional? Jeg ønsket at det skulle ha den ønskede betydning, nemlig at om man har Parking Assistant, så er hp140 mandatory og man kan faktisk IKKE velge hp110.

Jeg var faktisk ikke helt sikker på om konstruksjonen skulle ha den effekten jeg ønsket, nemlig at xor-gruppa skulle kunne ekskludere hp110.

Men BVR verktøyet gjorde det verre enn det :-( Når jeg genererte alle mulige løsninger kom det fram en løsning der hp110 ble valgt også under Parking Assistant. Dette skulle uansett ikke vært mulig siden xor-gruppa pluss mandatory hp140 burde ha gjort det ulovlig.

Du kan jo ha en mening om dette når du har tid. Dette er ikke noe som er viktig akkurat nå på noen som helst måte.

Error while realization on Papyrus

Greetings!

In my setup, VSpec Editor and Resolution Editor are working fine. However, the Realization Editor throws an error. When I select some elements in the base model, and perform "Create Placement", it throws an error "Failed with message: A selection is not found. Cannot create a placement fragment".

Setup:

  1. Eclipse Kepler SR2
  2. Papyrus 0.10
  3. Java 8
  4. Linux - Ubuntu

Kindly help to resolve the issue.

Thanks,

PS:
Errors: http://pastebin.com/xFj0WCtt

Support for Eclipse Neon

Due to the version restrictions on Papyrus dependencies, it's not possible to use the tool in Neon. Please upgrade to the latest. (Papyrus for Neon has version of 2.0.3 currently.)

Missing plugin: no.sintef.dvl.realisation.core.interfaces

Importing the plugins into my workspace, I get this and similar issues:

Description Resource Path Location Type
Bundle 'no.sintef.dvl.realisation.core.interfaces' cannot be resolved MANIFEST.MF /no.sintef.bvr.dvl.execution/META-INF line 15 Plug-in Problem

Please provide this plugin or a detailed documentation of how to generate it (if that's the case).

how should NULL boundaries be represented?

How should we represent NULL boundaries.

I remember we want to have the in a variability model.

How should we represent them in a variability model, two options are allowed by the specification?

  1. Boundaries with no insideBoundaryElement and outsideBoundaryElement references.
  2. Boundaries have insideBoundaryElement and outsideBoundaryElement but they point to the ObjectHandle which does not does not reference any element of a base mode.

BCL

BCL works with names, but not with fully qualified names. Consequently, naming overlap can cause problems.
According to the VARIES document "D4.3 BVR Tool", one can use "implies", "and", "or", "not" and parentheses. However, a dash "-" and a forward slash "/" are also accepted. What is the meaning?
What is effectively supported as BCL language?

Resolve subtree causes Invalid thread access

Resolve subtree causes Invalid thread access

org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4533)
at org.eclipse.swt.SWT.error(SWT.java:4448)
at org.eclipse.swt.SWT.error(SWT.java:4419)
at org.eclipse.swt.widgets.Widget.error(Widget.java:482)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:373)
at org.eclipse.swt.widgets.Widget.getData(Widget.java:539)
at org.eclipse.ui.internal.ide.handlers.PagePropertyTester.test(PagePropertyTester.java:36)
at org.eclipse.core.internal.expressions.Property.test(Property.java:58)
at org.eclipse.core.internal.expressions.TestExpression.evaluate(TestExpression.java:100)
at org.eclipse.core.internal.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:53)
at org.eclipse.core.internal.expressions.WithExpression.evaluate(WithExpression.java:75)
at org.eclipse.core.internal.expressions.CompositeExpression.evaluateOr(CompositeExpression.java:68)
at org.eclipse.core.internal.expressions.OrExpression.evaluate(OrExpression.java:22)
at org.eclipse.core.internal.expressions.ReferenceExpression.evaluate(ReferenceExpression.java:71)
at org.eclipse.ui.internal.services.EvaluationReference.evaluate(EvaluationReference.java:72)
at org.eclipse.ui.internal.services.EvaluationReference.evaluate(EvaluationReference.java:97)
at org.eclipse.ui.internal.services.EvaluationService.requestEvaluation(EvaluationService.java:294)
at org.eclipse.ui.internal.handlers.DirtyStateTracker.update(DirtyStateTracker.java:45)
at org.eclipse.ui.internal.handlers.DirtyStateTracker.propertyChanged(DirtyStateTracker.java:107)
at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:120)
at no.sintef.bvr.ui.editor.common.MVCEditor.update(MVCEditor.java:203)
at no.sintef.bvr.ui.editor.mvc.resolutionV2.MVCResolutionEditorV2.update(MVCResolutionEditorV2.java:59)
at no.sintef.bvr.tool.observer.ResourceSetEditedSubject.notifyObservers(ResourceSetEditedSubject.java:47)
at no.sintef.bvr.ui.editor.common.observer.AbstractResourceSubjectMap.pokeResourceSubjects(AbstractResourceSubjectMap.java:46)
at no.sintef.bvr.ui.editor.common.listener.DomainResourceSetListener.resourceSetChanged(DomainResourceSetListener.java:55)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl$1.run(TransactionalEditingDomainImpl.java:781)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.postcommit(TransactionalEditingDomainImpl.java:771)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.deactivate(TransactionalEditingDomainImpl.java:543)
at org.eclipse.emf.transaction.impl.TransactionImpl.close(TransactionImpl.java:712)
at org.eclipse.emf.transaction.impl.TransactionImpl.commit(TransactionImpl.java:474)
at org.eclipse.emf.transaction.impl.TransactionalCommandStackImpl.doExecute(TransactionalCommandStackImpl.java:70)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
at no.sintef.bvr.ui.editor.commands.EditorEMFTransactionalCommands.executeBatch(EditorEMFTransactionalCommands.java:467)
at no.sintef.bvr.tool.decorator.SimpleExeCommandBatchDecorator.postExecute(SimpleExeCommandBatchDecorator.java:31)
at no.sintef.bvr.tool.decorator.SimpleExeCommandBatchDecorator.execute(SimpleExeCommandBatchDecorator.java:39)
at no.sintef.bvr.tool.ui.command.event.AddSubTreeEvent.actionPerformed(AddSubTreeEvent.java:32)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Dowload link non-functional

Readme.md states

Downloads and Installation

See http://modelbased.net/tools/bvr-tool/

Yet, surfing to that URL results in

Error 503 Backend fetch failed

Backend fetch failed

Varnish cache server

I can't edit variation points names

I can do it directly in the XML file but not in the graphical editor itself. I double click on the text field to edit the names but nothing happens. I'm on Eclipse Kepler SR2 for OS X running Java 8.

User friendliness

Resolution editor:

  • in case of an XOR, a user still can set 2 (or more) choices to TRUE.
  • a user can set a mandatory choice to FALSE.
    (Validation will complain, but it should be blocked in the editor).

Validation errors are not clear.

No syntax completion in the constraint editor.

meeting 29.05.2013

Bugs/Enhancements :

  1. Implement undo/redo. We should decide on strategies here, e.g. better to be a bit more pessimistic and save quite often instead of doing this seldom.
  2. When we close the main window, the CVL tool should ask whether you really want to close the application.
  3. The default behavior for the save dialog is to save models in the home folder for just created models. Opened and modified models should be saved to the same folders from where the models were opened. We should suggest the same file names (extensions), a user decides whether to overwrite files or modify existing names.
  4. Some menu items should be unavailable when you work with certain "layers", e.g. if the Realization tab is not in focus, then the Realization menu should be unavailable.
  5. Error messages usually say that a error has happened, but it is not clear where and what have happened, more specific here.
  6. We should have scopes for the constrain evaluation functionality.
  7. Something is wrong with group multiplicity (1 to 1) and variables... Am i correct? I did not quite get that point (sorry my bad Norwegian i should have asked that point). We should not take something into account if we have 1..1 multiplicity as far as i understood.... Is it that we should not be able to add more than one vspec if multiplicity is 1..1. Is that that we should not be able to mark more than one vspec mandatory?
  8. We should visualize mandatory/optional features under a group multiplicity.
  9. Something with import functionality, i did not quite get either, again bad Norwegian sorry ...
  10. We can get an error on attempt to generate covering arrays, something with mandatory proof checking
  11. Realization - what if we have 1000 vspec, there are quite a lot of choices in combo boxes. Few options to approach the problem here: Some choices are listed in a dropdown, but there is also the search functionality where we can search for required vspec by name. We can go for a visual solution, e.g. open the vspec editor where you can pick required vspec to bind to. The same problem with binding editor.

Points with Eclipse integration:

  1. We should open CVL tool as tab in eclipse and make the tool look more or less as a GMF based interface, not a Swing one.

Organization:

  1. description how to use git to Øystein
  2. description how to use the github bug tacker to Øystein
  3. documentation and howto for the CVL tool (for example how to get the newest version of the tool)

Some extra points about GMF:

  1. poor documentation
  2. not stable
  3. difficult to experiment and change things if we need
  4. Once we are happy with current implementation and the all important parts of the CVL tool are in place, we may conduct an experiment to find out if it is straight forward to implement UI using GMF.

recursion, should we have in new CVL

a mail thread with title: "CVL Operation Zone problem", date: 28.05.2013

We have had shuck inquiry--->

I have worked with Bo on the Autronica case, trying to explore various ways to approach it in Clafer and CVL. We took the current draft of the domain model as a starting point. We have a specific question about CVL that we are struggling with.

If you look at the attached figure, you will find a fragment of the Autronica model on the very top. Operating zones are nesting other zones. This seems to be a very common pattern in modeling.

We are considering how to capture this in CVL. There is pretty much two options to consider:

  1. In the VSpec layer using classifiers to represent zone. We believe that this does not work, because classifiers cannot nest themselves recursively. This way we can only get a flat set of classifier instances (resolutions) representing operation zones (OZ), not nested one under another.

  2. Alternatively, we can use a base model with operation Zones, and try to instantiate copies of operation zones using fragment substitution driven by some set of classifiers. Here the challenge is how to make the results of these fragment substitution to nest in one another.

This is exemplified in the attached PDF file. We use a simple base model on the top with VSpec model underneath. The fragment substitution is meant to be bound to the OZ classifier.

If OZ is resolved n times, we will obtain the resolved model on top of page 2 in the attached PDF as the outcome of materialization.

But how can we use fragment substitution (or any other CVL construct) to create an unfolding that looks more like the model in the bottom of page 2?

Any ideas how to configure nesting of such structures in CVL?

[Question] Extend version BPMN

I'm in the process of extending the plugin to support BPMN 2.0 so I like to know in which class you extend the metamodel of UML or only use Papyrus adapter?

cvl throws exception on attempt to add a variable in a resolution

UnsupportedOperationException is thrown in AddVariableValueAssignmentEvent on attempt to add a variable to a resolution. ReplacementFragmentType is a Variabletype, but not a PrimitveType, thus the exception is thrown.

The problem is here:

    PrimitveType vt = null;
    for(Variabletype x : view.getCU().getOwnedVariabletype()){
        if(x instanceof PrimitveType){
            PrimitveType pt = (PrimitveType)x;
            if(pt.getType() == type)
                vt = pt;
        }else{
            throw new UnsupportedOperationException();
        }
    }

NOTE:
i have commented out the exception, it does not break anything... But we need to look at it carefully.

NOTE2:
Should we use this bugtracker?:)

Specify license

Some recent commits suggest that at least parts of this software are released under EPL license. Is it safe to assume this is valid for the whole project? I suggest to add a LICENSE file on project level.

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.