软件系统的涉众可以定义为所有能够影响软件系统的实现,或者会被实现后的软件系统所影响的个人和团体。常见的涉众类别有用户,客户,开发者,管理者,领域专家,政府力量,市场力量等。涉众群体不是固定不变的。按照复杂程度可以将信息系统分为小型系统,组织级系统,战略信息系统,组织间系统四种类型。涉众分析包括涉众识别,涉众描述,涉众评估(包括基于涉众扩展特征建立的分布图进行优先级评估,最终得到参与者,环境设定者,被影响者,观众四种类型。还有风险评估和共赢分析),涉众选择(包括以完整采样,态度积极,数量适中,比例恰当为标准的代表采样,参与策略,用户替代源等)。硬数据,包括定量(数据收集表格,统计报表)和定性(整个组织的描述文档,业务指导文档,业务备忘)硬数据两种。常用的硬数据采样技术是随机抽样和分层抽样。
需求获取的方法之一是面谈,利用面谈可以获得事实和问题,被会见者的观点,被会见者的感受,组织和个人的目标。面谈中包括两种基本问题类型,开放式问题和封闭式问题,各有优缺点。面谈结构包括金字塔结构,即封闭问题到开放问题的过度结构。漏斗结构,即开放到封闭结构。菱形结构,前两种结构的结合。除了开放问题和封闭问题,还有探究式问题,诱导性问题,双筒问题,元问题,程序性提示等几个其他重要的问题类型。在面谈之前,需要做阅读背景资料,确定面谈主题和目标,选择被会见者,准备被会见者,确定问题和类型等准备。面谈中需要建立一个理想氛围和环境,保持有礼貌的倾听,控制面谈过程,保持面谈主题,使用探究式问题,观察被会见者,使用道具支持。结束后感谢被会见者。记录面谈可以采用笔录,录音摄像(征得被会见者的同意)。面谈结束需要复查面谈记录,总结面谈信息,完成面谈报告。面谈包括结构化面谈,半结构化面谈,非结构化面谈等几个方面。还有群体面谈。除了面谈,还有调查问卷,头脑风暴等方式。
原型通常是一个系统的一部分或者一个模型。原型方法通过在用户和需求工程师之间设立一个有形的物件,使得双方的交流更加简单和有效。一方面可以使用户更好的理解需求工程的假设,一方面可以使需求工程师通过观察用户的反馈加深对用户的理解,明确自己的假设正确性。原型类别有演示原型,样板原型,拼凑原型,演示化原型,水平和垂直原型。原型开发方法包括探索式,实验式,演化式。原型方法包括过程,确定需求,开发,评估,修正。优点是及早解决系统开发中的不确定性,风险是会使需求不够完善。
常见的观察方法有采样观察,民族志(长期浸入式),话语分析,协议分析,任务分析等。通过对突现,局部,暂时,涉身,开放,模糊,等几个情景性的性质中得到需要采用观察方法解决的问题有:理解复杂的协同事件,获取工作中的异常处理,获取与用户认识不一致的实际知识,了解用户的认知和获取默认知识。其中民族志的优点是能够得到信息的深度理解和让真实世界的社会性因素可见化,缺点是耗时,结果难以传递到开发过程。
需求获取的常见模型驱动方法有:面向目标的方法(目标的获取,分析和实现),基于场景的方法,基于用例的方法。用例就是一种场景的文本化表现方式,详细用法就是uml的设计。
模型语言有语法,语义和语用。常见的需求分析技术包括,上下文图,数据流图,实体联系图,功能实体矩阵,功能分解图,过程依赖图,用例图,类图等uml建模过程。常见需求分析技术,可以通过wieringa和zachman进行分类(书p206/209)。需求分析方法有传统分析,结构化分析,信息工程和面向对象分析。实践中的需求分析需要需求分析技术的使用,非功能需求的建模,确定需求优先级,新技术方法的需要等。
过程建模是结构化分析方法的典型技术,也就是分析需求获取活动获得的信息,发现系统的功能和其与外界的交互,建立能够实现系统功能的过程分解结构,形成系统的过程模型,并用图形的方式将过程模型描述出来。过程建模使用的主要技术有:上下文图,数据流图,微规格说明(过程规范),数据字典。因为已经学过uml建模,大致理解各个方面。最后是逻辑DFD,物理DFD与传统的DFD三种建模方法的区别和优缺点。
过程模型更多的是侧重数据产生与使用的时间,地点和方式,而没有描述数据的定义,结构和关系等特性。数据建模就是描述的后者。数据建模包括概念,物理和逻辑数据模型。使用ERD描述数据模型的方法,ERD的创建方法主要有三种:依据充分描述信息的创建,依据硬数据表单的创建,复杂情况下的创建。现在实现ERD与过程模型同步的技术中,功能/实体矩阵是一种比较常见的技术。 面向对象建模就是有关uml的各种图和建模方式的描述。