What have become de rigueur for computer-based products and systems of every type ?

What have become de rigueur for computer-based products and systems of every type ?

A. GUIs
B. Candidate keys
C. Object model
D. All of the mentioned

Explanation: Therefore, the redevelopment of user interfaces has become one of the most common types of re-engineering activity. But before a user interface can be rebuilt, reverse engineering should occur.