软件需求与可视化模型(微软技术丛书)
上QQ阅读APP看书,第一时间看更新

推荐序

谈到软件需求工作,最引人注目的现象是学术界所想的与工业界实际所做的之间存在着巨大的差距。

学术界认为他们远远超前工业界,因为他们已经设计了多种多样的模型和方法,完成了实验性研究(通过对所谓的工业界人士进行专门的诱导),做了理论分析,出版了大量有指导意义的教科书。学术界抱怨为什么工业界对他们的研究成果运用得如此缓慢。

工业界则认为他们远远超过学术界,因为他们有多年的实践经验,有可用的软件(虽然经过一些修修补补),有检验过的需求管理办法包括可跟踪的度量指标、审核流程、配置管理以及优先级和状态指标。工业界抱怨为什么学术界对工业界目前的水平了解甚少。

双方就像在环形自行车比赛场上的两位参赛选手,不断地追逐却始终保持着半圈的差距。

当我看到乔伊·贝迪(Joy Beatty)和安东尼·陈(Anthony Chen)所写的这本书时感到非常高兴。他们是实干家,有着自己的亲身体会。然而最重要的是,他们熟悉研究人员所提倡的大量模型,并进一步把这些模型应用到工作中。现在他们已经很有体会了,可以看到正在使用的模型帮助他们方便有效地分析遇到的所有产品需求。他们能够听懂学者们讨论的内容,例如使用KAOS或者i*做目标建立模型。他们见到过一些有挑战的项目(只需要使用上下文模型增加一些说明),他们还见到过一些失败的项目(只是因为缺少像数据字典一类的简单而传统的技术),他们还经历过需要使用所有模型和技术的场景。

两位作者清楚地认识到,就像任何系统或产品中除了需要所有部件外还有更多的工作要做,需求流程也不例外。单有飞机的机体结构、一对强大的发动机、航空电子系统以及机组人员是不够的,只有所有部分组装在一起才能生产出飞机。当所有部件共同工作时,新的奇迹出现,创造了超过部件本身的能力:这就是飞行能力。

要想使需求流程“启动起来”,首先要知道已经存在有多种需求模型。在业务合同中列出需求购买清单是非常有价值的,但就这个清单而言,用它去检查产品的正确性和完整性极其困难,同时这个清单也没有说明这些需求是如何发现的。我们需要不同的模型来发现、检验和分析需求。“购买清单”是分析的输出结果,而不是用于进一步分析的唯一输入。

乔伊和安东尼归纳出四个主要的需求类别,分别是目标类型、人员类型、系统类型和数据类型。

目标类型从概念上讲最接近于传统的需求,不过用在更早期的意向阶段,关注于业务目标是什么以及如何满足这些业务目标。

人员类型,不用解释,是看哪些人会对设计中的系统感兴趣,他们将如何使用系统以及需要系统做什么。

系统类型指的是探讨管理新系统所有功能的环境、接口和事件。在很大程度上属于传统的分析方法类别,由于软件方式会有突发的变化,这些分析方法经常被认为已经过时了。但是乔伊和安东尼是值得称赞的,他们勇敢地正视这一点,明确指出旧的方法也许不全面但不见得是错误的。当然,上世纪70年代的系统分析方法本身是不够完善的,例如,它对目标没有足够的重视因而分析经常出错。

最后,数据类型指的是定义业务用户所需要的信息以及探索在系统内如何使用信息。虽然数据类型不仅包括数据分析,而且包括状态模型和报告分析,但是数据类型也是非常传统的,我们是从现代视角重新看待老的话题。

需求模型之间存在着必然的复杂性,它们相互依存。目标和功能有关,功能和流程有关,流程和用例有关,用例和用户接口有关。乔伊和安东尼将展示如何调整需求模型结构(也可称为元结构)以适应不同的项目。他们已经无数次地检验过并证明他们是成功的。

这本书所讨论的方法是针对业务流程软件而设计的。其他类型的项目可以借鉴,不过显然需要不同的需求流程,例如开发大众产品系列需要包括硬件和软件。乔伊和安东尼特别关注一个领域:业务软件领域。他们创建了富有创新同时又令人信服的软件需求方法。

伊恩·亚历山大(Ian Alexander)