[almighty] Architectural Considerations: User based setup (Configs, Wizards, Code)
Miroslav Hradilek
mhradile at redhat.com
Tue Jul 26 17:00:49 UTC 2016
Hello,
this is the first of my emails where I will be sharing my thoughts on
some design decisions that, in my opinion, are worth considering when
designing ALM architecture.
# User Based Setup
So in most applications, and especially ones like ALM, there is a big
need for customizing everything like objects, behavior etc.
It is mostly done in three ways:
1. Via dedicated UI forms, wizards and DSL
2. Using configuration files
3. Customizing it in application code
I've personally had a chance to use all three ways throughout my life
and I'm sure the readers are the same. All the methods have pros and
cons. Some depend on licensing and their application depends on the
skill set of the user.
# Approaches
1) UI etc
This is by far the most consumable method for not very technically
skilled people or people not willing to invest in learning the
application. The sole configuration form is like reference documentation
and configuration files combined. Even higher level of contextual
configuration can be achieved by employing wizards which interact with
the user until the configuration is finished.
The downside to this is that it requires the application developers to
burn time to code often quite complex forms. Sometimes the expression of
such form is quite limited and Domain Specific Language must be defined
to overcome this lack of expression. Example being the languages
describing mail filters, query languages etc.
After some time the user learns a lot about the application and these
interfaces start to limit his/her efficiency.
2) Configuration files
Somewhere in between. You do not have to be a coder to configure
application this way.
What you have to do though, is to read quite a bit about the application
and have a reference documentation at hand. This can be minimized by
including the documentation inside template configuration files in form
of comments. The expression is quite limited. Difficult data structures
and Domain Specific Languages must be used to overcome this problem.
3) Hacking the code
You need to be involved a lot in the application and you have to
understand it's code in order to modify it.
The expression is virtually unlimited though with little effort on
developers side. No config interpretation code and DSLs are necessary.
This can be improved a lot by splitting the configuration part of the
code from the system implementation structuring the code as a
configuration file. If you include documentation in comments you have a
nearly commented config file experience but you still require the user
to be quite involved in the app and know at least basic data structures
used in the language.
The biggest downside is that the app often (not necessarily) needs to be
rebuilt to perform a change. Second most severe limitation is that
closed source applications would be difficult if not impossible to
configure this way.
# How to choose
There is one important consideration, sometimes overlooked when deciding
which style of configuration to employ. Apart from time money and
developers personal engagement. It is the TARGET AUDIENCE.
Who will be configuring which part in reality? How involved are they
going to be in the application when in production? What are their use
cases? Are there any security implications if I choose this over that?
These are some of the questions you should consider. And please do
expand on this. I'm sure you will have some more options to consider.
--
Miroslav Hradilek
Quality Assurance Engineer
Base OS Quality Engineering
Red Hat Czech, s. r. o.
Purkynova 99
612 45 Brno, Czech Republic
More information about the almighty-public
mailing list