[ ALMA ]

ALMA Common Software


ACS 4 days (1-week) Course in Garching

Next ACS Course: 15th to 19th of January 2007, ESO Headquarters, Gaching

This document contains the Agenda (under preparation) for a 1-week ACS Course that will be held in Garching.

The first day of the week will be dedicated to an ACS Workshop with all ACS users from various projects.

For more details on the whole event see the wiki page:

The following four days see a beginner's and an advanced parallels tracks.

It is the first time we have two parallel track and so many participants to an ACS course and we hope we will be able to provide a good pregram and good course material.

Each item in the agenda links to the corresponding course material (typically Power Point presentations). Many presentations linked until now come from previous courses and are being updated. Still a number of presentations contain little or no material, since the presentations have been given directly on the whiteboard or with a PC live demonstration, but we want to improve and extend this material in and for future issues of this course. If you have suggestions or material that can integrate what available now, you are encouraged to contribute it.

Beginner's track

The first day provides a general introduction to ACS.

The following days are dedicated to an in-depth analysis of ACS for people having to start soon developing code with it.

Although the Agenda looks quite detailed, the idea is to be flexible and adapt dynamically the program to the needs and knowledge of the participants. This means that we expand and contract the time allocated to the various topics based on the feedback collected during the course.

We assign plenty of time for exercises, because we want the participants to get an actual on-hands experience. Part of this time is dedicated to a “real project”, i.e. to a work that is of real practical use for the work to be done afterwardswith ACS. Again, if needs arises, exercise time can be traded with discussions and with extensions to tutorial topics.

We assume to start at about 10:00 in the morning and close “official activities” at about 16:00 in the afternoon.

Tuesday the 16th: Get your hands on ACS!

Time Program Notes
09:00
09:15
Welcome
Course organization and setup.Agenda overview.

Joint tracks

G.Chiozzi

09:15
09:45
The Big Picture H.Sommer
09:45
10:30
Component Container and Lifecycle Management Part.1
H.Sommer
10:30
10:50
Coffee break  
10:50
11:10
Component Container and Lifecycle Management Part.2
H.Sommer

11:10
12:00

Running ACS:
Starting up and stopping ACS. Running the examples
Using the basic ACS tools: Object Explorer, Logging Client
Demo Setup
ACS Environment Variables

ACS Cheatsheet

B.Jeram
12:00
13:00
Lunch break  
13:00
14:00

Group exercises
Start and stop ACS, play with demo components

Exercise time

(Instructors minimal participation: BJE)

14:00
14:30
Lifecycle of a project based on ACS:
- Identify requirements
- Identify interfaces
- Create a subsystem/module
- Implement the interfaces
- Implement a simulation
- Implement a test
- Implement the real functionality
- Integration with the rest of the world

G.Chiozzi

(Instructors minimal participation: JIB)

14:30
15:00

Define our project: brainstorming about the project we want to build and how to split it into components, assignments to groups

(Instructors minimal participation: GCH, JIB)
15:00
15:30
Coffee break  
15:30
15:50
Software Engineering basic rules:
- The subsystem and module structure
- The ACS Makefile
M.Zamparelli
15:50
16:10

Defining the interface for a component:
The Mount1 IDL interface

Generate a module using the acsGenerator form the HPT project.

G.Chiozzi

(Instructors minimal participation: JIB)

16:10
17:00

Group exercises
Build your first component
- Setup the module structure for your project
- Define your own IDL interface
- See what gets generated by the IDL compilers.

Exercise time

(Instructors minimal participation: GCH, JIB, MZA)

17:00
17:30
Day wrap-up: questions and doubts Joint session
17:30 End of day. Exercise/discussion time for the ones that want to stay longer  

Wednesday the 17th: Building the first component

Time Program Notes
09:00
09:30

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.
09:30
10:00
The ACS Component's Simulator and other strategies for simulation

J.Ibsen

(Instructors minimal participation: GCH)

10:00
10:40
Group exercises
Build a simulator for your Component

Exercise time

(Instructors minimal participation: GCH, JIB)

10:40
11:00
Coffee break  
11:00
11:30
Archiving your project, sharing it with others and building it:
introduction to CVS, INTROOT and project builds

M.Zamparelli

(Instructors minimal participation: GCH)

11:30
12:00

Group exercises
- Archive your project
- Setup an integration area
- Build all projects together
Create a project/subsystem Makefile

