CSE308 (Fall `01)
Software Engineering

[ General Information | Course Outline | Lectures | Handouts | Other Pointers | Something Nice ]
[ Groups | Proposed Projects | Selected Projects | Delivered Projects | Announcements | What's new ]


General Information

Course description: This course introduces students to basic concepts and modern tools and techniques of software engineering. We will emphasize the development of reliable and maintainable software via system requirements and specifications, software design methodologies including object-oriented design, implementation, integration, and testing. We will discuss software project management, life-cycle documentation, software maintenance, and consider social and human factor issues.

The above description is based on the official course description. For this fall in particular, we will study UML (the Unified Modeling Language) and use it for capturing requirements, building models and specifications, mapping out designs, refining the designs, and viewing systems in multiple interrelated ways. Students will work in groups on a software development project as a major part of the course.

Prerequisites: CSE219 or equivalent, or undergrad discrete math (sets, functions and relations, predicate logic), data structures, programming in Java, plus ability to catch up with materials of CSE219. | Credits: 3.

Instructor: Annie Liu | Email: liuATcsDOTsunysbDOTedu | Office: Computer Science 1433, 632-8463.

TAs: Jingyu Yan | Email: jingyuATcsDOTsunysbDOTedu | Phone: 474-7488.
Aili Li | Email: lial2001ATyahooDOTcom | Phone: 636-2297.

Hours: Tue Thu 9:50-11:10AM, in SB Union Auditorium | Annie's office hours: Tue 11:10AM-12:10PM, Thu 8:50-9:50AM, 12:10:PM-1:10PM, in CS 1433 | Jingyu's office hours: Tue Wed 4-5PM, in CS 2110 | Aili's office hours: Mon 4-5PM, Fri 11:20AM-12:20PM, in CS 2110.

Textbook: The main text is Software Engineering: Theory and Practice by Shari Lawrence Pfleeger, 2nd Edition, Prentice-Hall, 2001. The supplemental text is UML Explained by Kendall Scott, Addison-Wesley, 2001. In addition, you should take good notes during the lectures.

Grading: Weekly assignments, all centered around the course project, by group and/or individual, together worth 40% of the grade; a midterm exam, a group project presentation, and the final group project evaluation, each worth 20%, 10%, and 30%, respectively, of the grade.

No late assignment will be accepted. Individual portion of the course work must be done by the individual; group portion of the course work must be done by the group. You may discuss with others and look up references, but you must write up your solutions/codes/reports independently and credit all other sources that you used. Reuse is encouraged but must be acknowledged. Any plagiarism or other forms of cheating will result in an F.

Course homepage: http://www.cs.sunysb.edu/~liu/cse308/, containing all course related information.

Course newsgroup: sbcs.cse308.


Course Outline

We will start with an overview of software engineering problems and various process models, including UML-based models, emphasizing incremental and iterative development, as well as reuse, for planning. Each student will describe a software development project; each group will select a project from a set of choices given by students, the TAs, the professor, and the author of the main textbook.

We will then study methods from requirement analysis to detailed designs using UML class and object diagrams, use case diagram, sequence and collaboration diagrams, activity and state diagrams, as well as component and deployment diagrams. We will survey other methods as well. Students will work on their projects, using UML for modeling and design. This will be followed by a review and a midterm, as well as coding for the project.

Afterwards, we will discuss coding, and continue with testing and documentation. In particular, we will study methods for improving program performance, and discuss the use of UML use cases for test purposes. We will also look at the Extreme Programming view of coding, testing, and documentation, as well as the entire process. Students will complete the development phase of the project.

Finally, we will discuss delivering systems, having users use the systems, and address the difficult problems of maintenance and evaluation. Each student will try to use and evaluate software developed by other teams. Student groups will present their projects during the last few classes.


Lectures

Lecture 1 (08/28/01): Overview. Software engineering, state of the art, special difficulty, teaching; this course: UML, project, schedule, grading, tools.
Lecture 2 (08/30/01): People involved, system to be built, steps needed; major issues: abstraction, analysis and design methods and notations, etc., UML; project description.
Reading: SE Ch.1, UML Ch.1. Homework: Handout H1.

Lecture 3 (09/04/01): Software process models: waterfall, V, prototyping, executable specification, transformational, phased development, spiral, extreme programming, UML.
Lecture 4 (09/06/01): UML overview and Unified Process: models, workflows, phases, and diagrams. Projects: incremental and iterative, reuse, a best possible system.
Reading: SE Ch.2, UML Ch.2. Homework: Handout H2.

Lectures 5 and 6 (09/11/01 and 09/13/01): Classes canceled. Self study materials: project planning and management.
Reading: SE Ch.3. Homework: Handout H3.

Lecture 7 (09/20/01): Requirements analysis and UML class diagrams. Objects, classes, class responsibilities; class relationships: dependency, generalization, association, aggregation; modeling static structures.
Lecture 8 (09/25/01): Requirements analysis and UML use case diagrams. Actors, use cases, main vs exceptional flow of events; include, extend, and generalization relationships; modeling dynamic behaviors.
Reading: SE Ch.4, UML Ch.3-4. Homework: Handout H4.

Lecture 9 (10/02/01): System analysis and design and UML interaction diagrams. Sequence diagrams, collaboration diagrams; signals, iteration and branching, time and location, other constraints; modeling object interactions.
Lecture 10 (10/04/01): System analysis and design and UML advanced structural modeling. More on attributes and operations; abstract class, interface, template class; more on relationships; stereotypes.
Reading: SE Ch.5, UML Ch.5-6. Homework: Handout H5.

Lecture 11 (10/09/01): Detailed design and UML activity diagrams. Activity and action, transition, branch and merge, fork and join, swimlane, object flow; process, thread, active object; modeling flow of control.
Lecture 12 (10/11/01): Detailed design and UML state diagrams. Event, state, transition, state machine, state diagrams; sequential, history, and concurrent substates; modeling object lifetime.
Reading: SE Sec.6.1-6.6, UML Ch.7-8. Homework: Handout H6.

Lecture 13 (10/16/01): Architectural organization and UML collaborations. Collaborations, modeling realization of use cases and operations; patterns, mechanisms and frameworks; observer pattern.
Lecture 14 (10/18/01): UML component diagrams and deployment diagrams. component, realization, modeling executable, source, etc; node, connection, modeling processor, distribution of components, etc.
Reading: SE rest of Sec.6, UML Ch.9-10. Homework: Handout H7.

Midterm review (10/23/01): UML overview: what? why? how? Software development process and UML diagrams and concepts; sample problems and solutions; your group project. See Handout E1.
Midterm (10/25/01): In-class exam, 80 minutes. Open textbook (Software Engineering and UML Explained) and your own handwritten (not mechanically or electronically reproduced) notes. Closed everything else.

Lecture 17 (10/30/01): Programming and optimization. Problem solving, incremental and iterative computation principle, topological sort example.
Lecture 18 (11/01/01): More on programming and optimization. More on incremental maintenance of the results of expensive computations, image blurring and minimum-sum section examples.
Reading: SE Ch.7. Homework: Handout H8.

Lectures 19 and 20 (11/06/01 and 11/08/01): Appointments with groups. Continue with programming and optimization. Tue: 10:00 *Memphis*, 10:30 *Webbook, 11:00 Xtreme-Wares*, Wed: 11:00 *Virtual checkbook, 12:00 Bullseye*, 12:30 Multi-Solutions*, 3:30 Dreamer Studio*, Thu: 9:30 VP*, 10:00 Virtucom*, 10:30 Inteli-Soft*, 12:00 PMIT2.5*, 12:30 E-magine*, 1:00 DJ-Chi*, 1:30 Prep Studios*, 4:00 Celltrix*, Fri: 3:00 Kran*.

lecture 21 (11/13/01): Testing the programs. Faults; types of testing; unit test: code review, proving code, test coverage; integration test: bottom-up, top-down, etc; test plan; tools.
lecture 22 (11/15/01): Computer Associates lecture. Software engineering methodology, by Roya Montazeri, a Development AVP. Self reading materials: testing the systems.
Reading: SE Ch.8-9. Homework: Handout H9.

Thanksgiving break: November 19-23. Happy Thanksgiving!

lectures 23 and 24 (11/27/01 and 11/29/01): Classes canceled. Self study materials: delivery and preparing manuals and training materials.
Reading: SE Ch.10. Homework: Handout H10.

lecture 25 (12/04/01): Project presentation: Virtucom's satellite tracker, Prep Studio's exam helper, VP's visual programming environment and code generator, Multi-Solutions' Chinese checker. Self study materials: maintenance and improvement.
lecture 26 (12/06/01): Project presentation: Xtreme-Wares' voice calculator, Bullseye's HTML editor, eMagine's virtual card sender, X-Soft's on-line class registration and much more.
Reading: SE Ch.11. Homework: Handout R for Project Report.

lecture 27 (12/11/01 12/13/01): Project presentation: UserSoft's web-based student organizer, TEAM-NY's virtual checkbook, Celltrix's web spreadsheet, Dreamer Studio's web spreadsheet, KRAN's web spreadsheet. Self study materials: Evaluation and improvement.
lecture 28 (12/11/01 12/13/01): Project presentation: 12/13 PMIT2.5's GRE vocabulary learner, One Of A Kind's graphics scripting, DJ-Chi's on-line class registration, Inteli-Soft's stock portfolio simulation.
Reading: SE Ch.12. Homework: Handout R for Project Report.


Handouts

Handout Q: Questionnaire

Handout H1: Homework 1: Questionnaire; Customer Wanting Software; What I Did

Handout H2: Homework 2: Group Project Description; What I Did

Handout H3: Homework 3: Group Project Plan; What I Did

Handout H4: Homework 4: Group Project Requirements Analysis; What I Did

Handout H5: Homework 5: Group Project System Analysis and Design; What I Did

Handout H6: Homework 6: Group Project Detailed Design; What I Did

Handout H7: Homework 7: Group Project Organization and Deployment; What I Did

Handout H8: Homework 8: Group Project Programming and Optimization; What I Did and a Bonus Problem

Handout H9: Homework 9: Group Project Testing; What I Did and Tests

Handout H10: Homework 10: Group Project Delivery; What I Did

Handout E1: Preparation for Midterm Exam

Handout E2: Midterm Exam

Handout E3: Sample Solution to Midterm Exam

Handout P: Presentation Evaluation

Handout R: Final Project Report


Other Pointers

Links from the author of the main text: real examples, tools, conferences, related web sites, literature, etc.

Windows NT Transaction Processing Labs: policies, FAQ, etc.

Martin Fowler's Extreme Programming page

Xprogramming.come - an Extreme Programming Resource, provided by Amenda Chen. (11/16/01)

UML and UML tools

UMLet: a tool for creating UML class diagrams, found by Rishi Sinha. (9/24/01)

UML and UML for Real-time, found by Amenda Chen. (9/24/01)

ARTISAN Real-Time Studio, based on UML, found by Steven Sehgal. (/9/24/01)

UML Tutorial at Embarcadero Technologies and UML Tutorial at Sparxsystems, found by Amenda Chen. She also recommends JBuilder Enterprise Edition, which has built-in CVS tools. (9/24/01)

UML Tutorial in 7 days, found by Nikolay Blyumberg. (10/16/01)

UML Hist the Street, proivded by Michael Tacopino. Michael described no specifc points, but I see a lot of contradicting arguments in this article. Yes there could be potential conflicts between UML and XP. But why don't we see that in our course? It is because we concentrated on the more fundamental principles underlying both: incremental and iterative, precise and formal. Never let unimportant things take over important ones. (11/16/01)

Other miscellaneous pointers

Mathematical Limits to Software Estimation, based on an Large Limits to Software Estimation, found by Dan Curran. This is a very interesting artical. (11/15/01)

C# vs Java, found by Dan Curran. A nice artical. (12/04/01)

Program Optimization: Techniques, examples, and discussion, fuond by Zhao Pan. BTW, you may find that "hositing loop invariant" is a trivial case of making computation incremental, so is "using finite differences to avoid multiplies", among other things. (12/04/01)

SwTech.com - Java Code Optimization Techniques, Java Optimization Resources, and JavaTM Performance Tuning and Java Optimization Tips, found by Zhao Pan. (12/04/01)

Regression Testing, found by Sun Yoo. (12/04/01)

Most Software Stinks, found by Dan Curran. (9/24/01)

Softawre Engineering Standards, found by Amenda Chen, but she says that they weren't too exciting to read, at least for her... me too. (11/16/01)

Jext: a Java text editor, found by Ling Yang, who thinks its interface is really cool. (12/04/01)

Kawa is recommended by Zero Yuen. (9/24/01)


Something Nice

Webtrack, by Tom Rothamel. To track 308, click on link "here"(http://webtrack.sbcs-acm.com/sites.html) near the beginning, then click to select CSE308, and click on "Update Settings" at the bottom. BTW, there is one little thing missing there, the file "new" I use to keep track of "what's new" for the course homepages.


liuATcsDOTsunysbDOTedu