Action language for fUML (ALF) is a language based on fUML and Model-Driven Architecture is an approach which uses models to develop software.
But how is ALF related to Model-Driven Architecture (MDA)?
MDA is an approach to software development. There are various languages which support this approach. UML is one of them. The Action Language for Foundational UML is a textual surface representation for UML modeling elements.
Related
I am looking for a new MDA tool to try out for modelling and code generation. This is not for any work related project yet, but for testing purposes. I only used the Merode approach until now (using jMermaid for modelling and the accompagnied code generator) but want to try out something new.
Since EMF is integrated in Eclipse I see a lot of positive reasons to try it out. But after reading some documentation and online articles, I wonder how much it adopts the OMG MDA standards and how much it doesn't.
For example I found the following text
If, on the other hand, you have already bought into the idea of modeling, and even the Model Driven Architecture (MDA) big picture,3 you should think of EMF as a technology that is moving in that direction, but more slowly than immediate widespread adoption. You can think of EMF as MDA on training wheels.
on http://www.informit.com/articles/article.aspx?p=1323360&seqNum=2
But I can nowhere find a concise list of what points of the OMG standard are implemented and which ones are left out or interpreted differently. Anyone that can help out with that?
(And if there are other, more recommended tools, I'm always open to suggestions.)
There is very little relation. EMF is a framework to create (meta)models with very basic code-generation capabilities (basically only a Java direct translation). EMF's goal is not to be an MDA framework but to be the building block on top of which other tools may build more sophisticated solutions (e.g. check the open soruce Eclipse Acceleo tool).
And MDA is just a philosophy. Itself is not even a specific method. The MDA guide, the OMG standard document explaining MDA, is just a set of principles for model-driven development using OMG technologies but does not go further than that (if needed you may want to check the difference between all these MD* acronyms).
So, you can find EMF-based tools that follow MDA principles but EMF as such does not pretend to do so.
In EMF FAQ there is question "What is the relationship of EMF to OMG MDA?" which states
"Essentially EMF supports the key MDA concept of using models as input
to development and integration tools which produce multiple
programming language (Java in the case of Eclipse EMF itself) or data
interchange format (XML) representations."
EMF corresponds to a simplified OMG's MOF implementation (http://www.omg.org/mof/), providing facilities to express custom metamodels and generate java components to instantiate models.
MDA is a particular model-driven philosophy, based on several kind of models (CIM, PIM, PSM...), and aiming to provide a way to target several technical architectures (PSM) from a unique functional model (PIM).
You can use EMF for any model-driven philosophy MBE, MDE, MDD, or MDA. It is the fundamental building block that allows you to define your own metamodels and models. Simply said, EMF provides models, and you can use it for any model-driven approach, including MDA.
I have a free time and would like to do functional programming and learn some functional programming language.
But as we know the best theory it is practice. In this regard, I would like to know in which sector is most often used functional programming? I understand if the project is written in a functional language that is somehow justified. Therefore, such a question: what kind of projects easier and more profitable to write in functional languages?
Thank you
Compilers are often referred to as the "killer app" for functional languages with algebraic data types, like Haskell and ML. I have written compilers in a procedural language, in an object oriented language, and in functional languages, and a functional language is worlds better.
A compiler is also a relatively attractive project in that you can pick up, say, Andrew Appel's book on the used market, and build the whole thing yourself—just be sure to compile a very simple language.
interpreters, hand-written recursive descendant parsers, program analyzers
AI, data processing, scientific/financial/computationally intensive applications.
Financials, Statistics, and Scientific Computation are the three areas where Functional Programming are used the heaviest.
You could always throw together a simple statistics calculation package that works against one of the various social networks out there. An F# stats application against the StackOverflow would be an interesting project...
Do functional languages bring anything in the resolution of everyday business problems?
Are there any successful projects that have been implemented using a functional language (ideally with a published test case)?
There are quite a few listed on Functional Programming in the Real World. From the site:
The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming.
The Xen hypervisor is at base, implemented in OCAML; and Erlang is deployed in ultra-high reliability telephony systems (the ones that have zero down-time over periods of years).
One implementation of Perl 6, Pugs, is written in Haskell, but it has largely given way to the standard Rakudo Perl implementation.
Friends of mine use Haskell every day to implement financial algorithms.
There was a talk at the Lang.NET conference about how they'd used F# to improve the performance of an insurance application, which is about as everyday as you can get. Silverlight video, WMV video. That said, most of the focus of that talk is on F#'s concurrency support, less on the idiomatically functional aspects of the language.
Xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell.
Facebook's chat feature makes heavy use of Erlang. http://www.facebook.com/note.php?note_id=14218138919&id=9445547199&index=0
Have you heard of Lisp machines before? The emacs editor also makes extensive use of Lisp.
I would argue that the Lotus Notes formula language is an example of a widely used real world functional programming language.
Can anyone direct me towards some code or a tutorial for implementing the ViewModel in Flex 3?
All I'm finding on the web are examples for Silverlight.
Martin Fowler has also written about these ideas in the past under the term "Presentation Model". So you might find useful tutorials under that search phrase as well since it's not an "MS invented term". :-)
Indeed, this MS overview material acknowledges Fowler's work directly
In 2005, John Gossman, currently one
of the WPF and Silverlight Architects
at Microsoft, unveiled the
Model-View-ViewModel (MVVM) pattern on
his blog. MVVM is identical to
Fowler's Presentation Model, in that
both patterns feature an abstraction
of a View, which contains a View's
state and behavior. Fowler introduced
Presentation Model as a means of
creating a UI platform-independent
abstraction of a View, whereas Gossman
introduced MVVM as a standardized way
to leverage core features of WPF to
simplify the creation of user
interfaces. In that sense, I consider
MVVM to be a specialization of the
more general PM pattern, tailor-made
for the WPF and Silverlight platforms.
I wanted to share a comparison I wrote up of MVVM (Silverlight) vs PresentionModel (Flex). It shows how the two implementations of the same pattern differ/compare:
http://houseofbilz.com/archives/2010/12/29/cross-training-in-silverlight-flexmvvm-vs-presentation-model/
The reason all of the examples your finding are for Silverlight is because MVVM is by-and-large a Microsoft invention. It has to do with the ease of tying WPF views with data. The "ViewModel" is little more than a way of describing a subset of functions performed by the Controller in a traditional MVC design model; some MVVM descriptions even include a controller.
With that said, it doesn't really matter whether your app follows the MVVM or MVC models precisely. It's more of a high-level, organizational idea that should guide your design and development. If you're totally clueless about the models you can find any number of quickie web tutorials, and probably some printed literature on the subject.
I would like to easily implement a data classification project, so I'm looking for the language which provides the library for that. Could you suggest the proper language?
matlab is not exactly a programming language, but no doubt it's the easiest way to implementing math oriented programs. it has lots of toolboxes for classifications (e.g. MLP, SVM) optimization toolboxes.
There is a Python distribution called SciPy that has lots of tools for scientific programming and people have used it to do data classification. Some bioinformatics people have built Excel2SVM in Python.
If the focus of your work is on the data classification, not on developing software, then Python is a good choice because you can be more productive than with languages like java or C++.
I'd say you really need more information before choosing a language.
Where are you getting data from, what front end do you want to use (web / dedicated client) ?
C# could do just as good a job, or any Object oriented language.
Cheers
(A little late coming, but I thought this answer should be here for the record).
WEKA and MALLET are two useful libraries for data classification that I've come across. I've used WEKA in a couple of projects and can say that it is pretty mature. Both these libraries are Java-based.