(Instructors minimal participation: GCH, JIB)
12:00
13:00
Lunch break  
14:30
15:00
Coffee break  
15:00
15:30

Build the first component.
Watch Gianluca create a MOUNT1 implementation in C++ using the ACS generator.

G.Chiozzi
15:30
16:30

Group exercises.
Run the MOUNT1 component.
Build your first component
- Develop an implementation with support from the instructors

Exercise time
16:30
17:00

Build the first component.
Watch Heiko create a MOUNT1 implementation in Java

H.Sommer
17:00
17:30
Day wrap-up: questions and doubts Joint session.
17:30 End of day. Exercise/discussion time for the ones that want to stay longer  
19:30
Social dinner at the Seehaus Restaurant
 

Thursday the 18th: Configuration database and deployment. Exercises.

Time Program Notes
09:00
09:30

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.
09:30
10:00

Introduction to ACS Logging System.
See ACS Logging System: Tutorial

A.Caproni, B.Jeram

Discussion about the ACS logging system and short introduction, freely base on the slides.

10:00
10:30

ACS Logging System APIs:
C++, Java

A.Caproni, B.Jeram

10:30
11:00
Coffee break  
11:00
12:00

Group exercises
Select the implementation language for you first component and
Continue developing an implementation with support from the instructors

Exercise time

(Instructors minimal participation:ACS, BJE )

12:00
13:00
Lunch  

13:00
14:00

Discussion and verification about interfaces for the exercise project and about its final deployment  
14:00
15:00

Deployment of ACS Components, manager, multiple containers and CDB configuration, multiple hosts

Configuration Database concepts and deployment

H.Sommer

15:00
Sessions interrubted because of major thunderstorm
 

 Friday the 19th: Project integration

On Thursday we have lost a few hours, since we have been invited to close out sessions and go home because of a very heavy storm coming.
Therefore on Friday we have been starting 30min earlier and we have organized a pizza-lunch.

Time Program Notes
08:30
09:00

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.
09:00
09:30
Exercises:
Deployment and configuration database.
Deploy your own components across multiple machines.

Exercise time.

(Instructors minimal participation: HSO)

09:30
10:00
Baci properties: Concepts B.Jeram
10:00
10:30
Baci properties: C++ API B.Jeram
10:30
11:00
Coffee break  
11:00
12:00
Exercises:
Extend the interface of your Component with properties and implement it. Use ObjectExplorer to create monitors and diagrams.

Exercise time.

(Instructors minimal participation: ACA)

12:00
12:30

Pizza Lunch, part 1
Setup a testing environment: TAT and trivial Python clients to test a Component.
Automatic modular testing using TAT
P.Sivera, J.Ibsen
12:30
13:00

Pizza Lunch, part 2
Java client, Eclipse, JUnit test for our component

Reference presentations:

JUnit demo and ACS testing example
Eclipse setup (ACS FAQ)

H.Sommer

This is an interactive presentation and the slides have not been used.
Heiko has shown Eclipse, how to write a Java client in a JUnit environment and how to use it in a JUnit test run from eclipse to test the component developed together.
Everybody has done the same step by step following Heiko.
The presentations listed here are "post session" readings containing all infornation shown during the session itself.

13:00
14:00
Integration of our project and integration tests. (Instructors minimal participation: PSI)
14:00
15:00
Course wrap-up, summary, feedback, etc Joint final session.
15:00

End of course

Instructors available until 17:00 for discussions.

 

Advanced track

In the advanced track we plan to have the days split normally in two/three sections:

The selection of topics is flexible and we can also split the class in two separate groups if we have highly relevant topics that are of interest only to a subset of the participants.

 Tuesday the 16th:

Time Program Notes
09:00
09:30

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.
09:30
11:00
ACS Logging and Error Systems: usage and applications (Instructors minimal participation: BJE, GCH, JIB)
11:00
12:00

Design Workshop.

ACS at ANKA: Technical Details

30 min presentation + 30 min discussion; should end before noon on Tuesday due to Igor's timing constraints

Igor will report on the adjustments and bug-fixes he and his team had to make to get ACS working for ANKA. Some of these might be beneficial to ACS HEAD, therefore the presentation would be followed by a discussion on which adjustments, and how, to incorporate into the HEAD.

(Instructors minimal participation: GCH, JIB)

