(from http://encyclopedia.thefreedictionary.com)
Software architecture is a coherent set of abstract patterns guiding the design of each aspect of a larger software system.
Software architecture underlies the practice of building computer software. In the same way as a building architect sets the principles and goals of a building project as the basis for the draftsman's plans, so too, a software architect sets out the software architecture as a basis for actual system design specifications, per the requirements of the client.
Software architecture is like building architecture in that it is to do with the purpose, themes, materials, and concept of a structure. A software architect employs extensive knowledge of software theory and appropriate experience to conduct and manage the high-level design of a software product. The software architect develops concepts and plans for software modularity, module interaction methods, user interface dialog style, interface methods with external systems, innovative design features, and high-level business object operations, logic, and flow.
The software architect consults with clients on conceptual issues, managers on broad design issues, software engineers on innovative structural features, and computer programmers on implementation techniques, appearance, and style.
Software architecture is a sketchy map of the system. Software architecture describes the coarse grain components (usually describes the computation) of the system. The connectors between these components describe the communication, which are explicit and pictured in a relatively detailed way. In the implementation phase, the coarse components are refined into "actual components", e.g, classes and objects. In the object-oriedted field, the connectors are usually implemented as interfaces.
A software framework is a partially complete, or semi-finished software (sub-)system that is intended to be instantiated . It defines the architecture for a family of (sub-)systems and provides the basic building blocks to create them. It also defines the places where adaptations for specific functionality should be made. 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 1996).
For example, a software framework can be geared toward building graphical editors for different domains like artistic drawing, music composition, and mechanical CAD (Vlissides and Linton 1990; Johnson 1992). Another software framework can help build compilers for different programming languages and target machines (Johnson, McConnell et al. 1992). Yet another might help build financial modeling applications (Birrer and Eggenschwiler 1993) or decision support systems (Gachet 2003).
In short, a software framework is a set of cooperating classes that make up a reusable design for a specific class of software (Johnson and Foote 1988; Deutsch 1989). According to Pree (1994), such a framework consists 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 of the software framework that are specific to individual software systems. Hot spots are designed to be generic. In other words, they can be adapted to the needs of the application under development. 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." (Larman 2002). This means that the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes. These are usually handled by implementing super-class abstract methods.
An application framework is a term usually used to refer to a set of libraries or classes that are used to implement the standard structure of an application for a specific operating system. By bundling a large amount of reusable code into a framework, much time is saved for the developer, since he/she is saved the task of rewriting large amounts of standard code for each new application that is developed. Application frameworks became popular with the rise of the GUI, since these tended to promote a standard structure for applications. It is also much simpler to create automatic GUI creation tools when a standard framework is used, since the underlying code structure of the application is known in advance. object-oriented programming techniques are usually used to implement frameworks such that the unique parts of an application can simply inherit from pre-existing classes in the framework.
Disclaimer
By printing, downloading, or using the content on the freedictionary.com, including general dictionary, medical dictionary, computing dictionary, legal dictionary, thesaurus, literature, geography, encyclopedia, and any reference data you agree to our full terms. All content on thefreedictionary.com, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.