Monday, July 15, 2013

What makes a framework a good framework?

We are developing in different languages. On working days in C# .NET, in spare time in C, PHP, jQuery / javascript or Java. Each language has its own benefits and disadvantages. For each language there are also numerous frameworks. But what makes a framework a good framework?

The definition of a framework is:
Broad overview, outline, or skeleton of interlinked items which supports a particular approach to a specific objective, and serves as a guide that can be modified as required by adding or deleting items.
We as developers don't want to create everything from scratch. Therefor we use frameworks. Boundaries of the application are defined, and can be filled with everything. The developer is responsible for the implementation. You can compare it with an house. The carpenter constructs the skeleton of the house. You as client can choose the stones, the color and fill the rooms.

Why use a framework?

Most frameworks have already solved software problems and coding horrors, have great implementations of patterns and make live easier.
An advantage of using a framework is that you can develop faster. You don't need to think about the setup and can deploy faster.

Well known frameworks are made by companies like: Telerik or DevExpress. They deliver a lot of components to use. Mostly its enough to drag, configure and run. How easy can it be?
We use eXpressApp Framework. An powerful framework which is described by DevExpress:
The eXpressApp Framework (XAF) is a modern and flexible application framework that allows you to create powerful line-of- business applications that simultaneously target Windows and the Web. XAF's scaffolding of the database and UI allows you to concentrate on business rules without the many distractions and tedious tasks normally associated with Windows and Web development. XAF's modular design facilitates a plug and play approach to common business requirements such as security and reporting.
XAF's advantages when compared with a more traditional approach to app development are profound. See for yourself and learn why XAF can radically increase productivity and help you bring solutions to market faster than you've ever thought possible.

Accept with the rules

Because you are using an framework, you need to work within the boundaries of the framework. So when you are searching for a good framework, keep in mind: "Is the framework flexible enough for me?". Each framework has its own implementation and behaviour.
My advise is to separate the business logic from the behaviour.

In the beginning you follow the way of the framework. When the application is growing you will probably get questions for functional changes. Most of the changes would fit within the boundaries of a framework, but after some the more and more changes won't fit and will go over the set boundaries. To be able to go over those boundaries you can use extension methods. But these implementations are not well written code, I call it workarounds.

Are there no disadvantages?

Off course there are disadvantages!
When there is a bug in your application, it could be very hard to find, especially when the bug is actually inside the framework.
You need to keep the framework up to date, and you need to know what the changes are inside the framework. It would not be the first time that you rely on some behaviour in the framework which is changed in a newer version, do you know the impact of changes in the framework you use?

Look to the future!

Ok, I know you can watch what the future will bring. But you be able to take some time before creating your application. You can ask for yourself:
  • What kind of features will / can I implement in the future?
    If you look at the features what you want to create now, the framework fits. But if new features bring your application to an higher level, is this also easy in the framework?
  • Can I easily make changes on components?
    You will definitely use editors of the framework, probably you also will create  your own editors to make your own behaviour, but can you change the behaviour easily?
  • Do I have an escape plan?
    What if the framework you use doesn't fit anymore? Are you be able to move your functionality to a new framework?
  • Does the framework have enough support by community or from the company?
    It is terrible to use an open source framework or a paid framework which is not supported. You won't be able to ask people for help and all your energy is moving from developing to searching.

Experience

We have experience with the benefits and the disadvantages of a framework. If you need advise? Just comment.

No comments:

Post a Comment