阅读笔记01

架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。为了对架构有更加深刻的理解和掌握如何进行架构,我阅读了《架构之美》这本书。这本书是来介绍系统的设计方法的。

首先对架构的基本概念进行了了解。在建筑,音乐,写作等各种行业都可以看到这个词的出现.架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉了另一些细节。软件系统的架构包括行为上的和结构上的。外部行为描述展示了软件如何与用户、其他设备和外部设备进行交互,也就是需求。结构描述展示了软件如何被划分为多个部分,以及这些部分的关系。

架构是系统设计的一部分,架构设计关注的侧重于组件的内部结构。架构的设计受到许多因素的制约,架构是好是坏并没有统一的标准。这取决于人们对软件的需求、软件被构建和运行的环境,以及软件团队本身的特点等等因素。评价软件好坏有很多指标,例如性能、安全、可伸展性等等。一般来说,这些指标是很难全部满足的,试图改进其中一个往往会对其他指标产生负面影响。所以从某种意义上来说,软件架构是折中的游戏。对于一组功能需求和品质需求,没有唯一的正确架构。

好的架构展示了架构完整性,减少复杂性,指导详细设计和系统验证。待构建的系统需要具备几点要求:具备客户要求的功能;能够在工期内安全的构造;性能好;可靠;可用;安全;成本适度;符合法规;超越竞争者/前人。因为没有一个系统能够同时满足所有要求,所以架构是一种折中,挑出最为重要的几点来实现。

软件系统就像是一座由建筑和后面的路构成的城市,本书使用抽象的例子两个软件城市生动的介绍了软件系统应处于哪种生存模式中。一个是“混乱的大都市”。并没有一套健康的架构,通过整个系统的阅读并不能清楚的各个之间的联系。这将带来一系列的后果。第一:导致这将成为一个很难让人理解的系统,这将几乎不可能修改。新加入项目的成员将不能理解系统。坏的架构设计又继续会招致更坏的架构。第二:缺乏内聚。每个组件本来应该有一个良好的角色,但是它们却包含了一堆杂乱的、不一定相关的功能。这很难弄清楚系统已经实现了哪些具体的功能。第三:代码的问题以及代码以外的问题。“大都市”的问题随着时间的推移问题将逐渐变的严重不可修复。从这里清楚的看到缺乏健康的架构的严重性。另一个则是与之相反的“涉及之城”与其最大的差异在于具有健康的架构。

通过这两者的比较来讲,我明白架构在软件中的重要地位。软件架构对新产品开发、产品线开发、软件维护以及软件升级都有很重要的作用。是沟通现实世界和计算机世界的一座桥。

时间: 2024-07-29 00:53:30

阅读笔记01的相关文章

<精通JavaScript>---阅读笔记01

下面是阅读精通JavaScript书做的相关笔记. JS中的函数重载 函数重载必须依赖两件事情:判断传入参数数量的能力和判断传入参数类型的能力,在js中每个函数都带有一个仅在这个函数范围内作用的变量,称之为参数argument,它是一个包含所有传给函数参数的伪数组,所以并不是正的数组,但是我们不可以去修改它.其实这个就相当于一个池,将参数全部都保存在里面,之后在用的时候去取,只是这个池我们看不见.是语言自己去找. JS中2种常见的类型检查 :typeof()操作符 typeof n==”stri

ijkplayer阅读笔记01

