Software Modeling & Analysis - Fall 2016

Project #1 - Test Harness OCD

Version 1.0,
Due Date: Wednesday, September 14th

Purpose:

The acronym OCD stands for Operational Concept Document. It's purpose is to make you think critically about the design and implementation of a project before committing to code. It also serves to publish your concept to the development team, which for this course is you (and only you).

One focus area for this course is understanding how to structure and implement big software systems. By big we mean systems that may consist of hundreds or even thousands of packages1 and perhaps several million lines of code.

In order to successfully implement big systems we need to partition code into relatively small parts and thoroughly test each of the parts before inserting them into the software baseline2. As new parts are added to the baseline and as we make changes to fix latent errors or performance problems we will re-run test sequences for those parts and, perhaps, for the entire baseline. Because there are so many packages the only way to make this intensive testing practical is to automate the process. How we do that is the topic of the projects for this year.

In this project and the next we will be creating a Test Harness - an automated test tool that runs a specified set of tests on multiple packages2. Each test execution runs a test driver on a small set of packages, recording pass status and perhaps logging execution details. Test requests are submitted to the Test Harness via a request message naming one or more test driver executions.

For this project we will develop and document the concept for creating a Test Harness that we will implement in Project #2. Your concept should explore:

Requirements:

  1. Shall be prepared as a Microsoft Office Word file, using embedded Visio Diagrams3.
  2. Shall explore and describe the user interface(s) you will provide.
  3. Shall partition processing into at least the top-level packages.
  4. Shall describe the uses/responsibilities, activities, events, and interactions of each of the packages in your concept.
  5. Shall use both text and diagrams for the descriptions in 4, above.
  6. Shall prepare two code prototypes:
    • File Manager package that searches a directory tree, rooted at a specified path, and displays the names of all DLL files encountered.
    • Child AppDomain demo that loads a simulated test library, executes it, and displays the results.
    Discuss the prototype results and draw conclusions about what you've learned from the prototypes, in your OCD.
  7. Shall document prototype code you develop in an Appendix. You don't need to include source code in your OCD document, but you do need to discuss the design of the prototypes. Please include your source code in the zip file used to submit your project for grading.

  1. In C# a package is a single file that has a prologue, consisting of comments that describe the package and its operations, one or more class implementations, and a test stub main function that serves as a construction test while building the package. This test stub is quite different from the test drivers we use in the test harness. We will discuss these differences in detail in class.
  2. A software baseline consists of all the code that we currently consider being part of the developing project, e.g., code that will eventually be delivered as part of the project results. It does not include prototypes and code from other projects that we are examining for possible later inclusion in the current project.
  3. You may use alternate office suites like WPS and diagrammers like gliffy, available as a chrome app.

What you need to know:

In order to successfully meet these requirements you will need to know:
  1. The definition of the term package and have looked carefully at a few examples.
  2. Definitions for AppDomains and Dynamic Link Libraries - see the class text, C# 6.0 in a Nutshell.
  3. How to organize and prepare a technical document. Here's some help.