def optional_data_connections(self):
        '''Finds all data connections in which one or more components are not
        required.

        If all the components involved in a connection are required, that
        connection is also required. If one or more are not required, that
        connection is optional.

        Example:
        >>> s = RtsProfile(xml_spec=open('test/rtsystem.xml').read())
        >>> len(s.optional_data_connections())
        0
        '''
        result = []
        for conn in self._data_port_connectors:
            source_comp = self.find_comp_by_target(conn.source_data_port)
            target_comp = self.find_comp_by_target(conn.target_data_port)
            if not source_comp.is_required or not target_comp.is_required:
                result.append(conn)
        return result
Finds all data connections in which one or more components are not
        required.

        If all the components involved in a connection are required, that
        connection is also required. If one or more are not required, that
        connection is optional.

        Example:
        >>> s = RtsProfile(xml_spec=open('test/rtsystem.xml').read())
        >>> len(s.optional_data_connections())
        0