ALMA Common Software |
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.
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
Tuesday the 16th: Get your hands on ACS!
Time | Program | Notes |
09:15 | Welcome Course organization and setup.Agenda overview. | Joint tracks G.Chiozzi |
09:15 09:45 | The Big Picture | H.Sommer |
10:30 | Component Container and Lifecycle Management Part.1 | H.Sommer |
10:50 | Coffee break | |
11:10 | Component Container and Lifecycle Management Part.2 | H.Sommer |
11:10 | Running ACS: | B.Jeram |
12:00 13:00 | Lunch break | |
13:00 14:00 | Group exercises | 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: Generate a module using the acsGenerator form the HPT project. | G.Chiozzi (Instructors minimal participation: JIB) |
16:10 17:00 | Group exercises | 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 |
(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. |
G.Chiozzi |
15:30 16:30 |
Group exercises. |
Exercise time |
16:30 17:00 |
Build the first component. |
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. |
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: |
A.Caproni, B.Jeram |
10:30 11:00 |
Coffee break | |
11:00 12:00 |
Group exercises |
Exercise time (Instructors minimal participation:ACS, BJE ) |
12:00 13:00 |
Lunch | |
13: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 |
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 |
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 Reference presentations: JUnit demo and ACS testing example |
H.Sommer This is an interactive presentation and the slides have not been used. |
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. |
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 (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 (Instructors minimal participation: BJE, ACA) |
16:30 18:00 |
Generalized TCS (gTCS) (from R.Lemke) What would interest me are the following questions:
|
(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.
|
(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:
|
(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:
-----------------------
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:
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:
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:
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:
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.
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++). 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 |
|
|
B.Jeram |
|
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 |
|
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? |
|
H.Hafok |
||
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 |
|
Property interfacing to hardware: developing DevIO interfaces |
B.Jeram |
|
Exercises with DevIO | ||
Building hierarchies of components and having components referring to other components. Lifecycle issues. |
H.Sommer |
|
ACS Time System | D.Fugate Up to date for ACS 3.1 |
|
H.Sommer |
||
H.Sommer |
||
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 |
H.Sommer |
|
ACS Logging System APIs: |
H.Sommer, G.Chiozzi |
|
ACS Logging System APIs: |
H.Sommer, G.Chiozzi |
|
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: |
G.Chiozzi, H.Sommer |
|
ACS NotificationChannel APIs: |
G.Chiozzi, H.Sommer |
|
ACS NotificationChannel APIs: |
G.Chiozzi, H.Sommer |
|
Exercices: Notification Channel |
Includes coffee break | |
Introduction to ACS Bulk Data transfer | S.Harrington | |
B.Jeram |
||
B.Jeram |
||
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 |
|
B.Jeram |
||
P.Sivera |
||
Using third party libraries with ACS: Makefile and linking issues |
B.Jeram |
|
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: |
||
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 |
|
M.Plesko |
||
A.Wicenec |
||
H.Meuss |
||
H.Sommer SW Technology Forum 2002 Partially in German |
||
|
Discussion on High Level software, usage of Java,
testing strategies and software engineering. |
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? |
H.Sommer
|
|
Take a real application and analyse it all together in the ACS perspective |
Includes coffee break | |
Putting it all together: |
Includes coffee break | |
Discussion: what ACS features are supported by each language? ACS feature matrix by language or |
G.Chiozzi |
|
Final round table discussion Course summary, discussions and feedback. |
Send comments to <Gianluca Chiozzi gchiozzi@eso.org>
|