ICS 221 Software Engineering
Class Home Page
Classroom: CS 253
Lecture Period: Mondays and Wednesdays,
Course Code: 36782
Instructor: David Redmiles
Electronic Mail: firstname.lastname@example.org
Office Hours: Wednesdays and Fridays ; but please send email to guarantee an appointment.
→ 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
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)
The following books are highly recommended for background on requirements specification and project management:
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,
[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,
[FP97] Norman E. Fenton and
[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.
[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,
[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.
Kiczales, John Lamping, Anurag
Mendhekar, Chris Maeda,
[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).
[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
[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.