读《需求工程——软件建模与分析》第三部分 需求分析 有感
在需求获取中,需求工程师可以得到关于问题域的描述信息,可以得知涉众对软件系统的期望。可是,上述这些被记录在获取笔录上的内容都还是属于现实世界的信息,它们是用户和其他涉众对现实世界的理解和描述,使用的是实际业务的表达方式。因此,需求分析的根本任务是:(1)建立分析模型,达成开发者和用户对需求信息的共同理解。(2)依据共同的理解,发挥创造性,创建软件系统解决方案。
模型是对重要知识的集中描述,这种描述是通过模型语言实现的。模型语言有三个要素:语法、语义、语用。模型语言的三个要素之间互为依赖,每个要素都为下一个要素提供了一个必须的环境。非形式化的自然语言是一种语法规则非常复杂的模型语言,他可以描述现实世界中发生的各种情况。
建立分析模型的任务集中体现在需求分析的需求建模子活动中。软件需求分析的关键是为真实世界的问题建立模型,即问题域建模。具体模型类别的选择要视问题的情况来确定,一般有以下影响因素:(1)问题域的特性:不同类型的问题域有不同类别的分析要求,例如实时的应用处理要求建立控制流和状态模型,信息系统会要求建立数据模型等。(2)需求分析人员的技能:在多种模型类别都能满足需要时,需求分析人员通常会此采用自己更加熟练和更有经验的建模语言和方法。(3)客户的过程需求:客户可能会要求使用其喜欢的建模语言和方法,或者禁止使用其不熟悉的建模语言和方法。(4)方法和工具的可能性:尽管适合于默哀书特定的问题,但是培训和工具不支持的建模语言和方法是可能不会被广泛接受。
常用的需求分析技术包括:上下文图、数据流图、实体联系图、功能实体矩阵、功能分解图、过程依赖图、用例图、类图、交互图、活动图、对象约束语言等。实践表明,需求工程师在建模与分析中遭遇的最大难题不在于某些具体技术的掌握问题,它们有足够的能力学习和掌握每一种技术。对需求分析技术的综合运用才是需求分析人员最大的困难。
方法又被称为方法论,是指人们做事或者思考的策略、步骤、方向或者行动。在软件工程的发展中,针对需求分析也出现很多方法,其中有代表性的右:结构化方法、信息工程方法和面向对象方法。结构化方法和信息工程方法曾经在历史上起到过重要的作用,而且目前也仍然在起着重要作用。面向对象方法是目前工业界使用的主流方法。
在实践中,确定优先级的活动尤为重要的情况有;(1)一个项目的资源有限,无法满足用户的所有需求。(2)项目采用了分阶段的开发方式。(3)在项目的开始阶段,并不能明确所有的用户需求,或者无法保证会最终满足所有的用户需求。
数据流图是过程建模所使用的主要建模技术。它建模时所使用的基本模型元素有四种:外部实体、过程、数据流和数据存储。上下文图是DFD最高层次的图,是系统功能的最高抽象。行为图是结构化英语的一种特殊表达方式,它使用特定的图示来表示过程的逻辑结构。决策表是一种决策逻辑的表示方法,它可以比结构化英语更好的描述复杂性决策逻辑。数据字典是一个储存库,包含软件使用和产生的所欲数据对象的描述,其中也包括DFD东中数据流和数据存储的定义。
面向对象建模时面向对象方法学在需求分析中的应用。对象的定义中强调了一个事物可以被抽象为对象的两个条件:独立可确认和有明确的角色。系统中的对象不是鼓励存在的,它们需要相互协作完成任务。对象之间的这种相互协作的关系成为链接,它描述了对象之间的物理或业务联系。