docs: def check(self, dsm, simplicity_factor=2, **kwargs):
          """
          Check economy of mechanism.
  
          As first abstraction, number of dependencies between two modules
          < 2 * the number of modules
          (dependencies to the framework are NOT considered).
  
          Args:
              dsm (:class:`DesignStructureMatrix`): the DSM to check.
              simplicity_factor (int): simplicity factor.
  
          Returns:
              bool: True if economic, else False
          """
          # economy_of_mechanism
          economy_of_mechanism = False
          message = ''
          data = dsm.data
          categories = dsm.categories
          dsm_size = dsm.size[0]
  
          if not categories:
              categories = ['appmodule'] * dsm_size
  
          dependency_number = 0
          # evaluate Matrix(data)
          for i in range(0, dsm_size):
              for j in range(0, dsm_size):
                  if (categories[i] not in ('framework', 'corelib') and
                          categories[j] not in ('framework', 'corelib') and
                          data[i][j] > 0):
                      dependency_number += 1
                      # check comparison result
          if dependency_number < dsm_size * simplicity_factor:
              economy_of_mechanism = True
          else:
              message = ' '.join([
                  'Number of dependencies (%s)' % dependency_number,
                  '> number of rows (%s)' % dsm_size,
                  '* simplicity factor (%s) = %s' % (
                      simplicity_factor, dsm_size * simplicity_factor)])
          return economy_of_mechanism, message