Modularization is a concept of "discovery" modularization (modularity), which is not so much an innovation as a "discovery ". This is the behavior and thinking process that people often use to solve problems. It is not a pure technical problem, but also deeply affects the whole social life. You can read <Design Principles: Modular Power>. This book is also mentioned in chapter 4th of <unxi programming art>!
There are two important ways to acquire knowledge: conclude and deduce. They are actually the differences between bottom-up and top-down. Human beings have inherent abstract thinking capabilities. The use of Metaphor in communication can greatly improve the efficiency. Too many trivial matters often affect our judgment, so we are always pursuing separation of priorities and simplifying problems. The development of society has brought about more and more diverse social division of labor. In Adam Smith's <wealth theory>, he talked about the inevitability of social division of labor. The whole world maintains a stable situation in terms of separation and integration, and there are also bottom-up and top-down points in the development situation.
Therefore, modularization is the embodiment of our habits of thinking. Its discovery is an inevitable result. It can be summarized as follows: 1. Information Hiding (abstract, black box ). 2. Division of Labor (orthogonal, aggregation ). The division of labor also makes it easier to achieve parallel development, which increases the development efficiency. While information hiding reduces the requirements on programmers and can better grasp the complexity of the module. Ultimately, it is an economic objective: low cost.
Economically, it defines a company's decision-making behavior. When the internal production cost is higher than the cost of purchasing in the open market, it will not be produced by itself, but will be switched to purchasing. That is, division of labor and cooperation. Modules are like different companies, with various interactions between upstream and downstream companies. When the company/module operates independently (low coupling), it only pays attention to the contract or contract (Information Hiding) between the company/module. This is modular. It can be viewed at a macro level (different companies or countries) or at a micro level (different departments or organs ). In addition, modularity is a dynamic process, which combines scores. Mergers and acquisitions may occur when the product lines of two companies are closely dependent on each other (the cost of internal production is superior to that of procurement in the market) or when similar (integration will produce a scale effect. When a product line within the company is differentiated from other product lines (better or worse, or the business objectives are inconsistent), it may be split.
The first element of modularization is role and responsibility (Role & responsibility, a concept in HR, which can cause some thinking .). If you focus only on the module, it is easy to cause local optimization, but the overall problem is not good. This is exactly the problem that the constraint theory should solve. Therefore, there must be standards. Define the target functions of a module at the system level, divide roles, and constrain the evolution of the module to ensure the optimal overall system.
The second factor of modularity is interfaces, including static interface definitions (Responsibilities) and dynamic interaction definitions (behavior patterns, how to collaborate, and Exception Handling ), it can also be summarized as a contract, which is technically called an interface ).
Therefore, the modular design requires planning roles from a large system perspective, and designing the details of collaboration from a small module perspective. There must be conflicts between them, and a relatively stable structure should be achieved through continuous evolution, this depends on the time and cost. * In software development, modularity has nothing to do with language. The key is the field, that is, the business issues. This has nothing to do with agility. What's different is the degree of modularization. Reprinted please pay attention to the Source: http://blog.csdn.net/horkychen
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