《第1章需求与需求工程概述》
n本节主要学习以下内容:
² 了解软件生产中的需求问题;
² 掌握需求工程的概念;
² 掌握需求的分类;
本节重点
需求工程概念的理解。
本节难点
需求工程的相关概念。
授课课时
2课时
教法建议
首先介绍需求存在的诸多问题,然后介绍什么是需求以及软件需求,从而引出需求的分类以及衡量需求的标准,最后介绍解决需求问题保证需求质量的方法是以工程的思想获取需求,即需求工程以及相关的其他概念。
本节主要讲解软件需求的重要性以及相关的基本概念。
课程简介与课前说明。
引入:
软件开发最终的目标是:满足用户的需求。 [直述]
内容:
1. 不完整的需求;
2. 缺乏用户的参与;
3. 不实际的客户期望;
4. 需求和需求规格说明的变更;
5. 提供许多不必要的功能。
[详细讲解,并举例说明]
引入:
需求、软件需求、从不同的角度理解需求。[直述+举例]
内容:
1、需求
宽泛地讲,需求来源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细说明了产品“必须或应当”做什么。
需求描述必须给出为什么需要这样一个系统,通常,需求描述系统要做什么,而不是怎么做。
“为什么”和“做什么”是指系统的设计目的,是置身系统外部,对应用领域性质的描述。“怎么做”是指系统的内部结构和行为。
[详细讲解,并举例说明]
2、软件需求
IEEE关于软件需求的定义
(1)用户解决问题或达到目标所需的条件或能力;(用户的角度)
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。(软件系统的角度)
[详细讲解,并举例说明]
3、需求工程
需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。
[详细讲解,并举例说明]
内容:
软件需求的分类
(1)目标需求;
(2)业务需求;
(3)功能需求;
(4)性能需求;
(5)约束与限制。
软件需求间的层次关系如下:

[详细讲解,并举例说明]
内容:
一个好的需求规格说明应该具有的特征:
1、 完整性。
不能遗漏任何必要的需求信息。遗漏需求将很难查出。每一项需求都必须将所要实现的功能描述清楚。开发人员可以从需求规格说明中获得设计和实现这些功能所需的所有必要信息。
2、 正确性。
每一项需求都必须准确地陈述其要开发出的功能性。只有用户代表才能确定用户需求的正确性,这就是为何一定要有用户的积极参与的原因。没有用户参与的需求只是是评审者凭空猜测。
3、 可行性。
每一项需求都必需是在已知系统和环境的权能和限制范围内可以实施的。最好在获取需求过程中始终有一位软件工程小组的组员与需求分析人员或考虑市场的人员在一起工作,由他来负责技术可行性上的检查。
4、 必要性。
每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。“必要性”也可以理解为每项需求都是用来授权你编写文档的“根源”。要使每项需求都能回溯至某项客户的输入,如使用实例或别的来源。
5、 划分优先级。
给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。不划分优先级,将导致项目管理者在开发或节省预算或调度中就丧失控制自由度。
6、 无二义性。
对所有需求说明的读者都只能有一个明确统一的解释。尽量把每项需求用简洁明了的用户性的语言表达出来。避免二义性的有效方法包括对需求文档的正规审查,编写测试用例,开发原型以及设计特定的方案脚本。
7、 可验证性。
检查一下每项需求是否能通过设计测试用例或其它的验证方法,如用演示、检测等来确定产品是否确实按需求实现了。如果需求不可验证,则确定其实施是否正确就成为主观臆断,而非客观分析了。一份前后矛盾,不可行或有二义性的需求也是不可验证的。
[详细讲解]
内容:
1、用户(user)。
利用计算机系统所提供的服务的人(们);
直接操作计算机系统的人(们),简单地说,就是直接使用软件系统的人(们)。
2、客户(customer)。
掌握经费的人(们),通常由他(们)决定软件需求,客户可以是用户,也可以不是用户。
正式接收新开发或修改后的硬件和软件系统的某个(些)人或组织。
3、软件开发人员(supplier)。
为客户开发软件系统的人。
4、项目相关人员(stakeholder)。
指与提出和定义软件需求相关的人,其包括所有的用户、客户和软件开发人员。这些人都是软件需求的来源,只是他们站在不同的立场看待将要开发的软件系统。
[详细讲解,并举例说明]
引入:
ISO9126指出软件的6个质量特征。 [直述]
主题:
[讲解+实例应用]
本节学习了以下主要内容:
2. 掌握需求、需求工程的概念;
3. 掌握需求的分类;
4. 需求规格说明书的重要性和格式;
5. 掌握需求工程的概念;
6. 掌握需求工程活动的构成。
考核点1:软件需求与需求工程的概念
考核点2:需求的分类
理解需求工程的概念。
学习软件开发的模型和过程
(注:在此写上个人在授课过程中所遇到的教案中所没有涉及到的特殊问题及其解决方法或解决方案,也可以总结自己的授课体会,课程体系、教材的不足等。)
授课教师(签名): 授课时间: 授课班级:

