Thanks to Beth Massi for this article
Frameworks, Love ‘em or Leave ‘em.
A Guide to Evaluating a Programming Framework
In this article I take a look at the issues involved
when researching a programming framework. You can use this article as a guide to help you ask the right
questions when looking at frameworks.
It contains the guidelines you need to pick the right framework for
your business. All of the
questions here apply to any type of framework be it desktop or
isn’t a “which framework is best” article, since there are different
frameworks for different things and what’s best for one person may not
be best for you. Rather, I
try to get you thinking about what is important and what you need to
decide in order for you to pick the framework that is best for you.
To really be convinced a framework is right for you,
you'd have to build an application. Of course, if you have time to
create eleven different prototypes with eleven different frameworks you
probably have enough time to write your own! Installing and figuring
out the basics of how to design the simplest thing may take you more time
than you have. Face it, if you had time you probably wouldn't need
somebody else's framework. That's why I've come up with these
questions you need to ask yourself before jumping head first into a
Ask Yourself …
What are your primary goals of using a
speed of design and development your primary objective? Not having to start from scratch is a big reason people choose
frameworks. A framework
can get you up and running in less time than if you did it yourself.
you looking at implementing a company standard? Many shops adopt a framework because it is easier to
develop all types of business applications from one foundation. If you are a development shop that has clients in all sorts of
businesses, you can greatly benefit from a standard design. If you are a business that develops many different products,
you also can benefit greatly from a common framework.
it better than what you could do yourself? Does the framework show innovation and ideas that you
couldn’t have developed yourself? Sure, you could do it (and maybe even better) but do you really
want to? Do you have the time?
What is the learning curve?
the framework is written in a language or platform that is new to you,
you willing to learn it or not? Will other co-workers be willing to learn a new
language/platform? If you don't
want to learn a new language, this decision can narrow down the
the learning curve too steep for you? Learning a new language can be
more time consuming than learning the framework. If you choose a framework
written in a language you are not familiar with, make sure you
plan on time to learn the new language or platform. You may need to hire new people with a different skill set or
take training courses to help with the mentoring of your current
much time do you have to dedicate to learning the framework? Can you see results fast without having to know all the
framework details? Can you
build a functional prototype without having to open the framework?
the framework have good documentation? Does it supply “wizards” or builders to help you get
started? If the framework lacks documentation and
Rapid Application Development (RAD) tools to aid development, it can
Does the framework do too much or too little?
- Does the framework claim to be a “complete” solution to your problem? Do you want the framework to be a complete solution or would
you rather have it solve one specific problem?
- Does the company producing the framework clearly state the framework’s
intent? For example, are
you going to be surprised when the framework doesn’t have a security
model or an audit trail?
- Is the framework easily extendable? If you modify it can you still easily receive upgrades or are
you stuck maintaining it?
- Is the framework designed to work well with other frameworks? Is the
focus a generic framework for building applications? Or is it a
framework that has been focused upon a particular industry (accounting
for example) that will need to integrate with another framework (say a
- Does it handle the complexities of the application allowing you to
concentrate on your business goals by separating the “application”
logic from the “business” logic?
Who makes the framework?
- Is the Framework Company a respected one?
- How many frameworks have they developed?
- Has the company (or framework) been around for a while and will it be
around in the future? If
the company suddenly disappeared one day, would you be in trouble or
would you be able to maintain and extend it yourself?
- Are the framework developers smarter than you?
- Is framework developer support important to you or not? If it is, make sure you contact the company support groups and
see what the response is like.
- Who currently uses their framework? Are they happy with it?
Is price important to you?
much does the framework cost? A lot of frameworks out there
(especially ones for distributed applications) are in the thousands
per seat. Can you afford
it? Make sure you get a free evaluation copy so that you can
build a simple prototype before you decide to buy.
you find one that’s free? There are many free (or very inexpensive)
frameworks out there.
there maintenance and support fees?
Pros and Cons
When (or if) you finally pick a framework and
implement it as a company/application standard, you are basically
“stuck” with it. Very
often you develop a love/hate relationship with it (I had an ex like that
). A good framework,
however, will let you extend it and do what you want it to do in a fairly
easy way. However, if
you make the wrong choice, the framework can become a hindrance instead of
a help.And even if your
choice is good, it is up to you to abide by the framework’s programming
guidelines otherwise you can end up programming around the framework
instead of in it.A framework may dictate how an application looks or
behaves and you may not like it. Make
sure that if you don’t like it, you can easily change it and wont be
penalized by losing features. Some
frameworks out there are not very forgiving.
A framework can get you up and running in less time
and better than if you did it yourself. This is usually the biggest reason people use frameworks. Frameworks handle the complexities of the application allowing you
to concentrate on the business goals. This
means you can spend a lot more time and effort on what’s important, the
business rules and processes. A
good framework will also separate the application layer from the business
layer in separate classes or files. This
way, upgrades to the framework can be done without affecting your business
Working with a good framework can also
be a great learning experience. You get insight into how another
expert developer solves a problem. Prototyping with several
frameworks or developing with a single framework can give you exposure to
and a basis for creating your own framework.
Distributed Application Framework Considerations
When selecting your DNA framework in addition to the
questions above there are a few specific questions you should ask
I need a framework for all tiers of the application or just the middle
I need a middle tier to support thick (GUI) and thin (Browser/HTML)
many users do I anticipate this application to have? (Double your
easy (or hard) will this application be able to scale?
easy (or hard) will deployment and upgrades be?
I have found that the more a DNA framework tries to
do, the harder it is to maintain yourself.
Frameworks that aim to do a specific job tend to be easier to learn
and extend. In the past
I’ve personally preferred to develop my own frameworks. However, with the need to develop business internet applications so
quickly, I’ve found one that fits my needs. It is purely middle-tier which allows me to have graphic designers
and presentation programmers working on the client side, the developers
concentrating on their business logic and processes using the framework,
and the DBA’s maintaining the databases. What makes the framework “work” for me is that I can separate
the complexities of data marshalling, connection handling,
create/retrieve/update/delete (CRUD) functionality, and transactioning,
from my business objects, rules and processes.
Here's what I mean:
In the diagram above the blue objects are the pieces
of my application that is under a framework. Notice that the framework does not dictate the front-end user
interface or back-end database, it is only a middle-tier framework. I have
the flexibility to determine which database and what kind of user
interface I want to develop. The framework handles the data
marshaling to and from the database as well as many other details like
connections and transactions. The framework is also written in an
Object Oriented Language which allows my business specific classes to
easily inherit from the framework layer.
It may not be in the cards for you to adopt a
framework. However, there are a lot of good reasons to do so.
It's kind of like getting married. Choose the best one and stick
with it otherwise go through a painful separation and start over