The process of defining the architecture, components, modules, interfaces and data for the solution being developed to satisfy the requirements of the customer.