Spring 2006: CS 620/720
Advanced Software Engineering
 
 
Time:                           3:30pm – 4:45pm Tuesday and Thursday
Classroom:                  CH430
 
Instructor:                    Jeff Gray
Office:                         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

Readings

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, Constantine]

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

 

Creational 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, 4:15pm-6:45pm

 

 

 


Course Readings

 

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:

 

David Weiss, Paul Hoffman, editors, Software Fundamentals: Collected Papers by David Parnas, Addison-Wesley, 2001.

 

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 and Tom Tourwé, “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, Jackson, “Four Dark Corners of Requirements Engineering,” ACM Transactions on Software Engineering and Methodology 6 (January 1997), pp 1–30.

 

[Zhu] Hong Zhu, Patrick Hall, and John May, “Software Unit Test Coverage and Adequacy,” ACM Computing Surveys, December 1997, pp. 367-427.

 

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] David Garlan, Rober Allen, and John Ockerbloom, “Architectural Mismatch: Or Why Its Hard to Build Systems Out of Existing Parts,” IEEE Software, November 1995, pp. 17-26.

 

[Garlan-Shaw] David Garlan and Mary Shaw, “An Introduction to Software Architecture,” http://www-2.cs.cmu.edu/afs/cs/project/able/www/paper_abstracts/intro_softarch.html

 

[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