ICS 121: Introduction to Software Engineering
Software Methods and Tools
Prof. Debra J. Richardson
Spring 2000

Information and Computer Science
University of California, Irvine

ICS 121 Home Page


Instructor: Debra J. Richardson
Email: djr@ics.uci.edu
Office hours: by appointment on Wednesdays 1-2 and Thursdays 2-3
Room: ICS2 216 


Assistant: Jie Ren
Email: jie@ics.uci.edu
Office hours: TBD

Assistant: TBD


Course Code: 36110
Lecture: Tuesdays and Thursdays 11-12:20
Room: RH 101


Course Codes: 36112 and 36113
Discussions: Mondays, Wednesdays, Fridays 3-3:50 and 4-4:50
Room: CS180


Course Description

Introduction to concepts, methods, and current practice of software engineering. The study of large-scale software production: software process models as an organizing structure; principles and techniques appropriate for each stage of production;

Software engineering is the study of the software process, in particular the specification, design, implementation, testing, maintenance and documentation of a software system. This course will provide a broad introduction to the concepts, methods, and current practice of software engineering. Topics include the study of large-scale software production with software process models as an organizing structure and principles and techniques relevant to each stage of the software production lifecycle. Emphasis will be on methods essential to creating software systems: well-understood requirements, logical design, formal specification, and well-planned testing.

The major concepts will be presented in the lectures. Additional help and information will be available in discussion sections. A key part of the class is a term requirements specification and design project performed in a sequence of exercises. This project serves as a vehicle for understanding software engineering and illustrating important concepts, methods, and tools.

Prerequisites

ICS 21-22-23 or equivalent
ICS 52
(MATH 2A-2B-2C)
MATH 6A-6B(-6C)
WRITING 39C

Grading

Students will be assessed on the basis of six assignments (55%) constituting the term project and covering the key concepts presented in the class and two exams.

The six assignments constituting the term project are as follows:

  1. Problem Analysis (5%)
  2. Validation Plan and Lifecycle Considerations (5%)
  3. System Mockups and Scenario (10%)
  4. Requirements Specification (15%)
  5. Initial Object-Oriented Architectural Design (10%)
  6. Final Object-Oriented Architectural Design (10%)
All assignments are due at the beginning of class (lecture or discussion) on the day indicated. If you are unable to attend class on an assignment due date, be sure to turn it in to the TA before the due date.

In addition, there will be two exams:

  1. midterm (20%)
  2. final examination (30%)
A midterm study guide and sample midterm with midterm key will be made available.

A final study guide and sample final will be made available.

Course Lectures

Course lecture notes and visuals are available through the engineering copy center. In addition, pdf and html versions will be available on the web.  Together with attending the lectures and lab discussions, these should be sufficient for completing the assignments. The material covered in class will be primary with respect to both assignments and exams.

Required Texts

Two texts are required as supplemental reading to complement lecture material. These texts will enable you to better understand the material presented in class as well as give you alternative descriptions of the material, which should be particularly useful in preparing for the exams. The required texts for this course are:

  1. Schach, S. (1998). Classical and Object-Oriented Software Engineering with UML and C++/Java (Fourth Edition). McGraw Hill.
  2. Brooks, F. (1995). The Mythical Man-Month (Anniversary Edition). Addison-Wesley Publishing Company.
  3. Martin Fowler, et.al. (1999). UML Distilled: A Brief Guilde to the Standard Object Modeling Language (Second Edition). Addison Wesley.
Additional Texts

For those with a keen personal or professional interest in software engineering, the following three texts provide alternative presentations of similar material:

  1. Ghezzi, C., Jazayeri, M., & Mandrioli, D. (1991). Fundamentals of Software Engineering. Englewood Cliffs, NJ. Prentice Hall.
  2. Sommerville, I. (1996). Software Engineering (Fifth Edition). Reading, MA. Addison-Wesley Publishing Company.
  3. Rumbaugh, et.al. Object-Oriented Modeling and Design.
Computer Usage

There is no "programming" in this class. The emphasis is on specification and design. The five assignments must be neatly formatted including graphics. You may accomplish this with the platform of your choice, such as Microsoft Word on the Macintosh or IBM PC or LaTex on your UNIX account.

You should use your UNIX accounts to access the bulletin board at least once a day. The instructor and teaching assistant will post messages including details of the assignments in this fashion. You will need to use email to arrange office hours, etc.

