How can we distinguish between architectures, frameworks, models, and platforms?

Source: Internet
Author: User

To distinguish between architectures, frameworks, models, and platforms, we have always felt that these words are too abstract and vague. Today we are talking about what is architecture, framework, model, and platform?

 

Some definitions and differences from the Internet are as follows:

 

Concept from hibernation:

Design mode <framework <architecture <platform. From the perspective of reuse, the design mode is code-Level Reuse, the framework is module-Level Reuse, the architecture is system-level reuse, and the platform is enterprise application-level reuse.

 

1. Design Mode

Why do we need to talk about the design pattern first? Because design patterns are the most basic and simple in these concepts. So what is the design model? To put it bluntly, the design pattern is to tell you how to organize the relationship between classes, objects, and interfaces for specific problems. It is the experience summarized by our predecessors. For example, if I want to implement a globally unique configuration class in the Code, the singleton mode is used. The design pattern is used in actual coding work and design framework, while the higher-level architecture and platform do not pay too much attention to it.

2. Framework

Only one of the most widely used ORM frameworks for web development. The ORM framework is a collective term for all data relationship ing frameworks, such as nhib.pdf and activerecord, the framework exists to solve specific problems. other frameworks, such as template frameworks and cache frameworks, cannot be used directly and require secondary development.

3. Architecture

On a large scale, for example, the B2C website system architecture for the company's business, it may use a variety of frameworks to solve various problems, focusing on technical integration, expansion, and maintainability. From another perspective, architecture issues will also be involved in the framework. For example, to develop the Nhibernate framework, you also need to consider how to design it.

4. Platform

The concept of the platform is similar to that of the framework, but it is an application in terms of architecture. It is a product designed for enterprise users to meet their business needs.

 

Definitions from http://www.duduwolf.com/NET:

What is architecture?

Software Architecture is often referred to as architecture, which refers to software framework structures that can be premade and refactored. The architecture is still in the development phase, and the academic community has not yet formed a unified opinion on its definition. Different viewpoints may also lead to different understandings of the software architecture. The following are some mainstream standards.
ANSI/IEEE 610.12-1990 software engineering standard terms for Architecture Definition are: "The architecture is the basic organizational structure of a system based on the relationship between components and components, the relationship between components and the environment, and the principle of the design and evolution of the above content (principle) ".
Mary Shaw and David Garlan hold that the software architecture is a level beyond algorithm design and data structure design in the software design process. Architecture issues include the organization and global control structure of various aspects, communication protocols, synchronization, data storage, assigning specific functions to design elements, and the organization, scale, and performance of design elements, select between different design schemes. The basic idea of Garlan & Shaw model [1] is: Software Architecture = {component, connector, constraint )}. A component can be a set of code, such as a program module, or an independent program, such as a database server. Connectors can be process calls, pipelines, Remote Procedure Call (RPC), and so on, used to indicate the interaction between components. Constraints are generally rules for object connection, or specify the form and conditions for component connection. For example, upper-layer components can require services of lower-layer components, but not vice versa; the two objects cannot send messages in a regular manner, the consistency constraints of code replication and migration, and the invalid connection conditions.
There are many other ideas about architecture definition, such as the definition of Bass, booch & Rumbaugh & jacbson, Perry & Wolf [7], and Boehm, although the research objects are slightly focused on different definitions of key architectures, the core content is the structure of software systems, represented by the Garlan & Shaw model, it emphasizes that the basic elements of the architecture are components, connectors and their constraints (or connection semantics). Most of these definitions are from the perspective of construction and even software architecture, the definition of IEEE not only emphasizes the basic composition of the system, but also emphasizes the environment of the architecture, that is, the interaction with the outside world.

What is a mode?
Pattern was first proposed by building master Christopher Alexander in 1970s and applied to the construction field. In the 1980s S, Ward cunnheim and Kent Beck introduced his idea into the software field, christopher Alexander divided the pattern into three parts: the context, which can also be called the context, which indicates the circumstances under which the pattern works; the other is the system of forces ), A solution refers to a problem or an expected goal. A solution refers to a configuration that balances the motives or solves the problems described ). He proposed that the pattern is a rule that represents the relationship between the Zhou environment, the motive, and the solution. Each pattern describes a problem that occurs repeatedly in a certain period of time, as well as the core of the solution to this problem, the pattern is a thing and a process, which not only describes the thing itself, in addition, we propose how to generate this transaction. This definition has been widely accepted by the software industry.

