Software Engineering Section: Status, Vision, and Strategy

Download Report

Transcript Software Engineering Section: Status, Vision, and Strategy

Challenging BX as a Software Engineer:
What is a problem? How much BX do we need?
Ekkart Kindler
Maslow’s hammer
Ekkart Kindler
w
If all we have is a hammer,
everything looks like a nail!
Challenging BX as a Software Engineer
2
Process / artifacts
Ekkart Kindler
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
package PetriNets.impl;
Bundle-SymbolicName: APetriNetEditorIn15Minutes.diagr
Bundle-Version: 1.0.0.qualifier
public class PetriNetImpl extends EObjectImpl implements PetriNet {
Bundle-ClassPath: .
protected EList<PetriNets.Object> object;
Bundle-Activator: PetriNets.diagram.part.PetriNetDiagr
Bundle-Vendor: %providerName
protected PetriNetImpl() {
Bundle-Localization: plugin
super();
Export-Package: PetriNets.diagram.edit.parts,
}
PetriNets.diagram.part,
PetriNets.diagram.providers
protected EClass eStaticClass() {
Require-Bundle: org.eclipse.core.runtime,
return PetriNetsPackage.Literals.PETRI_NET;
org.eclipse.core.resources,
}
org.eclipse.core.expressions,
org.eclipse.jface,
public EList<PetriNets.Object> getObject() {
org.eclipse.ui.ide,
if (object == null) {
org.eclipse.ui.views,
object = new EObjectContainmentEList<PetriNets.Object>(Petri
org.eclipse.ui.navigator,
}
org.eclipse.ui.navigator.resources,
return object;
org.eclipse.emf.ecore,
}
org.eclipse.emf.ecore.xmi,
org.eclipse.emf.edit.ui,
public NotificationChain eInverseRemove(InternalEObject otherEnd, int
org.eclipse.gmf.runtime.emf.core,
switch (featureID) {
org.eclipse.gmf.runtime.emf.commands.core,
case PetriNetsPackage.PETRI_NET__OBJECT:
org.eclipse.gmf.runtime.emf.ui.properties,
return ((InternalEList<?>)getObject()).basicRemove(otherEn
org.eclipse.gmf.runtime.diagram.ui,
}
org.eclipse.gmf.runtime.diagram.ui.properties,
return super.eInverseRemove(otherEnd, featureID, msgs);
org.eclipse.gmf.runtime.diagram.ui.providers,
}
org.eclipse.gmf.runtime.diagram.ui.providers.ide,
org.eclipse.gmf.runtime.diagram.ui.render,
public Object eGet(int featureID, boolean resolve, boolean coreType) {
org.eclipse.gmf.runtime.diagram.ui.resources.ed
switch (featureID) {
org.eclipse.gmf.runtime.diagram.ui.resources.e
case PetriNetsPackage.PETRI_NET__OBJECT:
APetriNetEditorIn15Minutes;visibility:=reexpor
return getObject();
}
return super.eGet(featureID, resolve, coreType);
PetriNet
*
PObject
Node
1 source
Arc
1 target
Transition
Place
Token
*
Challenging BX as a Software Engineer
3
Purpose of BX techniques
Ekkart Kindler
 Which SE tasks, practices and development
methods should our transformation techniques
be applied for?
 How much formality do they need?
 How much bi-directionality do they need?
 What are the ”degrees” of bi-directionality?
 Have lenses, TGGS, whatever the same ”degree” of
bi-directionality?
Challenging BX as a Software Engineer
4
Examples
Ekkart Kindler
 ”MDA model chain”: CIM, PIM, PSM, (Code)
 Code generation / manual changes in code
 Model (code) migration/evolution
 Model & instance co-migration/evolution
 Traceability
 Representation of ”added or forgotten” stuff
(transformational vs. incremental MDA)
Challenging BX as a Software Engineer
5
My Challenge
Ekkart Kindler
Clarify for your BX technique:
 Where in the development process
do you propose to use your technique?
 How much bi-directionality is needed?
 What is the (extra) cost?
 What is the (extra) benefit?
Do we have an adequate measure of bi-directionality?
Challenging BX as a Software Engineer
6