A software architecture is finished when there is nothing left to take out. A software design is finished when there is nothing left to add.