内容简介
需求文档的模糊性和歧义性是导致很多软件项目最终无法满足用户需求的主要原因。针对这一现状,本书主要侧重于以视觉化方式来表达软件需求,介绍了4大类22个可视化需求模型,旨在指导读者通过软件需求的视觉化模型来进一步明确需求,促进开发人员对需求的理解,从而进一步推动软件项目的成功。
本书取自需求领域两位专家十多年的实践经验,具有重要的指导和参考意义,可以帮助读者准确理解需求,开发出满足用户需求和可以帮助用户达成任务目标的软件产品。
前 言
可视化需求模型是确认软件需求最有效的方法之一。这些模型帮助市场分析师确认,所有的项目利益相关者能够理解提出的解决方案,这些人士包括领域专家、商业利益相关者、高层管理人员和技术团队。可视化方式让项目利益相关者对项目更感兴趣,更乐于参与,其目的是找出需求方面是否存在差异。更重要的是,可视化创造了图形化的解决方案,帮助项目利益相关者理解解决方案交付什么结果和不包括什么。虽然可视化有这些优点,许多市场分析师和产品经理还是使用非可视化的电子表格或文本列出数千行条款。这些大量的文档让人吃不消,审查起来很枯燥,极不容易发现缺失的需求。这种实际状况反映当前需求专业培训有哪些问题症状,培训往往注重如何写出每条好的需求,而不注重如何分析整个解决方案。
这本书将帮助市场分析师、产品经理以及部门其他成员使用可视化模型捕获需求、建立模型和理解需求。本书描述了一种简洁而完整的语言RML(Requirements Modeling Language,需求建模语言),它用于建立软件需求的可视化模型,收集和规范了工业界中普遍使用的最佳实践模型。
谁应该读这本书
虽然这本书主要针对市场分析师和产品经理,但是我们认为项目经理、开发人员、架构师和测试人员也可以从这本书中获得巨大的价值,因为它可以帮助他们学习必要的信息标准,使他们的工作更容易。这本书通常把实际做工作的人称为“市场分析师”,在不同的部门里这个角色有着许多不同的职称。当提到“你”,我们也是指“市场分析师”。
事先告诉大家,我们的经验主要基于在现有基础架构上建设软件的项目,例如面向内部的信息技术系统(IT)、面向消费者的作为软件即服务(SaaS)的大型软件系统以及云系统。虽然我们已经在独立的软件包和嵌入式系统中使用了RML,但是这些类型的项目都不是我们的主打领域。根据我们对这些系统的有限经验,认为做这些系统工作的读者也会发现RML提供了令人难以置信的价值,我们期待着收到他们提出的改进意见。
本书的假设
本书假设你已具有编写软件需求的基础知识,因此不提供需求工作的基本信息。本书希望你对软件开发过程有些基本了解,例如,迭代方法、瀑布方法、和敏捷方法,知道它们是如何处理软件需求的。
谁不必读这本书
如果你刚刚开始做市场分析师,我们建议你在读这本书之前先阅读卡尔•魏格斯所写的《软件需求》一书,了解需求领域的全面概况。如果你正在开发独立包装出售的软件,书里的一些概念还是有意义的,不过你可能会发现商业定位不同。如果你是一个产品经理,侧重于软件产品的战略和营销而不是开发软件,这本书可能对你不合适,因为它重点集中于如何设计软件功能使其受到高端用户的认可。
本书的结构
我们组织这本书的目的是将它作为参考指南。
第Ⅰ部分先介绍一般模型的情况,然后讨论RML语言和四类模型:目标模型、人员模型、系统模型和数据模型(OPSD)。
第Ⅱ部分到第Ⅴ部分的各章讨论全部RML模型,各章有相同的结构,其中包括:
有关模型的真实故事
模型的定义
模型的模板
建议创建模型的工具
虚构的例子
解释如何创建和使用模型
学习使用模型的练习
所有这些章的练习都围绕着一个样品项目而设计。
第Ⅵ部分解释如何选择模型以及如何使用模型来产生软件需求。
附录A包含两个快速模型查找表作为模型选择指导,附录B建议创建模型的一般准则,包括所有的模型元数据和模板提示,附录C给出书中所有练习的答案。还有一个词汇表定义本书用过的术语。
阅读本书的最佳切入点
可以直接阅读全书,但对有些人来说,在深入每个模型的细节之前,从第Ⅵ部分开始阅读会更好地理解上下文。下表提供了更多的指导。
读者对象 建议步骤
总体上不熟悉需求建模或可视化建模 可以从前到后地阅读本书,看看需求模型的介绍,
了解每个模型的内容,最后把它们联系起来使用
熟悉可视化需求建模或者 建议浏览所有的章节,了解RML在可视化建模上与
是使用过类似模型的市场分析师 其他建模语言有什么不同。但是可能从第Ⅵ部分
开始了解更高级的内容更有帮助,如何选择模型
以及如何在项目中把多个模型一起使用。当项目
需要时,可以参考相关模型的章节
建模快速入门
这本书包含学习需求建模的大量信息。前景是美好的,为此我们开发了一种方法,使用尽可能少的模型但能为项目创造明显的价值。这种快速启动的方法适用于大多数IT项目。下面的流程图总结了这种方法。
如图所示,首先创建业务流程。接下来,根据流程步骤创建需求映射矩阵(RMM)。然后为流程步骤的截屏创建对应的显示-操作-响应(DAR)模型,将它们映射到业务流程步骤上。最后创建数据字典确保所有字段都包括,确认字段的验证规则。
虽然这张图没有提到很多其他有价值的模型,但给出了一系列读者容易理解的主要步骤。最后结果是,项目的需求将按照流程步骤来组织,截屏也将映射到流程步骤,以确保用户界面满足关键流程的需要。
本书约定和功能
本书使用专门的约定确保信息易于理解,易于遵循。
每章开始处用斜体字向读者讲述一个非软件的故事作为引子。
整本书中所有RML模型名称都大写。用非RML的其他建模语言建的模型名称不大写。
RML模型的模块称为元素,这些模型元素名称没有大写,以免与模型名称混淆。
这本书结尾处的词汇表列出我们认为重要的RML术语。这些术语以斜体字贯穿全书。
每个模型的模板提供工具提示的读者帮助,建议使用何种工具创建该模型。
配套内容
如果项目需要创建本书的模型时,欢迎你下载使用RML模型模板。RML模型的全套模板下载网址如下:
http://go.microsoft.com/FWLink/?Linkid=253518
压缩文件中的使用说明介绍了如何使用模板。简单步骤如下:下载压缩文件,还原文件内容放到方便的地方。每个模型有一个模板,Visio文件格式的模型包括一个模板和一个模板文件,模板正常工作需要这两个部分。其余模板均为Excel格式或Word格式。快速模型查找表也在压缩文件中。
致谢
从我们Seilevel公司的团队到在世界各地做需求工作的同事,再到多年来一直支持和帮助我们改进RML的客户,没有你们的合作,这本书是不可能出版的。
非常感谢Seilevel公司的员工帮助研究、审阅、写作、编辑和起草模型,提出很难回答的好问题,他们是乔伊斯•格雷普斯、詹姆•哈尔根、贝琪斯•托克代尔、迈克尔•刘、坎达丝•霍卡松、杰里•高尔、巴拉吉•维贾扬、马克•塔尔博特、马特•奥佛斯、阿贾伊•巴德里、杰森•菲尔德、杰拉尔丁•蒙戈尔德、凯尔•康登、克林特•格雷厄姆、大卫•莱因哈特、韦斯•埃德森、阿卜杜勒•马瑟、克里斯•蒂森索、罗布•斯巴克斯和洛瑞•威策尔。
我们诚挚地感谢许多审阅人员,他们花时间阅读书稿,给出他们的想法和批评,帮助改进本书。他们是乔伊•斯塔兹、肯特•麦当劳、莎拉•格雷戈里、列尔卡•别乌斯-杜奇、玛丽•戈若斯、卡尔•魏格斯、埃伦•戈特斯蒂讷、斯科特•赛尔豪斯特、埃维•胡克斯和安妮•哈特利。特别感谢卡尔•魏格斯和伊恩•亚历山大,他们两人提供写作指导并和我们切磋关于模型的想法。
我们衷心感谢勤奋工作和富有情趣的编辑团队,他们把这本书变成了现实。同时感谢组稿和策划编辑德文郡•马斯格雷夫和项目编辑卡罗尔•迪灵汉,他们两人都在微软出版社工作。我们还要感谢项目经理和文稿编辑凯西•克劳斯,排版人员吉恩•特雷纳里、校对海梅•奥德尔、美编珍妮•克雷沃和索引人员扬•巴德纳兹克。
最后,要感谢我们的家人一起忍受漫长的写作过程。乔伊感谢她的丈夫托尼•汉密尔顿,在整个过程中帮助她保持幽默感;感谢她的女儿斯凯,她出生在这本书的写作期间,当我们完成写作时她已经学会了一觉睡到天明。事实证明,写一本书就像有一个孩子:许多月的孕育、准备、和喂养。安东尼感谢他的妻子格洛丽亚对他的支持,还有他的女儿梅森,她可以自己愉快地玩耍让爸爸工作,但在电话会议时她变得非常安静。最后,安东尼想感谢乔伊,如果没有她全力以赴地推动这本书的写作,此书永远不会出版。
勘误和支持
我们已经尽了一切努力来确保本书和配套内容的准确性。这本书出版之后所报告的任何错误都会列在我们的微软出版社网站:
http://go.microsoft.com/FWLink/?Linkid=253517
如果发现没有列出的错误,可以通过这个网址向我们报告。
如果需要额外的支持,发电子邮件到微软出版社的书籍支持:mspinput@microsoft.com。
请注意,微软的软件产品支持不是通过上面地址提供的。
我们期待着你的意见
在微软出版社,你的满意是我们的首要任务,你的反馈是我们最宝贵的财富。请通过下面的网址告诉我们你对这本书的看法:
http://www.microsoft.com/learning/booksurvey
这项调查很简短。我们会阅读每一条意见和建议,提前谢谢你的输入。
目 录
第Ⅰ部分 需求模型介绍第1章 需求建模语言入门 3定义RML 3传统软件需求实践的挑战 4人脑的限制 4图比文字更容易理解 5需求模型 6为什么不用UML 7需求与设计 8一个层面的需求是对另一个层面的设计 8确定业务的实际需要 9定义需求 9需求模型不等于游戏的结束 10在项目中使用RML 10其他资源 10参考文献 11第2章 模型分类 12目标、人员、系统和数据模型 13目标模型 15人员模型 16系统模型 17数据模型 18参考文献 19第Ⅱ部分 对象模型第3章 业务目标模型 23业务目标模型模板 24例子 26创建业务目标模型 28使用业务目标模型 33常见错误 36相关的模型 37练习 37其他资源 38参考文献 38第4章 目标链 40目标链模板 41例子 42创建目标链 45使用目标链 52常见错误 55相关模型 55练习 55其他资源 56参考文献 56第5章 关键绩效指标模型 57KPIM模板 58例子 59创建KPIM 60使用KPIM 62常见错误 64相关的模型 65练习 65其他资源 66第6章 特性树 67特性树模板 68例子 70创建特性树 71使用特性树 73常见错误 75相关的模型 76练习 76其他资源 77参考文献 77第7章 需求映射矩阵 78RMM模板 79例子 81创建RMM 82使用RMM 87识别无关的需求或缺失的步骤 88常见错误 89相关模型 90练习 90其他资源 91参考文献 92第Ⅲ部分 人员模型第8章 组织结构图 95组织结构图模板 96例子 98创建组织结构图 99使用组织结构图 102常见错误 105相关模型 106练习 106场景 106其他资源 107参考文献 107第9章 处理流程 109处理流程模板 110例子 113创建处理流程 115使用处理流程 119常见错误 121相关模型 122练习 123其他资源 124参考文献 124第10章 用例 125用例模板 126创建用例 129写主要路径 133写替代路径 134使用用例 135常见错误 139相关模型 140其他资源 141参考文献 142第11章 角色权限矩阵 143角色权限矩阵模板 144例子 145创建角色权限矩阵 146使用角色权限矩阵 151常见错误 154相关模型 154练习 154其他资源 155第Ⅳ部分 系统模型第12章 生态系统图 159生态系统图模板 160例子 162创建生态系统图 164确认系统 164使用生态系统图 166常见错误 167相关模型 168练习 169其他资源 169参考文献 170第13章 系统流程 171系统流程模板 172例子 174创建系统流程 175使用系统流程 178推导需求 178常见错误 180相关模型 180练习 180其他资源 181第14章 用户界面流程 182UI流程模板 183例子 184创建UI流程 185决定屏幕的范围 186使用UI流程 190常见错误 192相关模型 192练习 193其他资源 193参考文献 193第15章 显示-动作-响应 195DAR模型模板 196例子 198创建DAR模型 201使用DAR 204常见错误 206相关模型 207练习 207其他资源 208参考文献 208第16章 决策表 210决策表模板 211例子 212创建决策表 213使用决策表 217常见错误 218相关模型 219练习 219其他资源 220参考文献 220第17章 决策树 221决策树模板 222例子 224创建决策树 225常见错误 230相关模型 230练习 231其他资源 231参考文献 231第18章 系统界面表 233系统界面表的模板 234例子 234创建系统界面表 235使用系统界面表 237常见错误 238相关模型 238练习 239第Ⅴ部分 数据模型第19章 业务数据图 243BDD模板 244例子 247创建BDD 248常见错误 255相关模型 255练习 256其他资源 256参考文献 256第20章 数据流图 258DFD模板 259例子 259创建DFD 260使用DFD 262常见错误 265相关模型 266练习 266其他资源 267参考文献 267第21章 数据字典 268例子 274创建数据字典 276相关模型 280练习 281其他资源 281参考文献 282第22章 状态表 283例子 285使用状态表 287常见问题 290相关模型 291练习 291其他资源 292参考文献 292第23章 状态图 293状态图模板 294例子 295创建状态图 296常见问题 299相关模型 300练习 300其他资源 301参考文献 302第24章 报告表 303报告表模板 304例子 306创建报表 308确定报告 308常见错误 312相关模型 312练习 313第Ⅵ部分 大局图中的模型第25章 项目模型的选择 317根据项目阶段选择模型 317根据项目特点选择模型 321关于读者的思考 333修改模型 334练习 335第26章 模型的综合应用 336很多不同的视图 336使用多个模型 337需求架构 338模型计划 340相关模型 341练习 352第Ⅲ部分 附录附录A 快速查找模型表格 355附录B 一般性模型指南 357附录C 练习答案 359