Number | ICS 121 |
---|---|
Title | Software Tools and Methods |
Quarter | Spring 2004 |
Course Code | 36320 |
Mailing List | 36320-S04@classes.uci.edu |
Instructor | Jason Robbins |
Lecture | M W F 3:00-3:50pm RH 101 |
Discussion 1 | W 1:00-1:50p in CS180 with Christopher Van der Westhuizen |
Discussion 2 | F 1:00-1:50p in CS180 with Elmer Kim |
Labs | M 10:00-10:50, F 9:00-9:50, or F 2:00-2:50p in CS183 |
Final Exam | Mon, Jun 14 4:00 - 6:00 p.m. in RH 101 |
Week | Monday |
Wednesday |
Friday |
---|---|---|---|
1: Intro & Perspective
Reading: F1, S1, S2, B1, B2, B3, B16
|
Course information and goals
Survey of student background
What is engineering?
Software engineering challenges
|
Tools, Notations & Methods
Software product qualities
|
Elements of the "larger product"
Members of the "larger team"
|
2: User Needs & Dev. Processes
Reading: F2, S3, S4
|
Gathering requirements
Expressing user needs
|
Software process models
Development facilities
Version control
|
Unified process
Agile / Extreme methodologies
Open source practices
|
3: Spec. & Design
Reading: F3, F5, S5, S6, S7
|
Specification vs. Design
UML use cases
|
Feature specifications
Design qualities
|
UML class diagrams
|
4: Spec. & Design
No Lab 4
Reading: F7, F8, S8, S9
|
UML class and package diagrams
Mini-project abstracts due
|
Other specification and design notations
|
Midterm exam
|
5: Improving Design |
Object-orientation
Design patterns
|
Design maintenance: modularity, refactoring
|
UML state diagrams
|
6: Design Specialties
Reading: B17, S12, S14, S15
|
UML activity diagrams
|
UML sequence diagrams
UML collaboration diagrams
Design specialties
|
UML collaboration diagrams
UML deployment diagrams
|
7: Implementation |
Implementation concerns
IDEs & language choice
Code generators / Rev. Eng.
|
Automated builds
Assertions
Style guides and code analysis
|
Quality concerns & approaches
Mini-project drafts due
|
8: Software Quality
No Lab 8
Reading: S19, S20, JUnit
docs
|
QA plans
|
Test suites
System test automation
|
Midterm exam
Mini-project due
|
9: Quality Activities
Reading: Javadoc guide
|
Memorial Day
|
Design and code reviews
Design for testability
Unit testing with JUnit
|
UML review
|
10: Team tools
No Lab 10
Reading: B11, B14, S22, S24, S29
|
The mechanics of teamwork
Planning and scheduling releases
|
Issue tracking
Release checklists
|
Review/TBD
Mini-project corrections due
|
Finals |
Final exam
|
Reading: B = Brooks, F = Fowler, S = Sommerville.
Assignment | Points |
---|---|
Labs | 30 (best 5 out of 7 assignments) |
Mini-project | 10 + up to 10 extra |
Midterm Exams | 15 + 15 |
Final Exam | 30 |
Weekly individual lab assignments require students to practice using the tools and methods taught in the couse. Each lab is a combination of (a) questions on the lecture and reading material and (b) exercises in software development activities.
Weekly labs are due the following Tuesday: e.g., lab 1 is due Tuesday of week 2. Lab assignments should be printed, stapled, and handed in at the distribution center before it closes. Late labs will not be accepted: no exceptions.
Lab regrade requests must be done in writing. Use this form for regrade requests. Hand in your regrade request and the assignment to be regraded to the distribition center. Regrades will only be considered if requested within one week after the assignment is handed back.
Midterm and final will be held in the lecture room. Make-up exams will only be offered in cases of extreme hardship, and require physician's note or other documentation.
In this course you will learn about the following software engineering tools:
Most tools are installed in the 3rd floor lab in the CS building. Ask the lab attendant for a login if you don't have one yet; mention that you are enrolled in this class.
Software engineering requires careful thought and planning. This is done by writing documents for the project proposal, overview, plan, requirements, specification, design, release notes, demos, etc. This is usually a significant fraction of the overall effort put into software development.
For this course, you will use a set of project document templates. You will fill in the content to describe your particular project. This will allow the course to go into greater depth and breadth with less effort spent on mechanics. The templates themselves contain a good amount of useful information to get you started and make you think.
121 Software Tools and Methods (4). Concepts and techniques of constructing software in a systematic fashion, including detailed design techniques, specifications, programming methods, quality-inducing procedures, development tools, team techniques, testing, estimation, and performance improvement. Laboratory work involves exercises to illustrate important concepts, methods, and tools. Prerequisites: ICS 52 or CSE90 with a grade of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; satisfactory completion of the lower-division writing requirement. Same as CSE121.