@Input()
Customer client;
@Action
(target={CustomerAccount.class})
pub
li
c
abs
t
rac
t
vo
i
d registerCustomer
()
;
}
This abstract description of the interaction
context links the user interface with the system use
cases. Please, note the use of the
task property to
refer to the use case implementation, the
specification of the
target property to define the
application navigation map, the correspondence
between the abstract actions in the user interface and
the methods in the use cases, and the mapping
between the data in the interface and the data
consumed by the use case.
Each interaction context is annotated with
metadata to describe user input (
@Input),
application output (
@Output), user selections
(
@Selection, for data collections), individual user
actions (
@Action), and use case entry points
(
@EntryPoint). Additional annotations provide
some control over the visual presentation of user
interface controls, the overall organization of the
application interface (e.g. task groups to provide
hierarchical menus), and alternative navigation paths
to be followed in the presence of errors.
6 CONCLUSIONS
Our application generator improves programmer
productivity since it allows her to work at a higher
level of abstraction, without having to deal with the
elaborate details of the presentation and data access
layers in conventional layered architectures.
The input needed by our generator is as far from
implementation details as current technologies
allow. By focusing on the external view of the
system, its phenotype (Davis, 2003), our tool lets
developers work at the analysts’ abstraction level,
blurring the line between requirements specification
techniques and implementation technologies.
Our tool automates most, if not all, of the routine
work needed to create a working application, thus
avoiding the mistakes a manual process would entail
and improving the overall application quality.
Moreover, the separation of concerns in our
system makes applications truly portable, since they
do not depend on the particular persistence
mechanism employed nor on the specific technology
used to develop a friendly user interface.
Even though our current prototype always works
with relational databases and generates web
interfaces, nothing prevents us from adding new
profiles so that the same application can be targeted
to different platforms (i.e. Web, windows, or mobile
interfaces) and use alternative persistence
mechanisms (e.g. XML databases). Because of our
tool modular design and the reusable nature of
specifications in MDD, application migration to new
implementation technologies is almost trivial.
Our working application generator shows how
model-driven development is something more than
mere hype: it improves programmer productivity,
helps addressing user needs, provides portable
applications, and removes many sources of error that
are present in hand-coded applications (hence
improving quality).
REFERENCES
Arlow, J., Neustadt, I., 2004. Enterprise patterns and
MDA, Addison-Wesley, ISBN 0-321-11230-X.
Constantine, L., Lockwood, L., 1999. Software for use,
Addison-Wesley, ISBN 0-2101-92478-1.
Davis, A., 2003. System phenotypes, IEEE Software 20:4,
July/August 2003.
Evans, E., 2004. Domain-driven design: Tackling
complexity in the heart of software, Addison-Wesley,
ISBN 0-321-12521-5.
Fowler, M., 2003. Patterns of Enterprise Application
Architecture, Addison-Wesley, ISBN 0-321-12742-0.
Frankel, D., 2003. Model Driven Architecture
TM
: Applying
MDA to enterprise computing, Wiley Publishing,
ISBN 0-471-31920-1.
Glass, R., 2003. Facts and fallacies of software
Engineering, Addison-Wesley, ISBN 0-321-11742-5.
Greenfield, J., Short, K., 2004. Software factories:
Assembling applications with patterns, models,
frameworks, and tools, Wiley Publishing, ISBN 0-
471-20284-3.
Herrington, J., 2003. Code generation in action, Manning
Publications, ISBN 1-930110-97-9.
Martin, R., 2005. The test bus imperative: Architectures
that support automated acceptance testing, IEEE
Software 22:4, July/August 2005.
Mellor, S., Clark, A., Futagami, T. (guest editors), 2003.
Model-driven development, IEEE Software 20:5,
September/October 2003.
Mugridge, R., Cunningham, W., 2005. Fit for developing
software: Framework for integrated tests, Prentice
Hall, ISBN 0-321-26934-9.
Nilsson, J., 2006. Applying Domain-Driven-Design and
Patterns, Addison-Wesley, ISBN 0-321-26820-2.
Pawson, R., 2002. Naked objects, IEEE Software 19:4,
July / August 2002.
ICEIS 2007 - International Conference on Enterprise Information Systems
436