def mandatory_arguments(parameters, parent=None):
    """Get a list of parameter names that are mandatory. The optional parent
    parameter allows to request mandatory parameter for nested components.

    Parameters
    ----------
    parameters: dict(benchtmpl.workflow.parameter.base.TemplateParameter)
        Dictionary of parameter declarations
    parent: benchtmpl.workflow.parameter.base.TemplateParameter
        Parent paremeter declaration for nested structures

    Returns
    -------
    list(string)
    """
    result = list()
    for para in parameters.values():
        if not para.is_required:
            continue
        if para.parent == parent:
            result.append(para.identifier)
    return result