Finds all service 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_service_connections())
        0

def optional_service_connections(self):
        '''Finds all service 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_service_connections())
        0
        '''
        result = []
        for conn in self._service_port_connectors:
            source_comp = self.find_comp_by_target(conn.source_service_port)
            target_comp = self.find_comp_by_target(conn.target_service_port)
            if not source_comp.is_required or not target_comp.is_required:
                result.append(conn)
        return result