An overview of principles of object-oriented design through design patterns. A discussion of the design pattern alternatives. Software architecture frameworks. Software Architecture analysis and validation. An introduction to interface design.