Traditional lectures espousing software engineering principles hardly engage students' attention due to the fact that students often view software engineering principles as mere academic concepts without a clear understanding of how they can be used in practice. Some of the issues that contribute to this perception include lack of experience in writing and understanding large programs, and lack of opportunities for inspecting and maintaining code written by others. To address these issues, we have worked on a project whose overarching goal is to teach students a subset of basic software engineering principles using source code exploration as the primary mechanism. We attempted to espouse the following software engineering principles and concepts: role of coding conventions and coding style, programming by intention to develop readable and maintainable code, assessing code quality using software metrics, refactoring, and reverse engineering to recover design elements. Student teams have examined the following open source Java code bases: ImageJ, Apache Derby, Apache Lucene, Hibernate, and JUnit. We have used Eclipse IDE and relevant plug-ins in this project.
As businesses rely on software solutions to preserve their position in a highly competitive market, the need for reliable and robust software systems is vital. Lately, there has been a significant interest in building software using models as their main artifacts. Unlike traditional development techniques which tend to be code-centric, model driven approaches, such as the Model Driven Architecture (MDA) standard, stress the usage of models at all levels of the software development life-cycle. The MDA, which is supported by the Object Management Group (OMG), is based on a comprehensive set of standards including MOF, UML, and OCL, to mention a few. This paradigm shift in software engineering has impacted not only the way software is built but also the way software engineering is being taught -The standards introduce a significant body of knowledge that should be integrated in a software engineering curriculum. In this paper, we discuss the impact of the model-driven software engineering approach on software education. This discussion is based on an experience teaching a graduate course on model-driven software engineering at Concordia University.
Case studies are often used as a vehicle to introduce fundamental principles and techniques in a software engineering course. However, finding a realistic yet manageable application as the basis of developing a case study is challenging to the instructors. We describe our preliminary experience with using an open source product, JUnit, to develop a case study. We also describe using a follow-up exercise to exploit potential benefits of such a case study. We believe that case studies based on open source software can help prepare our students for the real challenges of professional software development.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.