The phase of the software development life cycle in which the functions and the architecture of a product are defined.