ICS 221 Software Engineering


Class Home Page


Administrative Information


Classroom: CS 253

Lecture Period: Mondays and Wednesdays, 9:30 AM - 10:50 AM

Course Code: 36782

Instructor: David Redmiles

Electronic Mail: redmiles@ics.uci.edu

Office: ICS2-215

Office Hours: Wednesdays and Fridays 3-4 PM; but please send email to guarantee an appointment.




Term Paper Guidelines


Home Page

Course Overview and Prerequisite Knowledge


From the UCI Catalog:


221 Software Engineering (4). Study of the concepts, methods, and tools for the analysis, design, construction, and measurement of complex software-intensive systems. Underlying principles emphasized. State-of-the-art software engineering and promising research areas covered, including project management. Formerly ICS 221A.


From the Instructor:


This class is a graduate survey of software engineering topics. Each lecture will focus on a single topic, beginning with some background information about the topic and followed by an examination of one or more important issues with respect to that topic at the frontier of software engineering. Students requiring a more thorough exposition of background material should consult the course textbook, using the suggested readings in the course schedule as guidelines. At the end of the class, students should be knowledgeable about the fundamentals of software engineering, the key problems that are currently being pursued by researchers in the field, and the key approaches that are being proposed and investigated, as well as be familiar with the work of many of the leading researchers.

The vehicles for learning these topics are readings from the textbook, readings from the technical literature, lectures, and classroom discussion. The class is co-taught by the software faculty so that specialty topics may be presented in depth.



Assignments and Grading


  • Paper/Topic Summaries (40%)
    • For ten (10) topics discussed throughout the quarter and one or more papers assigned for each topic, you are required to submit a two-page (approximately 800-word) summary and evaluation brief. You will choose one topic per week, plus a second topic from some week of your choice to make up for the absence of topics in Week 9; summaries for one week are due on the Thursday of the following week. This arrangement ensures that you keep up with the readings, that you write about a breadth of topics, and that you do not wait until the end of the quarter to write your summaries. The first page should list your name, the title and authors of the papers, and a summary of the key points or contributions of the papers. The second page should assess the applicability of the papers' ideas to the topic, problems in applying the ideas, remaining issues related to the topic, or other critical evaluation of the papers or software topic.  For topics in which more than one paper is assigned, you may choose to discuss all papers assigned or focus on a single paper for that topic (but you may not write two separate briefs on one topic).  If there was no paper assigned for a topic you chose, discuss the lecture in detail.
  • Term Paper and Presentation (30%)
    • The term paper is an original, in-depth exploration of some current topic in software engineering. The paper must be new for this class, not a revised paper written for some other class. This paper may be largely survey in nature. Substantial latitude will be allowed in choosing the topic, but all topics must be software-related and approved in advance by the instructor.  Each student will present in class a 5-minute overview of their paper (during the 9th and 10th week of classes).
  • Class attendance and Participation (10%)
    • Class participation is critical and will share both your experiences and understanding of the class material.
  • Final exam (20%)
    • The final exam will ask you to demonstrate your understanding of the papers and topics covered in class as well as software issues in general.


NOTE: There will be NO incompletes ("I" grades) given in this class. You must finish all work for the class by the end of the final exam.



Schedule (Subject to Change)






Assignment Due

Paper Readings


29 September

Course Introduction
Overview of Software Engineering




1 October

User Interfaces and Hyperware





6 October

Software Architecture



[PW92] [TMA+96]

8 October

*Interoperability and Middleware


Week 1 Summary Due


13 October

*Software Requirements



[Hen80] [AA01]

15 October

*Formal Specification Methods



[vLW98] [HLK95]

20 October

*Aspect-Oriented Programming



[KLM+97] and optionally [TDBL00]

22 October
*Software Testing Theory
[Wey82] [Wey86]
27 October

*Human-Computer Interaction




29 October

*Computer-Supported Cooperative Work




3 November

Software Process and Workflow



[Nutt96] [Eng90]

5 November

Software Design Environments



[FGNR92] [RR98]

10 November

Metrics, Benchmarking, and Community




