title: Is calling into other code a (SOLID) Single Responsibility Principles (SRP) violation?
body: <p>Considering this class with business logic:</p>
  
  <pre><code>public static class OrderShipper
  {
      public static void ShipOrder(Order order) {
          AuthorizationHelper.AuthorizedUser();
  
          using (new PerformanceProfiler()) {
              OperationRetryHelper.HandleWithRetries(() =&gt; ShipOrderInTransaction(order));
          }
      }
  
      private static void ShipOrderInTransaction(Order order) {
          using (var transaction = new TransactionHelper()) {
              ShipOrderInternal(order);
  
              transaction.Commit();
          }            
      }
  
      private static void ShipOrderInternal(order) {
          // lots of business logic
      }
  }
  </code></pre>
  
  <p>The class contains some business logic, and executes some crosscutting concerns as well. Although there is no doubt about that this class violates the <a href="http://en.wikipedia.org/wiki/Open/closed_principle" rel="nofollow">Open/Closed Principle</a>, <strong>does this class violate the <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" rel="nofollow">Single Responsibility Principle</a>?</strong></p>
  
  <p>I'm in doubt, since the class itself is not responsible for authorizing the user, for profiling the performance and for handling the transaction. </p>
  
  <p>There is no question about this that this is poor design, since the class is still (statically) depending on those crosscutting concerns, but still: Is it violating the SRP. If so, why is this?</p>