invoked and the returned data is presented to the user
on the grid (area 3). The same principle is applied for
instance methods or instance properties, but instead of
creating a set of “folders” on main window it creates
a set of pages (area 7) on related object window and
uses the grid (area 8) of that same window to present
data to the user.
When Show attribute is applied to a property with
deactivated List option (List=false), the application
generates a set of editors on object window (area 6).
Editors use different GUI components with different
configurations, according to each property type and
accessibility. For instance, Rented is a boolean prop-
erty, so it uses a Check component, ISBN and Title
are strings, so they use TextBox components. If ei-
ther ISBN or Title were read-only properties, a Label
component would be used instead.
A query attribute is associated with a parameter
of the book method Rent (DisplayName = “Rent this
book”). Therefore, when user invokes that method,
by clicking on related menu item (area 5), applica-
tion interrupts execution flow and waits for user to in-
put a parameter value, by presenting a dialog window
(area 9). The decision to interrupt the execution flow,
is based on the presence or absence of the query at-
tribute on any of the method parameters and the value
of kind option. If kind value is QueryKind.allways
(default value), then interruption will always occur.
If kind value is QueryKind.ifEmpty, then interruption
will occur only if parameter value is null. When a
method is invoked from a menu, all initial parameter
values are null, so interruption will always occur. If a
method is not invoked directly by the user but instead
it is called during the execution flow, the kind value is
relevant to define interruption.
5 CONCLUSIONS
The model proposed in this paper provides an alter-
native approach to create application GUI, allowing
developers to refocus on business code development
and delegate complete GUI creation to external soft-
ware packages, called Smart Templates. Preliminar
results already provided a prototype, thus proving the
viability of our solution. Compared to other meth-
ods of automatic GUI generation, we believe our so-
lution is easier to use because it simplifies the pro-
cess of model creation. Instead of relying on spe-
cialized abstract models, it uses a source code based
model, which is partially defined by information al-
ready present on the original metadata and comple-
mented by the GUILX language extensions.
REFERENCES
Beck, K. (1999). Embracing change with extreme program-
ming. Computer, 32(10):70–77.
Bruin, H. and Vliet, H. (2002). The future of component-
based development is generation.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995).
Design patterns: elements of reusable object-oriented
software. Addison-Wesley Longman Publishing Co.,
Inc. Boston, MA, USA.
Jelinek, J. and Slavik, P. (2004). Gui generation from an-
notated source code. In TAMODIA ’04: Proceedings
of the 3rd annual conference on Task models and di-
agrams, pages 129–136, New York, NY, USA. ACM
Press.
Lapalme, J., Aboulhamid, E. M., Nicolescu, G., Charest,
L., Boyer, F. R., David, J. P., and Bois, G. (2004).
Esys.net: a new solution for embedded systems mod-
eling and simulation. SIGPLAN Not., 39(7):107–114.
Lodhi, F. and Ghazali, M. A. (2007). Design of a simple
and effective object-to-relational mapping technique.
In SAC ’07: Proceedings of the 2007 ACM symposium
on Applied computing, pages 1445–1449, New York,
NY, USA. ACM.
Myers, B., Hudson, S., and Pausch, R. (2000). Past,
present, and future of user interface software tools.
ACM Transactions on Computer-Human Interaction
(TOCHI), 7(1):3–28.
Newkirk, J.; Vorontsov, A. (2002). How .net’s custom at-
tributes affect design. Software, IEEE, 19(5):18–20.
Nichols, J. and Faulring, A. (2005). Automatic interface
generation and future user interface tools. ACM CHI
2005 Workshop on The Future of User Interface De-
sign Tools.
Rouvoy, R. and Merle, P. (2006). Leveraging component-
oriented programming with attribute-oriented pro-
gramming. In Proceedings of The 11th ECOOP In-
ternational Workshop on Component-Oriented Pro-
gramming, Nantes, France. Monday, July 3, 2006 at
ECOOP 2006, (July 3-7, 2006).
Schult, W. and Polze, A. (2002). Aspect-oriented pro-
gramming with c# and .net. Object-Oriented Real-
Time Distributed Computing, 2002.(ISORC 2002).
Proceedings. Fifth IEEE International Symposium on,
pages 241–248.
Szyperski, C. (1998). Component Oriented Programming.
Springer.
Vitharana, P. (2003). Risks and challenges of component-
based software development. Communications of the
ACM, 46(8):67–72.
Wada, H. and Suzuki, J. (2005). Modeling turnpike fron-
tend system: a model-driven development framework
leveraging uml metamodeling and attribute-oriented
programming. In Proceedings of The 8th ACM/IEEE
International Conference on Model Driven Engineer-
ing Languages and Systems, Montego Bay, Jamaica.
ISBN: 978-3-540-29010-0.
ICSOFT 2008 - International Conference on Software and Data Technologies
28