ijkplayer阅读笔记01 1.这章解决ijkplayer播放库初始化部分,直接贴上流程伪代码如下: IjkMediaPlayer_native_setup { ijkmp_android_create(message_loop){ mp->ffplayer->vout = SDL_VoutAndroid_CreateForAndroidSurface();{ SDL_VoutAndroid_CreateForANativeWindow();{ vout->create_overla

掌握需求过程阅读笔记01

掌握需求过程 第一章什么是需求 阅读笔记 我们为什么要进行需求呢? 这样是为了使效率更高,并且减少错误步骤所不必付出的代价. 在我们构造产品之前就要知道客户的需求是什么,大多数的组织都是通过系统分析来进行的,但是需求过程与系统分析并不是一回事,虽然他们之间有联系,但并不完全相同.除了系统分析以外,需求也是很有必要的.他可以对你的分析师生涯有更进一步的促进.当我们接触到一个新的产品时,业务事件和使用情况逐渐清晰了起来,系统分析可以对产品进行更清楚的建模,并为需求过程提供有价值的反馈.对需求的了解增

【ShaderLab】Cookbook阅读笔记01

<Unity Shaders and Effects Cookbook>阅读笔记,找了很久ShaderLab的教程......结合官网教程学习ShaderLab. 用一个最简单的Shader展示一下shader代码的结构: 第一行代码Shader后跟的是shader的名字,在给Material添加Shader时根据shader名找到对应shader: 以上这个再简单不过的Shader由Properties部分和SubShader部分构成. 其中Properties定义了一系列Shader中用到

《需求工程--软件建模与分析》阅读笔记01

该书为<需求工程--软件建模与分析>第二版,骆斌主编,丁二玉编著,高等教育出版社. 该书分为了五部分,今天的阅读笔记来谈谈第一部分绪论. 这一部分主要讲了:1.需求工程导论  2.需求基础  3.需求工程过程 第一小部分需求工程导论讲了软件生产中的需求问题,即:需求问题是当前软件开发面临的主要问题(无论是实践者的亲身体会还是各种调查数据),需求因素对项目的成败具有至关重要的影响.该书中也指明了综合上看来,需求因素对成功项目的影响指数为53.9%,对问题项目的影响指数为55.6%,对失败项目的影

《架构之美》阅读笔记01

一.阅读内容 第一章架构概述 第二章两个系统的故事:现代软件神话 二.笔记总结 (1)什么是软件架构? 其实在好多学科中都用到了"架构"这个词,大都表达了对所创造作品的描述,或者是对创造过程的计划.但是在软件专业中还有更具体的表达.软件架构不是一个简单的实体,软件架构师需要用多分文档来对软件的行为和结构进行描述,以此来形成软件架构.<软件架构实践>一书对软件架构的规范化定义是这样的,一个程序或计算机系统的软件架构是系统的一种结构或一组结构,包含了软件元素.软件元素外部可见的

程序员修炼三部曲阅读笔记01

看了程序员的修炼三部曲,感触颇多. 这本书主要分为九章,第一章绪论的部分主要是讲述本身一些结构,以及本书对一般的人的作用.第二章将根据徳雷福斯模型(稍后介绍)将人分为新手到专家的五个阶段.你可以根据描述准确的定为自己所处的阶段.三四五章是将自我认识的部分,主要是正对大脑.第三章讲述的是认识你的大脑,会让你对大脑的工作模式有更好的认识,之后当然是实践的第四章-利用你的右脑.大脑也会范错误,需要我们调试,就是第五章的调试你的大脑.在对大脑有了深刻的认识之后当然是关注如何提高了.后面的几章就是关于提高

javascript学习笔记01

第一天 由于自己学习过于草率,导致重新再走一遍学习流程的恶果,前段时间将html css 等相关前端比较基础的东西学了一遍 走一遍之后就觉得html和css就像是英语中26个大小写字母一样 是每一个web开发程序员必须懂的东西  不管是现在学习的javascript还是以后要学习的php都要将所编写的代码嵌入到我们的html文本中的  是在他上面运作 起作用的  总的来说再次走了一遍 觉得html没有太强的逻辑性 多的就是多实践多积累 将元素和属性名记到指尖中去  关键是布局的兼容性问题是一个难

《构建之法》阅读笔记01

这一学期,开始了健民老师的软件工程概论课,早就听闻健民老师的软件工程概论课很牛,听了两节课下来,果然如此. 老师引用了<构建之法>书中的理念,认为软件不是靠着理论堆积而成,而是一个个实发的项目组成的,在课上,老师引用了书中的例子来形容学生和老师的关系. 1.餐馆服务员/食客 2.老板/雇员 3.保姆/幼儿:像保姆一样操办一切 4.哥们/哥们:一起混吧 5.路人甲/路人乙 6.狱警/犯人:想法点名/想法逃课 7.健身教练/健身学员:鼓励成长 当然,大家都更加喜欢7,希望能够获得更多的编程技能和知

《大型网站技术架构核心原理与案例分析》阅读笔记-01

通过阅读该书籍我们能够更加清楚的树立大型网站的的技术发展历程,剖析大型网站技术架构模式,深入的讲述大型互联网架构核心原理,并通过一些典型的技术案例来讲述大型网站开发全景视图,该书籍深入的阐述了各种大型网站面临的各种架构问题及解决方案. 在第一章第一篇大型网站架构演化中了解到与传统企业应用系统相比,大型互联网应用系统具有高并发大流量.高可用性.海量数据.用户分布广泛,网络情况复杂.安全环境恶劣.需求快速变更,发布频繁.渐进式发展等特点:大型网站架构演化发展历程经历了初始阶段的网络架构它的应用程序.