In the software engineering industry, the term of application framework is used to describe a set of reusable designs and code that can assist in the development of software applications.
An application framework provides developers with a structure and template that they can use as a baseline to build their applications. Such a framework often consists of abstract classes, concrete classes, and predefined interaction among the classes throughout the framework. Developers can then build the application on top of the framework and reduce the development effort through reuse of code and designs provided in the framework. The following figure provides a high level overview on how an application framework relates to a business application.
The concept of the application framework is not new, and various types of frameworks have been around for a couple of decades. Some of the well-known frameworks are Sun's Java environment and Microsoft's .NET Framework environment. People who work with Java or .NET can fully appreciate the benefits what those two frameworks have offered to application development. Java and .NET are both frameworks that target all types of applications, and thus such frameworks must not contain any business-domain-related classes and designs. However, there exist frameworks that sit on top of such generic frameworks and provide services and expertise for certain specific business domains, such as supply chain systems and financial applications.
Clearly, 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.
So 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.
In addition to the above significant human resource demands, you also need to follow five important principles to develop a highly usable and extensible framework: Modularity, Reusability, Extensibility, Simplicity, and Maintainability.
The postings in this topic will explain each of them, stay tuned...