12:00
13:00
Lunch  
13:00
15:30
ACS Alarm System: usage and applications (Instructors minimal participation: ACA, JIB)
15:30
16:30

Design Workshop.

Reliability with and within ACS
  

20 min presentation + 40 min discussion

Klemen will give an overview of techniques and technologies used to improve reliability of distributed systems. He will also present a reliability analysis of ACS. Presentation would be followed by a design-level discussion on how to make ACS more reliable.

(Instructors minimal participation: BJE, ACA)

16:30
18:00
Generalized TCS (gTCS) (from R.Lemke)
What would interest me are the following questions:
  • Where is the border line between real time and non real time OS (minimal real time, or simply everything in RT)?
    Here it would be good if all available TCS system could be presented and it should made clear where the line is.
  • What should be supported in the initial gTCS IDL?
  • Where will be the different modes (scanning, pointing corrections, guiding) implemented (all in one IDL, or different modules, what are the real time requirements?)?
  • Is there an acceptance from the other teams? Would they allow to test out the gTCS, or even maybe adapt it to their running systems?
    Of cause we should iterate.
(Instructors minimal participation: GCH, JIB)
18:00

End of day

 

Wednesday the 17th:

Time Program Notes
09:00
09:30

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.

(Instructors minimal participation: BJE, HSO)

09:30
12:00

Multi-threading with ACS libraries in CPP and/or Java.

  • Management of multiple threads.
  • Component's threads.
  • Synchronisation.
(Instructors minimal participation: BJE, HSO)
12:00
13:00
Lunch  
13:00
14:30
Using the ACS Bulk Data to transfer big amounts of data (images, scientific data)

constraints: can be only Wednesday orThursday

(Instructors minimal participation: PDI, BJE)

14:30
15:00
Discussion: Dynamic Components and Containers (Instructors minimal participation: HSO, BJE)
15:00
16:00
Discussion: ACS Makefile (Instructors minimal participation: MZA)
16:00
17:30
Design workshop.
Architecture and design of the ATM (atmospheric) software for ALMA
A group proposes a tipoic to be discussed: the design and/or the architecture or an applications or an implementation problem to be analyzed together.
19:30
Social dinner at the Seehaus Restaurant
 

Thursday the 18th:

Time Program Notes
09:00
09:30

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.

(Instructors minimal participation: GCH, JIB, HSO)

09:30
12:00
Using the ACS Notification Channel (Instructors minimal participation: GCH, JIB, HSO)
12:00
13:00
Lunch  
13:00
15:00
Real time control with ACS:
  • RTAI support (B.Jeram)
  • Building a kernel module (T.Juerges)
  • Other options: VxWork
(Instructors minimal participation: BJE, JIB, TJU)
15:00
Sessions interrubted because of major thunderstorm
 

 

Friday the 19th:

On Thursday we have lost a few hours, since we have been invited to close out sessions and go home because of a very heavy storm coming.
Therefore on Friday we have been starting 30min earlier and we have organized a joing pizza-lunch with the beginner's track.

Time Program Notes
08:30
09:00

What ACS nightmares did you have? Questions and answers.

This should be a little discussion at the start of each course day.
09:00
10:00

Testing strategies in distributed and asynchronous systems

(Instructors minimal participation: HSO)
10:30
11:00
Coffee break  
11:00
12:00

Understanding ACS Properties: creating DevIOs, monitoring, alarms

(Instructors minimal participation: BJE)
12:00
13:00
Joint pizza lunch in Council Room  
13:00
14:00
ALMA Archive

(Instructors minimal participation: HME, AWI)

Holger Meuss, Andreas Wicenek

14:00
15:00

Joint final session

 
15:00

Real end of course

 

 

Other topics that were proposed for discussion and should have been discusset on Friday:

----------------------- 

Course examples

During the whole course, the presentations will mostly develop one single example (a telescope Mount or something similar).

The code for the example is in the ACS CVS archive under: ACS/LGPL/CommonSoftware/acscourse.

You can fing here:

Course exercises

During the course we will form groups that will develop and exend an exercise.

The main idea is to think about a project where every group will have to develop a part.

At the end of the course, all parts will have to be integrated together and function as a single system.

In this way we will go through all phases of a project using ACS and the Software Engineering practices supported and fostered by ACS, from inception to definition of interfaces, implementation, testing and integration. A major part of the work will actually to understand (and apply) the lilfe-cycle of a project using ACS and the SE practices use in the ALMA project.

