ELMAS Network
Infrastructure in general
- Client-Server communication secured using SSL
- Two-way certificate authorization between client/server
- User authentication using MD5 encrypted passwords
- Server side JDBC connection pooling
ELMAS network uses a three-tier architecture consisting of application client, server and
database. Client communicates securely with server using SSL. Server is responsible for
handling actual database connections using JDBC connection pooling to improve performance.
Authentication is implemented in a non-database specific manner. User authentication uses MD5
encryption to avoid storing clear text passwords. SSL is implemented using self signed
certificates and two-way authentication. In practice this means that client cannot establish a
connection to server without a valid certificate, which improves server security.
In ELMAS network the client is much like the standalone ELMAS tool with extensions like
storing project versions in a central database, using sub tree template catalogs as a starting
point for developing a new project and having options to reference some existing data. If
network connection is not present, the tool will still have the functionality of standalone
version.
Server is a java-based application server with JDBC connection pools and support for SSL.
Apache Tomcat is suitable for this use.
Relational database requirements include mature support for transactions, since concurrent
read/write access to database is to be expected. Scalability is an issue, since lots of data
are potentially available for a large amount of users. For heavy usage Oracle might be the
recommended option. MySQL (with innoDB) is sufficient for moderate or small-scale usage. SQL
Server or other common relational databases can also be used, since using database specific
features will be avoided. There must however be a JDBC driver available for the database.
(JDBC drivers are available for all most common databases.)
Users, groups and access levels
Access-levels (read, write, reference) are assigned to tree-releases and are granted for
groups of users. Administrators can create new groups. With each group there is also a manager
group. A user belonging to such manager group is granted the user administration privilege for
that specific group. This includes creating new users and adding/removing users to/from the
group.
In group-oriented way of managing user privileges users are listed for the selected group. In
user-oriented way of handling user privileges groups are listed for the selected user. A user
may naturally belong to several groups and manager groups. If a user is granted administrator
privileges, the user has unlimited access rights and thus can do everything.
Projects
In general projects consist of fault trees and event trees. A single project may be a mixture
of success logic and failure logic. Naturally projects may contain any kind of data that can
be constructed in a standalone ELMAS. This involves FMEA and hyperlinks for example.
Version handling
Instead of just saving different stages of projects with different names and naming
conventions, a 3-level version handling scheme can also be utilized. Project version handling
includes levels major, minor and patch. Version tags have free format, but length is limited
to 64 characters. Length of project name is limited to 128 characters. For longer explanations
there is a notes-field with no length limit. It is not necessary to use all or even any of the
available version levels, but it is highly recommended. Well organized versioning makes it
easier for example to find out the current stage of the project of interest. To some extent it
also enables to see the design path that has lead to the current stage.
 Versioning is determined while saving project. Versioning is available for Own projects, Releases and Templates alike. Granting access for user groups is available for Releases and Templates. Own projects can be used to store incomplete draft version |
When a user has completed constructing a success/failure/event tree for some system, component or event, it is possible to release the tree to be accessed by others. The purpose of Read and write access-levels is self-evident. When a user has the Reference-access right to some release, the user is allowed to link to that release from some other project. In practice this means that the release is referenced as a sub tree in the master project. The master project shows the released sub tree, but the creator of the release (or someone else with write-access to the release) is responsible for maintaining and updating that release. Selecting the release to be referenced in a master project is done by using a release catalog. Release catalog view is somewhat similar to the normal project and version handling view. The user gets to see just the releases that she is authorized to see. The authorization of a user is determined by the access rights of the groups that the user is assigned to. If a user is assigned to different groups that have different rights to some project, then all the granted rights together form the access rights of the user.
- Versioning is determined while saving project
- Versioning is available for Own projects, Releases and Templates alike
- Granting access for user groups is available for Releases and Templates
- Own projects can be used to store incomplete draft version
Releases and access levels
When a user has completed constructing a success/failure/event tree for some system, component
or event, it is possible to release the tree to be accessed by others. The purpose of Read and
write access-levels is self-evident. When a user has the Reference-access right to some
release, the user is allowed to link to that release from some other project. In practice this
means that the release is referenced as a sub tree in the master project. The master project
shows the released sub tree, but the creator of the release (or someone else with write-access
to the release) is responsible for maintaining and updating that release. Selecting the
release to be referenced in a master project is done by using a release catalog. Release
catalog view is somewhat similar to the normal project and version handling view. The user
gets to see just the releases that she is authorized to see. The authorization of a user is
determined by the access rights of the groups that the user is assigned to. If a user is
assigned to different groups that have different rights to some project, then all the granted
rights together form the access rights of the user.
Templates
Templates are like released trees that can be copied and taken to be the starting point of
some other use. Releasing a template is done like releasing a normal tree and selecting the
authorized groups to grant rights to. The exception is that for templates there are just read-
and write- access levels available to be granted to groups.
If a user has read access to a template, she can take a copy of the template and is free to
use and modify the copy as she sees best. If a user has write access to a template, she can
modify the template itself. There is no reference access level for templates, since the only
way of using them is by taking a copy of the template for own usage.
|