沙亚雄 2020-8-13 14:06
潘老师,你好,最近读了您的软件方法,结合自己的项目发现始终有一个疑问?那就是启动软件算不算一个用例,因为软件在启动的时候一般都要实例化一些对象,读一些配置文件等等。那启动软件或者软件关闭软件算一个用例吗?是系统用例还是其他用例的扩展呢?
UMLChina潘加宇
不算。
用例是需求,需求描述系统作为一个整体(黑箱)必须有的表现(功能、性能、强加的约束)——“不这样不行”。
那我们来看:
(1)“启动软件”在涉众看来属于“不这样不行”吗?
其实不是,涉众要的是我们系统为他提供的核心域相关的价值。如果我们的系统从面对涉众开始就一直可以使用,让它计算什么就计算什么,不需要启动,涉众是很高兴的。怎么做到?这不关需求的事。参见第二章“投币法”,我们的系统是外星人做的,这点有什么做不到的?
(2)“软件在启动的时候一般都要实例化一些对象,读一些配置文件”——这很可能不是需求。
“实例化”、“读取”、“加载”实际上是从设计角度猜想的一种设计方案。
系统是一个黑箱,不存在“实例化”、“读取”、“加载”,把这些删掉,然后问“为什么,不这样可能会怎样”,回答可能是“不这样,可能做某个计算的时候,从输入到输出的时间会比较长,那就被竞争对手甩下了”——这个才是系统作为一个整体不得不满足的。我们的系统是外星人做的,外星人有没有“实例化”、“读取”、“加载”我们怎么知道,外星人能给我做到速度比对手快就行了呗。
(3)和当前系统、当前用例相关吗?
可能有的人说,不管是谁启动,系统总得先启动吧?这是傻子都知道的,和当前系统、当前用例没有特定关系,不用写。
但是,就像我在“废话迷”一文中说的,很多人会乐意把“启动”当成用例,然后每个项目都写一遍,不用思考,还可以凑工作量,爽!
当然,如果“启动”就是目标系统的核心价值,它就是用例。例如,一个提供“远程跨平台启动应用程序”服务的软件。