Wiki Home

How To Choose AFramework

Namespace: VB
This topic has been sitting blank for a long time. I thought I'd get the ball rolling. -- Mike Feltman
See also Visual FoxPro Frame Works
Choosing a framework is difficult and a very important decision for the organization. There are many inherent difficulties in the framework selection process. Before selecting a framework, it's important to know why you are selecting a framework. Are you selecting a framework for a single application or certain types of applications, or are you selecting a framework for all of the applications you wish to develop? In order to make the right choice it is necessary to gather requirements for your application(s) before trying to select a framework. In the end, the framework that will make it easiest for you to deliver your requirements (both immediate and future) is the one you should choose.

Many developers view the framework selection process as a one-time thing. In reality, framework selection should be reconsidered for each new project.

Once you've decided what you're selecting a framework for, there are a general set of questions you can use to narrow down which frameworks are candidates.

Application Architecture
The first question is whether or not the application is going to be entirely web-based or not. If the answer to this question is yes, the first framework you'll want to look at is West Wind Web Connection to handle all of the web issues. You may then also decide to choose an additional framework for dealing with the actual business logic, which is outside of Web Connection's domain.

The next question that will eliminate several of the frameworks is whether or not the application requires, or development processes or standards dictate, separation of the business rules from the user interface. If the answer to this question is yes, then you'll want to look at The Mere Mortals Framework, Code Mine, CodeBook and Visual FoxExpress. If the answer to this question is no, then you'll want to look at Visual Max Frame Professional and Visual Pro Matrix.

Codebook, Mere Mortals and Visual FoxExpress all use business objects to access data, thus isolating the business classes from the user interface. Originally the business objects in these three frameworks were very similar, but as the frameworks have evolved they are all now quite different. Visual FoxExpress actually represents tables, views, fields and view parameters in objects (similar to ADO). Codemine uses a special data access layer for accessing data, which is a little different than the business object approach.

Visual Max Frame and Visual Pro Matrix are form centric and basically use the form's data environment as the means for accessing data. Much of their functionality is encapsulated within the form classes in the framework and they are built on the basic assumption that the data will reside in the same process as the user interface.

Once you've narrowed your selection down to one of the two general categories, the selection process gets a lot greyer. All of the prices are within a few hundred dollars of each other, so, with the exception of Codebook, which is free, money is not really a factor. In any case, the investment made in learning to use a framework will always be greater than the investment made to aquire the framework.

The next category to consider is probably features of the individual frameworks you're looking at. There are three things to keep in mind here. The first is if features your application(s) require are included in the framework. At this point it's probably wise to have a list of general requirements for your application(s) and to discuss how those features would be implemented with the framework vendors or with others that use the frameworks.

The second issue to consider related to features is if the framework is laden with features that your application doesn't require. You'll want to research the cost of leaving these unnecessary features in or the difficulties you may face in removing these features.

Framework Extensibility
The last, and probably most important issue, related to features, is your ability to implement features that are not included in the framework. You'll want to make sure that all of the source code is included for the framework to make sure it's customizable in any way you see fit. Beyond just having the source code, you'll want to make sure that the framework is easily extendable. There are many ways in which a framework can be made extendable and you'll want to discuss Framework Extensibility with the vendors or users.

Code Quality
Next, you'll want to assess the quality of the code. Is the framework generally considered stable and usable by its users, or is it considered buggy? You'll also want to get a feel from how the code is actually written. For example, are there hooks that allow you to easily extend functionality without having to modify the framework itself? Are the methods excessively long? A general rule of thumb is that a framework should include very few methods that are longer than a full screen when viewed in a 10pt font at 1024*768 resolution. This is important because long methods are difficult to augment and overriding them in subclasses can often create difficulties in implementing inheritance. If the framework provides hooks at key junctures in lengthy methods then the cost of long methods is offset somewhat.

Gee, why can't we all get along?
Next, you'll want to consider if the framework plays well with others, other tools that is. Doug Hennig's Stonefield Database Toolkit is nearly a standard feature in most VFP applications that deal with VFP Data. Does the framework work well with SDT? If the framework has a data dictionary, does the data dictionary use DBCX2 which allows you to maintain the framework meta data and the SDT meta data simultaneously? If the answer to this question is no, it's not a show-stopper, but it should be considered. If the answer is no, are there tools for synchronizing the framework's data dictionary with SDT or vise-versa? If you have multi-lingual requirements, does the framework integrate with Steven Black's Intl Toolkit or provide sufficient multi-lingual features of its own? If audit trails are required does the framework provide them or integrate well with Fox Audit or SQLAudit? If you're planning on using other tools, like Stonefield Reports or Fox Fire! you should investigate if the framework works well with these tools as well.

Development tools that come with the framework are often an important factor to consider as well. Virtually all of the frameworks supply tools that help you create a starter project with the framework. This is an important feature to get a new project started quickly.

The extent to which a developer wants to use wizards and builders to create an application is an important factor in selecting a framework. Once the starter project has been created, the level of assistance the framework tools provide in helping to create a project varies greatly. Visual FoxExpress and Visual Pro Matrix both provide complete development environments that include wizards for creating all of the various components of a project. Many of the other frameworks, such as Code Mine and Max Frame provide several other tools to help create project components without providing their own IDE. Visual FoxExpress and the Mere Mortals framework provide a builder for every class in the framework. All of the frameworks, including Visual FoxExpress and Visual Pro Matrix, create stand-alone VFP projects that can be maintained with without utilizing the tools that come with them.

Standard Software Concerns
Standard issues that would be looked at for any software purchase such as documentation, availability of support and training, longevity of the company, etc. should also be considered.
-- Mike Feltman
Category Frameworks
( Topic last updated: 2000.02.07 01:51:34 PM )