Week 1b - Operational Concept Document (OCD)

Projects and Operational Concept Documents

Synopsis:

This lecture focuses on the Projects you will implement, especially the first. That requires you to write an Operational Concept Document (OCD) for the first project.

Lecture Content:

  1. Projects:

    What projects are required? All code will be developed using C# and the .Net Framework Class Library with the latest version of Visual Studio.

    How will your submissions be evaluated? OCD grade sheet, Code grade sheet Grading Policy

  2. So, what is an OCD?

    The goal of an OCD is to disclose your concept for a project you will be constructing.
    • That may be targeted to the stakeholders from whom you seek funding.
    • It may be intended for the development team to give them a quick-start.
    • Most important, it helps you to make critical decisions about the structure and features of your product, before you write any code, other than early prototypes.

    An OCD poses and disposes of three questions:
    • What are the uses for this project, who are the users, and what are its benefits?
    • What are the projects parts, e.g., processes, packages, important data structures?
    • Are there any critical issues we must deal with during construction?
  3. Package Structure:

  4. O.K., Now What?

  5. Software Architecture:

    Software Architecture and the Operational Concept Document (OCD)
    Operational Concept Document (OCD) Survival Guide

    Project Center Use Cases
    This presentation was developed for a Software Studio project. It gives you a good idea of the kind of analyses you need for an OCD.

    UML Notation, UML - uml-diagrams.org, UML - Embarcadero.com
    The Universal Modeling Language is used to describe software with means other than code. You will use these diagramming techniques in your OCD.

    Sample UML Diagrams:

    • Package Diagram
      A package in C# is a single file with comments containing a prologue, description of the package operations, and maintenance history. It continues with class definitions and ends with a test stub. A package diagram displays a project's packages and their calling relationships.
    • Activity Diagram
      An activity diagram describes the flow of program activities, places where activity waits for events, and may show possible concurrencies.
    • Simple Class Diagram
      A simple class diagram shows the classes and relationships in some package or set of packages, without showing any detail, other than the class name.
    • Detailed Class Diagram
      A detailed class diagram adds details about some or all of the methods and some or all of each class's member data.
    • Class Relationships
      This diagram illustrates the four class relationships: inheritance, composition, aggregation, and using.
    • Object Relationships
      This diagram shows how composite objects are logically structured, and the resulting layouts in memory.
    • Structure Chart
      A structure chart shows calling relationships between functions, with the caller shown above the callee.
    • State Diagram
      State diagrams are used to show states and their transitions.
    • Data Flow Diagram
      Data flow diagrams are really miss-named. They show information flow between processing segments in a program. They represent the same kinds of processing flow as activity diagrams, but they emphasize the information that flows between logical processing blocks.
    • Ad Hoc Diagrams
      Sometimes we need to show information for which there is no standard diagram. We do that with Ad-Hoc diagrams like this sample.
  6. Lecture Take-away:

    The most important things we discussed today were:

    Projects: