需求和用例

本文主要介绍以下几个方面的内容,需求类型和用例,以下内容是上课所讲的一些比较有价值的内容,以便后期的回顾。

一,需求

需求是一个项目必须具有的功能和所需要满足的条件。它是软件项目的主要挑战之一,据调查37%的软件问题是由需求导致的,一个软件开发的功能中30%的功能几乎没怎么用过,19%的功能很少用,只用%7的功能一直在用,其他的功能则是有时在用或经常用。这种发现,给我们软件开发带来了启发,以前传统的瀑布模型是将整个需求分析完之后再开发,而现在则是先解决主要矛盾,进行迭代开发,将用户一直会使用的需求中的7%先开发完。

需求类型(FURPS+):

  • 功能性(Funcational)
    如安全,功能,特征。
  • 可用性(Usability)
    对用户来说,高效,易学,好用。
  • 可靠性(Reliability)
    系统提供服务的稳定性。
  • 性能(Performance)
    响应时间,资源的使用率
  • 可支持性(Supportability)
    可维护的,可配置,可国际化
  • 辅助需求(+)
    资源,语言,硬件的限制等辅助需求。

在软件开发过程中有哪些方式来分析需求了?
首先,我们讨论的需求是系统需求,它主要分为功能性需求和非功能需求,对于功能性需求,一般使用用例模型,而非功能性需求使用补充说明的方式。


二,用例

用例的几种定义

  • 站在用户角度定义软件系统的外部特征。
  • 可表示系统所提供的服务或可执行的某种行为。
  • 用例是一种把现实世界的需求捕获下来的方法。
  • 就是一组相关的成功和失败场景(参与者和系统之间的一系列特定的活动和交换,也称用例实例)集合,用来描述参与者如何使用系统实现其目标。

总之,就是从用户的角度(系统的外部)观察到得系统的行为(使用系统的过程或和系统交互的过程)

用例特征:

  • 用例都是相对独立的。这就是说,它不需要与其他用例交互就可以独自完成参与者的目的。也就是从功能上来说是相对比较独立的。一个用例从本质上说,体现了参与者的愿望,不能完整表达参与者愿望的不能称为用例。比如说,创建项目这是一个用例,但是在创建项目的过程中有选择分类这个步骤,那么选择分类就不能称为一个用例,因为如果不创建项目,是不需要选择分类的。选择分类只是创建项目的一个步骤,不创建项目,选择分类对用户来说,没有任何意义。因为选择分类不能单独存在,不具备相对独立性,所以不是一个用例。

  • 第二 用例的执行结果对参与者来说是可观测的和有意义的。比如,后台有个日志记录程序,专门记录指定模块的操作日志,虽然它是个系统必须的组成部分,但是它在需求阶段却不应该作为用例出现。因为这只是一个后台程序,对参与者来说,是不可观测的,它只是一个系统需求在补充规约中定义,而不是一个单独的用例。又比如说,取钱是一个用例,但是输入密码却不是,很好理解,因为单纯输入密码是没有任何意义的,没有一个人专门去输入密码,而不进行任何业务操作。

  • 第三 任何用例必须有一个参与者执行。不存在没有参与者的用例,用例不应该自动启动,也不应该主动启动另外一个用例。如果你画出的用例模型中发现某个用例没有参与者,这时你就应该注意了,好好检查下用例的识别是否有问题。可以根据用例的这些基本特征来识别。

  • 第四 用例必然是以动宾短语形式出现的。比如录入报表数据这是一个用例,但是录入和报表单独都不是一个用例,因为用例都是参与者可以执行的,参与者能执行录入吗?没有录入的对象显然不行,同样只有报表数据,也不是一个用例,因为参与者不知道要对报表数据做什么,打印报表数据,还是录入报表数据,还是统计报表数据,不清楚。其实这个特征对用例识别时很有帮助的。而且,要记住,用例的名称要严格用动宾结构的短语命名,有这样的经历,有的需求分析员,他对用例的识别时正确的,但是他命名不标准,常用统计,记录这些单独的动词命名用例,虽然意思他自己明白,但是别人不一定可以看明白,对看文档的读者造成理解上的困难。

