Clarify Definitions of Architecture, Framework, etc.

原创 2004年09月27日 21:18:00


 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 abstractand 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 compilersfor 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-orientedprogramming 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.

By printing, downloading, or using the content on the, 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, 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.

ios ld: framework not found Bolts for architecture x86_64

iOS 添加 Facebook SDK 编译报错 framework not found Bolts for architecture x86_64 参考以下链接 http://stacko...
  • u010500895
  • u010500895
  • 2016年09月27日 15:24
  • 2618

framework not found Bolts for architecture x86_64

this indicates Bolts framework for architecture x86_64 is not found. So just need Xcode can find it...
  • wletv
  • wletv
  • 2016年08月26日 22:03
  • 1996

framework not found Metal for architecture armv7/armv7s #66

framework not found Metal for architecture armv7/armv7s#66
  • aini9080
  • aini9080
  • 2014年09月20日 00:05
  • 5805

编译报错framework not found Metal for architecture armv7 问题

Ever since Apple introduced iOS SDK 8.0, apps referencing CoreVideo or OpenGLES may encounter the fo...
  • cxm19881208
  • cxm19881208
  • 2015年05月12日 10:16
  • 2173


1. 架构和框架的设计层次不同     类似于硬件设计,软件设计也分为不同的层次。典型的软件设计层次如下图:    1. 架构和框架的设计层次不同 ...
  • happylee6688
  • happylee6688
  • 2014年09月27日 17:48
  • 1779

"...not found FileProvider for ..."解决方法

使用xcode9打包出来的项目,放到xcode8中去运行,就会报错。”Framework not found FileProvider for architecture x86_64”解决方法一:升级...
  • jacob_ios
  • jacob_ios
  • 2017年11月24日 12:54
  • 554

ios之Linker command failed with exit code(use -v to see invocation)

问题描述         我出现的问题,是因为我电脑上有两个xcode 一个是xcode9Bate 一个是xcode8.3.3,看到这如果你确信不是因为两个xcode 版本不一样造成的,可以不用继续往...
  • dingqk
  • dingqk
  • 2017年08月01日 15:19
  • 1239

Framework not found IOSurface for architecture arm64

问题描述: 使用一个第三方sdk接入到现有工程中,现有工程环境为Xcode8,接入sdk后报 Framework not found IOSurface for architecture arm64...
  • u014231427
  • u014231427
  • 2017年11月10日 11:26
  • 439

ld: framework not found IOKit

Xcode5解决方案: cd /Applications/
  • guojin08
  • guojin08
  • 2014年01月07日 15:46
  • 9065

iOS调试常见错误 如:symbol(s) not found for architecture x86_64

原文出处: 1、框架导入方式: Targets—>Build Phases...
  • buildSetting
  • buildSetting
  • 2016年07月05日 18:44
  • 17300
您举报文章:Clarify Definitions of Architecture, Framework, etc.