WO: Computer Science - "Requirements for Composability of Variability-enabled Component Models"

Date: 15 Apr 2024

Location: NL

Company: Canon Production Printing


WO: Computer Science - “Requirements for Composability of Variability-enabled Component Models”   

Are you a MSc Computer Science student which is looking for a graduation assignment? Do you have interest in domain-specific language development and product line systems engineering? We have a challenging assignment for you!

Your assignment

At Canon Production Printing, we are developing a method and accompanying tooling (implemented in JetBrains MPS) for defining system-models using a component modeling technique comparable to a subset of the structure-part of ROOM. Such models capture the multi-disciplinary structure of a (sub-)component of one of our print solutions. An example of such a model on the level of a print engine (component model and feature model) looks as follows:
The basic elements are to specify components, ports, subcomponents, connections between ports, and attributes on a component. Ways to indicate variation points in a component are: 
•    presence condition, which is an expression over features. In the example, the PaperInputModule component is present in configurations where the feature Duplex is selected (green checkmark in the configuration).
•    slot + options: the slot indicates that it must be replaced by one or more concrete components (e.g. FixationProductVariant1 or FixationProductVariant2) and the decision on what to choose is done based on option expressions, which are expressions over features.
Since the component models encode a multi-disciplinary agreement of a system’s structure, there are several aspects linked to a component, which represent various domains, such as behavior (e.g. specified as state machines), more detailed structure (such as the media path for the sheets to move through the printer), etc. In the example, there is an aspect that details out the cost of materials for producing the hardware of the Printer component.
In addition, feature models as well as component models can be modularized and composed on a model-level. Feature models as well as component models can be organized in modules (called chunks) and cross-included (similar to java imports or C++ file includes). One can include an entire feature model in a leaf feature of another feature model and one can plug components from one component model into a component from another component model.
By using KernelF language as a base and extending it to components and feature models, there is a sufficient amount of static and operational semantics to exploit model checking (e.g. type-checking SI units in attributes) and formal checking (e.g. using a constraint solver to check for “dead features” in a feature model).

Using various in-company use cases, study what is a good way to use feature models and component models together. Important examples of use are platform component building, use platform components in products, specific aspects like data production of components, behavior, and various specialized subdomains like media handling, ink handling, and print process-related subdomains.
Important questions in such a study are:
•    How to assemble views for different purposes based on (a) “component + feature” model(s), e.g. for data analysis, diagnostics, simulation, specialized domain design, etc.
•    What are semantic implications of composing such models (e.g. if we define a constraint on a component attribute, what will that mean for an aspect that is connected to that component)?
•    What are the limitations (if any) when applying variability-enabled component models?
•    What are useful patterns to model various specific use cases?

Your profile
•    You are currently studying Computer Science and you are looking for your graduation assignment at a big international company
•    You are good at conceptual thinking across multiple domains and you like challenges
•    You are consistent and have systematic approach towards problem solving
•    To be able to fulfil the assignment you have skills such as object-oriented programming and/or meta-modelling/DSL development
•    As of 1 Dec 2023 (or based on bilateral agreement), you are available for 6 to 12 months (incl. preparation phase) for a minimum of 4 days per week


What’s in it for you?
•    A challenging assignment with skilled coaching
•    Internship/Graduation compensation of €500,- per month
•    Travel cost compensation if you don’t have an ‘OV-weekcard’

•    The possibility to network with professionals inside and outside your field of expertise, thanks to our diversity of disciplines which you will work with
•    With our company values collaboration, innovation and ownership, we strive to bring out the best in each other, expand boundaries and feel empowered to take ownership of our work.

Are you interested in this assignment? Please click on the button 'apply now' at the top on the page where you can upload your resume and motivation letter. 
If you would like to receive more information concerning this assignment, please contact Hristina Moneva (hristina.moneva@cpp.canon), tel. +31 (0)77 359 3891. If you have any questions about the internship in general, please contact Milou Geelen, + 31 6 25653192 


About Canon Production Printing

Canon Production Printing develops and manufactures high-tech printing products and workflow software for the commercial printing market and is part of Canon, a global provider of imaging technologies and services. Canon Production Printing operates on three continents, with approximately 3300 employees (end 2022) and has its global headquarters in Venlo, the Netherlands.