12 November

Open Source Software Development




17 November

*Configuration Management

van der Hoek



19 November

*Product-Line Architectures

van der Hoek


[HMR+01] [Ommering, ICSE 2002]

24 November
Field Research in Software Engineering
de Souza

26 November

Harnessing Event Based Architectures
[CRW01] [HR98]


1 December

Student Presentations (5 minutes each)

3 December

Student Presentations (5 minutes each)











The following books are highly recommended for background on requirements specification and project management:

  • Fundamentals of Software Engineering, by Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli, Prentice-Hall, 1991.
  • Software Requirements and Specifications: A Lexicon of Practice, Principles and Prejudices, by Michael Jackson, ACM Press/Addison-Wesley, 1995.
  • The Mythical Man-Month: Essays on Software Engineering (Anniversary Edition), by Frederick P. Brooks, Jr., 1995, Addison-Wesley.


The following technical papers from the research literature (most of which are from the Software Phase II Reading List) are also assigned to supplement the text as indicated in the (and these are subject to change by the lecturers).


[AA01] Thomas A. Alspaugh and Annie I. Antón.  Scenario networks for software specification and scenario management, Computer Science Technical Report TR-2001-15, North Carolina State University, Raleigh, NC, December 2001.

[ABC82] W. Richards Adrion, Martha A. Branstad, and John C. Cherniavsky. "Validation, Verification, and Testing of Computer Software". ACM Computing Surveys, 14(2):159-192, June 1982.

[AG93] Joanne M. Atlee and John Gannon. "State-Based Model Checking of Event-Driven System Requirements". IEEE Transactions on Software Engineering, 19(1):24-40, January 1993.

[AO00] Ackerman, Mark S. The Intellectual Challenge of CSCW: The Gap Between Social Requirements and Technical Feasibility, Human-Computer Interaction, 2000, 15(2-3), pp. 179-204.

[Bro87] Frederick P. Brooks. "No Silver Bullet: Essence and Accidents of Software Engineering". IEEE Computer, 20(4):10-19, April 1987.

[CKI88] Curtis, Krasner, and Iscoe. A field study of the software design process for large systems. Communications of the ACM, 31(11):1268-1287, November 1988.

[CR99] J. Chang and D. Richardson. "Structural Specification-based Testing: Automated Support and Experimental Evaluation".

[CRW01] Antonio Carzaniga, David S. Rosenblum, and Alexander L. Wolf, Design and Evaluation of a Wide-Area Event Notification Service, ACM Transactions on Computer Systems, vol. 9, no. 3, August 2001, pp. 332-383.

[CW98] Reidar Conradi and Bernhard Westfechtel. Version Models for Software Configuration Management, ACM Computing Surveys, Vol. 30, No. 2, June 1998, pp. 232-282.

[DR98] Elisabetta Di Nitto and David S. Rosenblum, "Exploiting ADLs to Specify Architectural Styles Induced by Middleware Infrastructures", submitted to the 21st International Conference on Software Engineering, August 1998.

[Eng90] Yrjo Engestrom, "When is a Tool? Multiple Meanings of Artifacts in Human Activity," in Yrjo Engestrom, Learning, Working and Imagining, Painettu Kirjapaino Oma Ky:ssa, Jyvaskylassa, 1990, pp. 171-195.

[EN96] Clarence A. Ellis and Gary J. Nutt. "Workflow: The Process Spectrum". In Proceedings of the NSF Workshop on Workflow and Process Automation in Information Systems: State-of-the-Art and Future Directions, pp. 140-145, Athens, GA, May 1996.

[FP97] Norman E. Fenton and Shari Lawrence Pfleeger, Software Metrics: A Rigorous and Practical Approach, Second Edition. Boston, MA: PWS Publishing Company, 1997, Chapters 1 and 2.

[FWA+98] R. Fielding, E.J. Whitehead, K. Anderson, G. Bolcer, P. Oreizy, and R. Taylor. "Web-based Development of Complex Information Products". Communications of the ACM, August 1998, pp. 84-92.

