前面我们已经就数据库系统开发生命周期的各个阶段进行了讨论。在这些阶段中,常常会出现这样的关键时刻,即数据库开发人员必须获取继续进行数据库系统开发所必需的实况(fact)。这些必要的实况包括该企业使用的工作术语、在使用当前系统时遇到的问题、新系统可能为企业带来的机遇、新的系统中对数据和用户添加的必要的约束、新系统中需求的轻重缓急程度。要想获得这些实况就需要借助于实况发现(fact-finding)技术。
实况发现(fact-finding):使用面谈、问卷调查等技术手段收集关于系统、需求和优先考虑(preference)等实况信息的规范化过程。
1. 使用实况发现技术的时机
在数据库系统开发生命周期中有很多的时机可以使用实况发现技术,但是,在生命周期的前期阶段,包括数据库规划、系统定义和需求收集与分析阶段,实况发现显得尤为关键。在这些阶段,数据库开发人员需要获取一些重要的实况,这些实况是数据库系统开发所必须的。尽管在数据库设计以及生命周期的后期阶段也会用到实况发现技术,但其重要性没有在前期阶段那么强。比如,在物理数据库设计期间,当数据库开发人员试图了解更多的关于 DBMS 选型的信息时。,会用到实况发现技术。同样,在最后的运行维护阶段,可以应用实况发现技术来确定系统是否需要调优以提高性能,或者未满足新的需求而进一步开发。
注意,对于一个数据库项目,实现对实况发现所需的时间和投入做一个大概的估计是非常重要的。前面曾提到,考虑过细会陷入分析僵局(paralysis by analysis),然而,考虑过粗会导致在理解错误的基础上继续寻求错误的解决方案,从而导致不必要的时间和金钱的浪费。
2. 收集实况的类型
在数据库系统开发生命周期期间,数据库开发人员需要获取现有系统或新系统的实况。下表的示例中给出了在生命周期各个阶段需要采集的数据分类以及每个阶段生成的文档。前文曾提到过,数据库系统开发生命周期的各个阶段并非严格遵循既有顺序,而是存在一定程度的迭代,即通过反馈重复先前阶段的活动。对于数据采集和文档的生成也是如此。比如,在数据库设计阶段遇到的问题可能有必要重返需求收集与分析阶段,以采集更多的数据。
阶段 | 需要获取的数据 | 需要生成的文档 |
---|---|---|
数据库规划 | 数据库项目的目的与目标 | 数据库系统的任务描述和任务目标 |
系统定义 | 描述主要用户视图(包括不同的工作角色和不同的商业应用领域) | 定义数据库应用程序的范围和边界,定义用户视图 |
需求收集和分析 | 用户视图的需求;系统规范,包括性能和安全需求 | 用户和系统的需求规格说明书 |
数据库设计 | 用户对逻辑数据库设计的意见和建议;目标 DBMS 的功能 | 概念 / 逻辑数据库设计(包括 ER 模型、数据字典、关系模式);物理数据库设计 |
应用程序设计 | 用户对界面设计的意见和建议 | 应用程序设计(包括对程序和用户界面的描述) |
DBMS 选型 | 目标 DBMS 的功能 | DBMS 的评估和推荐选型 |
建立原型系统 | 用户对原型系统的意见和建议 | 修改用户需求和系统规范 |
实现 | 目标 DBMS 的功能 | |
数据转换与加载 | 当前数据的格式;目标 DBMS 的数据导入性能 | |
测试 | 测试结果 | 采用的测试策略;测试结果的分析 |
运行维护 | 性能测试结果;新增或修改以后的用户和系统需求 | 用户手册;性能分析;修改以后的用户需求和系统规范 |
3. 实况发现技术
数据库开发人员在一个数据库项目的开发期间通常会使用几种实况发现技术,以下是五种经常使用的实况发现技术:
3.1 分析文档资料
分析文档资料有助于了解一些内幕信息,比如对数据库的需求是如何提出的。此外,还可以帮助我们找到与解决所遇问题有关的企业这一方的有用信息。如果问题与当前运行的系统相关,那么就应该存在与该系统相关的文档资料,通过分析这些文档、表单、报表和文件,便能够迅速的理解该系统。
3.2 面谈
面谈是最常使用,通常也是最有用的实况发现技术。面谈通过与人面对面的交流来收集信息。使用面谈有这样几个目的:发现实况、核实实况、澄清实况、激发热情、使终端用户也参与进来、明确需求、汇集想法和意见。然而,面谈技术的使用需要良好的沟通技能,只有这样才能有效的与那些具有不同价值观、地位、想法、动机和个性的人交流。同其他的实况发现技术相比,面谈并不是对所有情形都是最好的方法。
面谈的方式有两种:无组织的和有组织的。无组织的面谈 在访问者的脑海里只有一个大概的目标。几乎没有什么明确的问题。访问者依靠被访问者建立面谈的框架,由被访问者引导面谈的方向。无组织的面谈通常会偏离谈话的主题,也正是由于这个原因,这类会谈对数据库的分析和设计帮助并不大。
在 有组织的面谈 中,访问者准备了一组明确的问题对被访问者提问。根据被访问者的回答,访问者将提出更多的问题以澄清问题或对问题加以扩展。开放式问题(open-ended question)允许被访问者随心所欲的回答,只要言之有理即可。例如 “你为什么对客户注册报表不满意?” 就是一个开放式问题。封闭式问题(closed-ended question)将答案限定为要么给出明确的选择要么简短的直接回答。“你是否能够准时收到客户的注册报表?” 或者 “用户注册报表上的信息是否正确?” 都属于封闭式问题,这两个问题仅仅需要回答 “是” 或 “不是”。
要想保证面谈的成功,需要选择合适的被访问者、事先做好充分准备以及以高效且有效的方式引导面谈的进行。
3.3 观察企业的运作
要理解一个系统的运作方式,最有效的实况发现技术就是观察。应用这种技术,你就有可能通过亲身参与或仅仅是在一旁观看一个人的活动来了解系统。当对采用其他方法收集到的有效数据还存在疑问时,或者由于系统某些方面的复杂性使得终端用户无法清楚解释时,观察就会显得特别有用。
与其他的实况发现技术不太一样,成功的观察需要精心的准备。为了确保观察的成功,很重要的一点事尽可能多的了解将要观察的人或业务活动。例如,观察者需要深入了解 “所要观察的业务活动的低发、正常和高峰时段分别是什么时候?” 以及 “若有人在旁观察并记录,被观察者的行为是否会失常?” 等问题。
3.4 研究
另一种有用的实况发现技术是就应用和问题本身进行详细研究。计算机行业期刊、参考书籍和因特网(包括用户组和公告板)都是很好的信息资源。这些信息资源能够提供别人解决相似问题的方法,以及是否存在能够解决或者部分解决该问题的软件包。
3.5 问卷调查
通过问卷的方式进行调查也是一种实况发现技术。问卷调查表是一类具有特定目的的文档,利用问卷调查表能够从大量的人群中收集实况,并且答案具有一定的可控性。当面对大量的被调查者时,没有哪种实况发现技术能够像问卷调查一样如此高效的收集到同样多的实况信息。
问卷调查表里可以包括两类问题,即自由格式和固定格式的问题。自由格式的问题 为回答问题者在作答时提供了较大的自由度。在问题后面,留有相应的空白用来作答。自由格式的问题有 “你通常会收到哪些报表? 如何使用它们?” 以及 “这些报表有什么问题吗? 如果有,请说明。”等。自由格式问题的难点在于被问卷者的答案难于列表统计,有的还可能答非所问。
固定格式的问题 需要明确作答。对于每一个问题,被问卷者都必须从给出的答案中选择。这样,很容易对问卷结果进行列表统计。但从另一方面来看,被问卷者可能无法提供一些也许有用的额外信息。固定格式问题的示例是:“当前适用的房屋的租赁报表是切实可行的,无需更改。” 被问卷者可能需要从 “是” 或 “否” 中选择,或者从 “完全同意” “同意” “没有意见” “不同意” 和 “强烈反对” 中选择。
4. 使用实况发现技术的实例
这个小节首先概述 DreamHome 案例研究,然后使用该案例讨论如何建立一个数据库项目。我们将使用图表的方式示范如何在数据库系统开发生命周期的前期阶段(即数据库规划、系统定义和需求收集与分析阶段)使用实况发现技术以及生成相应的文档。
4.1 DreamHome 案例研究——概述
1992 年,DreamHome 在英国的格拉斯哥(Glasgow)的第一家分公司开业。从那以后,这家公司稳步发展,目前其分公司已经遍布英国大多数的主要城市,甚至同一个城市拥有几家分公司。然而,随着公司规模的扩大,需要聘用越来越多的员工处理日益增长的大量文案工作。更糟糕的是,即使是在同一个城市里,各分公司之间也缺乏信息交流和信息共享。公司负责人 Sally Mellweadows 察觉到已经有太多的错误发生,如果她不及时采用措施挽救现状的话,公司的成功将不会长久。Sally 认为数据库可以解决一部分问题,并因此提出开发一个数据库系统以支持 DreamHome 的运作。她简要描述了 DreamHome 通常的运作方式。
DreamHome 专门从事房地产管理,在希望出租房屋的业主和需要租赁房屋的客户之间担当中介,DreamHome 目前拥有 100 个分公司,大约有 2000 名员工。当有新员工进入公司工作时,需要填写 DreamHome 员工注册表。