A project approach for teaching software architecture and web services in a software engineering course

Software architecture focuses on the structure of a software system, how such structure is organized into components, how components are related to each other, and what are the external visible properties of these components. In addition to satisfying the functional requirements, software architecture attempts to fulfill the non-functional requirements such as performance, efficiency, reliability, portability, scalability, and interoperability. Software architecture is an important part of software engineering and more so when developing complex software systems [2].