Software framework

From Wikipedia, the free encyclopedia

Jump to: navigation, search

Ralph E. Johnson. Frameworks = (components + patterns). Commun. ACM, 40(10):39--42, 1997. </ref> Like software libraries, software frameworks aid 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 master/servant relationship. This reversal, called inversion of control, expresses the essence of software frameworks.[1]

Contents

[edit] Motivations

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 Apache Struts to develop a banking web site can focus on the operations of account withdrawals rather than on how to control navigation between webpages in a bug-free manner. However, developers[who?] commonly complain that using frameworks adds to "code bloat", and that due to competing and complementary frameworks, one trades time spent on rote programming and design for time spent on learning frameworks.

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.

[edit] Types of software frameworks

A software framework may focus on building graphical editors for different domai