T B H P N

Study Guide - Operational Concept Document (OCD)

This Study Guide focuses on the Operational Concept Document (OCD). You will find an example outline, discussions of its contents, sample diagrams, and several sample documents, developed by students in previous classes.
OCD Explained, with Examples
OCD Guidance Sample Documents & Resources
An Operational Concept Document (OCD) discloses to a development team and its project managment the concept that binds the development together. It attempts to answer the questions:
  1. What is the application's purpose?
  2. Who are the Users and what do they need?
  3. How will the application be structured?
  4. Are there other organizing principles?
  5. Is the project feasible with a reasonable budget and schedule?
  6. What should we be worried about?
  7. Are there other interesting things we should think about before we begin?
An Example OCD Outline
  1. Cover Sheet with Project title, author's name, and date
  2. Executive Summary
    Briefly summarizes the architecture, uses, structure, and critical issues, with an emphasis on the issues.
  3. Introduction
    Discusses application obligations at a high level. Don't restate all the project requirements. Also covers organizing principles, and key architectural ideas.
  4. Uses
    Who are the users - developers, managers, quality assurance, test, marketing, customers, others? What do they expect from the application, are there any special design consequences of satisfying their needs. You would expect, perhaps, that managers will need something quite different from developers if you think they will use the application.
    In this section you want to consider ways the application might be extended, beyond its requirements, to lead to new products, to serve additional user groups, or to provide additional useful features. You also think about changes to the requirements that could make the application more robust or simpler.
    Most of these won't be addressed in the current project, but with this information the team may be able to build a better, more flexible application.
    You may choose to mock up one or more user interfaces. Doing that helps you think about the system activities and helps readers understand your concept quickly.
    Here's an Example: Project Center Use Cases.
  5. Partitions - discuss whole and then each of the major parts
    Each task becomes a package candidate. After you've decided which candidates to use, name the packages, show their interactions in package diagram(s), and discuss. Part of this section will be a list of packages with a statement of responsibilities for each, and some discussion of their interactions.
  6. Application Activities - one activity section for each major part
    Identify all the major tasks required of the application. Then break each task down into activities. Use activity diagrams and discussion to show the reader how the system operates. Are the activities different for some of the user groups? This is essentially a top-down, high-level design.
    Are there any special processing activities associated with key events? What parts of the application need to know about the events. Should the architecture be structured around event handling, or phases of computation, or organization of data, or input and output, or some other organizing principle?
  7. Critical Issues
    Think about critical issues for the application and its parts, and make an issue list with, for each issue, a statement of the issue, whether it's important, and what you propose the application design should do to mitigate the issue.
    Please don't cite trivial "issues". For example, it is extremely unlikely that network bandwidth will be a performance limitation. Performance issues will come from computational load, not the small delays required to send data around the network. It is also unlikely that memory is a problem. You can buy a terabyte of storage for a few hundred dollars. Of course, there may be a few applications where these are important issues.
    Critical issues often are associated with safety concerns for life (medical systems), wealth (banking), information (security), or reliability. Complexity of the application and having a lot of complex information internally or to be presented to the user are very common issues. For concerns about performance, you need to consider typical and extreme estimated loads (users, messages, file transfers, expensive computations), and make estimates of your application's ability to sustain those loads. Finally, you may have complexity or robustness issues.
    Your job as architect, is to identify all the critical issues, then propose solutions where you can, and schedule prototyping activities to explore solutions where you can't.
  8. Prototyping
    If you've done any prototyping, you will create an appendix for each prototype and provide there a description of the prototype, its inputs and outputs, and what you learned by building it.
  9. Organizing OCD
    Note that there is an implied organization for your document:
    • Executive Summary that summarizes your concept - not what you did.
    • Discuss the whole project
    • Discuss each major part with uses, activities, and issues
    • Very brief conclusion
Sample Diagrams
Here we provide samples of the kinds of diagrams you are likely to use in an OCD. They are drawn from a variety of applications - you shouldn't expect them to have content relevant to a document you are preparing. They're listed in the order of importance for OCDs.
  1. Simple package diagram, More complex package Diagram
    First diagram shows packages in a test harness. Second illustrates packages in a Peer-to-Peer communicator.
  2. Activity Diagram
    Activities for passing messages in a Peer-to-Peer communication system.
  3. Class diagram
    This diagram shows interesting relationships between classes in a code parser.
  4. Ad Hoc Diagram
    Custom diagram showing parallel grammar processing in type analyzer.
  5. Sequence diagram
    Sequence diagram for a program that finds duplicate files in a directory tree.
  6. State diagram
    Example state diagram of a code analyzer.
  7. Structure Chart
    Function call relationships in a Test Harness server.
  8. Data Flow Diagram
    Data flow diagrams show associated groups of processes and the information flows into and out of each process.
Every diagram in your document should be accompanied by text that answers the questions, perhaps indirectly:
  • Why is this diagram here?
  • What is it telling me?
  • What conclusions should I draw from the diagram?
You've heard that a picture is worth a thousand words. But that is true only if it is accompanied by a few paragraphs of text.
Sample Uses
  1. Project Center Use Cases
The Project Center was a Software Studio project, completed in 2004. It built a federated development environment by wrapping many existing open-source tools and a few custom tools in an infrastructure supporting network and web based collaboration.
Sample OCDs Prepared by Former Students
  1. Example OCDs prepared by students, Fall 2018:
Other References:
  1. Architectural Concept Document Survival Guide