《软件方法》潘加宇 读书笔记

设计源于需求却高于需求。

《软件方法》上册(五章)所表述的逻辑:

愿景 ------ 业务建模 ------ 需求 ------ 分析 ------ 设计

1. 愿景: 明白软件的意义是什么,帮助或者提高了现有系统的那些方面,减少了那些成本。

利润 = 需求 - 设计

这个公式成立的前提是需求都已经实现,不同的设计会花费不同的成本。但看完上篇,我觉得应该改一改:  利润 = 业务 - 设计。  整个软件制作的过程中,真正的价值和输出是业务,对业务有什么帮助、提高或者减少业务成本。从业务的分析、愿景再到需求的分析之间有一定的距离和不同的理解方式,这一点也很重要。

2. 业务建模:研究 业务用例和业务对象。 业务建模主要是研究这个组织,描述现在的业务事实,划分业务的边界,分析出各个参与方的现象及状况。 反过来给组织一个购买系统的理由,给系统赋予实际的价值。

注:业务和需求分析是两个方面,业务注重对现实的描述,需求是针对于系统的分析。业务不一定和需求是一一对应的关系。业务是现实的描述,一般是不会变化的;但需求可以用不同的方式实现,并且从不同的角度出发看业务时,看到的需求也是不一样的。

3. 需求 : 研究系统系。统执行者,是指系统外与该系统发生功能性交互的其他系统。 系统用例,系统为执行者提供的、渉众可以接受的价值。 系统用例的粒度,从业务的角度出发去思考这个问题,用例就是为了给系统的执行者用。

  • 第一章 建模和UML

1. 该章主要讲软件方法的价值和思路,然后确定本书的观点:建模和软件开发完美的工作流【业务建模-需求-分析-设计】

2. 各个义务模块思考的焦点不一样,从上到下是有严格先后顺序的。

  • 第二章 愿景

1. 回答问题,“在老大看来,为什么要引进这样的系统?”

2. WHO的问题:分析清楚相关的涉方,涉及到的组织和系统,利益相关方。

3. WHY的问题:为什么要做这些,现在遇到的问题是什么,系统需要提高那一部分,或者减少那一部分的开销。

4. 设定可度量的目标,量化系统的指标和价值。

5. 分析利益相关方,从不同的涉方去看待系统,明确系统的定位。

  • 第三章 业务建模 之 业务用例图

1. 中心思想:软件是组织的零件。书中认为组织和人都可以当做是一个系统,而有没有软件组织都可以进行下去。所以软件就是组织的零件,在业务建模和描述业务的过程中找到组织的弱点,可以改进的地方和可以用系统来代替的地方。然后确定系统的作用,进而分析和设计系统。

2. 用例分析对象是现存的组织,分析流程:  选定要改进的组织--组织的业务用例图

3. 选定要改进的组织:

a). 分析现有的业务组织,列出现有相关业务的参与方;

b). 通过愿景的分析,将涉方画在一个圈里作为研究对象, 这里的涉方有可能是系统,也有可能是组织,也有可能是一个人;

c). 从客户的角度分析现有各个组织的功能,可以利用时序图和用例图分析,搞清楚面对客户和提供某一项服务时,各个系统之间的协作状况;

d). 寻找可以改进的地方和系统的价值所在,在时序图的分析完成之后可以观察时序图,找到系统所要实现的业务模块。

4. 组织业务用例:

a). 业务的执行者:选定要改进的组织之后需要分析系统所承担的业务。第一就是要找到业务的执行者,业务的执行者可以是其他的组织,个人。【肯定是相关组织,业务的分析都是从组织层面的分析】

b). 业务工人和业务实体。业务工人不是系统的执行者,不能和组织内的人混淆,是在组织中的人肉系统。业务执行者喝业务工人,一个在系统的外部一个在系统的内部。但这种的关系随着业务的边界有可能变化,如果包含在业务边界内部,就是业务工人,如果在业务系统的外部就有可能是业务的执行者。业务实体也是在业务边界以内充当着一定的职能,有可能是从业务工人中分离出来的机器,比如银行业务员和点钞机,银行业务员就是业务工人,点钞机就是业务实体,点钞机一定程度承担和业务工人的一部分责任,是从业务工人中分离出来的。

c). 业务用例图: 通过业务时序图来抽象系统的用例,将业务的时序图简化为用系统零件代替。用新流程替代旧流程,明确业务执行者对相关的组织的期望是什么,是具体对哪个组织的期望。

5. 业务用例的分析目的:明确系统的价值和系统对外提供的功能,以及系统会不会达到第一点所提到的愿景。

  • 第四章  业务建模 之 业务序列图

