《第1章需求与需求工程概述(2)》
n本节主要学习以下内容:
² 软件工程
² 软件开发过程模型
² 需求工程与软件开发
² 软件需求的开发和管理过程
本节重点
软件开发的过程和模型。
本节难点
需求工程遇到的困难和如何开发和管理需求。
授课课时
2课时
教法建议
首先介绍软件危机的出现,然后介绍解决危机的方法,提出软件工程的概念,讲解软件开发过程模型,提出需求面临的问题,讲解需求的重要性。
回顾上节课的主要内容。
本节主要讲解软件开发的全过程以及使用的开发模型,再次强调需求的重要性和需求面临的困难。
引入:
软件危机是指人们难以控制软件的开发和维护。 [直述]
表现:
(1)大型软件系统十分复杂,很难理解和维护;
(2)软件开发周期过长;
(3)大型软件系统的可靠性差;
(4)软件费用往往超出预算。
内容:
软件危机的解决方法:应用工程化的方法来进行软件的开发和维护。
软件工程的研究内容:软件开发过程、软件开发和维护的方法和技术、软件开发和维护工具系统、质量评价和质量保证、软件管理和软件开发环境等。
[详细讲解,并举例说明]
引入:
瀑布式模型
快速原型模型
渐增式模型
螺旋式模型
面向对象的开发模型 [直述+举例]
内容:
1、瀑布式模型
依据软件生命期而提出的软件开发模型,将软件的开发过程被分为六个阶段,每个阶段都有明确的分工和任务,并产生一定的书面结果。各阶段之间是紧密相关的,后一阶段的工作是依据前一阶段的工作结果而开展的。
不足
(1)要求用户一开始就提出清晰完整的需求;
(2)段间移交信息(文档)的过程中,由于个人的理解不同,容易产生误解;
(3)用户的参与程度不够。
2、快速原型模型
快速原型模型的基本思想是快速建立一个实现了若干功能的(不要求完全)可运行模型来启发、揭示和不断完善用户需求,直到满足用户的全部需求为止。
特点
(1)能弥补瀑布模型中用户参与程度不够等不足;
(2)能减少用户需求的遗漏以及(在软件开发后期)用户频繁修改需求的可能性;
(3)用户可以充分地参与到软件开发中;
(4)快速。
不足
(1)用户易于视原型为正式产品;
(2)快速原型系统对于软件系统的开发环境要求较多,在一定程度上也影响了其使用的范围和实用价值。
3、渐增式模型
渐增式模型的基本思想是从核心功能开始,通过不断地改进和扩充,使得软件系统能适应用户需求的变动和扩充,从而获得柔软性较高的软件系统。
特点
(1)能在短时间向用户提交可完成部分功能的产品。
(2)能逐步增强产品功能以使用户有较充裕的时间学习和适应新的软件系统。
不足
(1)在把每个新增的构件或功能集成到现有的软件系统中时,必须不破坏该软件系统。
(2)在设计软件系统的体系结构时,要充分考虑到其开放性,而且加入新构件的过程必须简单和方便。
4、螺旋式模型
将瀑布式模型与快速原型模型结合到一起,并加上风险分析。理解这种模型的一个简便方法是把它看作在每个阶段之前都增加风险分析。
特点
(1)适用于软件开发机构内部开发大规模软件项目。
(2)对于可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
(3)减少过多测试或测试不足所带来的风险。
5、面向对象的开发模型
所谓面向对象就是应用对象、类、继承、封装、消息、对象或类之间的关系等面向对象的概念对问题进行分析和求解的软件开发技术,或者说,是以对象(类)为数据中心、对象之间的动态行为模式作为运行机制的一种问题求解方法。
特点
(1)有一部分分析工作必须在设计之前进行,而另外一些分析工作则需与其他部分的设计与实现工作并行地进行,因而呈现出非线性的工作方式。
(2)软件系统的表达形式在整个开发模型中都是相同的,即面向对象方法中把类及其结构作为系统的表达单元,无论哪一个阶段都以渐增的方式不断地进化或细化这些表达单元。
(3)开发模型支持软件的重用。
[详细讲解,并举例说明]
内容:
软件需求对软件开发的影响:
(1)需求是制定项目计划的基础。
(2)需求工程所产生的最终产物——需求规格说明——是软件设计和软件实现的基础。(3)需求规格说明也是测试工作和用户验收软件系统的依据。
(4)需求规格说明也是软件维护工作的依据。软件需求间的层次关系如下:
[详细讲解,并举例说明]
内容:
需求工程是人们通过不断地认识和深入研究而形成的结果。而且需求工程对软件开发的影响是很大的。随着软件系统日益大型和复杂化,软件需求的开发和管理也日益复杂,而且需求工程自身也面临诸多有待解决地问题。
需求获取与需求分析的困难性
(1)有些需求可能用户也不是很清楚;
(2)需要用户与开发人间进行充分的交流和协商;
(3)需求间的冲突和矛盾的检查以及解决;
(4)需求是否完整的确定;
(5)合适的需求建模的方法和技术。
需求描述语言和规范化的困难性
(1)怎样规范化用户需求;
(2)规范化哪些用户需求;
(3)非形式化和形式化描述语言的使用。
需求验证的困难性
(1)需求规格说明正确性的确认和验证;
(2)验证的方法和技术;
(3)如何进行自动验证。
需求管理的困难性
(1)需求规格说明书的质量保证;
(2)需求规格说明书的版本管理;
(3)需求变更的控制。
[详细讲解]
内容:
软件需求的开发和管理过程是由导出、确认和维护软件系统需求规格说明的一系列活动组成的。
根据需求工程开发和管理过程可大致划分需求开发和需求管理两个阶段。其中需求开发主要产生正式的需求规格说明,需求管理主要是根据需求的变化对需求规格说明的内容及版本进行管理。
但在需求工程的实际处理过程中,上图所示的需求过程过于简略,不能反映需求工程复杂的执行过程。因此,为了如实地反映出需求工程的实际执行过程,需求工程过程可进一步划分为下图所示的若干阶段。
需求开发过程的主要任务
(1)需求获取:确定和收集与软件系统相关的、来自不同来源和对象的用户需求信息。
(2)需求分析:对获得的用户需求信息进行分析和综合,即提炼、分析和仔细审查已收集到的用户需求信息,并找出其中的错误、遗漏或其它不足的地方,以获得用户对软件系统的真正需求,建立软件系统的逻辑模型(或需求模型)。
(3)需求定义:使用适当的描述语言,按标准的格式描述软件系统的需求,并产生需求规格说明及其相应文档。
(4)需求验证:审查和验证需求规格说明是否正确和完整地表达了用户对软件系统的需求。
需求管理的任务
有效地管理软件系统的需求规格说明及其相应文档,评估需求变更带来的潜在影响及可能的成本费用,跟踪软件需求的状态,管理需求规格说明的版本等。
[详细讲解,并举例说明]
本节学习了以下主要内容:
2. 需求工程在软件开发过程中的重要地位;
3. 需求工程面临的困难;
4. 需求的开发与管理过程。
考核点1:软件开发过程
考核点2:需求的开发和管理过程
熟悉软件开发过程和开发模型。
熟悉需求的开发和管理过程
(注:在此写上个人在授课过程中所遇到的教案中所没有涉及到的特殊问题及其解决方法或解决方案,也可以总结自己的授课体会,课程体系、教材的不足等。)
授课教师(签名): 授课时间: 授课班级:

