Software framework

Computer/Terms 2008. 7. 30. 17:24

A software framework is "the skeleton of an application that can be customized by an application developer". Like software libraries, it aids the software developer by containing source code that solves problems for a given domain and provides a simple API. However, while a code library acts like a servant to other programs, software frameworks reverse the maservant relationship. This reversal, called inversion of control, is the essence of software frameworks. Another software framework can help build compilers for different programming languages and target machines. Yet another might help build financial modeling applications or decision support systems. There are frameworks for multimedia, web applications, and even communicating between different systems.

Architecture
According to Pree, software frameworks consist of frozen spots and hot spots. On the one hand, frozen spots define the overall architecture of a software system, that is to say its basic components and the relationships between them. These remain unchanged (frozen) in any instantiation of the application framework. On the other hand, hot spots represent those parts where the programmers using the framework add their own code to add the functionality specific to their own project.

Software frameworks define the places in the architecture where adaptations for specific functionality should be made - the hot spots. In an object-oriented environment, a framework consists of abstract and concrete classes. Instantiation of such a framework consists of composing and subclassing the existing classes.

When developing a concrete software system with a software framework, the hot spots are specialized according to the specific needs and requirements of the system. Software frameworks rely on the Hollywood Principle: "Don’t call us, we’ll call you." This means that the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes. These are usually handled by implementing superclass abstract methods.

List of general purpose frameworks
- BFC is a RAD framework for developing database-centric distributed computing applications in a .NET environment.
- CNI (Compiled Native Interface) is a software framework for the GNU GCJ compiler which allows Java code to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in C++.
- Component-based Scalable Logical Architecture (CSLA) is a standard way to create robust object oriented programs using business objects, implemented using .NET.
- Java Native Interface (JNI) allows Java code running in the Java virtual machine (VM) to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages, such as C, C++ and assembly.
- Leonardi is an open source application framework for GUI applications
- Spring is an open source application framework for the Java platform.
- Symfony is a popular open source application framework for PHP Platform.
- Rails is a libre software application framework for the Ruby Platform.

Reference:
http://en.wikipedia.org/wiki/Software_framework

Posted by 알 수 없는 사용자
,