The recurring aspects of designs are called design patterns. A pattern is the outline of a reusable solution to a general problem encountered in a particular context Many of them have been systematically documented for all software developersto use
Software is intangible Hard to understand development effort Software is easy to reproduce Cost is in its development —in other engineering products, manufacturing is the costly stage