系统架构的过程 浮现式设计

系统架构如果设计之初就设计错了,那么必然是南辕北辙。

很多人做系统设计总是东一下,西一下,杂乱无章,想到那是那,然后系统的边界很大,总会有疏漏。

那么系统架构应该怎么设计呢?

首先来说分层 系统分为三层,数据层 视图层 业务层

数据层  包含数据存储和数据交互,应该是纯数据操作和业务无关

业务层 自然就是service层这是最多变的一层

视图层 接口

 

那么系统设计应该按照什么顺序呢?

应该是先设计数据层,如果数据层设计错了那么整体就会事倍功半。

所以这是一个自底往上的过程。

但是,上并不是到业务层,而是视图层,因为你的一切设计都是围绕对外,如果你的接口没有使用使用价值整个系统也就变得没有价值。

好,当你设计好视图和数据那么自然而然的就是通过业务层来衔接这两层。

这两层实际上都没有什么变化,系统架构要的就是不断的抽象分离出不变的东西,治理变化的部分!

这样,整体系统设计就是一点点浮现出正确需要的部分,而不是胡乱拼凑的。

已标记关键词 清除标记
相关推荐
  浮现设计是一种敏捷技术,强调在开发过程中不断演进。《浮现设计:专业软件开发的演进本质》的讨论围绕着专业软件开发方法的演进主题展开,强调了让软件成为一个真正专业的重要性,以及以演进方开发软件的重大意义。书中谈到了如何在演进过程中综合运用设计、重构、单元测试和测试驱动开发等实践,以及何时制定耦合、内聚和封装等关键决策,而且通过准确生动的示例说明了如何开发出真正有用的软件。   《浮现设计:专业软件开发的演进本质》主要面向软件开发者群体,尤其是对敏捷开发感兴趣的程序设计人员。 第1章 软件开发这个职业 1 1.1 人类制作软件已经有多久的历史了 1 1.2 软件开发是一种什么样的活动 2 1.3 软件开发缺少了什么 4 1.4 谁说了算 6 1.5 独特性 6 第2章 从衣橱到探月 8 2.1 软件开发中的模和专业化 8 2.2 Andrea的衣橱 9 2.3 探月 13 2.3.1 因素的连锁变化 16 2.3.2 不同的因素导致不同的设计 16 2.3.3 还有更多环境因素 17 2.3.4 成本和获益 18 2.3.5 火星探险 18 2.4 模的价值 19 2.5 小结 20 第3章 软件开发的本质 21 3.1 失败率过高 21 3.2 成功的定义 22 3.3 Standish Group 23 3.4 做了错误的事情 24 3.5 做事的方错了 25 3.6 随着时间的推移,软件开发也有所改善 27 3.7 一个原因:土木工程的类比 27 3.8 放弃希望 29 3.9 有时等待和拖延也是必要的 30 3.10 桥是硬的,软件是软的 30 3.11 我们在变化的海洋中游泳 31 3.12 接受变化 31 3.13 拥抱变化 32 3.14 利用变化 32 3.15 更好的类比:不断演进的系统 34 3.16 小结 37 第4章 代码的演进:初级阶段 38 4.1 用对象结构来代替过程逻辑 38 4.2 面向对象和模的起源 39 4.3 一个示例:简单条件和Proxy模 40 4.4 下一步:多路径条件选择 43 4.5 为什么要采用对象结构 45 4.6 从多个条件中选择一个 46 4.7 小结 46 第5章 使用和发现模 48 5.1 根据上下文进行设计:我做的另一个木匠活 48 5.2 模引出了另一个看问题的角度 55 5.3 模提供了一种讨论设计的语言 55 5.4 本书中的模 56 5.5 小结 56 第6章 软件开发金字塔 58 6.1 构成专业的元素 58 6.2 一种形象的表示 60 6.3 小结 60 第7章 注重软件质量 61 7.1 封装 62 7.2 内聚 62 7.2.1 方法内聚 63 7.2.2 视角层的内聚 65 7.2.3 类内聚 66 7.2.4 内聚到何种程度才足够 67 7.3 耦合 67 7.3.1 有意耦合与意外耦合 68 7.3.2 耦合类型 69 7.4 冗余 73 7.5 可测试性 77 7.6 可读性 78 7.7 软件的病症 79 7.7.1 内聚性较差的信号 79 7.7.2 意外耦合或不合逻辑耦合的信号 80 7.7.3 冗余的信号 81 7.8 小结 81 第8章 注重原则和智慧结晶 83 8.1 使用与创建分离 83 8.1.1 Fowler的三层视角 83 8.1.2 另一种视角 84 8.1.3 使用的视角 85 8.1.4 一个单独的视角:创建 86 8.1.5 最后考虑构造细节 87 8.1.6 回到现实 88 8.2 开闭原则 89 8.2.1 类级的开闭原则 90 8.2.2 方法级的开闭原则 91 8.3 依赖倒置原则 92 8.4 GoF的建议 93 8.4.1 设计方法的接口 93 8.4.2 设计类的接口 94 8.4.3 GoF:优先使用对象聚合而非类继承 95 8.5 GoF:在设计中思考什么应该变化并封装会发生变化的概念 98 8.6 小结 100 第9章 注重实践 101 9.1 统一编码风格 101 9.1.1 注释 102 9.1.2 命名类、方法和变量 103 9.1.3 编码标准的好处 104 9.2 意图导向编程 105 9.3 封装构造函数 107 9.3.1 原则与实践 110 9.3.2 做出决定 110 9.4 公共性-可变性分析 111 9.5 实践与自由 114 9.6 小结 115 第10章 注重纪律:单元测试 116 10.1 测试的经济学 116 10.1.1 单元测试 117 10.1.2 先写测试 119 10.2 JUnit框架 120 10.2.1 JUnit基础知识 121 10.2.2 JUnit示例 122 10.2.3 Rule.java:先编码,再测试 122 10.2.4 RuleContainer.java:先测试,再编码 128 10.2.5 消除冗余:@Before和@After 135 10.2.6 自动化批量测试 137 10.2.7 异常和单元测试 139 10.3 模拟对象 141 10.3.1 MockObject框架 142 10.3.2 伪对象 145 10.3.3 依赖注入和Endo-Testing技巧 146 10.3.4 Endo-Testing 147 10.4 小结 148 第11章 注重纪律:重构 149 11.1 重构质量糟糕的代码 150 11.2 重构质量优秀的代码 151 11.3 结构变化与功能变化 152 11.4 重构可帮助你做出选择 153 11.5 模可以成为重构的目标 154 11.6 避免重构:预构 154 11.7 重构技巧 155 11.8 重构遗留代码 162 11.9 小结 164 第12章 测试驱动开发 165 12.1 何谓测试驱动开发 165 12.1.1 测试驱动与先写测试 165 12.1.2 从单元测试的角度来设计 166 12.2 测试与质量 167 12.2.1 测试与内聚 167 12.2.2 测试与耦合 168 12.2.3 测试与冗余 169 12.3 测试驱动开发与模 169 12.3.1 Strategy模 169 12.3.2 乌龟站在乌龟上,一直向下 170 12.3.3 模拟对象/模拟乌龟 171 12.4 模拟对象 172 12.5 模拟乌龟 174 12.6 测试Decorator模 174 12.7 小结 178 第13章 模与因素 179 13.1 在演进的设计中做决策 179 13.2 Christopher Apexander与他所提出的“因素” 180 13.2.1 信号处理器示例 180 13.2.2 PKZip示例 184 13.2.3 测试与因素 186 13.3 更多选择,更多因素 187 13.4 小结 190 第14章 浮现设计:案例分析 191 14.1 问题领域:MWave公司 191 14.2 团队 192 14.3 最简单的能够正常运作的设计 194 14.4 新需求:更复杂的机器 196 14.5 顺便介绍一下 198 14.6 更多好消息 199 14.7 小结:设计是一次漫长而奇特的旅行 200 第15章 结束语:展望2020年 202 附录A 演进路径 204 附录B 示例中用到的模简介 213 附录C 有用幻觉之原理 274 参考书目 279
