Model driven architecture

How does the architecture for such a platform should like? As we are facing it from the business side, let's stay with model driven architecture (people opting for another architecture please leave their comments below). We have the entity, as heart of our abstraction. The entities compose via compositions and associations, forming complex graphs. Entities do have identity (key), their factories, the set of properties, and a set of services (to allow validation of incoming data modification messages). This is where our persistent data abstraction finishes, and our business logic abstraction starts. Former is to handle defaulting, validation and calculated values; latter for handling complex transaction and customization scenarios. What does the latter contain? Cancellable and reversible operations (with possibility for operations to compose other operations for complex business logic chains), that operate on entities. These too have services, that support long running transactions, has parameters, factory, and selectors that for operations capable of supporting multiple services select the relevant at runtime.

These are the first level concepts of a model in my ideal model driven architecture. Moreover, we can define concepts like a change set – set of entities and operations that are running on top of them that can be committed and aborted together; so we are forming transaction abstraction as well. For the entity we can drop in some cubism as well – have measures and dimensions.

 Model Driven Architecture

 

Business app creation value chain

So we have our framework, somewhere at the bottom. We do have a set of 'ISV's (let's call them "Tier 1" ISVs), who develop business applications, and do sell them through a cahnnel. However, there are always IT development teams of big enterprises who would buy directly and build application (usually solely) for internal use. So what would a Tier 1 ISV do? Of course, one of the channels is to sell the applications to the enterprises (little more pre-boxed approach than the previous one), however this is not the only way. We can define Tier 2 ISVs (and Tier n as it goes into a loop), who integrate extend or OEM another ISV's solution. These Tier 1, 2, N ISVs do sell the results to enterprises and to middle market firms as well. These middle market customers do buy from a number of channels (and again may extend the solution). Are we ready? Clearly not, we forgotten all the VARs from the equation: they do implement solutions and do simple application development. Usually they don't sell the results to enterprises anymore, but both the middle market and the small businesses can benefit from the results. So, these small businesses buy exclusively through the VARs or they buy the retail version from some Tier few ISV as they cannot afford the overcustomized version, but are OK with the multi-tenant VAR added versions. This is how I do see the value chain for business app creation when I do own the underlying platform. Which level you think you are?

 Business Application Creation Value Chain

Basics

So, what are the basics of such a framework that provides you the ultimate business power? Such a platform provides abstractions. Programming and business abstractions – about these later, a few lines below. Next to it, it implies a prescriptive architecture (ok, with some flexibility, but in general terms, it implies). It should (or probably, would) be suitable for the development and in today’s continuously deployed world also for deployment of the business applications – on demand, on premise, on mobile. Characteristics of such an application? Distributed, service oriented, cloud powered. Tend to be from simple one screen apps to huge, 1000+ forms, 500+ tables, millions of business logic LOC beasts (should you think of SAP here?). Part of the abstraction, they do have some repeated patterns, that the framework should fulfill, like – UI: setup, data entry, reporting, querying, process initiation; logic micro patterns: data types with composite ones like currency and quantity; logic low level patterns: defaulting, validation, calculated values, sequences; high level patterns: symmetry (a sales order is someone else’s purchase order), workflow. Of course support for edit all of these at runtime, have multi-tenant (SaaS) capability. These characteristics altogether are the ones that drive the abstractions we make. Now compare this to what you get when you try to stop at having an ORM with bound UI controls. And we haven’t touched BI yet. Next time I’ll try to drive into the value chain; oh boy, that can get pretty nasty and complex rather quickly.

So, what is inside the bottle

I mentioned I want to start a series on what does a business app actually is, how does Siena change the playground (if it does change it). I’ll start with the historic world, so what elements did a framework designed to create business app contain back, a long time ago? Of course, it needs to have an ORM (what would a business app do without an ORM?), a multitude of UIs (yes, desktop AND web), and… and this is the point when some of the frameworks I previously used stop. They keen to provide some prepackaged controls – look, how cool this grid is -, and then that’s it. So, what I think we are missing here? Validation, as one of the items. Validation throughfully the system, from db to ui, which can break and roll back… hey, I just found another missing point. Operations, that defined on… business entities! And these entities execute these through following collaborations between the items, using runtime metadata service to find out runtime information – information like data location (sharding, multiple sources). Finding out security – role based, row based with custom entitlement filters, column based. You need to cache and invalidate, provide pluggable configuration, serialization, but hey, by having serialization I can do workflows with hydrated states! Add a dash of BI (you always have to add BI), services integration, and you are… have created a compelling system that with appropriate level of documentation and support will eventually work.

So, where is the catch here? What is missing? Empowering the developer and the end user! Add entity designer, service designer, component editor, codegen, metadata explorer and editor, BI wizards, ide integration, colorful themes, clippy, – I got Light Switch! Make it work in metro design – hey, I got Microsoft Siena! So in the following posts I’ll discuss some of the elements from above in more details, but this is for just setting the general tone, and topics list.

Satya and One Microsoft

AP Photos / InvisionI might be the last one people turn to when the question about Satya and whether it would make good for the company arises (is it obvious I write about Satya Nadella and Microsoft?); but still here is my personal opinion: During my career path inside Microsoft I did have the opportunity to work with some of the greatest (and I do have 'shaking elbows' picture with most of them). Who am I thinking of? Don Box (the soap and XML webservices guy), Anders Hejlsberg (the guy behind Pascal, Delphi and C#), Robert Scoble (if you haven't heard the name – he turned Microsoft to be open – channel9, blogging, ctp, etc all his idea and effort), Norm Judah (services guy), S. Somasegar (head of Developer Division), Scott Hanselman (everything and anything guy, and one of the best speakers I ever seen – whether it is about life, remote work, or… it just rocks), Scott Guthrie (the guy in the red shirt), etc. (side note: Hey, soon I can increase the picturesque hall of fame of mine with no one else but Bjarne Stroustrup himself – if you have missed it, he joined Morgan Stanley recently to work together with my group) So, why I lay out these names? I did have the opportunity to have photo shoot with Satya, but I didn't. The reason? Not feeling the omnipotence of Gates? The ever lasting burning visionary powers of Ray Ozzie? The inability to dance like a monkey? I don't really know. Just he did not radiate the same unspoken glory as the rest of the wise men. Because he was always the one who could raise on the back of giants. So, based on my experiences, the next era would be a balanced growth, with focus on some of the more conservative businesses – enterprise, developers, servers. His humbleism and down-to-earth manners will resonate well with stakeholders, but his beliefs on server and enterprise will resonate well with… stakeholders. So, the 12th place in the board will go to ValueAct, but I think by the time they actually being enacted there, most of the changes they were keen to happen will eventually start happening anyway. So… Does this mean Nadella is being supported by ValueAct? Might be the case, and we will never find it out.

Siena, Light Switch – time came for the power user?

(Quite) a long time ago I was part of a team that was working on a product that was to change the world (yeah, every project you take seriously is one of those world-changers). The aim was not smaller than to give power to the user, power to the developer by letting them considerably more easier create business apps. Right now I'm happy to state – in a way the dream has come true. Siena and Light Switch are incarnations of the work I done literally a decade ago. What was changed? And how? And what is the difference? The aim of this series I start now is to look into the path that lead to these tools.

VirusTotal – Microsoft and Google as friends?

Just recently an unexpected alliance was spotted by me (among many others), the company who-is-evil and the company who-is-never-doing-evil (e.g Google and Microsoft, let you connect the pairs as you wish) is sporting an (I wouldn’t say unprecedented, but definitely surprising) cooperation – the new version of process explorer do have a way to interact with google’s virus total database (by sending over file hashes and checking them in a database). Beside it funnily flags skydrive.exe as a malware, do you think this functionality is actually that useful? And what you think about these two giants working together on this front? Or is this just Mark’s own siderun?

 

 

Hey, I do have a blog!

Hey, my old blog, how much I abandoned you lately… haven’t updated with real content in what, 3 years? Wow. This needs to change. I just blogged in the new architectforum blog, but that’s considerably different, I try to resurrect a community there. I hate making promises, but from now on I’ll try to come back to the blogophere with actual content. Ohh, and I do have a nearly abandoned twitter account as well. Goodbye, paper.li, you were good and useful, but I’d rather tweet myself from now on 🙂 btw, I just did it, as have been to Cornell University, Ithaca to give a talk about ‘what is like working at Morgan Stanley’. I used some ‘non-conform’ way to present the message, using full screen images, a simulated machine crash – and more. Oh yes, I have slideshare account as well, what about using that for something? 🙂

Architektúra Fórum – reloaded?

"Tervezz, építs, hass! 

Mi is ez? Az architektúra fórum egy lehetőség arra, hogy megismerkedjen az architektúra világával és újdonságaival. Megvizsgáljuk az eszközöket, megismerjük a kihívást, merünk a mélyvízbe ugrani, megismerkedünk a szoftver-architektúra témakör elemeivel. Fókuszaink olyanok, mint analízis, követelmények, minták és hasonlók. Legyen az architektúra közösség tagja, jelentkezzen közénk, és vegyen részt személyes találkozóinkon is!"

Igen, jól olvastátok. A terv az, hogy újjáéled, mégha kicsit esetleg más formában is. Ehhez viszont a segítségeteket kérem: írjátok meg commentbe vagy privátba ( peter pont smulovics kukac gmail pont com), mi volt jó régen az architektúra fórumban, mit változtatnátok rajta…

És persze, ha szponzorálnátok a dolgot, vagy előadnátok, akkor is jelentkezzetek 🙂

Azok számára, akik szemtelenül fiatalok, mi is volt az architektúra fórum? Ma azt mondanánk rá, hogy MeetUp vagy User Group. Akkor ezeket a szavakat még nem is ismertük, a BPNT még csak izgalmas, kéjes ötletként jelent meg, szóval valahol ez volt a úttörő rendezvény 🙂 Összejöttünk, beszélgettünk, előadásokat tartottunk, nyereményeket sorsoltunk ki, könyvvásárt tartottunk, szép projektorokat és lapostévéket bámultunk, finom sütiket ettünk, szünetben átfutottuk az osztogatott újságokat, a kedves hostess-lányok tették a dolgukat, mosolyogtunk a videókon…

Szóval ide alulra vagy a fenti címre várom az ötleteket – hogyan tovább?

We are looking for experienced Perl developers

We are looking for a Perl engineer to join a small team that looks after a multitude of dynamic languages. Perl is used widely in a great variety of ways at the firm. Supporting Perl developers is an important part of the work, dealing with problems that can be very varied. 

There are also a number of in house Perl modules, that need to be developed and subsequently maintained. Maintenance of modules is exacting work, as a large number of critical systems depend on them, so good testing frameworks and source control are a must. Perforce is used for source control and the standard Perl Test::Harness and prove tools are used. 

Perl is installed centrally at Morgan Stanley in a global filesystem, accessible from all machines. This supports several different platforms, currently Solaris, Linux and Windows. Several main versions are maintained in parallel and many modules for each Perl are installed. These modules are installed in multiple versions as well, in such a way that a developer can choose which version of Perl to use with which
versions of modules.

A large legacy of installed Perl versions and modules has built up over time. Instrumenting existing components and moving customers to later versions based on usage data and developing different deployment models will be a goal for 2012. 

Installation of Perl modules has traditionally been done by the group, but will transition to a dedicated packaging group. This will mean making the automated install process transferable and helping the new install group with any technical Perl issues. 

The position is in the EAI group, which supports developers in all programming languages across the firm. The position is in the dynamic languages group that looks after Perl, Python, R, lua and Powershell. The group occasionally offers training in these languages, mostly to guide developers in firm specific approaches.

Tasks
   – improve Perl deployment at the firm
   – help developers with Perl related problems
   – develop Perl modules for internal use
   – do root-cause analysis on issues, down to Perl C and XS issues
   – help with technical problems with installing modules from CPAN

Skills Required 
Technical skills
 Required:
   Perl knowledge: references, OO, modules, regexps. Makefile. Strong Unix skills
 At least several of:
   Advanced Perl knowledge, XS, Swig, writing Perl modules, C/C++, XML, SCM (Perforce/CVS), Windows developer skill set (nmake/vc)

General skills
   – proficient in English, good in communication, dealing with both simple
     and complex queries, time and project management.