CS 5150
Software Engineering
Fall 2012

General Information about the Projects


Choosing a Project

A client can be any person or organization except yourself (e.g., a Cornell department, a local company or other external organization, a member of faculty or staff, etc.). Some potential projects and clients will be suggested but you are encouraged to identify your own. There should be a firm intention by the client to use the software in production. Aim for a minimum of a three-year production life with many users.

In selecting a project, think broadly. Your project can be an application, system software, or even a toolkit. Software engineering covers everything from cell phones to supercomputers. The only conditions are that there must be a real client and real users.

Because of the need for the client to attend presentations, we discourage clients who are not based in the Ithaca area. In the past, there have been successful projects with clients from Syracuse, but projects for more distant clients have rarely worked well.

Student organizations

It is possible to do a project for a Cornell student organization, with an officer of the organization as client. If you propose such a project, the course team needs to meet with the client before a definite decision is made.

Entrepreneurship projects

In the past we have had several projects for student entrepreneurs. Some have worked well; others have been less successful. If you propose such a project, the course team needs to meet with the client before a definite decision is made.

Deliverables

Since every software project is different, there is no set list of deliverables that every project must provide. Part of your task is to decide what is needed for this specific project. Typical deliverables include working code, documentation, training materials, test suites, etc.

  • The projects are divided into four parts, each of which ends in a milestone. At each milestone, the team submits a written report.
  • After the second, third, and final milestones, the team makes a presentation to the client and the course staff.
  • After the first milestone, each project team submits a weekly progress report.
See the Assignments page for more information. The three primary criteria for a successful project are: satisfying the client's needs, usability of the product, and maintainability over the life of the product.

These are group projects, but you will also be evaluated individually for how well you contribute to the overall success of the team.

Technical environment

You are free to choose any language and development framework for your project. You should keep these considerations in mind when making these choices.
  • Your client might have a preference. This is an extremely important consideration. Picking fights with the client over development environments is usually hugely counter-productive.
  • All other things being kinda sorta equal, using a popular framework for your project's application area is likely to save you a lot of time.
  • All other things being kinda sorta equal, using a framework that your team is already familiar with is likely to save you a lot of time.

Every project must use some specific tool for the following activities.

  • Design documentation. This can be as simple as notecards or comments in the code, or a fancy tool like Rational Rose.
  • Revision control. If you don't know how to choose, I recommend Mercurial based on the strength of this tutorial: http://hginit.com/.
  • Issue tracking. Bugzilla is a popular choice, but this is a wide-open area right now.
  • Testing. You at least need a script that will run a set of tests without any additional futzing. We will talk about automated testing tools later in the semester.

[ Home ]