Architecture and model should be a process of mutual coverage, but in general architecture is more concerned with the so-called high-level design, the pattern focuses on the application of the "criterion or guiding Scheme" extracted from experience in the design. Therefore, pattern in different problem domains is formed when the problem is considered at different levels. The goal of the mode is to separate the unchanged and changed parts of the common problems. The unchanged part forms a pattern. Therefore, pattern is a "criterion" for empirical extraction, which is verified once in practice and has different patterns at different levels, from language implementation (such as Singleton) to architecture. At different levels, the model provides different levels of guidance. Based on the granularity of the problem, from high to low, the pattern can be divided into three layers: architectural pattern, design pattern, and implementation pattern ). the architecture mode is the highest level in the mode. It describes the basic structure organization or outline of the software system. Generally, it provides a set of pre-defined subsystems and specifies their responsibilities, and provides the rules and guidelines for organizing them together. For example, the user and file system security policy model, the N-layer structure, Component Object Service, and so on, the well-known MVC structure also belongs to the architectural pattern layer. An architecture pattern can often be divided into multiple design patterns for joint use. The design pattern is the second level in the pattern to deal with repeated problems in programming. For example, [gof95] [2] summarizes 23 basic design patterns-factory pattern and Observer pattern. The implementation mode is the lowest and most specific level to deal with specific programming language problems. For example, class name, variable name, function name naming rules, exception handling rules, and so on.

From: http://dev.yesky.com/378/2012378.shtml

[Gof95] is the first book on the software model and the most popular book on OO design theory. Therefore, some people often use design pattern) the term "1" refers to any kind of pattern that directly processes the architecture, design, and program implementation of the software. Others stress that three different layers of patterns should be divided: architectural pattern, design pattern, and idiom ). Examples are sometimes called the coding pattern ).

The difference between the three lies in that the three different modes exist in their respective abstract levels and specific levels. The architecture model is a high-level system strategy involving large-scale components, as well as the overall nature and mechanics. The quality of the architecture model can affect the overall layout and framework structure. The design pattern is a medium-scale structure strategy. These medium-sized structures implement the behavior of some large-scale components and their relationships. The quality of the model does not affect the overall layout and overall framework of the system. The Design Pattern Defines the microstructure of a subsystem or component. Code patterns (or examples) are specific examples and programming skills related to specific languages. The quality of the code pattern affects the underlying details of the internal and external structures or behaviors of a medium-scale component, but does not affect the medium-scale structure of a component or subsystem, it will not affect the overall layout of the system and the large-scale framework.

1. Code mode or example (coding pattern or idiom)
Code patterns (or examples) are low-level patterns that are closely related to programming languages. The code mode describes how to use the characteristics of a specific programming language to implement certain specific aspects or relationships of a component.
Examples of well-known code modes include the double-check locking mode.

2. Design Pattern)
A Design Pattern provides an outline design that extracts components in subsystems or software systems, or links between them. Design Patterns describe the ubiquitous repeated structures in the communication components. This structure solves general design problems in a certain background.
Design Patterns are often divided into different types, common types include:
Creation design patterns, such as factory method, abstract factory, prototype, Singleton, and builder) mode
Structural design patterns, such as composite, decorator, proxy, flyweight, facade, and bridge) mode
Behavior mode, such as template method mode, observer mode, iteration subator mode, chain of responsibility mode, and memento) mode, command mode, state mode, visitor mode, and so on.
The above are three classic types. There are actually many other types, such as fundamental, partition, and relation.
When the design pattern is implemented in a specific programming language, the code pattern is often used. For example, the singleton mode usually involves the double-check locking mode.

3. Architecture Pattern)
An architecture model describes the basic structure organization or outline of a software system. The architecture model provides subsystems defined in advance, specifying their responsibilities, and providing rules and guidelines for organizing them together. Some authors call this architecture model the system model [stelting02].
An architecture pattern can often be divided into multiple design patterns for joint use. Obviously, the MVC mode belongs to this mode. The MVC pattern usually includes the Mediator Pattern, strategy pattern, composite pattern, and observer pattern.
In addition, common architecture models include:
· Layers (layered) mode, also known as tiers Mode
· Blackboard Mode
· Broker (intermediary) Mode
· Distributed process mode
· Microkernel (microkernel) Mode
Architecture models are often divided into the following types:
1) from mud to structure. Helps architects divide the system reasonably to avoid forming a sea of objects ). Includes layers, blackboard, and pipes/filters.
2) distributed systems. Provides a complete architecture design for distributed systems, including broker (intermediary) models.
(3) interactive systems, supporting the architecture design of a system with a human-computer interaction interface. Examples include Model-View-controller) mode, PAC (Presentation-extract action-Control) mode, and so on.
4) adaptable systems, supporting application systems to adapt to technological changes and changes in software functional requirements. Such as reflection mode and microkernel mode.

