documents about software design