PCM Development/Getting Started
Useful hints on PCM development
- Palladio GitHub Organisation 
- PCM Updating Model Source Code
- PCM Codebereiche
- PCM Development/Solutions for Compilation Errors: Check this page if you have trouble compiling PCM plugin sources in your local Eclipse.
- PCM Development/Palladio Development Toolkit
- Extending PCM
- PCM Development/Update Sites
- PCM Development/Create new AddOn or Support Project
- Quality assurance rules
- Palladio Build Infrastructure
- Exploring the PCM metamodel
- Check out the category Category:PCM Development for more PCM development related topics (such as tips for common errors, model generation, and more).
This article gives initial information of how to change the PCM Bench implementation (Either develop new features for the PCM, fix bugs or change things).
The two basic option to work with Palladio code as follows:
Working with a PCM Installation
- Install the PCM Nightly as described at PCM_Installation#PCM_Nightly
- the installation instructions are sufficient
- for development purposes, it is useful to also install the Developer Resources from the update site
- Check out projects from Github and import them in Eclipse (only import projects you want to change)
- Installed Palladio plugins will be used by default
- Plugins in the Eclipse workspace override installed plugins when open (therefore, you can change and test code)
- Some project (e.g. metamodel projects) require the generation of source code before the projects compile within Eclipse
- Simple way: run the Maven build (e.g. mvn verify) to trigger the code generation
- Advanced way: look for the appropriate MWE2 workflow (files end with ".mwe2") within the project and run it
- Select "Run as Eclipse application"
- All opened plugin projects will be compiled and integrated in the started Eclipse.
- Switch to the Java perspective to see the run configuration.
Working with Source Code Only
As an alternative to installing the PCM and some source code (as described at PCM_Installation#PCM_Nightly), you might want to omit the PCM installation and check out the whole source code instead. This is useful if you want to avoid any incompatibilities between installed and checked out PCM plugins, or if you want a full overview over all source code affected by your change. However, you have to also install all dependencies. Proceed as follows:
- Install a supported Eclipse (see PCM_Installation#PCM_Nightly for required version)
- Install required Eclipse features:
- Install everything from a non-Palladio repository that is mentioned in our aggregated update site
- Check out the source code from Github
- all non-archived repos:
curl -s https://api.github.com/orgs/PalladioSimulator/repos?per_page=200 | jq -c '. | select( .archived == false).clone_url' | xargs -n 1 git clone
- Import the projects via the import feature for existing projects of Eclipse
- all non-archived repos:
- Ensure that your project is configured to UTF-8 file encoding
- Ensure using our coding conventions
Creating PCM model elements from code
You can instantiate one of the model factories, and then use this factory to create model elements defined in the meta model. see Example PCM Model Factories for an example project.
- de.uka.ipd.sdq.pcm.repository.RepositoryFactory (for repositories, components, interfaces, roles)
- de.uka.ipd.sdq.pcm.resourcetype.ResourcetypeFactory (for abstract resource types, such as processing or communication resources)
- de.uka.ipd.sdq.pcm.seff.SeffFactory (for resource demanding service effect specifications)
- de.uka.ipd.sdq.pcm.system.SystemFactory (for system containers)
- de.uka.ipd.sdq.pcm.usagemodel.UsagemodelFactory (for user behaviour)
If you want to find specific PCM plugins, check the PCM_Code_Overview to find our in which folder in the SVN the plugin is located.
A list of the used Licenses in PCM. In short: Use EPL and do not reuse projects published under GPL.