1、单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,实战需求分析,第,5,章:功能设计,课时:,xx,授课老师:,xxxxxxx,杨长春编著,清华大学出版社出版,本书主页,目录,CONTENTS,第,5,章:功能设计,思考题,本章重点,5.1,需求用例,5.2,功能建模,5.3,功能逻辑,5.4,功能优化,第,5,章:功能设计,用例的构成,用例编写,什么是需求用例,5.1,需求用例,需求用例,,,指用户通过软件解决特定问题、完成指定任务的方式与步骤,当然也包括各步骤用到的约束、规则等。一个用例,往往对应着用户需要完成的某个明确而具体的任务,。,有两种特殊的用例,
2、一种是上层用例,一种是底层用例。,上层用例,,指结合一些有关联的普通用例完成一个抽象的由若干普通任务组成的大任务,。,底层用例,,指完成某些小任务的用例,这种用例可能会在许多普通用例中被引用。,【,案例:什么是需求用例,】,用例的构成,用例编写,什么是需求用例,5.1,需求用例,用户,用例面向用户不同,设计要求也不同,面向普通用户的用例,面向关键用户的用例,面向所有用户的用例,面向系统管理员的用例,2.,前置条件,为了保证本用例可以成功执行,而需要满足的前提条件。,3.,后置条件,用例执行结束后的系统状态,无论成功还是失败。,4.,主场景,用户为实现自己的主目标而进行操作的过程,我们称之为用例
3、的主场景。,大部分情况下,一个用例只有一个主目标,只有一个主场景。,5.,扩展场景,每一个用例,都有各种各样的使用场景,主场景只是这若干种场景中的一种,主场景之外的场景,称之为“扩展场景”。,6.,规则,规则是指本用例用到的业务规则、逻辑算法等。,【,案例:用例的主场景,】,【,案例:用例的扩展场景,】,【,案例:用例的规则,】,用例的构成,用例编写,什么是需求用例,5.1,需求用例,案例:电商平台会员下单用例,1.,用例编号,UC0210,2.,用例名称,会员下单,3.,前置条件,当前用户已登录。,4.,后置条件,用例执行成功,生成当前用户的新订单,减少商品的可供应数量;用例执行失败,不影响
4、商品的可供应数量。,5.,主场景,1,)用户检索商品,录入购买数量。(,L1,),2,)系统确认库存数量足够。,3,)用户暂存商品。,4,)系统将商品加入购物车,加载当前用户可能感兴趣的跟当前商品相关的商品。,5,)用户继续检索商品,重复,L1,步骤。,6,)用户确定下单。,7,)系统确认用户收货信息已经完善。,8,)系统生成新订单,减少相关商品的可供应数量,清空购物车。,6.,扩展场景,6.1,扩展场景一:库存数量不足,1,)用户检索商品,录入购买数量。,2,)系统发现当前商品的可供应数量不足。,3,)系统提醒用户可以发起预订请求。,4,)用户发起预订,输入到货通知方式。,6.2,扩展场景二
5、:用户没有收货地址信息,1,)用户确定下单。,2,)系统发现用户没有收货地址信息。,3,)系统提示用户录入收货地址。,4,)用户录入收货地址。,5,)系统生成新订单。,7.,业务规则,7.1,当前用户可能感兴趣的商品的检索规则:,跟当前商品属于同一系列的商品。,当前用户浏览过相关主题的商品。,跟当前商品可以打包销售的商品。,同类商品正在搞活动促销的商品。,【,案例:灵活的需求用例撰写方式,】,5.1,需求用例,5.2,功能建模,5.3,功能逻辑,5.4,功能优化,第,5,章:功能设计,5.2,功能建模,所谓功能建模,指根据系统要求:,设计功能构成模型,,确定系统由哪些功能构成,,每个功能应该输
6、入什么,,经过功能处理后应该输出什么,,每个功能又包括哪些子功能,不断分解下去,直到最底层。,在这个阶段主要考虑这个软件系统会包括哪些功模块,功能模块由哪些功能点组成,每个功能点包括哪些子功能,每个子功能包括哪些原子功能,每个功能需要输入什么、如何处理、输出什么,哪些用户使用这些功能,使用这些功能是为了解决什么问题,怎么使用这些功能等。,原子功能,划分功能,功能点,5.2,功能建模,什么是功能点,功能点指可以提供给用户完成某一特定任务的功能组合,例如“客户档案维护”、“物料基本信息管理”等。,大部分情况下可以认为一个功能菜单就是一个功能点。,功能点的构成,每个功能点由或多或少的一些子功能组成,
7、如新增、编辑、删除、导入、导出等,用户通过这些功能的组合运用,可以处理某些特定的任务。,什么是功能模块,功能模块指一些在业务上有一定关联性的功能点组合,这些功能点可以分别完成某些小任务,这些小任务又是为某一大任务服务的。,【,例:功能点“客户档案维护”,】,原子功能,划分功能,功能点,5.2,功能建模,功能点由原子功能构成,原子功能一旦被触发就将控制权转让给了系统,用户不能干预,直到执行完成。,获得数据,运算处理的准备阶段,,从用户界面或数据库中获得数据。,处理数据,对获得的数据进行运算、处理的过程。,提交结果,运算处理的结束阶段,有两个可能,一是将结果提交到数据库,一是提交到用户界面。,原子
8、功能,划分功能,功能点,5.2,功能建模,用户需要通过本系统处理哪些需求用例?虽然功能点并非完全根据需求用例来划分的,但绝对有很大的关系。,思考,用户需要通过本系统处理的具体任务有哪些?虽然功能点并非完全根据用户的任务设置,但绝对有很大的关系。,如果你是管理者,需要将这些任务分配给不同的人员,你觉得可以接受的最小任务粒度是什么?一个功能点往往意味着一项任务的最小粒度。,为了完成每个任务,需要哪些功能支持?大部分功能点都需要包括对数据的增删改查这些子功能。,有没有那种处理起来很复杂,需要的信息量很大,需要处理的数据很多,但绝不可能分拆给不同的人处理的任务?这种任务可以考虑分拆成多个功能点,将这些
9、功能点组合成一个内聚性较强的功能模块。,5.1,需求用例,5.2,功能建模,5.3,功能逻辑,5.4,功能优化,第,5,章:功能设计,5.3.1,基础功能逻辑,增加数据,新增一条记录、新增多条记录、新建文件、在文件中添加内容,修改数据,编辑一条记录、编辑多条记录、修改特定字段,删除数据,逻辑删除、物理删除,查询数据,系统自动获取、用户间接查询、用户根据条件查询、数据导出、文件下载、生成报表,计算,从数据库获得数据后,或者将数据保存到数据库之前,也许需要进行各种计算。这种计算过程可能非常简单,也可能非常复杂。,显示,从数据库获取数据,经过加工后在界面上显示为用户所需要的信息。,传递,将数据从一点
10、传递到另一点,可能是从一个界面传递到另外一个界面,或者是从一个用户传递到另外一个用户等。,数据库操作,非数据库操作,5.3.2,数据流,可以把数据库理解成一个仓库,表是仓库中的货架,数据是存放在货架中的货物,现实仓库里的货物是在不断流动的,进进出出,在供应商、制造单位、客户间流动,数据也一样,也是在不断流动的,在各个功能之间流动,这就是所谓的“数据流”。,什么是数据流,【,案例:用户登录的数据流,】,注意,数据流动跟货物流动是有本质区别的,数据流动是信息的流动,不是实物流动,是个复制的过程,不会影响原始数据。,一个信息系统,只要在使用过程中,其中的数据就在不断流动。,由于数据库的存在,数据流动
11、的复杂程度大幅度降低。,5.3.3,工作流,什么是工作流,工作流图,工作流程,企业所有的工作都是由或多或少的一些步骤构成的,每个步骤又可以分成更小的步骤,步骤之间有一定的先后顺序,这些有先后顺序的工作步骤就构成了所谓的工作流程。有些管理规范的企业,会用业务流程图描述自己的工作流程。,什么是工作流程,【,案例:未必得到执行的工作流程,】,注意,工作流程并非不折不扣得到执行的。,信息化系统在固化流程进行方面比人强。,并非所有的工作流程都可以固化。,【,案例:理念性的工作流程,】,5.3.3,工作流,什么是工作流,工作流图,工作流程,什么是工作流,管理软件中所谓的工作流,往往是指这样一种功能逻辑:它
12、建立了工作流程中各步骤的制约关系,规定工作流程需要经过的步骤,进入或完成每个步骤有什么条件,每步应该由什么人负责办理等。,什么是工作流引擎,工作流引擎是一种功能组件,通过这种组件,可以快速配置用户需要的不太复杂的特殊工作流。一般工作流引擎包括两大部分内容,一是表单处理,一是流程处理。,跟工作流相关的一些基本常识,节点,发起,分支,办理,委托,主办人与经办人,子流程,会签,5.3.3,工作流,什么是工作流,工作流图,工作流程,【,案例:工作流图,】,5.3.4,一些功能逻辑案例,权限控制逻辑,权限控制就是控制用户使用指定功能或数据的权限,一般可以分成两种:,一是,功能权限,控制逻辑,一是,数据权
13、限,控制逻辑。,01,结转逻辑,结转逻辑,指针对某些数据进行统计汇总或相关运算后,将计算的结果保存到数据库中用以存档或者提高系统性能。,02,可变逻辑,可变逻辑,指某种功能的逻辑并不确定,怎么处理、运算交由用户决定。常用的方式是通过某种参数、配置开关来实现。,03,自定义逻辑,自定义逻辑,是指用户自己根据系统提供的某些功能定制工具,按照系统要求的语法、规范,而设置、编写的适合于自己需要的功能逻辑。,04,【,案例:功能权限控制逻辑,】,【,案例:结转逻辑,】,【,案例:可变逻辑,】,【,案例:自定义逻辑,】,5.1,需求用例,5.2,功能建模,5.3,功能逻辑,5.4,功能优化,第,5,章:功
14、能设计,5.4,功能优化,可重用性,高效性,灵活性,问题一,这个地方一定要写死吗?,问题二,这个规则是必需的吗?,问题三,这个地方用户需求真的很明确吗?,问题四,问题五,这个地方用户需求发生变化的可能性大吗?,这个地方我抓住了业务的核心吗?,问题六,这个地方的处理跟业务的现实一致吗?,为了提高软件功能的灵活性,考虑,【,案例:写死需要充足的理由,】,【,案例:写死与写活的权衡,】,【,案例:规则越少越好,】,【,案例:让用户负起验证的责任,】,【,案例:需求兼容,】,【,案例:变化可能性大的需求,】,【,案例:抓住业务的核心,】,【,案例:功能逻辑跟业务,现实一致,】,5.4,功能优化,可重用
15、性,高效性,灵活性,减少,关联,规范,数据流,方向,1.,尽量减少功能间的关联,越是孤立的功能,越具有可重用性,为了提高功能的可重用性,可以考虑,【,案例:减少功能之间的关联性,】,2.,注意数据流动的方向,建立轻量的顶层模块用于数据交流,由底层模块发起数据流,【,案例:从底层发起数据流,】,3.,建立团队的通用规范与通用功能,建立项目组的通用规范;开发团队通用功能,【,案例:建立团队通用功能,】,5.4,功能优化,可重用性,高效性,灵活性,1.,使用率不同的数据采用不同的保存方式,目标:保证软件能够在当前业务规模下运行,5,年以上,不会出现明显的性能问题。,3.,外键必填,当保存“多”的一方
16、的记录时,如有可能,不允许外键字段为空。,2.,利用中转数据,可以利用中转数据提高效率,大型报表中经常用到本技巧。,4.,优先使用客户端资源,如果优先使用客户端资源,就可以降低服务器端的压力,从而提高运行效率。,几个提高功能运行效率的小技巧,【,案例:数据迁移功能,】,【,案例:利用中转数据提高效率,】,【,案例:通过外键必填提高效率,】,【,案例:优先使用客户端资源,】,本章重点,本章重点,本章重点,:,工作场景的撰写方式。(),如何进行功能划分。(),常用的基础功能逻辑。(),什么是工作流。(),如何画工作流图。(),常见的功能逻辑案例。(),如何提高软件功能的灵活性。(),如何提高软件功
17、能的可重用性。(),如何提高软件功能的高效性。(),思考题,思考,请思考,:,假设需要给学校图书管开发一款图书管理软件,根据你对图书馆管理图书的业务的了解,进行功能划分(从功能模块到原子功能)。,撰写学生到图书馆借书的主场景。,学校学生请假的管理要求:如果不超过,3,天,班主任批假;如果超过,3,天不超过,7,天,班主任批假后学工处批假;如果超过,7,天,班主任批假后学工处批假,最后李校长批假。根据这个要求画出工作流图。,上一题,如何处理“李校长批假”这个问题?设计两种方案,一种写活,一种写死。分析一下这两种方案的优缺点。,某社交软件,好友更换头像后,当前用户的通讯录中展示的还是以前的头像(只有跟对方聊天后才会将头像更换成最新)。说说软件设计者为什么要这么做。,谢 谢!,授课老师:,xxxxxxxxx,