Software Modeling & Analysis - Fall 2016

Project #5 - Software Collaboration Federation

Version 1.0,
Due Date: Wednesday, December 7th

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 structure the SCF, with emphasis on supporting continuous software test and integration. You should assume that the Test Harness server provides the functionality we developed in Project #4. 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)

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

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

Software Collaboration Federation Architecture:

In your Architecture Document you should summarize the SCF structure and behaviors, and then focus in detail on support for Continuous Test and Integration (CTAI) using the Test Harness Server and 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 Software Collaboration Federation (SCF) 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 Test Harness in supporting Continuous Test and Integration.
  6. Shall briefly discuss the structure of the Software Collaboration Federation and then discuss in detail the structure of the Test Harness server, its data, and its events, and how SMS supports Test Harness server in support of CTAI.
  7. Shall briefly discuss the uses and users of the SCF and discuss in more detail the uses and users of the Test Harness. This discussion should consider the impact of uses on the design of the Test Harness server, explore uses beyond those specific to SCF7 and decide if any of them need to be addressed in the development of SCF, e.g.: provide for future extensions and additions.
  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 SCF and propose means to address each of the issues deemed to be important for SCF. In doing this you should emphasize issues associated with CTAI.
  10. Shall, at an appropriate place in the document, discuss each of at least two prototypes you've developed. You will develop the prototypes:
    • Test Harness Prototype:
      Here, you are using the work you implemented in Project #4, to illustrate how the Test Harness will help SCF support CTAI. For this you will prepare text and illustrations that help the reader understand how the Test Harness server functions and supports the goal of CTAI.
    • 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. Note that Project #5, Fall 2015, focused on use of a NoSQL database that we developed in earlier projects during that semester. This year we will assume that the Storage Management Subsystem (SMS) will be based on the open-source MongoDB. 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. Each SCF server will have a core set of services that will be common to most of the other SCF servers.
  6. Services like Communication and 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.
  7. 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: