the process of developing a software specification -- software specs are for communicating customer needs to the system developers
establishing customer requirements and the constraints of the system
a tree in which every nodes has no more than two children. one child is designated as left child while the other is the right child.