PROJECT
Welcome to TerpSoft!
By registering for this class, you have automatically become part of a pseudo-company called TerpSoft. This company develops software according to the Software Engineering principles taught in this course. Your customer is the course instructor assisted by the class TA. Your job is to complete the software engineering tasks required by the customer. Because you are part of TerpSoft, YOU need to take initiative to get the project started, make progress, and complete it on time. Schedule meetings with the course instructor and TA so that you get a clear description of the requirements for each project phase.Before you start, PLEASE READ
IMPORTANT: As part of this project, you will be expected to use buggy 3rd-party software. This is done deliberately to simulate real-life scenarios. Students are expected to work around the bugs and submit their projects on time.Late deliverables will not be accepted. Start your projects early - last-minute computer malfunctions will not be accepted as reason for delaying an assignment's due date.
All teams will present their project in class.
The university computer labs should provide all necessary support for the project. Other resources normally available to you (e.g., home computers) can be employed, however you do this is "at your own risk." No alterations to conditions of the assignment will be made to accommodate peculiarities of your other computing resources.
List of Projects, Teams, and Members' Roles (note that roles are rather meaningless; everyone does everything)
AndroidGUITAR | iPhoneGUITAR | AndroidIntentsGUITAR | WebGUITAR |
---|---|---|---|
Kevin Rawlings | Samuel Yeom | Melanie Lemons | Klimkowski |
Jing Chen | Chris Sadowski | Adrian Nwajobi | Adam Hafez |
Thomas Frank | Jessie Yan | Eli Shamoulain | Dan Michaely |
Pyae Kyaw | Nicholas Ink | Krithi Ramaswamy | Luke Fritts |
David Wietzman | David Ho | Colin Buxbaum | Brittany Moore |
David Cabrera | Jean Chen | Tommy Irish |
All teams share the fundamental steps of the project. The only difference is that each team will work on a specific platform. For example, the iPhoneGUITAR team will produce deliverables for the iPhone platform.
WHAT TO SUBMIT (and how much is each submission worth)
Description | Number of submissions | Percent of overall course |
---|---|---|
Phase 1 | 1 | 8% |
Phase 2 | 1 | 8% |
Phase 3 | 1 | 8% |
Phase 4 | 1 | 8% |
Interpersonal skills statement | 1 | 1% |
Project proposal | 1 | 1% |
Meeting notes with customer | 4 | 1% |
Team assessment report | 4 | 1% |
Preliminary design report | 1 | 1% |
Preliminary design presentation evaluation report | 3 | 1% |
Final design report | 1 | 1% |
Final design presentation evaluation report | 3 | 1% |
PHASES
- Phase 1: Understanding your software
- Goal: Downloading, building (from source), and running your team's *GUITAR test harness on a simple "Hello World" input. Setting up a Jenkins job to do the same automatically on a new slave machine.
- Procedure: Consult the main GUITAR page for instructions on how to download, build, and execute the test harness.
- Deliverables: Running Jenkins job. Points will also be awarded for the demo.
- Grading session: During the grading session, you will have access to a new machine (Windows/Linux/Mac) that is connected to the Internet. You will have to download, build, and execute the test harness on the input. You will also need to install Ant, Subversion, Java, C++, and any other tools needed to build and run the harness. Your Jenkins job will be run and tested. It should be able to handle a newly installed slave, i.e., your Jenkins job should check the slave for necessary software and, if needed, install it automatically.
- Phase 2: Preparing existing version for enhancements
- Goal: Developing new test cases to get 90% coverage. Implementing a continuous testing process. These tests and process should help to detect faults in the future versions of the software.
- Phase 3: Making the enhancements
- Goal: Implementing the customer's new requirements.
- Phase 4: Preparing for the future
- Goal: Creating new tests for new functionality, documenting, etc. so that future teams find it easier to enhance the software.