CS 410/560  Software Engineering

Course outline

Prof: Lin Jensen
Office: Johnson 115.
Office Hours: see cs.ubishops.ca/ljensen , or by appointment
Class meets Wednesday & Friday at 10:00 in N-312
e-Mail: Be brief. Messages over 40KB will be deleted unread
phone extension: 2361

There are many good textbooks on this subject. Some are more readable than others.
A recommended Textbook: Software Engineering, Principles and Practice,  Hans van Vliet (ISBN 978-0-470-03146-9)
I plan to follow chapters 1-3, 9-14 of this book in the lectures.

On reserve at the Library -- recommended books, really good reading:


Good software is difficult to build, it doesn't just happen. This course covers the phases of the software life cycle: Requirements, Specification (analysis), Design, Implementation, Integration, and Maintenance. The need for testing is present throughout. Methodologies for succeeding with each phase will be presented.
Methods of development range from the classic "Waterfall" to Extreme Programming.
"If it's not documented, it's not done" -- Parnas. Documentation is most useful if it is produced early and throughout the project. It is absolutely vital to maintenance of successful software as it "ages."


Grading scheme:

Individual assignments  20%
Tests 20%
Project 50%
Class participation
10%


Normally, all participants in a project will receive the group's mark. This mark will be based upon the process and final documentation for each phase, and the adequacy of the user documentation (manual or on-line help), in equal proportions. The product should work and be testable by me on the basis of the user documentation, without "coaching" from the developers.

There will be no final exam, and hence no supplemental exam, in this course.


Project

A large part of this course will consist of working on a large group project. Groups will ideally consist of 3 or 4 students. You may form your own groups and propose a project For example, it  could be a maze or simple game.  I will assign one to you if necessary.

As the emphasis in on process, choice of language(s) for implementation is up to the group. Java or C++, or possibly Python, would seem to be reasonable implementation languages in the Bishop's context.

The implementation should be compilable and runnable on more than one platform (Java does this, as does Gtk and Qt with C++). In particular, it should be able to run in the J-118 lab, not on only a few Windows computers with extra (proprietary) software. However, if you wish to develop an "App" for some type of phone, we would expect there to be a simulator available.

During the first 2 weeks, we will form groups and will agree on the initial requirements for each project.

How will projects then proceed?

This question is a subject for discussion. One suggestion (by Van Vliet) follows. In the recent past, groups have chosen projucts so unique and comples, that they took the whole term, and we ended with a public presentation. In this alternate model, periodical reviews were held, with some member of each group reviewing the progress of some other group.

Initial development - 4 weeks

You will develop, document, and implement a software application meeting these requirements.

Maintenance - 5 weeks

Following the completion of the initial projects, one alternative would be to give each group the project of another group. You will be responsible for evaluating that project, and for maintaining it:
  1. Corrective: Test it and remove any faults you find in the product or its documentation
  2. Adaptive: Some new and changed requirements will be given out, you must incorporate these changes in the existing code (It is always easier to build the kitchen of a new house than to remodel an old house, but this must often be done.)

Back to Lin Jensen's home page.