Search code examples
performancearchitecturemetricssoftware-quality

Rating architectural efficiency


How would you rate the efficiency of a certain design?

What are your variables?

I can think of:

  • Coupling
  • Design Patterns use
  • Language idioms use.
  • Scalability.
  • High-viability.
  • Code Reuse.
  • Flexibility.
  • Robustness to errors.
  • Testability.
  • Design implications on resource use and memory.
  • Portability.
  • Usage of the correct programming paradigm.
  • Design implications on run-time efficiency.
  • Encapsulation.

How would you calculate such metrics?

I've heard of program metrics as a tool but I have no idea what they are and how to compute them.

I thank anyone who's willing to help.

EDIT: Here is a blog entry about the subject from my newborn blog.


Solution

  • I would like to take into account the following metrics either:

    1. Scalability.
    2. Highviability.

    And regarding to your suggestions I don't think memory could be the metric for design efficiency, since it's more implementation based.


    EDIT: (After a comment regarding analytic formula)
    I don't think you can find an ultimate formula for computing design efficiency, since it's very subjective. But you can adopt some statistic techniques, define the metrics which really important for you in the design. Afterward define for each metric its weight. Now find different use cases and check how does your design fit them in each metric and give them a grade. After all this you can normalize and compute the value with V= Sum(W_i*G_i)/Sum(W_i), where W_i is weight and G_i is a grade. This way you can specify whatever is important for you in the design and calculate accordingly.