Introduction to Application Frameworks - The Economics of Application Frameworks
(Page 5 of 5 )
You have just seen what wonderful things frameworks can do for our applications; however, while application frameworks are the best choice in many circumstances, that doesn’t mean they are always the right choice. In exploring the possibilities offered by application frameworks, we must not lose sight of what we are trying to accomplish with the application we are developing. There are two areas in developing and using application frameworks that you need to consider in determining whether an application framework will help achieve your objectives: framework development and user training.
Framework Development Developing an application framework is not an easy and inexpensive effort. In order to develop a highly usable and extensible framework, you need first to find individuals who are not only expert in the business domain, but also expert in software design and development. It is important that those who are developing the framework be competent in both business knowledge and software development. Without business expertise, you cannot create the business-domain–specific framework layers that developers rely on to offset their lack of knowledge of the business domain. Without the technical expertise in software development, you cannot transfer the concept of the framework from theory to the concrete framework code that developers can reuse and extend. Finding people who have expertise in both the business domain and software development is the first hurdle to leap over in the development of a high-quality framework.
Clearly, the design and implementation of the framework demands a significant amount of human resources. Developing the application framework requires different skills from those used in developing an application. The framework designer must determine how developers can benefit from the services and architecture provided in the framework, how to abstract certain common logic in the application so that developers can reuse such logic throughout the framework, and how to provide the hot spots, or flexibility points, at the right place in the framework so that developers can plug in their code to achieve specific results.
Some of the work involved in creating a framework is abstract and relies heavily on assumptions about how developers will use the framework to build the application. It is difficult to get everything right on the first try, since the design can only guess at how the final application will look and how it will be built to solve the business problem. Certain framework components that were originally thought of as shared by multiple parts of the application may turn out not to be, and they should be taken out of the framework. Certain bits of application code that were originally supposed to be unique in different scenarios may turn out to share certain common abstractions, and they should be added to the framework to be shared throughout the application. After the framework has been deployed, new business requirements or changed requirements may result in the addition of new components to the framework and a modification of the existing framework components. As you may imagine, it takes a series of iterations to get the framework right for the applications that are built on top of it. The development cycle for a framework is similar to that of a regular application, namely, Analysis, Design, Development, and Stabilization in a reiterative fashion. Framework development is very much an evolving task, and it demands continual development and support efforts to ensure its relevance.
User Training Because the users of the framework are the developers who are building the application, user training for the framework means training the developers to use the application framework. In order to take advantage of what the framework offers, developers must have sufficient knowledge about the application framework and how to use it in their development. However, learning about a framework can be a time-consuming process. There are several factors that contribute to the difficulties in learning an application framework.
By its nature, the application framework is an incomplete application. Many missing parts of the framework will need to be filled in with application code written by the developers. However, before the application is complete, the framework itself may look obscure to many developers, since not every piece in the framework is well connected from beginning to end.
Application frameworks also contain much wiring needed to control the process flow throughout the framework. Although one of the goals of the framework is to hide such complex wiring from the developer, during training, developers may have a harder time understanding how the framework works as it does, because much of this wiring and the dependencies among classes in the framework are indirect and complex.
As with any new product and programming model, an application framework contains many APIs, services, and configuration settings that are strange to developers, and it will take some time for developers to work with the framework before they become fluent with it and fully productive in developing applications based on it.
Despite this learning curve, we can speed up developers’ adaptation of the framework by creating well-written documentation and samples that show developers how the framework is used in various scenarios. In the case of programming, an example is worth a thousand words and pictures.
With the potential development cost and efforts in mind, we can weigh whether we need an application framework. Not every application needs to be built on an application framework, and many applications have been successfully developed without one. There are situations in which you want a quick solution produced on a limited budget, and thus the savings on the development effort through the framework may not cover the extra development effort invested in creating the framework. In contrast, there are situations in which an application framework is shared by multiple applications and would significantly reduce the overall development effort. There are also situations in which you want to invest in the application framework today so that it can provide an extensible and reusable foundation for future development. What it comes down to is whether an application framework will help you achieve the objective you set for your project. Developing an application framework is like investing in the stock market; good investments are not judged on whether they are making money today, but on whether they support your investment objectives.
Summary In this introduction to application frameworks, you have learned the definition of the application framework and have read a brief history of it. We then looked at how we can leverage a framework in application development to reduce the overall development effort. We discussed the benefits of using an application framework as a starting point for the business application we are developing: modularity, reusability, extensibility, simplicity, and maintainability. We also discussed some of the cost of developing and using a framework, such as additional development effort and developer training issues. Knowing both the benefits and costs of developing an application framework helps us make the right choice whether one should be used in a particular scenario. In the next chapter, we will look at what is inside a framework, and see how to develop an application framework that is both reusable and extensible through the use of object-oriented techniques.
This chapter is from Developing Application Frameworks in .NET by Xin Chen (Apress, 2004, ISBN: 1590592883). Check it out at your favorite bookstore today. Buy this book now.
|
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |