ICS 121: Software Tools and Methods

Course Information

NumberICS 121
TitleSoftware Tools and Methods
QuarterFall 2003
Course Code36390
Mailing List36380-F03@classes.uci.edu
InstructorJason Robbins
LectureTu Th 3:30-4:50pm ELH 100
TALeila Naslavsky
Final ExamTuesday Dec 9, 4pm in ELH 100

Syllabus

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
Reading: B4, B10, F6, patterns intro and FAQ
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.

Goals for the Course

Expectations for the course

Deliverables and Grading

AssignmentWeight
Homeworks (8)40%
Midterm Exam25%
Final Exam35%
Optional mini-projectextra 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.

Optional Mini-Project

Details on the mini-project

Textbooks and Reading

Tools

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.

Development Document Templates

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.

Catalog description

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.

Notes

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss his or her specific needs. Also contact the Disability Services Center at (949) 824-7494 as soon as possible to better ensure that such accommodations are implementationed in a timely fashion.
example use case template sample test plan template Project plan template example use case templatesample test plan templateProject plan template