软件方法阅读笔记(三)

业务建模映射出系统用例的识别方法:在业务序列图中,从外部指向所研究系统的消息可以映射为该系统的用例。  
  识别系统用例的注意事项:
  一、主执行者和辅执行者:主执行者从执行者指向用例,而辅执行者从用例指向执行者,主执行者发起用例的交互,辅执行者在交互过程中被动参与进来。场景:主执行者要执行用例,需要辅执行者的帮忙。
  二、切勿把到辅执行者的箭头误解为数据传送的方向。
  三、主辅执行者是针对某个用例来说的,一个系统在这个用例中充当主执行者,也可以在另一个用例中充当辅执行者。一般说来,辅执行者是人肉系统的情况比较少,更多时候是另一个非人智能系统。
  四、用例是涉众愿意“购买”的、对系统的一种“用法”,只要涉众愿意“购买”,当然是越多越好。
  五、需求是不考虑“复用“的,如果在考虑”复用“,要紧惕自己是不是已经转换到了设计视角来思考问题。
  六、针对不同执行者、不同业务流程,系统提供的价值可大可小,无论大小均是用例。
  七、用例的命名。用例命名采用"动宾结构",宾语前可以加定语,把一句话的主语砍掉,剩下的可以做用例的名字。  
  常见错误:踏实研究业务流程,做好业务建模,尽量从业务序列图中映射出系统用例,这样的系统用例是不会骗人的。
  一、把步骤当作用例。Include(包含)关系的目的是为了复用在多个用例中重复出现的步骤集合,形状往往是多个大用例Include一个小用例。
  二、CRUD问题。把数据库的各个表名加上新增、检索、修改、删除就得到了用例的名字或者把四种操作合并称为“XX管理”。
  三、玩弄“复用”:用例的执行者不同,背后的涉众利益也有差别,不能简单的合并复用为某一个操作。
  四、多个主执行者指向同一个用例。如果用例图已完成,对于这种错误的修改,可以通过泛化出抽象的执行者或者分成几个不同的用例的方法来修改。后一种更常见。
  五、玩弄”层次“。切勿偷换"研究对象",也切勿”把愿景当系统功能“。
  六、玩弄”子系统“:用例很多时可以将用例分包,但用例包是在系统的外部对系统功能所做的划分,而子系统则是根据内部部件的耦合和内聚切割得到。
  七:模糊的价值:系统往往无法承诺执行者预期的价值时,则该价值不是执行者的用例。主执行者执行用例时,若是需要辅执行者提供实时的帮助后才能进行,则用例正确,否则用例错误。  
  关于“XX管理”的用例:这种用例无法从业务流程中映射,但系统需要它们来支撑。也只有对于这种支撑的管理基本数据的用例,才用“XX管理”来打扫战场。"XX管理"这样的用例往往是给管理员管理基本数据用的,而且都是千篇一律。
  软件工程的“底层”:怎样才能使这段代码更容易维护和扩展?这段代码达到的功能和性能对涉众意味着什么?

2). 系统用例规约:也就是以用例方式组织的需求规约,我们需要通过书写用例规约把用例背后封装的各种相关需求表达出来,并用类图展示用例的各项内容。
     用例包含的内容:
     a. 前置条件和后置条件:用例通过前置条件、后置条件以契约的形式表达需求。可以想象成:在满足前置条件的开始,按照说明的路径步骤走,就能达到后置条件。    
        后置条件分类:最小后置和成功后置。最小后置指在用例失败的情况下也要满足的约束,而成功后置指用例成功时系统需要满足的约束。     
        前置、后置条件的要求:
        一、前置条件、后置条件必须是系统能检测的。
        二、前置条件必须是用例开始前系统能检测的。
        三、前置后置条件是约束,不是动作。
        四、前置后置条件要有系统的味道。
        五、登录的问题:登录不是用例,不能从登录扩展出产看订单等功能,扩展的正真意思是分支。正确的做法应该是把登录变成被其他用例包含的被包含用例,在写用例规约的时候发现下单、查单等用例都有登录步骤,为节省工作量把这些形成一个小目标的步骤集合分离出一个只能被其他用例包含的用例。如:会员登录中,加括号的登录表示这是一个被包含用例,他的步骤和约束在另外的地方描述。

