Number | ICS 121 |
---|---|
Title | Software Tools and Methods |
Quarter | Fall 2003 |
Course Code | 36390 |
Mailing List | 36380-F03@classes.uci.edu |
Instructor | Jason Robbins |
Lecture | Tu Th 3:30-4:50pm ELH 100 |
TA | Leila Naslavsky |
Final Exam | Tuesday Dec 9, 4pm in ELH 100 |
Week | Tuesday |
Thursday |
Homework |
---|---|---|---|
1 Intro & User Needs |
Course information and goals
Survey of student background
What is engineering?
Software engineering challenges
Tools, Notations & Methods
|
Elements of the "larger product"
Software product qualities
Gathering requirements
Expressing user needs
|
Reading: F1, F3, S1, S2, B1, B2, B3, B16
|
2 Processes |
Software process models
Members of the "larger team"
Development facilities
|
Unified process
Agile / Extreme methodologies
Open source practices
|
Reading: B11, B14, F2, S3, S4
|
3 Spec. & Design |
Specification vs. Design
UML use cases
Feature specifications
|
UML structural diagrams
|
Reading: F4, F5, S5, S6, S7
Optional mini-project abstracts due
|
4 Spec. & Design |
UML behavioral diagrams
|
UML continued
Other specification and design notations
|
Reading: F8, F9, S8, S9
|
5 Improving Design |
Design qualities
Object-orientation
Design patterns
|
Design by contract w/ OCL
Design maintenance: modularity, refactoring
|
|
6 Design Specialties |
Design for security
Design for reuse
Design for scalabity
UI design
Persistence design
|
Midterm exam
|
No assignment for week 6
Reading: B17, S12, S14, S15
|
7 Implementation |
Vetrans' Day Holiday
|
Implementation concerns
IDEs & language choice
Code generators / Rev. Eng.
Automated builds
Assertions
Style guides and code analysis
|
Optional mini-project status report
|
8 Software Quality |
Quality concerns & approaches
QA plans
Test strategies
Test suites
|
Design and code reviews
Unit testing with JUnit
Design for testability
System test automation
|
Optional mini-projects due
Reading: S19, S20, JUnit
docs
|
9 Docs & Deployment |
Packaging and deployment
UML component & deployment diagrams
|
Thanksgiving Holiday
|
Reading: F10, Javadoc guide
|
10 Team tools |
The mechanics of teamwork
Planning and scheduling releases
|
Version control
Issue tracking
Release checklists
|
No assignment for week 10
Reading: S22, S24, S29
Optional mini-projects final status report and corrections due
|
Finals |
Final exam
|
Reading: B = Brooks, F = Fowler, S = Sommerville.
Assignment | Weight |
---|---|
Homeworks (8) | 40% |
Midterm Exam | 25% |
Final Exam | 35% |
Optional mini-project | extra 10% |
Homeworks are due the following Monday. Homeworks should be printed, stapled, and handed in at the distribution center before it closes. Late homeworks lose 20% credit per day.
Homework regrade requests must be done in writing. Use this form for regrade requests. Hand in your regrade request and the homework to be regraded to the distribition center. Regrades will only be considered if requested within one week after the homework 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.