|
Assistant Professor |
|
|
|
CS680: Advanced Topics inSoftware Engineering---Modularity in DesignProfessor: Yuanfang Cai E-mail: yfcai AT cs DOT drexel DOT edu Office: University Crossings 104 Office Hours: Wednesday 3:00pm-5:00pm Phone: 215-895-0298 DescriptionWe have long recognized that software evolvability, achieved most fundamentally by appropriate modularity in design, can have great technical, organizational, and economic value. Numerous software modularization techniques have been developed to tackle the complexity and constantly changing nature of software, such as object-oriented programming (OOP), aspect-oriented software development (AOSD), feature-oriented programming (FOP), and service-oriented architecture (SOA). However, it remains unclear how to effectively compare, combine, and select these techniques in practice. These techniques appear to be different in terms of syntax and semantics, but they follow some common underlying principles, such as information hiding. One technique may be optimal in some circumstances, but not in others. In many cases, these techniques are complementary to each other, and their combinations can best improve software quality. In this class, we will peek into these major contemporary software modularization techniques and study how to model, assess, compare, and improve the modular structures of large-scale software systems. The latest software engineering research concerns the economic and organizational implications of software modular structure. How does the architecture of a software system influence and generate its economic value? What is the relation between software architecture and organizational structure? We will also study several seminal papers on these advanced topics. Objectives(1) Exposure to a significant amount of seminal research in software design, software architecture and software modularity (2) Understanding important software design concepts and principles, such as software families and information hiding. (3) Being able to use at least one of the modern software modularization techniques, such as AOP, or FOP to implement a non-trivial system to gain practical experience. (4) Being able to assess the modular structure of a system using the technique learned from the class. (5) Being able to read, summarize, and present research papers. Intended AudienceThis course is intended for graduate students in Software Engineering and Computer Science. Graduate students in other programs may take this course with the permission of the instructor, as significant programming experience is a pre-requisite. Before taking this course, students should be proficient in either the Java or a Microsoft .Net language such as C#. Students should be familiar with object-oriented program development, and have sufficient knowledge of important OO techniques such as design patterns. Class Format for CS680 CS680 is a seminar in the form of paper reading, presentations and discussions. I have collected a set of state-of-the-art research papers from top software engineering conferences and journals. The students will be asked to read these papers, present 1 or 2 of them (depending on the number of students), participate in class discussion actively, do a non-trivial team project in the theme of software modularization, evolution, or assessment, and write a short position paper out of their project. In summary, the course includes the following components: paper reading, presentation, discussion, team project, and position paper. Class Component 1: Paper ReadingThe purpose of this component is to study latest advances in the field of software design, modularization and evolution. You can find the papers for each week from the CS680 lectures page. Students will be asked to read 1-2 papers per week. At the beginning of each class, the students are required to turn in a brief summary for each research paper that will be presented in the class. The summary should follow the paper summary template (will be available soon), and answer the questions listed. Class Component 2: Paper PresentationsRequires will be available soon. Class Component 3: Class DiscussionsStudents should actively comment and question the presenter about the paper contents. Class Component 4: Team ProjectThe course will include a multi-week group project that brings together most aspects of the learned material. You will have the option of working on one of the several suggested projects or create your own project. Each group should have at least 3 participants. (We will list a number of suggested projects soon). Class Component 5: Position Paper.The requirements for the position paper will be available soon. Grading:The following is a rough guideline on how your final grade will be determined.
The university's Academic Honesty policy is in effect for this course. All assignments, labs, and projects in this course are to be done individually (unless otherwise noted). You may consult fellow students, TA's and the professor for help, but what you hand in must be your own work. You can review Drexel's academic honesty policy policy online by going to http://www.drexel.edu/studentlife/studenthandbook2002/Judicial/acadhon.html. This is a link to a section from the student handbook. |
|
"The best way to predict the future is to invent it." ---Alan Kay. "Fundamental is the building block of fun." --- A dancing girl. |
|