涉众利益的要求:前置条件是起点,后置条件是终点,这中间的最要的内容就是涉众利益,即:某类人担心什么、希望什么,若没有涉众利益很难得到正确的需求。认识到需求由涉众利益的平衡和冲突决定,可以帮助我们直入需求的核心。
        一、如何寻找涉众:定位用例涉众的场景:如果系统的这个用例做不好,谁或者哪个系统会遭殃?谁会担心自己的直接利益受侵害?
            从执行者触发寻找涉众:若果执行者是人,其便为用例涉众。否则,执行者没有利益主张,不算涉众,但是要留意其背后可能的涉众。
     从“上游”寻找涉众:执行者使用系统做某个用例,需要一些资源,这些资源的提供者可能是涉众。
     从“下游”寻找涉众:执行者使用系统做某个用例,会产生后果,这个后果所影响到的人也是涉众。
     从“信息的主人”寻找涉众:用例用到的相关信息所涉及的某些人(也可能其不知道这个系统的存在)的利益受系统好坏的影响。随着策略环境变化、组织需要调整,原有良好的系统确实要改变,这才是真的需求变更。
     从“给涉众排位”寻找主要涉众:涉众排位是否准确,直接影响了需求的内容,开发人员别只盯住了“用户”而忽略了前排涉众。并没有一定的排位准则,只能根据所改进组织的特点归纳总结。
     “亲兄弟,明算账”:在描述涉众利益时,要把不同涉众关注的不同利益体现出来。在列出涉众利益后,在照顾前排涉众利益的同时,也要争取兼顾和平衡其他涉众的利益。涉众利益放在用例规约里可以体现出不同涉众针对不同用例有不同利益的特点。
     “基本路径”:我们需要写出能够平衡各方涉众利益的路径、步骤和补充约束。用例需要有一条基本路径,若干条扩展路径,首先把基本路径单独分离先写出来,因其代表用例核心价值的路径。
         书写路径步骤的要点:
         1.) 按照交互四步曲书写:执行者和系统一个个回合进行交互,直到达成目的。每回合步骤分为两类:请求、回应(有的回合可能没有验证和改变),其中括号表示操作在系统内。
         2.) 使用主动语句理清责任:把动作的责任人放在主语的位置,用Cockburn的话就是“球在哪里”。
         3.) 主语只能是主执行者或系统。写需求时要把系统当作一个黑箱,仅描述它对外提供的功能和性能,而系统如何构造不属于需求描述的范围。
         4.) 使用核心域的概念:路径步骤是功能需求,应该使用核心域的概念来描述,也就是说,要说“人话”。应该避免“技术”、“业务”等名词,而换用“核心域”、“非核心域”来代替。
         5.) 不要涉及交互设计的细节:避免把界面细节带入到需求中。“人有眼镜”不是需求,需求是“人能看”。
             需求的判断标准:需求是问“不这样行吗”,而不是“这样行吗”。需求确实需要写的细,是需要将需求(问题)写的细,而不是将设计(解决方案)写的细。

时间: 2024-10-11 01:51:17

软件方法阅读笔记(三)的相关文章

软件方法阅读笔记(一)

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

用户故事与敏捷方法阅读笔记三

第12章:故事是什么 用户故事有别于IEEE 830软件需求规格.用例和家傲虎设计场景. 考虑用户的目标比列出方案的特性更重要. 用户故事与用例场景类似.他们的完整性和寿命不同.他们以不同的目的编写. 第13章:用户故事的优势 用户故事促使我们重视口头交流,这一转变提供了迅速的反馈周期. 用户故事的典例范围比用例及场景小.他适合于迭代开发.鼓励延迟细节,鼓励应变的开发. 第14章 用户故事不良症兆一览 故事太小:故事相互依赖:镀金:故事中包含太多的细节:过早包含用户界面细节:想的太原:故事划分太

构建之法阅读笔记三—结对编程

构建之法阅读笔记三——结对编程 何谓结对编程,结对编程就是程序员肩并肩,平等的,互补的进行开发工作,他们使用同一台电脑,编写同样的程序,一起分析,一起设计,一块交流想法. 然而我以前却并不是这样做的,我以前喜欢在没人打扰的环境下写代码,我觉得有人在我身边看着,会影响我的思路,还有我个人自尊心比较强,不太喜欢被人指指点点,所以每次都是,我写完代码之后,自己先找自己的bug,每当自己实在找不到之后,才会请教大神,但是有时候可能由于自己的能力不足,往往一个很简单的问题,我自己发现就会花费很久的时间,让

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