Communication and Office Hours

Office hours, electronic mail addresses, and phone numbers appear on the first page of this handout. Electronic mail is typically the best mean for asking simple questions, since even if the addressee is out of town, they may be able to answer your question promptly. In general, it is best to speak with the TAs regarding assignments and with the instructor with respect to conceptual information. If you feel you have extensive questions, be sure to make an appointment with whomever you would like to talk. If you have a problem with the grading of an assignment, speak with the TA first. If you need further assistance, don't hesitate to contact the instructor.

Lecture and Discussion Topics

Lecture and discussion topics include but are not limited to the following:

  1. Introduction, Software Engineering Scope and Principles
  2. Lifecycle Models, Methods and Tools
  3. Software Nature and Qualities
  4. Lifecycle Verification and Validation
  5. Requirements Acquisition, Prototyping
  6. Scenario Mockups and Human Computer Interaction
  7. Requirements Analysis Process
  8. Requirements Specification Methods
  9. Design Process
  10. Architectural Design Methods
  11. Object-Oriented Design and Analysis
  12. Formal (Specification) Methods
  13. Testing, Verification and Validation
  14. Software Environments
  15. Software Process Models
  16. The Mythical Man-Month
This list (both topics and order) is subject to change. Course note will be available incrementally in packets that contain from three to six lectures. The midterm will cover through topic 7, and the final will be cumulative but emphasize topics 8 through 16.

Schedule

subject to change
discussion sections will always meet unless otherwise noted
Week Date Description Readings
Week 1 April 4 Welcome, Overview of Class 
Scope and Principles of Software Engineering
Schach, 
Chapter 1
April 6 Software Lifecycle Models 
Methods and Tools 
Schach, Chapter 2 & 3
April 3,5,7 No discussion sections this week Start reading Brooks this week; continue throughout the quarter!
Week 2 April 11 Requirements Overview
Requirements Acquisition, Rapid Prototyping
Homework 1 assigned
Schach, Chapter 9
April 13 Software Qualities Schach, Sections 5.1 & 5.4
Week 3 April 18 Lifecycle Verification and Validation 
V&V Principles, Software Testing Basics, Reviews
Homework 2 assigned
Schach, Chapter 5 (rest), Sections 13.9&13.11
April 19 Homework 1 due .
April 20 Requirements, continued 
Scenarios, Cognitive Walkthroughs, Usability
Homework 3 assigned
.
Week 4 April 25 Requirements Specification 
Data-flow and E-R Diagrams
Schach, Sections 10.1-10.5
April 26 Homework 2 due .
April 27  Requirements Specification, continued 
Finite State Machines and Petri-nets
Homework 4 assigned
Schach, Sections 10.6-10.7, 10.11-10.13
April 28 Midterm review  .
Week 5 May 1 Midterm review 
Homework 3 due
You should be half-way through Brooks by now!
May 2 Midterm review 
May 3 Midterm review
May 4 Midterm  covers material through April 27 lecture
Week 6 May 9 Introduction to Design 
Architectural Design
Schach, Section 11.1
May 11 Introduction to Object-Oriented Analysis and Design: Objects Schach, Chapter 6
May 10 Homework 4 due .
Week 7 May 16 Object-Oriented Analysis and Design:
Class Modeling
Homework 5 assigned
Schach, Sections 11.1-11.5
May 18 Object-Oriented Analysis and Design:
Dynamic and Functional Modeling
Homework 6 assigned
Schach, Sections 11.6-11.9, 
Chapter 12
Week 8 May 23 Object-Oriented Analysis and Design: conclusion .
May 25 Formal Methods, Formal Specifications Schach, Sections 10.8-10.10
May 24 Homework 5 due .
Week 9 May 30 Testing, Test Criteria and Strategies Schach, Chapter 5, Sections 13.6-13.10&13., Sections 14.2-14.5
June 1 Software Environments Schach, Sections 4.9-4.11 & Sections 
9.12, 10.12, 11.8, 12.11, 13.15, 14.6 &
Sections14.7-14.11 
June 2 Homework 6 due .
Week10 June 6 Process Models Schach, Chapter 3, Sections 2.10-2.12
June 8 Mythical Person-Month Lessons
Quarter Wrap-up
You should be all-the-way through Brooks by now!
June 9 Final exam review  .
Finals Week June 13 Final Exam, 10:30 - 12:30 .