杏仁技术站



杏仁技术站

书中最后总结了系统架构的二十六个原则,我摘录在这里供大家参考:

涌现原则:当各实体拼合成一个系统时,实体之间的交互会把功能、行为、性能和其他内在属性现出来。

整体原则:每个系统都作为某一个或某些个大系统的一小部分而运作,同时,每个系统中也都包含着更小的一些系统。

聚焦原则:在任何一个点上都能发现很多影响系统的问题,而其数量已经超出了人们的理解能力。因此,我们必须找出其中最关键、最重要的那些问题,并集中精力思考它们。

二元原则:所有由人类构建而成的系统,其本身都同时存在于物理领城和信息领域中。

受益原则:好的架构必须使人受益,要想把架构做好,就要专注于功能的涌现,使得系统能够把它的主要功能通过跨越系统边界的接口对外展示出来。

价值与架构原则:价值是有着一定成本的利益。架构是由形式所承载的功能。由于利益要通过功能而体现,同时形式又与成本相关,因此,这两个论述之间形成一种特别紧密的联系。

与特定解决方案无关的功能原则:糟糕的系统规范书总是把人引向预先定好的某一套具体解决方案、功能或形式中,这可能会令系统架构师的视野变窄,从而不去探素更多的潜在选项。

架构师角色原则:架构师的角色是解决歧义、专注创新,并简化复杂度。

歧义原则:系统架构的早期阶段充满了歧义。架构师必须解决这种歧义,以便给架构团队定出目标,并持续更新该目标。

现代实践压力原则:现代产品开发过程是由同时工作着的多个分布式团队来进行的,而且还有供应参与,因此,它更加需要有优秀的架构。

架构决策原则:我们要把架构决策与其他决策分开,并且要提前花一些时间来道慎地决定这些问题,因为以后如果想变更会付出很高的代价。

遗留元素复用原则:要透相地理解遗留系统及其现属性,并在新的架构中把必要的遗留元素包据进来。

产品进化原则:系统必须进化,否则就会失去竟争力。在进行架构时,应该把系统中较为稳固的部分定义为接口,以便给元素的进化提供便利。

开端原则:在产品定义的早期阶段列出的(企业内部和企业外部的)利益相关者会对架构产生极其重大的影响。

平衡原则:有很多因素会影响并作用于系统的构想、设计、实现及操作,架构师必须在这些因素中寻求一个平衡点,使大多数重要的利益相关者得到满足。

系统问题陈述原则:对问题所做的陈述会确定系统的高层目标,并划定系统的边界。就问题陈述的正确性进行反复的辩论和完善,直到你认为满意为止。

歧议与目标原则:架构师必须解决这些歧义。以便提出几条有代表性的目标并持续地更新它们。这些目标要完备且一致,要兼具挑战性和可达成性,同时又要能够为人类所解决。

创新原则:在架构中进行创新,就是要追求一种能够解决矛盾的好架构。

表面复杂度原则:我们要对系统进行分解、抽象及分层,将其表面复杂度控制在人类所能理解的范围。

必备复杂度原则:系统的必备复杂度取决于它的功能,把系统必须实现的功能仔细描述出来。然后选择一个复杂度最低的概念。

第二定律原则:系统的实际复杂度总是会超过必备复杂度。架构师要令实际复杂度尽量接近必备复杂度。

分解原则:分解是由架构师主动做出的选择。分解会影响性能的衡量标准,会影响组织的运作了式及供应商的价值捕获潜力。

二下一上原则:要想判断出对 Level1 所做的分解是否合适,必须再向下分解一层,以确定 Level2 的各种关系。

优雅原则:对于身处其中的架构师来说。如果系统的必备复杂度较低,而且其分解方式能够同与多个分解平面相匹配,那么该系统就是优雅的。

架构健壮程度原则:好的架构要能够应对各种各样的变化。能够应对变化的那种架构,要么是比较健壮架构。要么是适应能力比较强的架构。前者能够处理环境中的变化,而后者则能够适环境中的变化。

架构决策的耦合与整理原则:可以按照指标对决策的敏感度以及决策之间的连接度来排定架构决策之间的先后顺序。


Read full article from 杏仁技术站


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts