- Software framework
A software framework, in
computer programming , is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality.Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API. Unlike libraries, however, the overall program's flow of control is not dictated by the caller, but by the framework. This
inversion of control is the distinguishing feature of software frameworks. [citation|url=http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf|first=Dirk|last=Riehle|title=Framework Design: A Role Modeling Approach|publisher=Swiss Federal Institute of Technology|year=2000]Rationale
The designers of software frameworks aim to facilitate software development by allowing designers and programmers to spend more time on meeting software requirements rather than dealing with the more standard low-level details of providing a working system. For example, a team using a
web application framework to develop a banking web site can focus on the operations of account withdrawals rather than the mechanics of request handling and state management. However, developerswho? commonly complain that using frameworks adds to "code bloat ", and that due to competing and complementary frameworks and the complexity of their APIs, one often trades time spent on rote programming and design for time spent learning to use the framework.Having a good framework in place allows developers to spend more time concentrating on the business-specific problem at hand rather than on the "plumbing" code behind it. Also a framework will limit
choice s during development, so it increasesproductivity , especially in large and complex systems.Examples
Software frameworks typically contain a considerable housekeeping and utility code in order to help bootstrap user applications, but generally focus on specific problem domains, such as:
* Artistic drawing, music composition, and mechanicalCAD [citation|last1 = Vlissides|first1 = J M|last2 = Linton|first2 = M A|year = 1990|title = Unidraw: a framework for building domain-specific graphical editors|journal = ACM Transactions of Information Systems|volume = 8|issue = 3|pages =237-268] [citation|last = Johnson|first = R E|year = 1992|title = Documenting frameworks using patterns|publisher = ACM Press|journal = Proceedings of The Conference on Object Oriented Programming Systems Languages and Applications|pages = 63-76]
*Compiler s for differentprogramming language s and target machines. [citation|last1 = Johnson|first1 = R E|first2 = C|last2 = McConnell|first3 = M J|last3 = Lake|year = 1992|title = The RTL system: a framework for code optimization|editor-first = R|editor-last = Giegerich|editor2-first = S L|editor2-last = Graham|publisher =Springer-Verlag |journal = Proceedings of the International workshop on code generation|pages = 255-274]
* Financial modeling applications [citation|last1 = Birrer|first1 = A|first2 = T|last2 = Eggenschwiler|year = 1993|title = Frameworks in the financial engineering domain: an experience report|publisher =Springer-Verlag |title = Proceedings of the European conference on object-oriented programming|pages = 21-35]
*Decision support systems [last = Gachet|first = A|year = 2003|title = Software Frameworks for Developing Decision Support Systems - A New Component in the Classification of DSS Development Tools|journal = Journal of Decision Systems|volume = 12|issue = 3|pages = 271-281]
* Media playback and authoring
* Web applications
*Middleware Architecture
According to Pree, [Pree, W. (1994). Meta patterns - a means for capturing the essentials of reusable object-oriented design. in M. Tokoro and R. Pareschi (eds), Springer-Verlag, proceedings of the ECOOP, Bologna, Italy: 150-162.] 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 application programmers may make adaptations for specific functionality — 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. [Buschmann, F. (1996). Pattern-oriented software architecture : a system of patterns. Chichester ; New York, Wiley.]When developing a concrete software system with a software framework, developers utilize the hot spots 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." [Larman, C. (2002). Applying UML and patterns : an introduction to object-oriented analysis and design and the unified process. Upper Saddle River, NJ, Prentice Hall PTR.] This means that the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes. Developers usually handle this by implementing superclassabstract method s.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 theGNU 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 inC++ .
*Component-based Scalable Logical Architecture (CSLA) is a standard way to create robustobject oriented programs using business objects, implemented using .NET.
*Java Native Interface (JNI) allows Java code running in theJava virtual machine (VM) to call and be called by native applications (programs specific to ahardware andoperating system platform) and libraries written in other languages, such as C,C++ and assembly.
* Leonardi is anopen source application framework forGUI applications
* Spring is anopen source application framework for theJava platform .
*Symfony is a popularopen source application framework for PHP Platform.
*CodeIgniter is a popularopen source application framework for PHP Platform.
* Rails is a libre softwareapplication framework for the Ruby Platform.See also
*
Application framework
*Class (computer science)
*Don't repeat yourself
*Enterprise Architecture
*Implicit invocation
*Jini | Upnp | Salutation which have been called "coordination frameworks".
*Object-oriented programming
*Web application framework
=External links =
* [http://www.frameworksconference.com Annual frameworks conference]
* [http://www.ddj.com/blog/architectblog/archives/2006/07/frameworks_vs_l.html Frameworks vs. Libraries]
* [http://www.scorpus.com RAS metadata repository for creating software assets and software reuse ]
* [http://www.devexpress.com/xaf/ XAF application framework from DevExpress]
* [http://www.mxframe.net MX-Frame Business Application Framework]References
Wikimedia Foundation. 2010.