---> What could be the project we want to develop together? Any suggestions?

These are examples from previous courses:

  1. carcontrol
    This esercise consist of a component representing the control system of a sport car. We interface it to the car "pedals" using a joystick and to a GUI representing the dashboard.
  2. acsVltTest - This exercise consists of interfacing ACS with the VLT Common Software. devIO classes to access the database have been implemented and commands are sent to TIF using a Java ABeans GUI. A Mount ACS Component receives the commands from the GUI andconverts and re-routes them to TIF
  3. asm - This exercise consists of a component for an Astronomical Site Monitor
  4. isabella - This exercise consists of a Lamp device and exploits asynchronous communication and error handling
  5. mathematician - This exercise consists in developing a few components that interact together to do mathematical calculation
  6. archiver
    Archive Java Client & Python Client
    Java logging, Java client
    python logging
    error handling
  7. shutter
    C++ component with Open/Close + state change notification via callbacks
    Python client for the shutter
  8. encriptor
    Java component (python client) to do encryption\
    Day2 : Store encryption key in CDB and access it.
    Week 2: exceptions and logging Java components

The groups are expected to cleanup and improve the exercises as a follow-up of the course.
Once the cleanup will be completed, the exercises will be archived in the ACS CVS server for further usage and extension:

Course setup and computing facilities

We have used PCs with Linux RH-E/SL, ACS 6.0.x and Eclipse installed and we organize people in groups of 2 or 3.

The PCs are connected to the internet, with access to the ACS Web Pages and equipped with the Acrobat reader to allow reading PDF documents and Open Office to view Power Point presentations

Other links:

Summary

We will put here a summary of the course.

What follows is for example the summary of the previous course:

This course has been quite different from the previous. The interest of the participants was very strongly directed torward C++ control applications and therefore we have radically changed the agenda day by day to satisfy this specific requests.We put also a strong emphasis on exercises, actually much more than originally foreseen. The participants have been very happy of this way of working. On the downside, we wanted to have each day a group writing Day Notes, but it was not possible because the groups were very involved in the exercises.

 


Unused presentations

The following tipics have not been covered in this course by explicit presentation.
Some of the argument
discussed by these presentations have been discussed on the whiteboard or during the exercises.
Others have not been touched at all. They have been covered in previous courses and might be in upcoming courses, depending on the specific requirements of the course.

We have left them here for reference, but please be aware that the information might refer to older versions of ACS and might not be up to date.

Time Program Notes
  Exercises:
Implement JUnit tests for your component.

Exercise time.

(Instructors minimal participation: HSO)

 

Quick overview of ACS Error System : Concepts. Already during the presentation we define Exceptions (or Completions) for the car component (XML, IDL, C++).
(including a discussion about C++ filename conventions to track from errors back to files.)

We add at least one log message to the component, and use the jlog tool.

B.Jeram
Guided exercise -- every group makes similar additions to their component.
  Exercises:
Setup error handling in the component implementation.
Exercise time.
 

ACS Notification Channel: concepts of ACS (and CORBA) Notification Service

G.Chiozzi


What is ACS?
Common Software and Middleware.
The services provided by ACS: Architecture Overview.ACS Packages.
Comparison with VLT CCS
G.Chiozzi
Up to date ACS 4.1

Distributed systems
Introduction to CORBA concepts
Sommer
Up to date ACS 4.1

 

ACS documentation walkthrough

B.Jeram
Up to date ACS 4.1

 

ACS Tutorial: Build the first Java component.

H.Sommer
Up to date ACS 4.1
 

ACS Tutorial: Build the first Python Component.

D.Fugate
Up to date for ACS 3.0
 

ACS Tutorial: Build a Python Client

D.Fugate
Up to date for ACS 3.0

  Exercises:
Develop a Python Client for you own component.
Exercise time.
 

Guided discussion: how to identify what should become a component? How to allocate interfaces to components?

G.Chiozzi, H.Sommer?
Here people should present what various subsystems have been doing and this should be discussed.

 

Introduction to Offshoot classes

H.Hafok
Mostly up to date for ACS 3.0

 

ACS Error System APIs: Python

D.Fugate

Up to date for ACS 3.0
 

ACS Error System APIs: Java

B.Jeram, H.Sommer, D.Fugate
(parallel tables or interleaved presentations/exercices)
Mostly up to date for ACS 3.0
Slides for Java nor written

 

