The essentials for successful component development are: (1) components must be independent and specified through well-defined interfaces (A), and (2) the development process must be designed with reuse in mind (D). While standards (B) and middleware (C) are supportive infrastructure, they are not development essentials: components can exist without them, though integration becomes harder. The question asks what's essential for the development process itself.