Software framework

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 choices during development, so it increases productivity, 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 mechanical CAD [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]
* Compilers for different programming languages 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 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.
* CodeIgniter is a popular open source application framework for PHP Platform.
* Rails is a libre software application 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.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Framework (disambiguation) — Framework may refer to:*Framework, a structure used as a guide to build something *Software framework, a reusable set of libraries or classes for a software system (or subsystem). *Application framework, a software framework used to implement the …   Wikipedia

  • Framework — Framework  термин, имеющий размытое значение. Обычно используется в программировании, обозначая «простую концептуальную структуру, используемую для решения сложной, проблемной задачи». Значение этого термина существенно зависит от контекста его… …   Википедия

  • Software development methodology — A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system. Contents 1 History 1.1 As a noun 1.2 As a… …   Wikipedia

  • Framework — A framework is a basic conceptual structure used to solve or address complex issues. This very broad definition has allowed the term to be used as a buzzword, especially in a software context. Conceptual frameworkA conceptual framework is used in …   Wikipedia

  • Software quality — Contents 1 Motivation for Defining Software Quality 2 Definition 3 Alternative Approaches to Software Quality Defin …   Wikipedia

  • Framework Programmes for Research and Technological Development — The Framework Programmes for Research and Technological Development, also called Framework Programmes or abbreviated FP1 through FP8, are funding programmes created by the European Union in order to support and encourage research in the European… …   Wikipedia

  • Software development kit — SDK redirects here. For the videogame, see Super Donkey Kong. A software development kit (SDK or devkit ) is typically a set of software development tools that allows for the creation of applications for a certain software package, software… …   Wikipedia

  • Software Assurance — (SwA) is defined as “the level of confidence that software is free from vulnerabilities, either intentionally designed into the software or accidentally inserted at anytime during its lifecycle, and that the software functions in the intended… …   Wikipedia

  • Software development kit — Saltar a navegación, búsqueda Un software development kit (SDK) o kit de desarrollo de software es generalmente un conjunto de herramientas de desarrollo que le permite a un programador crear aplicaciones para un sistema concreto, por ejemplo… …   Wikipedia Español

  • Software prototyping — Software prototyping, a possible activity during software development, is the creation of prototypes, i.e., incomplete versions of the software program being developed.A prototype typically simulates only a few aspects of the features of the… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”