“…For instance, a software architect needs requirements from business analysts, technical design from a system architect, project information from a project manager, design constraints from software team leaders, and so on. Since documented knowledge is often incomplete and out-of-date, tacit knowledge using personal communication is heavily used [4], but this is ineffective and error prone because knowledge availability is conditional upon the source of the knowledge. Knowledge is available only when the person who possesses the knowledge can be identified, and s/he is willing to share that knowledge, and s/he communicates the knowledge clearly and completely.…”