Never Ending Security

It starts all here

CS307: Software Engineering I


Welcome to a new semester of CS 307 Software Engineering I.

We are delighted to welcome Harris Corp. and Northrop Grumman as this semester’s project partners!

Refer to course policies here

Course work

Mid-term 30%
Assignments 10%
Project 60%

Project grade decomposed as

SRS (Requirements) 20%
Design 20%
Implementation and testing plan 20%
Each Build/Progress Report (content defined during recitations) 10% (30% total)
Final presentation and demonstration 10%
Total 100%


Object-Oriented Software Engineering: Practical Software Development using UML and Java, Second Edition.(Resources)

Course Description

(a) Introduce fundamental principles, techniques, and tools used in the design of modern industrial strength software systems, (b) provide an opportunity to work in small teams, and (c) assist in sharpening of documentation and presentation skills.

Course Objectives

  • To understand the software development process
  • To understand the advantages and disadvantages of current software life cycle models.
  • To use current tools and methods to plan, analyze, design, test, measure, and manage software projects.
  • To understand that good people are one of, if not the most important, requirements for successful projects.
  • To learn how to work on a team project.
  • To learn where to find more information.

Project descriptions for Spring 2009 from

Harris Corporation (Screencast system)

Northrop Grumman (Automated service composition system)

Assignment 1: Due Sunday, January 18th at 11:59PM (23:59)
Assignment 2: Due Sunday, January 25th at 11:59PM (23:59) Extended to Monday, January 26th
Assignment 2 Turnins

General Tips

Tips from Naveen TA Spring 2008:

  • Always keep back up for your files, so that you don.t lose any important piece of code in case of a disk crash, etc.
  • Proper Structure: Your file structure should resemble your higher level design.
  • Further set versions for all your files so that you can always revert back to the previous working stage.
  • Keep your code highly discrete by using separate function for performing each task. This further increases the reusability of the code.
  • Always use user-friendly names for your files and the variables you use in your code.All the more, a common set of rules and guidelines should be followed in a team for the same.
  • Provide detailed comments, wherever you can, to describe each and every critical part of your code.
  • Avoid Duplication: In case of multiple candidates working on the same set of code, always store your fair work in a common separate region and keep files on which you are currently working in other region.
  • Proper Indentation: It makes your code highly readable and understandable, especially in case of large size codes.
  • Finally, everyone should be well versed with the specifications and follow the same set of assumptions. This will ensure that different set of codes will work fine when merged together.

Tips from Meghana Chitale TA Fall 2006:

  • Make sure to turn in all weekly documents on time. Refer to the schedule on website to get the list of documents to turn in for that week.
  • It is always a good idea to have sub-teams that focus on different aspects of project like database, front-end, security, networking and others depending on project requirements.
  • Maintain good communication across team members.
  • Maintain all team documents, individual documents and source code using a version control system. It will help to compile the binder easily at the end of semester.
  • Do not print any documents, as the binder will be turned in on a CD at the end.
  • Update your website regularly. It is useful for getting the status of project at any given time.
  • Once you start with the weekly builds, use some planned method to track the bugs. You can use something as simple as an excel sheet to keep track of bugs.

Note that example documents, even if very good, didn’t get full points. Also, some elements may not apply to your project.

Requirements Document

Here are two example documents from last semester:
Team C (MITRE project)
Team E (Yahoo! project)

Design Document

For this class, the design document is written in two phases. The template is separated into two matching sections. Design template: (pdf) (doc) Template last revised on 9/18/08.|
You are also free to add a Use Case view section in your document to complete the “4+1” set, if you find it useful to explain and justify your design, even though it’s not in the template and it’s not required. If you create UCDs, you should not use them to represent exception behavior (when errors happen) or to try to illustrate the sequence of steps that must be performed in order to complete a task. Use Sequence diagrams to show these design features.
Here are two example documents from last semester:
Team B (Yahoo! project)
Team E (Yahoo! project)

Implementation and Testing Plan

This semester we are combining the implementation and the test plan into a single document. We want to see a definition of the processes you will use, the management tools you will use (e.g., version control, Gantt chart, spreadsheet table, Gnome Time Tracker (Linux). Explain your choices. Plan which functionality you will implement when, and break it down into tasks that have an estimated duration. What are the risks to your project and how can you mitigate them? Will you use a static analyzer to verify and improve quality (note that we have a license to Fortify, usable in B160)? See section 11.6 of the book for an outline of a project plan. You may also find EPICS notes on project planning useful. Here are examples for last semester: Implementation Plan, Team C (MITRE project)
Testing Plan, Team C (MITRE project)
Testing plan, Team E (Yahoo! project)

The mistakes most commonly made were:

  • Having only negative test cases checking for failure, and no test for successfully implemented functionality, or vice-versa. You should have both.
  • Unverifiable test cases — from the description alone it is impossible to tell for sure if a test would pass or fail.
  • No definition of the test data and expected results.

Test Plan template: (pdf) (doc) Template last revised on 10/17/08.
Some slides

Final Presentation

Lecture Slides

Permanent List of Prizes

(TAs: Prepend, do not delete this list at the start of a new semester)

Spring 2009


Fall 2008

Most Resourceful Team Team A (Caterpillar). This team displayed determination to make progress and get things to work no matter what. They impressed the instructors by finding ways where we thought there were none. For example, even with an IIS server that didn’t work and then didn’t talk to the Oracle database for the longest time, they got the Caterpillar framework going and made progress.
Best User Interface Team B (Yahoo!). The widget has a clean appearance, has a proper login window, has popup dialogs for error messages, and a unique design.
Best Code Quality Team C (MITRE). The combination of good code metrics (including code coverage), easily understandable, well-commented code and well-defined test cases presented by team MITRE (as they named themselves) was very strong.
Most Courageous Team Team D (Caterpillar). With only 3 team members, this team successfully navigated numerous challenges of the Caterpillar project.
Best Documentation Team E (Yahoo!). This team produced 4 documents that will be used as examples for next semester. In general this team produced documents that were well thought-out and easy to understand. They showed good judgement in including enough relevant information, rationales and analysis without burying the instructors in minutiae and paper.
Best Project Work Overall Team A! Their work throughout the semester was determined, strong, and followed instructions. Also, team C deserves an honorable mention; they were so very close that this was almost a tie.

The Teams

Team A: Yu Leng , Ferry Lukito , Wooi Chen Ng , Hendry Rusli

Team B: Immanuel Alexander , Arjun Arora , Charles Durham , Andrew Prasetyo Jo , Leo Tanady

Team C: Catherine Brown , Michael Dunn , Mark Nowicki , David Tittle

Team D: Joseph Fruland , William Mortl , Ryan Wood

Team E: Jacob Mc Dorman , Robert Read , Robert Shaw , Bradley Van Dyk


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s