designing software is for keeping harmony among the pieces.