业务用例与系统用例的区别:
业务用例就是要完成的业务,系统用例是系统要做的事情,在业务用例模型中,业务角色代表企业外的角色,业务员工代表企业内的角色。例如对于商店来说顾客就是它的业务角色,而售货员就是它的业务员工。
业务用例是用例思想的延续,只是改变了使用场合。用例是从使用者的角度定义“软件系统”需求。而业务用例不研究“软件系统”需求,它更关心一个“业务组织”对外提供哪些服务。如住房公积金中心是一个业务组织,你或许就是一个业务参与者(如果你准备向住房公积金贷款)。那么办理住房公积金贷款就是一个业务用例。这个业务用例会描述什么呢?它会描述类似如下内容(由于内容复杂仅作示意):

  • 职工准备相关资料去住房公积金中心办理货款。业务用例开始。
  • 职工向中心提交准备贷款的相关资料,中心工作人员对资料进行初审。
  • 若审核通过,职工准备办理抵押合同,中心工作人员委托担保公司与职工签订抵押合同。
  • 担保办理完成后,职工与中心签订理借款合同,中心工作人员要求职工办理银行卡并提供卡号。
  • 借款合同签订后,中心工作人员要求贷款合同必须办理公证,职工与中心一道办理公证。
  • 职工办理完公证后,中心发放贷款。业务用例结束。

可见,此处的业务用例描述的是业务参与者(职工)如何使用业务组织(中心)提供的服务的过程。因此业务用例实际上是一种业务流程。它以业务组织外部业务参与者的角度定义业务组织提供的服务。当然业务用例还包括一些内部流程,它可能不是由业务参与者启动的,如采购流程等。因此,业务用例只是使用了用例的思想和形式而已,研究的主题是完全不同的。用例研究软件系统,借助用例定义软件系统需求。而业务用例研究一个目标组织,借助业务用例定义目标组织应该具有哪些业务流程,以及这些流程应该是什么样子的。

用例与功能的区别:
功能的特点:

  • 功能是脱离使用者愿望存在的
  • 功能是孤立的--只要按下开关就亮灯
  • 如果非用从功能的角度解释用例,那么用例可以解释为一系列完成一个特定目标的“功能”的组合,针对不同的应用场景,这些“功能”体现不同的组合方式

两种常见的误区:

  • 用例就是功能点
    这是一个很大的误区,也是技术人员容易犯的一个错误。功能点是站在软件开发的角度来说的,而用例是站在用户的角度来说的。获取用例是领域专家干的活,而最后的功能实现是技术专家干的活,不同的角色。所以获取用例的关键就是要站在用户角度看问题。
    怎么获得用例?首先确定位于系统边界之外的主角是谁?他的期望和目的是什么?这个期望和回报要求在系统之内。所以,用例是帮助确定系统边界的一个好方法。用例也是获取需求的一个方法。
  • 用例和步骤混淆
    举例来说,用户输入密码,要有密码错误提示,并且三次错误自动锁定用户,最后登录成功。“输入密码”是一个步骤,不是用例。整个过程是一个用例:“用户登录”。中间步骤和场景可以有很多。比如输入密码是一个步骤;“要有密码错误提示”这是一个业务需求,不是用例;“并且三次错误自动锁定用户”这是一个业务需求,也不是用例。
    用例的特征:有目的,有用户期望,有回报预期。当结果不可定义或不清晰时不能用Use Cases,意思是如果目标成功或目标失败不能有一个明确的定义,那就不是一个用例。举例来说,用户输入密码,这是不是一个用例?用户输入密码的目的是什么?是为了输入密码吗?不是的,是为了登录系统,所以,用户登录是一个用例。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 概要 用例(Use Case)是一种描述系统需求的方法。运用用例这种方法来描述系统需求称之为用例建模。用例也是UM...
    林海舟阅读 43,766评论 0 34
  • 1.实例-公共健康信息网 定位人群: 卫生部门决策人员和一般群众 需求: 1. 卫生部决策人员需要通过了解人群健康...
    binarystar阅读 862评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,028评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,711评论 2 59
  • 人们无法在机场里等来一艘船,而我却等来了你。 ——题记 人们总说...
    夏葵c阅读 500评论 0 0