From: http://fanqiang.chinaunix.net/program/project/2005-06-16/3316.shtml

A Software Framework is an architecture formed by extracting the commonalities of software in a specific field during the software development process of a project. software projects in different fields have different types of frameworks. The framework is used to extract the common parts of software in a specific field. Therefore, the code in the development process of new projects in this field does not need to be written from the beginning, you only need to make some development and adjustments on the basis of the framework to meet the requirements. For the development process, this will improve the software quality, reduce costs, and shorten the development time, the easier development, the better efficiency, and a virtuous circle.

The framework is not a ready-to-use application system. It is a semi-finished product that requires secondary development by later developers to implement specific functions of the application system. The framework is not a "Platform". A vague platform concept can be an operating system, an application server, a database software, or a communication middleware, therefore, the platform mainly refers to the system software that provides specific services on the application platform, and the framework focuses more on the design and development process. Alternatively, the framework plays a role by calling the services provided by the platform.

The framework is not a toolkit or a class library. Calling APIS is not just about using framework development. Using APIs closely, developers can complete the theme of the system and call the class library from time to implement specific tasks. The framework constitutes a general and general system main part. The secondary development personnel just fill in the blanks and complete the distinctive special part of a specific application system based on the specific business.

Relationship between framework and architecture

The framework is not an architecture (Software Architecture ). The architecture determines the overall structure, hierarchy, and collaboration among different parts of the system. The framework is more specific than the architecture. More focused on technical suspicion. After the framework is determined, the software architecture is also determined, and the same software architecture (such as MVC in Web Development) can be implemented through multiple frameworks.

Relationship between frameworks and Design Patterns

Design Patterns and frameworks are two different research fields in software design. The design pattern is a solution to the design problem. A pattern can be applied to different frameworks and implemented by different languages, while a framework is an application architecture, it is a mixture of one or more design patterns and code. Although they are different, they work together to make people's design reusable, And there is uniformity in their thinking, therefore, the idea of the design pattern can be applied in the framework design.

There are significant differences between the framework and the design model, mainly in the content provided by the two and the fields dedicated to application.

1) In terms of application fields, the Framework provides the architecture of the entire application, while the design model provides a solution to a single design problem, in addition, this solution can be applied in different applications or frameworks.

2) in terms of content, the design mode is only a simple design, which can be implemented by different languages in no way; while the Framework is a mixture of design and code, programmers can extend the framework in various ways to form different applications.

3) based on article 2, it can be concluded that the design model is easier to transplant than the framework: once the framework is designed and formed, although it has not yet formed a complete application, however, the development of applications based on the framework is obviously subject to the implementation environment of the framework. The design mode is language independent, so it can be applied in a wider range of heterogeneous environments.

In short, the framework is software, and the design pattern is the knowledge body of software.

From: http://founderfix.com: 81/showtopic-712.aspx

 

1. What is the mode?
Pattern. It is actually a methodology for solving a certain type of problems. You sum up the methods for solving a certain type of problems to the theoretical level, that is, the mode.
Alexander's classic definition is that each mode describes a problem that is constantly emerging in our environment, and then describes the core of the solution to the problem. In this way, you can use existing solutions countless times without repeating the same work.
The mode has different fields, the construction field has the construction mode, and the software design field also has the design mode. When a domain gradually matures, many models will naturally emerge.
What is a framework?
Framework. In fact, it is a semi-finished product of an application, that is, a group of parts for you to choose to complete your own system. Simply put, you can use a stage set up by others to perform performances. In addition, the framework is generally mature and constantly upgraded software.

2. Why use the mode?
Because the mode is a kind of guidance, under a good guidance, it will help you complete the task, and help you make a good design solution to achieve twice the result with half the effort. In addition, we can find the best solution to the problem.
Why use the framework?
As software systems have become very complex today, especially the knowledge, content, and problems of server-side software and design. Using someone else's mature framework in some ways is equivalent to letting someone else do some basic work for you. You only need to concentrate on completing the business logic design of the system. In addition, the framework is generally mature and robust. It can handle many details of the system, such as transaction processing, security, and data flow control. There are also frameworks that are generally used by many people, so the structure is very good, so the scalability is also good, and it is constantly upgraded, you can directly enjoy the benefits of other people upgrading code.
The framework is generally located at the intermediate layer between the low-level application platform (such as J2EE) and the high-level business logic.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.