`
king_tt
  • 浏览: 2108580 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

需求与设计过程(1)-用例

 
阅读更多

1.前言

看过太多的称得上“三无”的软件,就是无需求、无设计、无注释。严格的说来,他们的需求和设计其实还是有的,只是没有用文档记录下来而已,但是注释确实真的没有。这些软件从大到小都有,但是他们都有一个共同的特点,就是“难维护”。前几天和同事聊天,听说一个XAML的实现要重写了,用本地协议代替,然后再去考虑和XAML兼容。虽然我没有看过这个项目的代码,但是我知道这个项目基本也是“三无”。当然这个情况也是三无的重大特征之一,就是前脚走人之后,后脚是“看不懂、下不了手”,结果是还不如重写来得简单。从员工角度,当然不会有什么不妥,但是从公司和产品的角度,则是属于“无谓的损失”。

一个对自己有要求的程序员,应该保证自己不出产“三无”项目

“规范化”可以解决项目的“三无”问题。而且这个一直是我所推崇的,正好有网友开始了12306ng项目,所以也就拿这个例子过来,跟大家汇报一下我的设计思路,同时也作为我在公司开设此类课程的备课。

2.关于设计

软件的设计过程其实也是一个推导的过程,这个过程的每一个步骤之间都有着各种关系:要么细化,要么印证,要么补充。我之前学习设计的时候,以为看着课本,依据什么“自顶向下”或“自底向上”就可以一步一步将系统设计出来,可是后来发现我错了。相信正在学习设计的朋友也应该会有这样的感受。

电脑和人脑相比,最大的区别是前者一个线性系统,而后者是一个非线性系统。所谓的非线性,通俗点讲,就是颠三倒四,左右开弓,文艺点讲,就是讲究“螺旋式上升”,总之就是说“机械式”的“一蹴而就”动作,人脑是不擅长的,当然,天才除外。

设计也是如此,它本来就是人脑的处理结果,所以它的过程也必然是非线性的。一种设计方法,要想被人容易学习和接收,它本身就要是一种包含“螺旋式”改进的机制,也就是戴明环的PDCA过程(Plan-Do-Check-Adjust),不过在设计过程中Plan的因素不明显,主要是DCA的过程。

在做系统设计的过程中,最大的感受就是不要限制自己。记得当年我为了完成设计,满足“自顶向下”的要求,刻意地限制自己不去深入地思考,结果当然是失败。当然,“限制”不仅是刚谈到的思考层次的限制,更重要的是突破工具的限制。所有的工具都会给思想甚至工作进度带来限制。迄今为止,最好的设计工具依然是“带橡皮头的铅笔”和“纸”,所以诸位要好好地利用它。

3.需求

12306是目前最著名的公认的人机交互体验较差的网站,如何做出一个比它更好的系统呢?答案就是“更仔细地设计”。在“更仔细地”设计之前,我们需要“更仔细地”收集好需求。

软件的需求就是软件要实现的“目的”。各位千万不要一提到“需求”就当作了“需求文档”,文档只是需求的一种表现形式而已,另外一种常见的表现形式就是程序员们大脑中的记忆。蹩脚的程序员经常通过嘴传递需求,他们宁可不厌其烦、一遍又一遍地说,也不愿意花一点时间一次性写下来,他们无法忍受客户的一次次需求变更,但却不在意自己每次说出的同一个需求都有些走样。

3.1.第一步:用例分层

这里我们用UML的用例图(UseCase)来表示需求。

用例图也是分层次描述的。所有系统最顶层的用例图(零级用例)都差不多,都是一个圆圈围绕着很多角色,区别就是角色有多少,以及圆圈里写的字不一样。这次我们的圆圈里写的是“12306ng火车票订票系统”,外围的角色只有2个:用户和管理员。

image

一级的用例图就完全不一样了。我把它分为了7个部分,一级用例名称和其包含的二级用例名称说明如下:

1. 用户管理:注册,登录,退出,密码找回,信息查看,信息修改,用户验证,用户查询

2. 查询:时刻表,余票,联程规划,晚点

3. 订单:下单,取消订单,修改订单,订单查询,预订

4. 票务:订票,取票,改签,退票,车票查询

5. 资金:付款,退款,查询到帐,银行对账

6. 票池:入票,出票,查询票池,修改票池

7. 维护:参数设置,词典维护,拓扑管理,日志查询,备份,恢复

以上直接列出是为了方便大家阅读,实际上我也是用这样提纲来思考的。然后补图如下:

image

image

image

image

image

image

image

image

当然,以上的部分既不是最初的状态,也不是最终的状态,而是我经过多次调整和改进之后,到现在的状态,未来还会根据分析的情况进一步调整。另外,大家一定要注意,一个系统的用例表示不是唯一的,不同的人给出的用例是不同的,但是理论上应该是等价的。

用例图中的每一个部分,都必须是真实存在的,而且是可以面向客户的东西,它所描述的最小单位应该是业务模块。评判用例的标准是“具有业务意义”,所谓的“业务意义”就是指这个业务模块完成之后,可以将整个业务或者业务流程向前推进,这个“推进”的结果应该包含了角色的转变或者目标的变化。

从以上的定义来看,“资金.查询到帐”和“票池.锁票”可能就不是一个用例。直到写本文的时候,我依然还在犹豫,但后来还是决定剔除,因为他们没有外部关联的actor,虽然确实这两个用例能够推动业务向前推进。从这里我还得到一个经验,就是在一级和二级用例最好不要出现actor是内部模块或系统的情况。

(未完待续)

分享到:
评论

相关推荐

    需求与设计过程-用例

    看过太多的称得上“三无”的软件,就是无需求、无设计、无注释。严格的说来,他们的需求和设计其实还是有的,只是没有用文档记录下来而已,但是注释确实真的没有。这些软件从大到小都有,但是他们都有一个共同的特点...

    PTM测试流程分享测试需求分析与计划->测试方案设计->测试用例设计->系统测试执行->产品评估发布->产品测试数据度量及过程经验输出

    PTM流程 测试需求分析与计划->测试方案设计->测试用例设计->系统测试执行->产品评估发布->产品测试数据度量及过程经验输出

    需求分析与用例模型(扩展阅读)_用例和用例图

    需求分析与用例模型(扩展阅读)_用例和用例图,面向对象的分析方法

    OO系统分析员之路--用例分析系列(一)

    这个系列文章将以我对OO和系统分析的理解为主,从UML基础开始,阐述面向对象的需求分析方法,过程,并以RUP为例,阐述如何将OO过程与软件过程有机结合在一起,做一个真正OO应用。好了,今天是第一篇。想得很远,真...

    软件测试基础:测试用例设计

    测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。 操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入...

    学校学生宿舍管理系统需求规格说明书(教学用例)

    1引言 1.1 编写目标 软件需求规格说明描述了“学校学生宿舍管理系统”软件的功能性需求和非功能性需求。分析该系统的数据需求,功能需求,质量需求...1.学生离返校过程 (1)数据流图。宿舍管理系统数据流通如图所示。

    学生成绩管理系统需求规格说明书(教学用例)

    总结软件开发过程中的方法和技巧,更好的应用和数据库技术 ,并将这些需求用规范化的语言和规范化的结构完整、准确地表达清楚,以此统一软件开发者和用户对学生成绩管理信息系统软件的理解和认识。 1.2项目背景 待...

    强化测试用例设计:问题驱动的软件测试设计

    测试用例设计是整个软件测试过程中非常重要的测试活动,需求规格说明是测试人员开展测试设计的主要参考输入。而在测试实践中基于需求规格说明得到的测试用例,在测试覆盖率、测试效率、测试有效性和测试质量等方面的...

    用例建模指南

    用例(Use Case)是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模。用例方法最早是由Iva Jackboson博士提出的,后来被综合到UML规范之中,成为一种标准化的需求表述体系。用例的使用在RUP...

    vc开发经典模式与实例 源码

     3-3-1 设计用例实现方案  3-3-2 数据存储设计  3-3-3 用户界面设计  3-3-4 根据UML生成代码框架  3-4 图书馆管理系统的Visual C++实现  3-4-1 Visual C++6.0下的ODBC数据库编程技术  3-4-2 数据库...

    软件工程实验三教学管理系统的分析与设计.zip

    1.通过教学管理系统的分析与设计,掌握面向对象的分析与设计方法以及UML在软件项目和开发过程中的应用; 2.掌握软件系统的静态建模方法; 3.掌握软件系统的动态建模方法; 4.综合系统建模中的用例图、序列图、...

    需求分析与用例建模1

    第 3 章 需求分析与用例建模UML 和使用 UML 的软件开发过程是两回事。UML 语言本身只是工具,面向对象的系统分析、 设计方法才是面向对象开发的灵魂。系

    自动售货机测试用例(因果图).doc

    自动售货机测试用例(因果图).doc

    场景法设计测试用例(以在线购物系统为例

    场景法设计测试用例(以在线购物系统为例) 用户进入一个在线购物的网站惊醒购物,选购物品后,进行在线购买,这时需要使用账号登录,登录成功后,进行订单交易,交易成功后,生成订购单,完成整个购物过程

    超市仓库管理系统需求规格说明书(教学用例)

    一:引言: (一)为了满足广大消费者的消费愿望(不在劳神费力),特有软件开发团队,结合用户的需求为超市开发仓库管理系统,来来解决后顾之忧,众所周知:大的超市的...数据流图——用于描述系统对数据的加工过程。

    VC开发经典模式与实例.rar

     3-3-1 设计用例实现方案  3-3-2 数据存储设计  3-3-3 用户界面设计  3-3-4 根据UML生成代码框架  3-4 图书馆管理系统的Visual C++实现  3-4-1 Visual C++6.0下的ODBC数据库编程技术  3-4-2 数据库...

    问题驱动的软件测试设计:第1章测试用例设计面临的挑战

    测试用例设计是整个软件测试过程中非常重要的测试活动,需求规格说明是测试人员开展测试设计的主要参考输入。而在测试实践中基于需求规格说明得到的测试用例,在测试覆盖率、测试效率、测试有效性和测试质量等方面的...

    SpringBoot最全企业级博客前后端视频教程

    13-1 -用户管理的需求回顾 13-2 -后台实现 13-3 ,13-4-前台实现、测试 第14章 博客系统的角色管理实现 14-1 -角色管理的需求回顾 14-2 -后台实现 14-3 -前台实现 第15章 博客系统的权限管理实现 15-1 -权限...

    JSP图书馆管理系统毕业论文

    6.2 测试用例设计与测试用例的运行过程及测试结果分析 - 49 - 6.2.1模块测试 - 49 - 6.2.2集成测试 - 50 - 6.2.3 验收测试 - 51 - 6.3 评价 - 51 - 第七章 总结 - 52 - 致 谢 - 53- 参考文献 - 54 -

Global site tag (gtag.js) - Google Analytics