“…Further, the increasing commoditization and distribution of hands-on software development via outsourcing and the use of thirdparty components is causing the demand for traditional software development skills in many areas to be eclipsed by new opportunities available to software engineers who possess certain kinds of enhanced software engineering expertise. To enable engineers to take advantage of these opportunities, we need to augment traditional software engineering strengths in software architecture [3], design, and development processes with new techniques that will enable software engineers to apply engineering principles in larger organizational and project management contexts. We need to produce software engineers who are just as comfortable practicing engineering in environments where the "tools" are distributed project teams and third-party components as they are designing and implementing complete systems themselves.…”