Software Modeling & Analysis - Spring 2015
Project #5 - Storage Management Subsystem for Software Collaboration Federation
Version 1.2,
Due Date: Wednesday December 9th

Purpose:

Software Collaboration Federation (SCF) is a collection of clients and servers and associated software designed to support activities of a software development team, e.g.:

In the Fall 2012 semester we developed an architecture for a Virtual Display System (VDS). The system in which it is embedded is shown in Figure 1., below. It is intended to support collaboration for large software development teams. One of its primary features - the one we focused on - is a large display that serves as a visual interface into the design and implementation of complex software systems. To understand how VDS functions you should review the preliminary architectural document provided to the Fall 2012 class, Preliminary Architecture for the Virtual Display System.

In this project we will explore how to use the noSQL database we built in Projects #2 and #4 to manage recording and reporting of important SCF data and events. We will assume that SCF is intended to support development teams comprised of several hundred developers divided into groups at different locations throughout the world.

Background:

The SCF is comprised of a federation of clients and servers1:

Figure 1. Software Collaboration Federation (SCF)

The Storage Management Subsystem (SMS) provides a core SCF service4 and is composed of Data and Event Managers hosted on each of the clients and servers in the VDS Federation and a Data and Event Coordinator that supervises the operation of all of the individual Data and Event Managers.

Storage Management Subsystem Architecture:

The Storage Management System provides a number of services including storing and managing:

In your Architecture Document you should summarize the SCF structure and behaviors, and then focus in detail on the Storage Management Subsystem. For that you should:

Prototypes:

In order to support the many decisions required to define the architecture of a large interesting software construct like SMS, an architect will build a set of prototypes to understand how things should work, explore performance issues, and decide on specific structures and patterns of communication.

A prototype should be:

You will be required, below, to implement at least two prototypes for Project #5.

Requirements:

Your Storage Management Subsystem (SMS) architectural document:
  1. Shall be written using Microsoft Word or an equivalent office suite that can generate documents in word or PDF format.
  2. Shall use diagrams created with Microsoft Visio or an equivalent tool that can generate diagrams embedded in your document. These diagrams should be delivered in Visio, PDF, or PNG formats.
  3. Each diagram shall be accompanied by text that describes:
    • Why this diagram is here.
    • What the diagram tells us.
    • Conclusions we should draw from its presentation.
  4. Shall, at the beginning provide an Executive Summary that very briefly summarizes the main parts of your architecture, especially its users and uses, parts, and critical issues. The summary does not list the things you did to develop the document.
  5. Shall briefly discuss the goals of the SCF and discuss in more detail the goals of the SMS.
  6. Shall briefly discuss the uses and users of the SCF and discuss in more detail the uses and users of the SMS. This discussion should consider the impact of uses on the design of SMS, explore uses beyond those specific to SCF5 and decide if any of them need to be addressed in the development of SMS, e.g.: provide for future extensions and additions.
  7. Shall briefly discuss the structure of the Software Collaboration Federation and then discuss in detail the structure of the Storage Management Subsystem, its data, and its events.
  8. Shall discuss the responsibilities of each of the parts identified above and interactions between them.
  9. Shall discuss issues that are critical for the development of SMS and propose means to address each of the issues deemed to be important for SMS.
  10. Shall, at an appropriate place in the document, discuss each of at least two prototypes you've developed. You will develop the prototypes:
    • Event Logger:
      The event logger records the type of event, the date-time of its occurance, and its origin. The logger has its own process and is accessed by code in other processes through the SCF communication service which you will represent with a WCF service which is part of your prototype. The purpose of this prototype is to estimate performance: throughput and latency of logging. Note that a lot of this prototype will be taken directly from your implementation of Project #4. You are required to use .Net Tasks as part of your implementation.

      If you implement this prototype so that it can be conveniently used in process as well as between processes this will be counted as an additional prototype. Note that that does not replace either of the two required prototypes described here.
    • Critical Issue Prototype(s):
      This prototype is developed to help you answer questions and provide solutions to one or more of your critical issues. What you do and how you do it will be left to you. You will find me reluctant to discuss this in any detail.


  1. Clients and servers are usually identified by machine boundaries but that is not always the case. We may implement more than one server as virtual machines on a single physical machine. Also, we may have more than one physical machine that implements a server. For example, toward the end of a large project testing becomes a very intense large-scale activity and might be carried out on a Test Server Farm.
  2. The Build Server will probably share the same machine as the Repository and so is not shown in Figure 1.
  3. These clients are often processes that run on a developer's machine. SCF clients are not expected to provide compilers and editors and other build tools. Those already exist and would be a waste of resources to re-implement. So a developer's machine would have both the tools and the SCF client software.
  4. One would expect a system like SCF to have several services around which its functionality is configured, e.g., services for communication, security, storage, display, ...
  5. The SMS will contain many parts that interconnect with SCF and that handle it's internal operations, e.g., data storage, query handling, persistance, message handling, and internal error handling.
  6. If we don't look to future expansion of capabilities we may find that after a big expense and effort to build the (sub)system we end up with an inflexible body of software with no growth potential. That's definately not what an architect is paid to create.

What you need to know:

In order to successfully meet these requirements you will need to:
  1. Understand the purpose of an architecture document, which is an elaboration of the Operational Concept Documents you developed in Projects #1 and #3.
  2. Understand the details of the design and implementation of Projects #2 and #4.

Things for which you lose points:

Things for which you gain points: