Engaging Software Engineering Students Using A Series Of Object Oriented Analysis And Design Workshops

Abstract NOTE: The first page of text has been automatically extracted and included below in lieu of an abstract Engaging Software Engineering Students Using a Series of OOAD Workshops Introduction It has always been a challenging task to prepare capable software engineers to meet the high demands of the industry. With the fast growth of computing technologies, future software engineers are expected to have a good working knowledge of object-oriented system design, distributed or web-based computing, multithreading, and database connectivity. In a typical computer science and computer engineering program, the only required course that may cover these topics is Software Engineering. Classical software engineering textbooks 11, 10 emphasize process models and highlevel development activities but neglect to discuss how technologies are used in a real world project. Many new textbooks 4, 3 present up-to-date object-oriented development processes and demonstrate how design principles work through case studies. Using a well prepared series of workshops can give students hands-on experience of the concepts and practices demonstrated in those cases. This approach can effectively engage students in various stages of an incremental development process so as to teach them software engineering by really doing it. In this paper, the effectiveness of such an approach in a Software Engineering class will be discussed in detail. A simple voice mail system with a sound OO design is adopted from a popular OOAD text 8 as the baseline design of the sample application used in the workshops. Throughout the semester, this system is expanded functionally to introduce advanced programming techniques. Basic OOAD activities and key software development best practices will also be demonstrated in the series of workshops. Background and Rationales Typically, Software Engineering is designed as a senior capstone course in a Computer Science program for students to integrate knowledge gained from the required core courses offered in a four-year period. According to CC2001 1, this course is supposed to cover software system design, software processes, key activities in software development lifecycle, and software project management. The traditional approach to teaching a Software Engineering course, as reflected in classical textbooks 11, 10, usually starts with an introduction to software process models, which is then followed with discussions on highlevel activities in various phases of a generic software lifecycle template that can accommodate all possible programming paradigms. Although updated many times since their original editions, those texts are not well adapted to the latest paradigm changes (such as object orietation) and the cutting-edge technologies. Not enough effort seems to have been made to show how the models and principles discussed in the texts can be applied to real world projects. A team-based software project is commonly included in a contemporary software engineering class to give students hands-on experience of the issues that they may encounter in a real-world 1