  The well-known Unified Modeling Language (UML) describes software entities,
such as interfaces, classes, operations and attributes, as well as
relationships among them, e.g. inheritance, containment and dependency. The
power of UML lies in Computer Aided Software Engineering (CASE) tools such as
Rational Rose, which are also capable of generating software structures from
visual object definitions and relations. UML also allows add-ons that define
specific structures and patterns in order to steer and automate the design
process. We have developed an add-on called Control System Modeling Language
(CSML). It introduces entities and relationships that we know from control
systems, such as "property" representing a single controllable point/channel,
or an "event" specifying that a device is capable of notifying its clients
through events. Entities can also possess CSML-specific characteristics, such
as physical units and valid ranges for input parameters. CSML is independent of
any specific language or technology and generic such that any control system
can be described with it. Simple transformation scripts map CSML defined
structures to APIs and tools such as EPICS, CDEV, SCADA, Abeans, BACI and
generate the appropriate database or source files. Advantages of control system
development with CSML are discussed on a concrete example of a bending magnet's
power supply in a synchrotron accelerator.
