Skip to main content

Table 1 Description of design problems

From: On the identification of design problems in stinky code: experiences and tool support



Fat interface

Interface of a design component that offers only a general, ambiguous entry-point that provides non-cohesive services, thereby complicating the clients’ logic.

Unwanted dependency

Dependency that violates an intended design rule.

Component overload

Design components that fulfill too many responsibilities.

Cyclic dependency

Two or more design components that directly or indirectly depend on each other.

Delegating abstraction

An abstraction that exists only for passing messages from one abstraction to another.

Scattered concern

Multiple components that are responsible for realizing a crosscutting concern.

Overused interface

Interface that is overloaded with many clients accessing it, that is, an interface with too many clients.

Unused abstraction

Design abstraction that is either unreachable or never used in the system.