《代码大全(第二版)》阅读笔记03

我们总是会从老师那里听到关于软件架构之类的话,但是事实上并不怎么了解,通过这本书,我了解了更多的关于架构的知识。

软件架构是软件设计的高层部分,是用于支撑更细节的设计的框架。架构指的是适用于整个系统范围的设计约束,而高层设计指的是适用于子系统层次或多个类的层次上的设计约束(但不是整个系统范围的设计)。而且架构的质量决定了系统的“概念完整性”。继而决定了系统的最终质量。一个经过慎重考虑的架构为“从顶层到底层维护系统的概念完整性”提供了必备的结构和体系,它为程序员提供了指引---其细节程度与程序员的技能和手边的工作相配。好的架构使得构建活动变得更容易,糟糕的架构则使得构建活动几乎寸步难行,在构建期间或者更晚的时候进行架构变更,代价也是高昂的。

系统架构首先要以概括的形式对有关系统做一个综述。在架构中,我们应该能发现对那些曾经考虑过得最终组织结构的替代方案的记叙,找到之所以选用最终的组织结构,而不用其他替代方案的理由。描述其他组织结构,才能说明架构最后选定的这种系统组织结构的缘由,并且表明各个类都是慎重考虑过的。有一份对设计实践的综述发现,“维护”设计的缘由至少与“维护设计本身”一样重要。

架构应该定义程序的主要构造块。根据程序规模不同,各个构造块可能是单个类,也可能是由许多类组成的一个子系统。每个构造块无论是一个类还是一组协同工作的类和子程序,它们共同实现一种高层功能,诸如与用户交互、显示web页面、解释命令、封装业务规则、访问数据等等。每条列在需求中的功能特性都至少应该有一个构造块覆盖它。如果两个或多个构造块声称实现同一项功能,那么它们就应该相互配合而不会冲突。

应该明确定义各个构造块的责任。每个构造块应该负责某一个取余的事情,并且对其他构造块负责的区域知道的越少越好。通过使各个构造块对其他构造块的了解达到最小,你能将设计的信息局限于各个构造块之内。对于每个构造块,架构应该描述它能直接使用哪些构造块,能间接使用哪些构造块,不能使用哪些构造块。

架构应该详细定义所用的主要的类。它应该指出每个主要的类的责任,以及该类如何与其他类交互。架构应该描述所用到的主要文件和数据表的设计,应该详细定义所用数据库的高层组织结构和内容。架构应该描述一份管理稀缺资源的计划。架构应该描述实现设计层面和代码层面的安全性的方法,在架构阶段建立威胁模型。

架构不应该包含任何对我们而言很难理解的东西,因为我们就是那个实现架构的人。

时间: 2024-11-05 23:38:13

《代码大全(第二版)》阅读笔记03的相关文章

掌握需求过程阅读笔记01

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

《敏捷软件需求》阅读笔记03

今天我阅读了<敏捷软件需求>的第三章<团队的敏捷需求>.在敏捷方式中,对需求工作的组织和对团队本身的组织不是彼此独立的.相反,敏捷团队是围绕需求进行组织的,以便优化代码的定义.构建与测试以及向终端用户交付价值的效率.敏捷团队的基本工作单位是用户故事,团队的目标是在迭代时间盒内,定义.构建和测试一定数量的用户故事,在迈向发布的过程中逐渐实现更大的价值.  对每个故事的实现可以采用相同的模式:定义故事.编写代码和测试用例.针对代码运行测试. 在每支敏捷项目团队中有三种角色:产品负责人.

掌握需求过程阅读笔记—2

通过对事件驱动的用况.网罗需求.功能性需求这三个章节的阅读.使我们明白了在事件的驱动用况上,我们需要通过一些经验法则来定义用况,发现合适的用况:在网罗需求上,我们最需要做的就是进我们的一切可能去罗列用户的需求,并能及时的与用户沟通交流,确保产品符合最新的要求:在功能性需求方面上我们应当明白它是因为产品的存在的根本原因而存在的需求,它描述的是产品的动作,并能够形成一份完整的尽量避免二异性的功能描述. 事件驱动的用况是业务实践相应(活动和数据)的一部分,这些事件响应有产品来执行.用况成为了需求的锚,

《掌握需求过程》阅读笔记03

