Author :
Karam, Orlando ; Qian, K. ; Diaz-Herrera, J.
Abstract :
This paper presents a model for the course "software architecture and design" in our software engineering undergraduate program. This course is a part of our efforts in the ABET accreditation preparation. As systems grow bigger, so grows the need for understanding large scale, complex, and distributed systems, software design (including architecture and detailed design) studies how to describe the high-level structure of software systems. It is a discipline whose importance is growing more and more apparent. It is also one of ten essential areas recommended by computing curriculum software engineering (CCSE) 2003. In spite of its importance, there are almost no dedicated courses at the undergraduate level covering this important discipline, although there is definite interest [J. Tomakyo et al., (2004)]. At Southern Polytechnic State University, as part of our BS in software engineering, we have started offering a course on software architecture and design, which focuses on designing software, at the highest level (software architecture) and the detailed level. In this paper we detail the contents and the pedagogical approach of that course. We describe the structure of this course, its knowledge units, which include design principles, design strategies, architectural design and attributes, detailed design, component-oriented design, and design support tools and evaluation. We also describe the topics in each knowledge unit (for example, design patterns is a topic in detailed design). The strategies for choosing design styles and patterns based on the trade-off of system attributes and combinations of various architectural styles and design patterns are also emphasized. We also present assessment of course outcomes, our experience in teaching this course and plans for further enhancements.
Keywords :
computer aided instruction; educational courses; engineering education; large-scale systems; software architecture; teaching; Southern Polytechnic State University; complex systems; component-oriented design; computing curriculum software engineering; distributed systems; software architecture; software courses; software design; software systems; system trade-off; teaching; Accreditation; Computer architecture; Computer science education; Educational programs; Modems; Programming; Software architecture; Software design; Software engineering; Software systems;