[FGNR92] Gerhard Fischer, Andreas Girgensohn, Kumiyo Nakakoji, and David Redmiles. "Supporting Software Designers with Integrated Domain-Oriented Design Environments". IEEE Transactions on Software Engineering, 18(6):511-522, June 1992.

[GAO95] D. Garlan, R. Allen, and J. Ockerbloom. Architectural mismatch: Why reuse is so hard. IEEE Software, 12(6):17--26, 1994.

[Gru94] Jonathan Grudin. "CSCW: History and Focus". IEEE Computer, 27(5):19-27, May 1994.

[HLK95] Constance L. Heitmeyer, Bruce G. Labaw, Daniel L. Kiskis, Consistency checking of SCR-style Requirements Specifications, Second IEEE International Symposium on Requirements Engineering, York, England. IEEE Computer Society, March 27 - 29, 1995, pp. 56-65.

[HMR+01] André van der Hoek, Marija Mikic-Rakic, Roshanak Roshandel, and Neno Medvidovic. Taming Architectural Evolution, Proceedings of the Sixth European Software Engineering Conference (ESEC) and the Ninth ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-9), Vienna, Austria, September 2001.

[HR98] Hilbert, D., Redmiles, D. An Approach to Large-Scale Collection of Application Usage Data Over the Internet, Proceedings of the Twentieth International Conference on Software Engineering (ICSE ‘98, Kyoto, Japan), IEEE Computer Society Press, April 19-25, 1998, pp. 136-145.

[Hen80] Kathryn L. Heninger. "Specifying Software Requirements for Complex Systems: New Techniques and Their Application". IEEE Transactions on Software Engineering, SE-6(1):2-13, January 1980.

[Kan95] Cem Kaner. "Software Negligence and Testing Coverage". The Software QA Quarterly, 2(2), 1995.

[KLM+97] Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, John Irwin. Aspect-Oriented Programming, proceedings of the European Conference on Object-Oriented Programming (ECOOP, Finland), Springer-Verlag, June 1997.

[Lev86] Nancy G. Leveson. "Software Safety: What, Why, and How". ACM Computing Surveys, 18(2):125-163, June 1986.

[KF99] T. Kistler and M. Franz. "Perpetual Adaptation of Software to Hardware: An Extensible Architecture for Providing Code Optimization as a Central System Service". Technical Report UCI-ICS-99-12, Department of Information and Computer Science, University of California, Irvine, CA, March 19998.

[MOT+99] N. Medvidovic, P. Oreizy, R. Taylor, R. Khare, and M. Guntersdorfer. "An Architecture-Centered Approach to Software Environment Integration, DRAFT NOT FOR PUBLIC RELEASE, November 1999.

[MR97] Nenad Medvidovic and David S. Rosenblum. "Domains of Concern in Software Architectures and Architecture Description Languages". In Proceedings of the 1997 USENIX Conference on Domain Specific Languages, pp. 199-212, Santa Barbara, CA, October 1997.

[Nut96] Nutt, G. The Evolution Towards Flexible Workflow Systems, Distributed Systems Engineering, Vol. 3, No. 4, December 1996, pp. 276-294.

[Omm02] or [Ommering ICSE 2002] Rob C. van Ommering: Building product populations with sofware components, International Conference on Software Engineering (ICSE) 2002, pp. 255-265.

[Ost87] Leon J. Osterweil. "Software Processes Are Software Too". In Proceedings of the 9th International Conference on Software Engineering, pages 2-13, Monterey, CA, March 1987.

[OGT+99] P. Oreizy, M. Gorlick, R. Taylor, D. Heimbigner, G. Johnson, N. Medvidovic, A. Quilici, D. Rosenblum, A. Wolf, "An Architecture-Based Approach to Self-Adaptive Software," IEEE Intelligent Systems, V. 14, No. 3, May/June 1999, pp. 54-62

[Par93] D. L. Parnas. "Predicate Logic for Software Engineering". IEEE Transactions on Software Engineering, 19(9):856-862, September 1993.