我们都知道要站在用户的角度考虑问题,可是作为用户的我们也是存在思考的缺口的,那些根深蒂固的东西会使我们忘记了它们的存在,这就是未意识到的需求.还有未梦想过的需求,我们习惯了类似软件拥有的功能,未曾想过一些新的功能,在我们看来,技术还没有成熟.作为软件工程师,我们一定要在初期让这种需求浮现出来,否则后续阶段发现会付出太多代价. 开始阶段我们会画上下文范围图,输入输出流表示数据的流向,如果画图过程中有不知去向何处的数据流,那正是我们需要向用户询问的地方.需求调研是主动的,用户在工作的时候才能精确描述

《探索需求》阅读笔记二

在任何相当规模的开发项目当中,孤军奋战显然是像是一种幻想,为了获得一个团队所能提供的容量和差异性,我们必须放弃任何个人英雄主义的幻想,为和他人合作付出代价.而这种人际的花费在会议中体现的最为明显,会议也是一种工具,一种社交工具.很多人都会感觉会议是很可怕的,它有的时候并不会产生什么效果,但是我们离不开它,一旦离开会议,就只能开发出最简单的产品.每一个会议能达到的结果是度量需求工作的健康状态,一个糟糕的会议,说明了需求过程的不完善.要想每一个参与者都完全的参与进会议中,这个会议就必须是稳定的,我们

《探索需求》阅读笔记一

这本书主要讲述关于开发项目的问题,讨论的主题是问题陈述或需求集合,需求在很多方面都是非常重要的.我们通常使用的是需求映射图而不是需求本身,所以我们需要探索许需求. 一旦在探索需求过程中使用了忽略了人的因素的工具,就不可能完美的描述需求,这会造成含混性,同时当需求被明确说明,但是使用了含混的词语也导致含混性问题的出现.含混性需要成本而且对于我们解决问题产生巨大影响,即可以发现需求含混性的重要性,所以在探索需求过程中要及时尽早地消除含混性,使用一些可以很好的抑制含混性的探索需求工具.许多含混性不一定

《软件需求模式》阅读笔记03

在对需求模式的概念和内容方面有了深刻的了解之后,我将学习各类不同的需求模式. 基础需求模式是所有种类的系统都可能需要的一些东西,它包括了:技术.遵从标准.参考需求.文档.系统间接口.系统间交互.系统间需求模式是用来定义被定义的系统和任何与之交互的外部系统或组件之间的接口的基本细节,它包含了以下内容:接口名称.接口标识符.两端的系统.接口的目的.接口的所有者.定义接口的标准.用于接口的技术.在开发测试的时候,我们应该明确交互需求,找到隐含的交互以帮助满足间接陈述的目标.系统间交互需求模式是用来定义

《软件需求》阅读笔记之二

这次阅读的是这本书的第二部分,这部分内容相对较多,所以还没有看完.这部分介绍了一些文档的主要内容.首先是项目视图和范围文档的模板,书中一一介绍了这个文档中应该包括的内容.主要就是业务需求,项目视图的解决方案,范围和局限性,业务环境,产品成功的因素.所以,我们在做项目的时候,无论如何都要注意这个项目的范围,所想到的不要超出范围.有时候你感觉好的功能用户可能并不需要.所以,明白项目范围,并在范围内进行工作相当重要.我们所用到的需求基本全部来自于用户,获取用户需求的方式也相对较多,在获取某用户群体的需

构建之阅读笔记03

1.我认为在团队合作的过程中,编写程序之前,应该要首先规范命名,通过第四.五章我知道了,作为一个软件工程师不仅要有出色编程能力还要有对代码注释的意识,因为在团队工作中,你如果不注释你写的代码,那么当你有事,别人接手你的代码时,就会遇到很大的问题,他需要一点一点读懂你的代码,这会对团队的进程造成影响.我们还要在编写程序前先要对代码的命名和缩进等问题进行同一的规定,这样会使得团队的进程得到很快的发展. 2.在团队合作中,刚开始也许我们并不知道应该怎样进行合作,通常我们都是自己编程,没有和其他人合作的

《构建之法》阅读笔记03

我一直认为软件工程就是用很好的方法设计出很好的软件.那么这个过程从头到尾都要好好研究,然而刚开始的阶段并不是软件开发的开端,而是对用户的需求分析,是想,如果我们都没有把用户内心里真正想要的东西搞清楚,怎么能够开发出来令用户满意的软件呢? 软件的需求共有三类: 获取和引导需求:软件团队要找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求. 分析和定义需求:对各个方面的需求进行规整,定义需求的内涵,从各个角度将需求量化. 验证需求:软件团队用各种形式向用户验证软件团队对需求