1. 中心思想: 在业务用例分析清楚以后,开始描述业务用例的实现,系统所承担的业务流程是怎么样的,以便之后推导出有待开发的系统用例图是什么样的。

2. 业务流程描述的方法: a). 文本; b). 活动图,泳道图,分清楚各个业务组织之间的边界; c). 序列图,时序图:只涉及相关的组织和人,分析清楚交互的动作是什么,交互的内容是什么。

3. 业务序列图的要点: a). 序列图中的箭头消息代表责任而不是数据流,代表承担的功能业务是什么; b). 重点聚焦于系统之间的协作是什么,系统之间的交互是怎样的; c). 只需要关心核心模块的相关的分析; c). 可以把时间作为系统的特殊业务实体。

4. 业务建模的步骤:

现状业务序列图----改进业务序列图

a). 现状业务序列图: 现状不是纯手工,现状不是规范,根据业务序列图要点画出现状业务序列图,了解认识现状,但不能以要分析的业务系统为中心拼凑。

b). 改进业务序列图: 分析清楚现状之后寻找业务改进的地方。思考的点:信息化、模块划分、职责划分、流程简化、信息流改善、封装领域逻辑。【阿布思考法:假设有充足的资源解决问题,得到一个完美方案;用手上现有的资源得到一个完美的方案】

  • 第五章 需求 之 系统用例

1. 需求研究的对象是系统,业务研究的对象是组织。他们之间的研究对象不一样,分析的目的不同。

2. 系统执行者:在所研究的系统之外,能够与该系统发生功能性交互的其他系统。

a). 特点是:系统外、交互、功能性交互、系统。系统外:通过业务用例和业务序列图的分析,明确系统的边界,系统边界之外的都是系统外。交互:系统的执行者除了是系统之外的还必须与系统发生交互,也通过业务用例分析的涉众来明确是否与系统发生交互。功能性交互:系统的执行者喝系统之间发生的交互是系统的功能性需求,从系统执行者来看是执行的利益点。系统:系统可以是一个人肉系统,也可以是一个非人智能系统,甚至是一个特别的外部系统(时间)。

b). 如何识别系统的执行者:通过业务建模,识别系统的交互对象。从业务的序列图种映射系统的执行者。

c). 用例的主执行者和辅助执行者:箭头的指向是主动的访问和消息。从用例指向的外部执行者就是辅助执行者。

3. 系统用例:系统能够为执行者提供的、涉众可以接受的价值。从执行者出发,是执行者的利益诉求点;从系统出发,是系统对相关组织的价值意义。用例思考的过程就是发现价值的过程,从两方面考虑,业务执行者的利益诉求点是什么,系统能够提供的功能是什么。

a). 用例的粒度问题:把握住用例是面向系统,提供给执行者的用例,需要满足执行者的诉求点。

b). 用例是执行者的动作,并不是面向数据库的CURD。用于和动词也必须是执行者能够理解的,在业务序列图种的交互动作。

c). 如何识别系统用例:在业务序列图中,从外部指向系统的交互消息,可以映射为该系统的用例。需要明确系统的边界在哪里。

4. 需求分析中的系统用例可以直接由业务的分析而来,通过业务用例分析,到业务序列图,然后从业务序列图映射到系统的用例。

  • 总结

面向对象是一种方法论,怎么去认识真实的世界,是一种思想理论。 UML是用面向对象的思想,分析真实世界的工具和交流的语言,将真实世界翻译成与软件行业交互的语言。《软件方法》中讲述了怎么去按照面向对象的思想,用UML分析真实世界,指导帮助开发软件的方法。

null

时间: 2024-08-01 10:57:52

《软件方法》潘加宇 读书笔记的相关文章

《代码阅读方法与实践之读书笔记之一》

阅读代码是程序员的基本技能,同时也是软件开发.维护.演进.审查和重用过程中不可或缺的组成部分.<代码阅读方法与实践之读书笔记之一>这本书围绕代码阅读,详细论述了相关的知识与技能.我希望通过仔细阅读并学习本书,可以快速地提高我的代码阅读的技能与技巧,进而从现有的优秀代码.算法.构架.设计中汲取营养,提高自身的开发与设计能力.此次读了此书的前四章,以下是我从中汲取到的宝贵养分: 从第一章<导论>一节中我体会到了我们要养成一个经常花时间阅读别人编写的高品质代码的习惯,因为阅读高品质的代码

《软件测试方法和技术》 读书笔记

<软件测试方法和技术> 读书笔记 2014-07-17 第一章 引论  1.3 什么是软件测试  1.4 软件测试与软件开发的关系第二章 软件测试基本概念  2.1 软件缺陷  2.3 软件测试的分类  2.4 测试阶段  2.5 软件测试的工作范畴第三章 软件测试方法  黑盒测试    边界值测试    等价测试      报表日期      三角形    基于决策表的测试      NextDate函数  白盒测试    语句覆盖    判定覆盖    条件覆盖    判定条件覆盖   

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