之前已经看完了<代码阅读方法与实践>的前六章,基本上也就是看得比较粗略,没有很精细的阅读,上节课听到老师说的“学术交流会”还是很紧张的,挺害怕被问到问题,结果回答不出来可怎么办啊,不仅丢人,分也送给别人了啊,这可怎么破啊.所以呢,我打算近期再看一遍,不管有没有用,算是给自己加点自信吧. 第七章,讲的是编程规范和约定,主要就是文件的命名及组织.缩进.编排.命名约定.编程实践.过程规范之类的,其实这一章也不用我做过多的介绍,因为大家应该都有听各科老师讲过好几遍了,道理大家都懂,但是大家除了在理论上

《软件需求十步走》阅读笔记三

需求既然是项工程,就有其完整的过程.需求工程研究领域可以划分为需求规划.需求开发.需求管理三个部分,新一代的需求工程过程由10个业务活动构成,分别是业务研究.应用建模.系统规划.分析计算.报告编制.规划评审.需求获取.需求分析.需求编制.需求验证. 传统的需求分析中有着三种角色,客户角色.分析角色和团队角色,三种角色领域不同,思维方式也不同,就产生了很多矛盾的问题.产生这样的问题是由于各个领域都在其自己的轨道上运行,并没有相结合起来,产生很多分歧.所以为了解决这样的问题,我们引入了一个新的领域,

《软件构架实践》阅读笔记三

这一章主要是通过ISSS系统的构架来分析交通管制系统的实际解决方案. 首先从物理视图的角度来分析,物理视图主要是一些硬件方面的视图,通过它我们可以清楚的看到各个硬件之间相互关联关系,使系统的物理分布显示的更加清晰. 模块分解视图,软件的模块元素被称为计算机软件配置项,主要是讲的软件的一些配置模块,这些模块构成了可提交的文档和软件单元,标志着开发工作的进程,模块分解视图反应了可修改性战术. 进程视图,这一视图主要用来保证系统的容错性. 客户机-服务器视图,这一视图通过精心设计,使客户机和服务器具有

构建之法阅读笔记三

今天阅读了构建之法第四章,对我最深的感触就是代码规范,对于一个软件工程师来说,编程是一项基本技能,程序编的好一半来自于代码的规范:就算你学的算法再好,编程能力再强,代码不规范也没有任何意义.当阅读者拿到你的代码时一头雾水,完全看不懂,这样的代码对于后期的维护和bug的寻找难上加难,或者是对于后来的初学者来说,也是去了教育意义.所以在我们日常的编程过程中要养成代码规范的习惯,习而久之,这样的习惯会一直伴随我们编程整个过程. 还有就是代码复审,我一开始也想不明白,代码为什么要复审呢,写完代码得到执行

最后期限阅读笔记三

最后期限这本书读完了,有很多感想. 我们始终不能忘记,程序员也是人,当我们在以往的项目中遇到各种各样的问题,客户的需求频繁变动,来自领导.客户.销售人员要求尽快结束项目的压力,用一拥而上的方 式增加人手,计划延迟,工期变长,漫长的维护过程,乃至长期出差驻守在外地,离开家人,这个时候,没有成就感和疲惫的感觉会让最好的程序员失去热情.在这里要提到的是, 曾经有个项目工期太长,每个周一都要出差去外地,在那段时间里,我甚至得了"周日晚上失眠(恐惧)症",噢,可怜的程序员们,你们是否也有过类似的

软件需求分析——阅读笔记6

读<需求工程--软甲建模与分析> 第五部分 需求管理与工程管理有感 在需求开发活动之后,需求基线应该成为后序软件系统开发的工作基础和粘合剂.需求管理在需求开发之后的产品生命周期中保证需求作用的有效发挥.作为需求开发的结果,最终的需求应该被明确和固定,需求基线就是被明确和固定的需求集合,是项目团队需要在,某一特定产品版本中实现的特征和需求集合.需求基线是需求开发过程中的成果总结,他需要在后续的产品生命周期中持续发挥作用.因此,需求基线要以一种持续.恒定和易于项目涉众访问的方式存在,通常的做法是将