Are frameworks and model-driven development gathering momentum?
Much has been said lately about the pros and cons of model-driven and platform-based development versus the traditional native software development approach.
There are those who marvel at the agility and speed with which application development can occur, and others who slate frameworks as immature, incapable of scalability and high on the security risk index.
"Fit for purpose" always counts when undertaking any development project, product purchase, integration hub or software roll-out.
Key questions to ask are:
* What is being built?
* Does it have to be scalable?
* How often will it change?
* How complex is it?
* How many users does it need to cater for?
* Is it Web-based or intranet-based?
* Is it heavily dependent on process and workflow?
* Does it integrate with other systems?
* Should it allow for mobile access?
* How much will this development cost?
These questions will help companies to pick the best technology for the job at hand. Often, frameworks provide the flexibility and speed required to deliver quickly, without the effort of going through a full software development life cycle.
CRUD-based business applications are all the same: Build a UI, include security, read a list, write a record, update, delete, archive, integrate and report. These fundamental baselines are seen in all of these kinds of applications.
When speed to market and ability to deliver quickly are key, frameworks and model-driven design may be a better option, even though it's an approach not always favoured by traditional developers.
The market is saturated with frameworks, each with their pros and cons - from intelligently designed UI interfaces, wonderfully crafted visual workflows and speed of development on the upside, through to massive security risks, page size and inflexibility on the downside. But, companies must look past these inherent issues as no framework is perfect and each has its business benefits and functional flaws.
Frameworks accelerate business value in a variety of areas, and are limiting in others.
There are a variety of factors to consider when choosing a framework for development, though: speed to market, security considerations, users, usability, base platform (.NET or Java), extensibility of the framework, limitations and TCO, proven track record, best fit and many others. The fact is that frameworks accelerate business value in a variety of areas, and are limiting in others.
Building applications using frameworks, as opposed to starting from scratch, or extending an open source project or product can be a daunting task, with many questions that need to be answered. Market analysts have differing opinions on the matter.
According to Forrester's John Rymer: "For fast delivery of new business applications, conventional Java and .NET are often no longer the best choices. Instead, a generation of new productivity platforms holds the potential to speed initial application delivery and ongoing updates. These platforms abstract away platform configuration chores, repetitive coding tasks, and long testing and quality assurance cycles. Some allow application development and delivery teams to delegate application delivery - in part or in whole - to business experts. AD&D teams under pressure to deliver more with less should evaluate these platforms."
This is true for those in the development environment who are focused on clients' immediate needs. One of the key advantages of model-driven development is the fact that the business process can be modelled "live" while sitting with the client, and a workable version of the system can begin to unfold within minutes, providing immediate review, comments and business value. This can have a massive impact on a business that is launching new products very quickly, and adapting to market trends on the fly. While this is not the traditional approach to building applications, provided the frameworks are internationally proven, this kind of solution offering can have a massive impact on clients' agility and ability to respond to market changes extremely quickly.
The more a framework does, the better for the solution provider in terms of providing solutions fast. In contrast, the less control a company has over the development environment, the less it is able to control the architectural requirements it may have as an organisation, and the more it relies on the framework provider to ensure things like database design, scalability, multithreading and so on are correctly implemented.
At the end of the day, "fit for purpose" always applies. Weigh up the pros and cons of the framework versus traditional development approach, and ask: "Do I really need to build this natively for my client, or could I leverage what is currently proven in the market?"