Property interfacing to hardware: developing DevIO interfaces

B.Jeram
Up to date for ACS 3.0

  Exercises with DevIO  
 

Building hierarchies of components and having components referring to other components. Lifecycle issues.

H.Sommer
Out of date: ACS 2.1

  ACS Time System D.Fugate
Up to date for ACS 3.1
 

Data entities (Java/XML binding)

H.Sommer
Mostly up to date for ACS 3.0

 

Transparent (de-)serialization of XML in Java

H.Sommer
Mostly up to date for ACS 3.0

  Exercises with XML Serialisation  
  New developments in ACS: Code Generation H.Sommer
  Adding asynchronous behavior: Mount3 IDL interface. Callbacks in ACS B.Jeram
Up to date for ACS 3.0
  Exercises with asynchronous behavior Includes coffee break
  ACS Configuration Database,
Basic Concepts
H.Sommer
Up to date for ACS 4.1.
Merged with CDB deployment in short form.
 

Deployment of ACS Components, manager, multiple containers and CDB configuration, multiple hosts

Deployment Configuration Database

H.Sommer
Up to date for ACS 4.1.
Merged with CDB concepts in short form.

 

ACS Logging System APIs:
Java

H.Sommer, G.Chiozzi
Up to date for ACS 3.1

 

ACS Logging System APIs:
Python

H.Sommer, G.Chiozzi
Up to date for ACS 3.0

  Exercise:
Add logging and monitoring to the Components and Clients
Includes coffee break
  Multi threading in Java H.Sommer
  Exercises:
Make your Component multi-threaded.
Exercise time. Includes Coffee break
 

ACS NotificationChannel APIs:
C++

G.Chiozzi, H.Sommer
Up to date for ACS 4.1.

 

ACS NotificationChannel APIs:
Java

G.Chiozzi, H.Sommer
Up to date for ACS 4.1.

 

ACS NotificationChannel APIs:
Python

G.Chiozzi, H.Sommer
Up to date for ACS 4.1

  Exercices:
Notification Channel
Includes coffee break
  Introduction to ACS Bulk Data transfer S.Harrington
 

ACS on VxWorks

B.Jeram
Up to date for ACS 3.0

 

ACS on Real Time Linux

B.Jeram
Up to date for ACS 3.0

 

An example of Control System based on ACS: TICS and/or APEX from the ACS point of view

B.Gustafsson

See also an older presentation on TICS architecture and ACS

 

ACS Alarm System and Alarm Display

B.Jeram
Out of date: ACS 2.1

 

ACS Linux Installation

P.Sivera
Out of date: ACS 2.1

 

Using third party libraries with ACS: Makefile and linking issues

B.Jeram
No slides available

  Introduction to ABeans and B.Jeram
Up to date for ACS 3.0
  ABeans programming Tutorial B.Jeram
Out of date: ACS 2.1
 

Exercises:
Implementation of the exercise. Error handling. GUI building

 
  Introduction to ABeans 3 I.Verstovsek
Out of date: ACS 2.1
  Introduction to ACE.
ACS threads and multi threading and synchronisation with ACE and ACS
B.Jeram
Up to date for ACS 4.1
 

Introduction to Cosylab development

M.Plesko
Out of date: October 2002

 

ALMA Archive Overview

A.Wicenec
Out of date: ACS 3.0

 

ALMA Archive Tutorial

H.Meuss
Out of date: ACS 3.0

 

ACS as the framework for the ALMA data flow system

H.Sommer
SW Technology Forum 2002
Partially in German

 

Discussion on High Level software, usage of Java, testing strategies and software engineering.
To be better specified.

H.Sommer

 

ALMA SW Development tools and Integration Guidelines

What are rules?

Why do we try to standardize everything and in particular platform, OS and compiler versions?

ACS Software Engineering presentation

H.Sommer


Mostly up to date for ACS 3.0

 


Out of date: ACS 2.1

 

Take a real application and analyse it all together in the ACS perspective

Includes coffee break
 

Putting it all together:
Build a complete example.

Includes coffee break
 

Discussion: what ACS features are supported by each language?

ACS feature matrix by language

or

Another version of the feature matrix

G.Chiozzi
Up to date for ACS 3.0

 

Final round table discussion

Course summary, discussions and feedback.

 

 


 
 

Send comments to <Gianluca Chiozzi gchiozzi@eso.org>


Last modified: 2006-12-06