软件工程基本概念之需求工程

软件工程基本概念之需求工程

需求工程是软件工程中最复杂的过程之一,其复杂性来自于客观和主观两个方面。从客观意义上说,需求工程面对的问题几乎是没有范围的。由于应用领域的广泛性,它的实施无疑与各个应用行业的特征密切相关。
   其客观上的难度还体现在非功能性需求及其与功能性需求的错综复杂的联系上,当前对非功能性需求分析建模技术的缺乏大大增加了需求工程的复杂性。从主观意 义上说,需求工程需要方方面面人员的参与(如领域专家、领域用户、系统投资人、系统分析员、需求分析员等等),各方面人员有不同的着眼点和不同的知识背 景,沟通上的困难给需求工程的实施增加了人为的难度。

  最初,需求工程仅仅是软件工程的一个组成部分,是软件生命周期的第一个阶段。虽然大家也都知道需求工程对软件整个生命周期的重要性,但对它的研究远远没有对软件工程的其他部分的研究那么深入。

  在传统软件工程生命周期中,涉及需求的阶段称作需求分析。一般来说,需求分析的作用是:

  ● 为系统工程师说明软件的功能和性能,指明软件和其他系统成分的接口,并定义软件必须满足的约束;

  ● 为软件工程师提供软件的配置,建立数据模型、功能模型和行为模型;

  ● 为软件设计师提供可用于转换为数据设计、体系结构设计、界面设计和过程设计的模型;

  ● 为开发人员提供客户需求规格说明,用于作为评估软件质量的依据。

  但从当前的研究现状来看,需求工程的内容远不止这些。需求工程是系统工程和软件工程的一个交叉分支,涉及到软件系统的目标、软件系统提供的 服务、软件系统的约束和软件系统运行的环境。它还涉及这些因素和系统的精确规格说明以及系统进化之间的关系。它也提供现实需要和软件能力之间的桥梁。

  需求工程的基本活动包括:

  ● 抽取需求;

  ● 模拟和分析需求;

  ● 传递需求;

  ● 认可需求;

  ● 进化需求;

  ● 挖掘需求。

  每个活动都有它基本的动机、任务和结果,也有各自的困难所在。

  首先,开始一个项目是因为要对现行系统进行改造。要改造一个系统是因为现行系统存在需要解决的问题。如:现行系统与当前情况不符合、出现新 的商机或者可能节省时间、资金和资源等,这就是抽取需求的动机。在这个阶段,需求工程师的任务是认识问题之所在,获取足够多的知识,最后成为问题领域的专 家。需求工程师常采用W6H方法去认识问题领域,即6个以W打头的问题,一个以H打头的问题,如表1所示。

  1. Who—工作的责任者是谁?

  2. For whom—工作的服务和汇报对象是谁?

  3. Why—为什么要做该项工作?

  4. What—工作是什么?

  5. Where—工作的地点在哪里?

  6. When—工作的时间期限?

  7. How—完成工作所使用的方法和程序?
 需求抽取是非常困难的,其主要原因有:

  (参见基于程序开发心理学的需求的不确定性分析及需求与质量关系杂谈)

  ● 缺乏领域知识,应用领域的问题常常是模糊的、不精确的;

  ● 存在默认的知识,即难以描述的日常知识(常识问题);

  ● 存在多个知识源,而且多知识源之间可能有冲突;

  ● 面对的客户可能有偏见,如不能提供你需要了解什么或不想告知你需要了解的事情。

  需求抽取的方法一般有问卷法、面谈法、数据采集法、用况法、情景实例法以及基于目标的方法等,还有知识工程方法,如:场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等。

需求工程的第二个阶段是模拟和分析需求,目前有许多工作都以此为目标进行。需求分析和模拟的出发点在于:

  ● 指导抽取;

  ● 帮助需求工程师了解进展;

  ● 帮助发现问题;

  ● 帮助检查对问题的理解。

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

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

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

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

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

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

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

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

  ● 原子性:没有冗余的概念。

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

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

  功能需求模拟从不同视点为模拟软件提供服务,包括结构视点和行为视点等,主要方法有:结构化分析、面向对象分析和形式化方法。

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

  ● 为验证打下基础;

  ● 允许对需求进行推理;

  ● 允许执行需求。

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

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

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

  ● 没有合适的工具;

  ● 要求更多的代价。

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

  ● 传达对需求的理解;

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

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

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

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

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

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

http://home.rbtmm.com/space.php?uid=38&do=blog&id=176

 

第一部分:需求析 文档 这一 部分安排 部分安排 部分安排 4个课 时,前两个课 时,前两个课 时,前两个课 时,前两个课 时,前两时学生做, 时学生做, 时学生做, 时学生做, 并打印纸质版。 并打印纸质版。 并打印纸质版。 并打印纸质版。 并打印纸质版。 后两个课时相互批改 后两个课时相互批改 后两个课时相互批改 后两个课时相互批改 后两个课时相互批改 纸质版文 纸质版文 档, 然后老师评讲。 然后老师评讲。 然后老师评讲。 然后老师评讲。 具体评分细节参考 具体评分细节参考 具体评分细节参考 具体评分细节参考 附件 2。 (1) 分层 数据流图 数据流图 数据流图 (40 分) 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 提示:由顶层图的模型开始,逐分解 ,这个系统大致上分 ,这个系统大致上分 ,这个系统大致上分 ,这个系统大致上分 ,这个系统大致上分 3层即可分解到位 层即可分解到位 层即可分解到位 层即可分解到位 。要求耐心细 要求耐心细 要求耐心细 致地用 致地用 Microsoft Visio Microsoft Visio Microsoft Visio Microsoft VisioMicrosoft VisioMicrosoft VisioMicrosoft VisioMicrosoft Visio Microsoft Visio工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 工具画图,然后粘贴矢量到 WordWord Word文档中。 文档中。 注意子图与父中对应 注意子图与父中对应 注意子图与父中对应 注意子图与父中对应 注意子图与父中对应 加工之间的数据流平衡。 加工之间的数据流平衡。 加工之间的数据流平衡。 加工之间的数据流平衡。 加工之间的数据流平衡。 注意加工和数据流的命名。 注意加工和数据流的命名。 注意加工和数据流的命名。 注意加工和数据流的命名。 注意加工和数据流的命名。 注意加工和数据流的命名。 (2)数据字典 数据字典 (20 分) 提示:只需定义出数据流词条。 提示:只需定义出数据流词条。 提示:只需定义出数据流词条。 提示:只需定义出数据流词条。 提示:只需定义出数据流词条。 提示:只需定义出数据流词条。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 要求与数据流图对应,按教材上的格式做。 (3)实体 -关系分析模型 关系分析模型 关系分析模型 (10 分) 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 提示:为数据库设计奠定基础,即给出 E-R图(或表结构 )。 (4)加工规约 加工规约 (30 分) 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 提示:加工规约严格讲属于数据字典的范围,此处单独作为第 4点旨在强调它 的重要性,点旨在强调它 的重要性,点旨在强调它 的重要性,点旨在强调它 的重要性,点旨在强调它 的重要性,点旨在强调它 的重要性,点旨在强调它 的重要性,为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 为模块的内部实习细节奠定基础。 注意,只需要 注意,只需要 注意,只需要 注意,只需要 对应数据流图中的 对应数据流图中的 对应数据流图中的 对应数据流图中的 底层加工 底层加工 进行 规约。 要求 定义方法采用结构化英语 定义方法采用结构化英语 定义方法采用结构化英语 定义方法采用结构化英语 定义方法采用结构化英语 (伪码亦可) (伪码亦可) (伪码亦可) 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值