Learning Goals

The main goal of this project is to develop a complete example of a working end-to-end system built on top of ACS in the five days time frame allocated for the workshop course. The software development cycle will include the system integration and tests.

Some of the ACS concepts illustrated with this project are:

The development will have a fixed deadline (last day of the course) and will be distributed in several teams. De-scoping will be allowed if needed to meet the deadline. Interface changes will have to be negotiated between the interesting parties and informed in due time to the rest of the developers.

Legacy Software

The following components coming from external projects are available and will be used. They are all located inside the AWV/EXTERNAL GIT repository.

Requirements

Actors

There are two main external actors for this software project: Astronomers and Operators.

Components breakdown and responsibilities

The system will be composed of 5 components. They will have the following responsibilities (top-down):

Interfaces

The initial interfaces and data types are defined and documented under AWV/ICD/idl. They could eventually be modified during the development cycle, but this will have to be negotiated on a case by case basis between the interested parties and will have to be noted down in a change request publicly available.

Communication Diagrams

The following two communication diagrams illustrate the two main use cases to be implemented for this project.

Proposal lifecycle


Automatic Proposal Execution

Success requirement

To declare the project a success the software should be able to perform an automatic observation of at least one proposal composed of one target.

Development Lifecycle

The project will be guided in simultaneous steps to be developed by the teams defined below. The development lifecycle is test-driven and is defined as follows. The project will be continuously integrated by the Integration, Test & Support team, and it is the responsibility of each development team to have working versions in GIT.

The basic preparation considers the following steps:

  1. Development environment: Create (empty) development module and do initial import to GIT.
  2. ACS environment: Set up the configuration database for the ACS environment and start/stop the system and (empty) component.
  3. Components simulation: Set up simulated components for each needed interaction. This is important to test each component, as other components are also under development.
  4. Unit tests development: Create unit tests within a given TAT environment, to test the component input/output and functionality.

These steps will have to be iterated several times by each development team:

  1. Component functionality development: Implement the component internal logic and functionality.
  2. Adding logging and error handling: Add log messages and exception handling to the component.
  3. Individual component v/s simulation interaction testing: Test the component's interaction with other components against local simulations.
  4. Bug fixes?
  5. Component v/s component interaction testing: Test component's interaction with other components against other development teams' real implementations.
  6. Bug fixes?

These steps will be prepared by ITS during the entire week, and concluded on the last day with support by all development teams:

  1. End-to-end integration and testing: Overall system deployment, integration and use case testing.
  2. Bug fixes?

Continuous integration is an important part of the project lifecycle. A Jenkins build and test server has been set up to automatically manage the project upon GIT commits. The following is the URL: http://138.68.61.143:8080/

The Git repository can be found at: https://bitbucket.alma.cl/projects/ACSWS/repos/awv/browse