Spring 2006: CS 620/720Advanced Software Engineering Time: 3:30pm – 4:45pm Tuesday and ThursdayClassroom: CH430 Instructor: Jeff GrayOffice: CH 126
Phone: 934-8643
Email: gray (at) cis.uab.edu
Web: http://www.gray-area.org
Office Hours: Tue/Thu 4:45pm-5:30pm
Wed 2:00pm-3:00pm, or by appointment
Teaching Assistant Robert Tairas (tairasr (at) uab.edu)
Course URL: http://www.cis.uab.edu/cs620/
Course Focus
This course offers a survey of software engineering (SE) research and practice. This is a graduate course, and is designed to complement some of the things that you may have learned in an undergraduate SE course. The course will aim to strike a balance between topics that are of a research focus, and topics that are more practical and useful to general software development. In this course, you will read some of the most classic papers of SE and also learn some skills that will aid you in the ability to construct better software.
Pre-requisites/Assumptions: You should be comfortable writing code in Java and C++. It will also help if you have been exposed to at least the basic concepts of the UML. If you have not had the equivalent pre-requisite of CIS 542, you are advised to take that first.
Textbooks
There will be a lot of reading assignments in this course. The required textbook is referenced below. In addition, I will hand out papers in class for you to read. I will always hand out the papers at least a week in advance of their discussion.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
Grade Determination
Your final grade for this course will be determined by the following items:
Quizzes: 20% Homework: 30%
Midterm: 20% Final: 30% (Cumulative)
There will be a total of 10 quizzes.
You will be able to drop the lowest score (that is, only the top 9 scores will
count toward your overall quiz grade). There will be NO makeup quizzes.
Don’t ask.
There will be NO makeup exams. Please see me well in advance of the exam date if you have a conflict. I will only give makeup exams in cases where there is a medical or family emergency. I WILL NOT give a makeup exam to accommodate your flight schedule in case you want to go back to your home early!
Homework is due at the beginning of class, unless otherwise stated.
Honor Statement
Each student is to do his or her own work. This means that you are not to seek out the help of other students (or give help, if asked) in order to solve specific problems of your homework assignments. It also means that you should not sign up for mailing lists and ask for detailed help from others on the net. Of course, you may discuss generalities about an assignment with your fellow students. If you are unsure of what is permitted, in terms of discussing an assignment problem, please ask me for clarification.
Each of the past two years have experienced violations of this honor statement with severe penalties. Please make life easier for us all and avoid the temptation to cheat.
Disabilities
If you have any disability that would put you at a disadvantage in performing an assignment, or in taking an exam, please meet with me privately to discuss ways in which I can assist you as you perform the required work in this course.
Tardiness
You are expected to arrive on time so that you do not cause a disruption in the middle of class. I would like to start the class at the scheduled time. If you cannot make it on time for some reason, please let me know. Persistent tardiness will be noted. Also, if you are late for a quiz or exam, you will not be given extra time to finish it.
Please turn off all cell phones and pagers while you are in lecture. Please do not surf the web or check email during the lecture.
Semester Schedule
The following is a tentative outline of the schedule for this course.
|
Date |
Topic |
|
Remarks |
|
January 10 |
Course Introduction |
|
|
|
January 12 |
Modularization |
[Brooks] |
|
|
January 17 |
Modularization |
[Parnas] Ch 13: “Some SE Principles” |
|
|
January 19 |
Modularization |
[Parnas] Ch 7: “On the criteria…” SE Background Overview |
Quiz 1 [Stevens, Cohesion/Coupling covered
in class |
|
January 24 |
Modularization |
[Parnas] Ch 9: “Transparency…” |
[Martin]: Liskov substitution Open/closed principle Dependency Inv. |
|
January 26 |
Modularization |
[Batory] |
HW 1 Assigned Quiz 2 [Czarnecki] |
|
January 31 |
Design Patterns |
Patterns Intro [GoF] Chapters 1 and 2 |
Class Handout: [MVC] |
|
February 2 |
Design Patterns |
Patterns Intro continued |
Quiz 3 |
|
February 7 |
Design Patterns |
Abstract
Factory |
|
|
February 9 |
Design Patterns |
Creational Patterns Singleton Structural Patterns Adapter |
Quiz 4 |
|
February 14 |
Design Patterns |
Structural Patterns Decorator |
|
|
February 16 |
Design Patterns |
Structural Patterns Façade Composite Proxy |
Quiz 5 |
|
February 21 |
Design Patterns |
Behavioral Patterns Observer Visitor |
HW1 Due |
|
February 23 |
Design Patterns |
Behavioral Patterns Chain of Responsibility Command |
Quiz 6 |
|
February 28 |
Formal Specification |
Formal Spec Overview Models of Computation Petri Nets: [Peterson] |
|
|
March 2 |
Formal Specification |
Petri Nets |
HW 2 Assigned Quiz 7 |
|
March 7 |
Lecture Video: Edsger Dijkstra |
|
HW 1 returned |
|
March 9 |
Proof of Correctness |
[Hoare] |
Quiz 8 |
|
March 14 |
Proof of Correctness |
[Hoare] |
|
|
March 16 |
MIDTERM EXAM |
|
|
|
March 21 |
Catchup Time |
|
HW2 Due HW 3 Assigned |
|
March 23 |
Guest Lecture |
|
CTS |
|
March 26-Apr 1 |
Spring Break |
NO CLASS |
|
|
April 4 |
Testing Intro |
Eclipse JUnit Demo (student) |
MIDTERM RETURN Quiz 9 |
|
April 6 |
Guest Lecture |
|
Dr. Jeff Carver Miss. State Univ. |
|
April 11 |
Testing |
[Zhu] |
[Gelperin] |
|
April 13 |
Refactoring |
[Mens] Eclipse refactoring demo |
Quiz 10 HW 3 Due |
|
April 18 |
Catchup time |
|
[Cusumano?] [Estublier?] |
|
April 20 |
Debate |
|
Possibilities: Java vs. .Net Agile vs Formal Open source Suggested reading (but not
required): [Gabriel], [Raymond], [Bezroukov] HW 3 returned |
|
April 25 |
Last day of class |
Final Review |
|
|
May 4 |
Final Exam (Cumulative) |
Thursday, |
|
Course
In addition to the chapters cited from the GoF book, the readings cited as [Parnas] will be handed out to you and taken from the following book:
Additionally, the following papers will be covered in the course:
[Agile] Selections from Extreme Programming Perspectives
[Batory] D. Batory, J.N. Sarvela, and A. Rauschmayer, “Scaling Step-Wise Refinement,” IEEE Transactions on Software Engineering, June 2004, pp. 355-371.
[Cusumano] Michael Cusumano and Richard Selby, “How Microsoft Builds Software,” Communications of the ACM, June 1997, pp. 53-61.
[Brooks] http://www.cis.gsu.edu/~mmoore/CIS3300/handouts/BrooksNoSilverBullet.html
[Estublier] Jacky Estublier, “Software Configuration Management: A Roadmap,” ICSE 2000, pp. 279-289.
[Foote & Yoder] http://www.laputan.org/mud/mud.html
[Gelpern] D. Gelperin and B. Hetzel, “The Growth of Software Testing,” Communications of the ACM 31 (June 1988), pp. 687–95.
[Hoare] Anthony Hoare, “An Axiomatic Basis for Computer Programming,” Communications of the ACM, October 1969, pp. 576-583.
[Martin] Open-Closed Principle, Liskov Substitution Principle, Dependency Inversion Principle: http://www.objectmentor.com/resources/listArticles?key=topic&topic=Design%20Principles
[Mens] Tom Mens , “A Survey of Software Refactoring,” IEEE Transactions on Software Engineering, February 2004, pp. 126-139.
[MVC] Todd Sunsted, “MVC Meets Swing,” JavaWorld, April 1998, http://www.javaworld.com/javaworld/jw-04-1998/jw-04-howto.html
[Peterson] James Peterson, “Petri Nets,” ACM Computing Surveys, September 1977, pp. 223-252.
[Zave] P. Zave and M,
[Zhu] Hong Zhu, Patrick Hall, and
Other Related Resources
The following is just an initial sample of related resources. You are not required to read these, but they represent things that may give you additional insight into topics covered in class.
[Coplien] James Coplien, “C++ Idioms,” EuroPLOP, 1998,
http://www.bell-labs.com/user/cope/Patterns/C++Idioms/EuroPLoP98.html
[Czarnecki] K. Czarnecki and U. Eisenecker, “Components and Generative Programming,” invited talk, in: Proceedings of the Joint European Software Engineering Conference and ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE’99, Toulouse, France, September 1999), O. Nierstrasz and M. Lemoine, (Eds.), Lecture Notes in Computer Science 1687, Springer-Verlag, 1999, pp. 2–19.
[Garlan]
[Garlan-Shaw]
[Meyer] Bertrand Meyer, “On Formalism in Specifications,” IEEE Software, January 1985, pp. 6-26.
[Meyer] Bertrand Meyer, “Applying Design by Contract,” IEEE Software, October 1992, pp. 40-51.
For the Open Source debate, I
would suggest the following:
[Bezroukov] Nikolai Bezroukov, ”A Second Look at the Cathedral and the Bazaar,”
http://firstmonday.org/issues/issue4_12/bezroukov/index.html
[Gabriel] Richard P. Gabriel and Ron Goldman, “Mob Software: The Erotic Life of Code,” OOPSLA 2000 Keynote, http://www.laputan.org/gabriel/mob.html
[Raymond] Eric Raymond, “The Cathedral and the Bazaar,”
http://www.firstmonday.dk/issues/issue3_3/raymond/
A good site to visit is at http://www.libr.org/rory/libre.html