[PC86] D. L. Parnas and P. C. Clements. "A Rational Design Process: How and Why to Fake It". IEEE Transactions on Software Engineering, SE-12(2):251-257, February 1986.

[PW92] Dewayne E. Perry and Alexander L. Wolf. "Foundations for the Study of Software Architecture". ACM Software Engineering Notes, 17(4):40-52, October 1992.

[RH96] Gregg Rothermel and Mary Jean Harrold. "Analyzing Regression Test Selection Techniques". IEEE Transactions on Software Engineering, 22(8):529-551, August 1996.

[Ric94] Debra J. Richardson. "TAOS: Testing with Analysis and Oracle Support". In Proceedings of the 1994 International Symposium on Software Testing and Analysis, pp. 138-153, Seattle, August 1994.

[RR98]J. Robbins, and D. Redmiles. "Software Architecture Critics in the Argo Design Environment". Knowledge Based Systems, 1998, pp. 47-60.

[RW97] David S. Rosenblum and Alexander L. Wolf. "A Design Framework for Internet-Scale Event Observation and Notification". In Proceedings of the 6th European Software Engineering Conference/5th ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 344-360, Zurich, Switzerland, September 1997.

[Sca02] W. Scacchi, Understanding the Requirements for Developing Open Source Software Systems, IEE Proceedings--Software, 149(1), 24-39, February 2002.

[Sca04] W. Scacchi, Free/Open Source Software Development Practices in the Computer Game Community, IEEE Software, January 2004 (to appear).

[SEH03] Susan Elliott Sim, Steve Easterbrook, and Richard C. Holt, “Using Benchmarking to Advance Research: A Challenge to Software Engineering,” presented at Twenty-fifth International Conference on Software Engineering, Portland, OR, pp. 74-83, 3-10 May 2003.

[deSRD03] de Souza, C.R.B., Redmiles, D., Dourish, P., Analyzing Transitions between Private and Public Work in Collaborative Software Development, International Conference on Supporting Group Work (Group 2003—Sanibel Island, FL), November 2003, pp. 105-114.

[TDBL00]] Peri Tarr, Maja D'Hondt, Lodewijk Bergmans and Cristina Lopes (eds.). Workshop on Aspects and Dimensions of Concern: Requirements on, and Challenge Problems For, Advanced Separation Of Concerns, In ECOOP '2000 Workshop Reader, Springer-Verlag, December 2000.

[TM81] W. Teitelman and L. Manister. The Interlisp Programming Environment, IEEE Computer, 14(4):25-33, April 1981.

[TMA+96] R. Taylor, N. Medvidovic, K. Anderson, E.J. Whitehead, J. Robbins. "A Component- and Message-Based Architectural Style for GUI Software," IEEE Transactions on Software Engineering, June 1996.

[TN92] Thomas and Nejmeh. Definitions of tool integration for environments. IEEE Software, 9(2):29-35, March 1992.

[vLW98] Axel van Lamsweerde and Laurent Willemet, Inferring Declarative Requirements  Specifications from Operational Scenarios, IEEE Transactions on Software Engineering, V. 24, N. 12, December 1998.

[Wey82] Elaine J. Weyuker. On testing non-testable programs, Computer Journal, 25(4):465-- 470, November 1982.

[Wey86] Elaine J. Weyuker. "Axiomatizing Software Test Data Adequacy". IEEE Transactions on Software Engineering, SE-12(12):1128-1138, December 1986.

[Win90] Jeannette M. Wing. "A Specifier's Introduction to Formal Methods". IEEE Computer, 23(9):8-24, September 1990.

[YT89] Michal Young and Richard N. Taylor. "Rethinking the Taxonomy of Fault Detection Techniques". In Proceedings of the 11th International Conference on Software Engineering, pages 53-62, Pittsburgh, May 1989.





Faculty and Adjuncts

Thomas Allspaugh


Paul Dourish


Crista Lopes


David F. Redmiles 


Debra J. Richardson 


Jason Robbins


Walt Scacchi


Susan E. Sim


Richard N. Taylor 


Advanced Graduate Students

Eric Dashofy


Cleidson Ronald Botelho de Souza