本书为我们作了一个对产生编程的精彩介绍,它注定会成为一部经典之作。作者精心讲述了领域特定语言和产生编程之间通常为人所忽视的联系,并把这种联系作为未来开发的一个推动因素。广大的开发人员完全可以把书中丰富而且实用的方法当做可以立即应用的首要步骤……而且,无论是使用现存系统,还是为正在出现的新产生技术而做准备,它们都是价值不凡的。”    ——微软研究院总构架师、意图编程的发明者    “本书围绕‘统一那些本来支离破碎的东西’这个原则,逐步展开了一些令人印象深刻的主题,主要包括领域工程和元程序设计。关键是要理解,本书并不是某种新颖的变换,也不仅仅是对某些值得关注的边角技术的阐述:它是一种更加广泛的启蒙运动的先锋官,这种运动打开了一扇通向一个新时代的大门。”    ——摘自由iamescoplien所作的前言,coplien是朗讯贝尔实验室中一位声名卓著的技术专家    产生编程(generative programming,gp)为应用程序开发人员提出了十分美妙的承诺。它使“从‘一种一个’的软件系统向自动制作软件的各不相同的变体发展”这种思路变得十分真实可信。简单地说,gp以“确定软件开发中自动化的好处”为中心。本书包括了将帮助你设计和实现一个系统族的“正确”组件,以及自动组合组件的方法和工具。这里提出的方法可以应用到所有的商用开发中——从类和过程的层次上的“微观编程”(programming in the small),到“宏观编程”(programming in the large),就是说开发大型系统的家族。    本书是对这种正在浮现的规程的完整指导和参考。它提供了对以下这些关键技术和主题的深入探讨: ●领域工程 ●特征建模 ●泛型编程 ●面向方面的编程 ●使用c++的模板元程序设计 ●产生器 ●微软的意图编程    使用本书你将会学习到如何组合这些技术,以及(也是更加重要的)如何在实践中运用它们。书中包括来自三个不同领域的完整的案例研究:程序设计领域(容器数据结构)、业务领域(银行业务)以及科学计算(矩阵计算)。    krzysztof czarnecki是德国乌尔姆daimler chrysler研究和技术中心的一位研究员和顾问。他在对华盛顿redmond的施乐palo alto研究中心和微软研究中心进行访问研究期间,取得了面向方面编程和意图编程的第一手经验。他在萨克拉门托的加利福尼亚州立大学获得了计算机科学的学士学位,在德国的ilmenau大学获得了计算机科学的硕士学位和博士学位。    ulrich w.eisenecker是zweibrucken的凯泽斯劳滕应用科学大学的一位计算机科学教授,在那里他主管组件和窗口接口部门。在大学职业生涯以前,他在工业界度过了大约十年时间。他是德国,下杂志《objektspektrum》的一种组件软件专辑增刊的编辑,他还为之撰写了一个c++专栏。他已经发表了一百多篇文章,并且经常在国内和国际肝会议上讲演。
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值