需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。自然语言形式具有表达能力强的特点,但它不利于捕获模型的语义,一般只用于需求抽取或标记模型。半形式化表示可以捕获结构和一定的语义,也可以实施一定的推理和一致性检查。形式化表示具有精确的语义和推理能力,但要构造一个完整的形式化模型,需要较长时间和对问题领域的深层次理解。对需求概念模型的要求包括:

  ● 实现的独立性:不模拟数据的表示和内部组织等;

  ● 足够抽象:只抽取关于问题的本质方面;

  ● 足够形式化:语法无二义性,并具有丰富的语义;

  ● 可构造性:简单的模型块,能应付不同复杂程度和规模的描述;

  ● 利于分析:能支持二义性、不完整性和不一致性分析;

  ● 可追踪性:支持横向交叉索引并能与设计或实现等建立关联;

  ● 可执行性:可以动态模拟,利于与现实相比较;

  ● 小性:没有冗余的概念。

  需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。

  企业模拟是一种软系统方法,涉及整个组织,从各个不同的视点分析问题,包括目标、组织结构、活动、过程等。有的企业模拟还建立可执行的领域模型。采用企业模拟方法产生的不仅仅是规格说明,还可以得到许多关于企业运作的状况分析。目前代表性的工作包括:信息模拟、组织模拟和目标模拟等。

  功能需求模拟从不同视点为模拟软件提供服务,包括结构视点和行为视点等,主要方法有:结构化分析、面向对象分析和形式化方法。结构化分析是一种面向数据的方法,以数据流为中心。其核心概念包括:进程、数据流、数据存储、外部实体、数据组和数据元素。有代表性的模拟工具有:数据流图、数据字典、原始进程规格说明。面向对象分析以对象及其服务作为建模标准,比较自然,对象也具有相对的稳定性。主要模拟的元素有:对象、类、属性、关系、方法、消息传递、Use Cases等。其主要原理包括分类继承层次、信息隐藏、汇集关系等。形式化方法从广义上说,是应用离散数学的手段来设计、模拟和分析,得到像数学公式那样精确的表示。从狭义上说,是使用一种形式语言进行语言公式的形式推理,用于检查语法的良构性并证明某些属性。形式化方法一般用于一致性检查、类型检查、有效性验证、行为预测以及设计求精验证。引入形式化机制的目的是:

  ● 减少二义性,提高精确性;

  ● 为验证打下基础;

  ● 允许对需求进行推理;

  ● 允许执行需求。

  但是人们常常不用形式化手段,因为:

  ● 形式化涉及太多细节,分析的级别较低;

  ● 形式化的核心问题是一致性和完整性,而不是获取需求;

  ● 没有合适的工具;

  ● 要求更多的代价。

  传递需求的主要任务是书写软件需求规格说明,其目的是:

  ● 传达对需求的理解;

  ● 作为软件开发项目的一份契约;

  ● 作为评价后续工作的基线;

  ● 作为控制需求进化的基线。

  对需求规格说明感兴趣的群体包括:用户、客户;系统分析员、需求分析员;软件开发者、程序员;测试员;项目管理者。

  认可需求是让上述人员对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。

  进化需求的必要性是明显的,因为客户的需要总是不断(连续)增长的,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)成为软件进化的首要问题。对传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性并进行关于变化的推理。