Home Contact

CMSC435: Software Engineering (Spring 2012)

Dept. of Computer Science, University of Maryland, College Park, MD, USA.

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 be accepted with a 20% penalty per day. 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)

JFCGUITAR SWTGUITAR AndroidGUITAR iPhoneGUITAR AndroidIntentsGUITAR WebGUITAR
Source Code & Version Control Robert Lavoie Dan Semmel Matthew Green Jed Lingat Whitney D. Ford Payam Azadi
Justin Kenel Troy Crosby Christoph Schulze Sigmund Albert Gorski III Emily Berk Siwatm Piyasirisilp
Testing and QA Ben Strauss Michael Biggins James DeBolt Pouya Karimi Elijah Yoon Tuan Nguyen
Bingchen Hu Paul Hazlett Asif Chowdhury Chris Lentowski Rohan Pathare Cody Zhang
Documentation & Wiki Bobby Seng Chris Muller Matt Brown Alireza Mohammadi Siti Mashit Shamsul-Anuar Steven Banaszak
Peter Myers Eric Kuang Matt Orlove Holman Gao Lyonel Dario Andrew Nguyen
Automation & Tools Kevin Hadaway Eric Oliver Andrew Gutherie Yifu Ma Uyen-Truc Nguyen Kris Samala
Yizhou LIU Danny Choi Chris Carmel Muhammad Ashraf Ishak Kerese Wright Chris Ellepola

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%
Phase 5 1 8%
Interpersonal skills statement 1 1%
Project proposal 1 1%
Meeting notes with customer 5 1%
Meeting notes with instructor 1 1%
Team assessment report 5 1%
Preliminary design report 1 1%
Preliminary design presentation evaluation report 5 1%
Final design report 1 1%
Final design presentation evaluation report 5 1%
Tools report 1 1%

PHASES

  • Phase 1: Understanding your software -- Hello World; due date: Feb. 7, 2012.
    • 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.
    • Points: 100.
  • Phase 2: Understanding your software -- Complex inputs; due date: Feb. 21.
    • Goal: Downloading, building (from source), and running your team's *GUITAR test harness on more complex supplied inputs. 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. Get the complex inputs from the instructor.
    • 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.
    • Points: 100.
  • Phase 3: Enhancing your software -- adding visualizations; due date: Mar. 21.
    • Informal and incomplete requirements: Please meet with the customer to better understand these requirements. A fundamental problem with the artifacts generated by GUITAR, e.g., GUI structure, EFG, and test cases, is that it is difficult to verify whether they are correct, complete, accurate, and consistent. The current formats, XML and dot files, are difficult to understand and verify. Help come up with effective visualizations of these artifacts so that the customer can verify their correctness. If your solution requires a 3rd party software, you need to submit source code.
    • Grading session: During the grading session, the customer will follow instructions from a wiki (that you will develop) to download and build the entire software, including GUITAR and the visualization code, the small and large inputs from Phases 1 and 2, and attempt to visualize all artifacts.
    • Points: 100.
  • Phase 4: Enhancing your software -- adding capture/replay; due date: Apr. 21.
    • Informal and incomplete requirements: Please meet with the customer to better understand these requirements. A fundamental problem with GUITAR is that it does not allow manually captured test cases. Help come up with a user-friendly tool to manually capture test cases that can be replayed using the current replayer. If your solution requires a 3rd party software, you need to submit source code.
    • Grading session: During the grading session, the customer will follow instructions from a wiki (that you will develop) to download and build the entire software, including GUITAR and the capture tool, the small and large inputs from Phases 1 and 2, and attempt to capture and replay some test cases.
    • Points: 100.
  • Phase 5: Releasing your software; due date: May 10.