软件方法

核心工作流

  1. 业务建模(组织建模):描述组织内部各个系统如何协作,使得组织可以为其他的组织提供有价值的服务,新系统只不过是组织为了对外提供更好的服务,对自己的内部重新设计而购买的一个零件。
  2. 需求:聚焦于待开发系统的边界,消息描述系统要卖的出去必须具有的表现-功能和性能。
  3. 分析:提炼系统内需要封装到核心领域机制。
  4. 设计:将核心领域知识和非核心领域知识结合,最终实现系统。

寻找老大

  1. 老大是买方。
  2. 系统改善哪个组织的流程,老大就是该组织的负责人。
  3. 系统好坏的度量指标在他的大脑里吗。
  4. 如果国王之给你几分钟时间把正在做的系统卖出去,而且只有一次推销的机会,如果失败了就会被枪毙。您会向谁推销?推销的时候说什么话保住自己的性命可能性做大?这个答案就是老大和愿景。
  5. 愿景是改善组织的指标,而不是做某事,要达到这个目标,需要各个岗位分别使用XXX,XXXX等功能。
  6. 愿景不是问系统有什么功能,而是回答买了这个系统,对组织有什么好处。
  7. 愿景是老大针对系统的目标
  8. 用例使用“执行者Actor”和涉众代替了原来的用户,这是一个非常大的突破;
  9. 计算机系统不只是简单的把纸里的东西往电脑里般;

业务建模之业务用例图

  1. 业务建模的目的是从组织的角度来定位系统应该提供的价值,所以说“业务建模”应该更名为“组织建模”。
  2. 业务执行者:BusinessActor。首先来寻找组织的执行者,也就是业务执行者,业务执行者的定义是:在组织之外和组织交互的人群或组织。(组织:某商业银行; 业务执行者:储户(存钱)、企业(贷款)、人民银行(监督))
  3. 业务工人(Business Worker):组织内的人肉系统,业务执行者和业务工人的区别就是,一个在组织内部,一个在组织里面,一个是组织不可替换的,一个是组织可以替换的。
  4. 业务工人可能被新的业务工人替换,但更多的是可能被新的业务实体(BusinessEntity)替换,业务实体就是组织中的非人系统。
  5. 开发人员说,“我在开发一个新系统”,其实是说“我在开发一个新的业务实体”,取代现有的业务工人或业务实体的一些责任。

探索需求的思路就出来了:

  • 画好现状的业务序列图
  • 把待开发的系统作为一个新的业务实体空降到列图中
  • 寻找改进点,取得该业务实体的责任
  • 直接映射到待开发系统的系统用例

 

业务工人和业务实体不再业务用例图中出现,因为他们不是组织的价值,而是成本。在识别业务执行者时,不需要画业务工人和业务实体,在接下来画业务用例的实现-业务序列图的时候加上就可以。

 

  1. 业务工人和业务实体协作完成业务用例,系统类协作完成系统用例。
  2. 业务执行者是一个组织(或人群),而不是系统。因为研究对象是组织,和它对应的概念也应该是组织。
  3. 业务用例指业务执行者希望通过和组织交互达到,而且组织能提供的价值。
  4. 业务用例是为业务执行者服务,不是为业务工人服务。或者说,因为无用例表达组织的本质价值。
  5. 改进业务流程的思路:先归纳出组织对外提供什么价值,再思考如何更好地优化组织内部流程来实现这些价值。

 

总结

  1. 业务用例是组织的、而不是组织内某个系统的用例。
  2. 组织的用例不会因为某个人肉系统或者电脑系统的存在或消失而改变。所以,“这个系统的业务用例是什么”这样的说法是错误的,业务用例图,研究对象都是组织。
  3. 为什么要研究组织的用例呢?因为我们想要把系统的价值和组织的价值挂上钩,给组织一个购买系统的理由。也就是说,业务用例不是思考系统提供什么“功能”,而是思考组织购买了这个系统,对组织本来就是有哪些“功能”会带来一点点帮助。

需求之系统用例图

  1. 系统执行者的定义:在所研究系统外,与该系统发生功能性交互的其他系统。
  2. 系统用例的定义:系统能够为执行者提供的、涉众可以接受的价值。
  3. 用例之前的许多需求方法学,把需求定义为思考系统“做”什么,用例把需求提升到思考系统“卖什么”的高度。
  4. 做需求的目的不是为了安慰自己或走过场,而是让产品更加好卖。不以这个为出发点的需求工作是没有意义的。
  5. 老老实实去研究业务流程,做好业务建模,尽量从业务序列图中映射出系统用例,这样得到的系统用例是不会骗人的。新增、修改、删除、查询、管理、改变状态这样的词语是数据库里面的“鸟语”,不是领域里面的“人话”。业务流程中不会有人说,小张你等一下,我要到系统哪里去做一下发票管理,只会说,我去开一张发票,我去作废一张发票,我去开一张红字发票。。。

 

时间: 2024-10-13 03:23:46

软件方法的相关文章

《软件方法》随笔

计算机系统不只是简单地把纸上的东西往电脑里搬. 客户的需求从来就没有变过,只是我们一开始就没有揣摩出来! 利润 = 需求 - 设计,需求致力于解决"产品好卖“的问题,设计致力于解决”降低成本“的问题.代码和设计得到最大程度的复用,从而缩短开发周期,降低开发成本. 从需求直接映射设计,会导致功能分解,得到重复代码.如果从设计出发来定义需求,会得到一大堆假的需求. 如果能学会通过业务建模去推导新系统的需求,而不是拍脑袋得出需求,假的”需求变更“会大大减少. 有的开发人员的”十年工作经验“实际上是”一