新学期开始,新的阅读也随着开展起来.在老师众多推荐书籍中我选择了这本<需求工程-软件建模与分析>.首先,作为我们的教材这本书应该对软件需求有着详细的介绍,并且能作为教材相信它的知识理论有一定的体系结构,对我来说阅读刚好适合.在初学阶段我对软件需求工程并不是很了解,可以说是白纸一张,阅读这本书刚好可以丰富我的基础理论知识.同时作为教材我手中刚好有这本书,阅读起来也是十分方便.总之,在众多的原因下我开始了对这本书的研究. <需求工程-软件建模与分析>这本书分为五部分,这一阶段我主要浏览

《需求工程——软件建模与分析》读书笔记二

前一阵子,继续读了<需求工程——软件建模与分析>.之前了解了需求工程的概论和需求的捕获,分别讲了需求捕获中的困难.获取信息的方法和来源:学会分析项目的前景:确定系统边界:涉众分析与硬数据采集:在需求捕获时的方法:面谈,问卷调查,头脑风暴,原型,观察与文档审查: 这次读的主要是介绍需求分析和需求文档化和验证.其中介绍了需求分析技术,需求分析方法等:建模(过程建模,数据建模,面向对象建模):需求规格说明:需求验证. 经过这次读书,我发现需求获取的根本任务是:1.建立分析模型,达成开发者和用户对需求

大数据管理:数据集成的技术、方法与最佳实践 读书笔记三

7.1 什么是数据仓库 数据仓库是基于特定的数据结构(以及有关应用程序)所构建的数据的中央存储库,以便为分析和报表提供 一致的数据源.面向整个组织创建的企业数据仓库(Enterprise Data Warehouse,EDW)用于对整个组织的信息 进行分析.大多数情况下,超大型组织中会有多个企业级数据仓库,每个都拥有组织中某个很大组成部分的数 据,如某个区域,或者很大的功能域.批处理数据集成方案通常用于将数据置入或者移出数据仓库.数据仓库架 构的设计要达到以下目的:为整个组织的分析提供一致可用的

《需求工程——软件建模与分析》读书笔记三

最近读完了<需求工程——软件建模与分析>这本书,这次我主要读了第五部分“需求管理与工程管理”,分为三章,需求管理.需求工程的过程管理.需求工程中的项目管理. 需求管理中包括维护需求基线,实现需求跟踪,控制变更,实践中需求管理.需求管理的重要任务:交流涉众的需要,将需求应用.实施到解决方案,驱动设计和实现工作,控制变更,将需求分配发到子系统 , 测试和验证最终产品,控制迭代式开发中的变化,辅助项目管理.在需求开发活动之后,需求基线应该成为后续软件系统开发的工作基础和粘合剂:第一,项目管理者根据需

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

随着学习的进行,我的阅读也在继续,在第一阶段读完<需求工程——软件建模与分析>的第一部分和第二部分后,在这几天里我阅读了这本书的第三部分需求分析,这部分是这本书的重点所在,同样在这部分的阅读中对我的帮助也是最大的. <需求工程——软件建模与分析>在需求分析这一部分分别介绍了需求分析概述.过程建模.数据建模.面向对象建模等知识,在阅读中我对这些知识做了简要的了解,在阅读中对我的帮助很大,了解到在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的.范围.

《代码阅读方法与实践》读书笔记3

许多数据结构——如树和堆,操作——如类型推断和类型合一.数学实体——如斐波那契数和分形图,以及算法,如快速排序.树遍历和递归下降分析,都采用递归定义.实体和操作的递归定义用它自身来定义它的对象.虽然这些定义咋看起来好像是无限循环,但实际上并非如此,这是因为基准范例的定义,一般会定义一个特例,他不依赖于递归定义.例如,虽然整数N的阶乘N!,可以定义为N(N-1)!,我们还定义一个基准范例0!=1. 采用递归定义的算法和数据结构经常用递归的函数定义来实现. 递归下降分析器——这种方法经常用于分析相对

记软件构建之法的读书笔记

什么是软件工程? 软件工程与计算机科学有什么关系? <构建之法:现代软件工程>这本书的绪论主要就是讲解这两个问题.软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护的过程.它包括:软件需求分析.软件构建.软件测试和软件维护等多个领域.做一个合格的软件工程师,并不仅仅局限于你会多少种语言,是否会用C++写“Hello World”的程序,你还要清楚软件如何构建以及在软件构建之中不厌其烦的去做那些用户使用率为百万分之一,但却不可或缺的功能.程序是基本功,但是在算法和数据结构之上,