软件方法札记之建模和UML

前言:软件方法第一章主要讲解建模和UML,书中提出了很多新颖的概念,对于建模-需求-分析-设计之间的关系,让我耳目一新.虽然很多概念我知晓的很混乱,但是我仍然坚持写到读书札记中,因为我相信,阅读者早晚会给我启发,而我通过反复阅读我自己的感悟,终究会探寻出我想要的答案. 利润=需求(能卖)-设计(低成本) 需求致力于解决"产品好卖"的问题,设计致力于解决"产品成本"的问题,我在作者的标题中加上了能卖和低成本两个概念,这样可能就更加直观.先来了解需求和设计是什么样的概念

软件方法阅读笔记(一)

<软件方法>讲的是用UML语言来辅助我们进行软件的从0到1的过程.这个过程的结果并不是最终运行在电脑屏幕上的那个界面,而是一堆图纸,可视化的图纸.是的,确实是图纸.建筑行业有设计和施工图纸,电工行业有设计和实施图纸,城市规划有图纸··· ···任何你看得到的工程都有图纸,你要写的软件居然没有.“图纸在我脑子里呢”,我也曾经说过.直到看到这本书.这本书的直接受众应该有两类人:1.程序员这类人一般的工作思路就是提功能的人说要做什么,嗯嗯哦哦之后,迫不及待的打开编辑器开始写代码,调试,然后发现做完的

对比其它软件方法评估敏捷和Scrum

一般来说,选择一种软件开发方法,更像是加入一个邪教组织,而不像是做出了一个技术决策.许多公司甚至从未试图去评估这些方法,而仅仅是盲目采用最流行的方法,这就造成了如今五花八门的各种敏捷方法.因此本文将使用包括功能点.缺陷移除率(DRE).质量成本(COQ)以及总拥有成本(TCO)在内的一些标准的度量指标,对现代软件开发方法的样本进行比较. 目前有约55种已命名的软件开发方法正在使用,还有更大数量的混合方法.这些开发方法中包括传统的瀑布方法.各种花样的敏捷.Rational统一过程(RUP).团队软

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

设计源于需求却高于需求. <软件方法>上册(五章)所表述的逻辑: 愿景 ------ 业务建模 ------ 需求 ------ 分析 ------ 设计 1. 愿景: 明白软件的意义是什么,帮助或者提高了现有系统的那些方面,减少了那些成本. 利润 = 需求 - 设计 这个公式成立的前提是需求都已经实现,不同的设计会花费不同的成本.但看完上篇,我觉得应该改一改:  利润 = 业务 - 设计.  整个软件制作的过程中,真正的价值和输出是业务,对业务有什么帮助.提高或者减少业务成本.从业务的分析.

必知必会的目录和文件的作用、安装软件方法、运行级别

作者:Georgekai 归档:学习笔记 2017/12/28 目  录 第1章 ctrl+1 1 1.2  /etc/目录 1 1.2.1                   网卡配置文件和DNS配置文件 1.2.2                更改本机hosts文件 1.2.3                修改主机名 1.2.4                开机自动挂载的设备与目录的对应关系 1.2.5                开机自动运行的软件和命令存放位置 1.2.6    

C# IL DASM 使用-破解c#软件方法

C# IL DASM 使用-破解c#软件方法 2018-02-23 14:58 by halberts, 115 阅读, 0 评论, 收藏, 编辑 IL DASM反编译工具 使用C#的猿人或多或少都会对微软的IL反编译工具(ildasm.exe)有所认识.我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改.感觉他还是很强大. IL是微软平台上的一门中间语言,我们常写的C#代码在编译器中都会自动转换成IL,然后在由即时编译器(JIT Compiler)转化机器码,最后被CPU执行.

AUTOIT解决域控普通用户以管理员身份安装软件方法

windows域管理,本是很好的管理方式,方便的软件分发,权限控制等功能.不过由于我处软件分发总有那么一些电脑没有成功安装,或是新装的电脑安装软件时漏了安装一些软件,而这些软件需要管理员权限安装的,用户使用过程中发现却什么软件.补丁自己安装就是了.为此,找了网上的一些文章后决定用AUTOIT这个软件写个脚本,让用于自动运行补丁或软件安装,不用管理员协助安装. 在网上下载AUTOIT,安装也很简单,我写的脚本也很简单,主要是用runas命令: 编译好exe可执行程序后,用WINRAR打包,再用wi

Ubuntu Linux下安装软件方法

1.deb包的安装方式 deb是debian系Linux的包管理方式,Ubuntu是属于debian系的Linux发行版,所以默认支持这种软件安装方式,当下载到一个deb格式的软件后,在终端输入这个命令就能安装: sudo dpkg -i *.deb 或者直接双击安装. 2.编译安装方式 (小贴士:使用编译安装前,需要先建立编译环境,使用以下命令建立基本的编译环境:sudo apt-get install build-essential )在linux的世界,有很多软件只提供了源代码给你,需要你

LINUX下安装软件方法命令方法

1.通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rpm包,如software-1.2.3-1.i386.rpm.它是Redhat Linux提供的一种包封装格式.安装rpm包的命令是"rpm -参数,包管理工具 yum ." 3) deb包,如software-1.2.3-1.deb.它是Debain Linux提供的一种包封装格式.安装deb包的命令是"dpkg