您好,欢迎访问三七文档
软件需求分析与形式化方法丁艳辉E-Mail:dingyanhui@gmail.com2/28软件需求分析与形式化方法这是一门什么样的课程?(What)为什么要学习这门课程?(Why)如何学习这门课程?(How)3/28《软件需求分析与形式化方法》是一门什么样的课程?软件软件是程序以及开发、使用和维护程序需要的所有文档。软件的开发举例:盖房子4/28建造过程确定和分析需求提出并文档化房子的总体设计提出房子的详细规格说明识别并设计房子的组成部分(房子、管道、电)构建房子的每一个组成部分测试房子的每一个组成部分把房子的各个组成部分集成在一起,在住户搬进来之前做最后的修改由房子的住户持续进行维护5/28软件的开发包括以下活动需求分析和定义系统设计程序设计编写程序单元测试集成测试系统测试系统交付维护6/28这是一门什么样的课程?研究如何有效地获得需求(需求开发),并有效地对需求进行管理(需求管理)。7/28第2个问题:为什么要学习这么课?16.226343552.746514631.12815190%20%40%60%80%100%1994年1999年2003年2006年成功超期失败图1-1CHAOS报告数据分析8/28表1-1项目超支、超期情况分析项目超支项目比例进度超期项目比例20%15.5%20%13.9%21%-50%31.5%21%-50%18.3%51%-100%29.6%51%-100%20.0%101%-200%10.2%101%-200%35.5%201%-400%8.8%201%-400%11.2%400%4.4%400%1.1%9/28成功因素权重失败因素权重用户的参与15.9%不完整的需求13.1%执行层的支持13.9%缺乏用户参与12.4%清晰的需求描述13.0%资源不足10.6%合适的规划9.6%不切实际的用户期望9.9%现实的客户期望8.2%缺乏执行层的支持9.3%较小的里程碑7.7%需求变更频繁8.7%有才能的员工7.2%规划不足8.1%主权5.3%提供了不再需要的7.5%清晰地愿景和目标2.9%缺乏IT管理6.2%努力的工作和稳定的员工2.4%技术能力缺乏4.3%其他13.9%其他9.9%表1-2项目成败因素分析10/28“项目需求无疑是在软件项目前期造成麻烦的一个最大原因,一个又一个研究表明,当项目失败时,需求问题正是核心问题.”--------R.Glass11/28第2个问题:为什么要学习这门课?《软件需求分析与形式化方法》主要在需求分析阶段,有效地发现和解决与需求相关的问题。因此,需要学习这门课。12/28第3个问题:如何学习这门课?多看多思考多动手13/28第一章需求工程概述1、什么是软件需求?例如,对于选课系统,用户有哪些需求?Davis认为,软件需求是从软件外部可见的,软件所具有的、满足于用户的特点、功能及属性等的集合。14/28IEEE,软件工程标准词汇表将需求定义为:(1)用户解决问题或达到目标所需的条件或能力;(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。15/28关于软件需求还有不同的定义,原因在于一方面需求工程发展过程还不长(20世纪90年代提出);另一方面,真正的需求实际是在人们的脑海中形成的,很难给予准确的定义。总的来说,软件需求是指软件系统必须满足的所有功能、性质和限制。16/282、软件需求的分类目标需求:表示组织或客户高层次的目标;(描述了组织为什么要开发一个系统)业务需求:描述用户的目标,或用户要求系统必须完成的任务;功能需求:规定开发人员必须在产品中实现的软件功能;性能需求:实际的软件系统功能应达到的技术指标;约束与限制:软件开发人员在设计和实现软件系统时的限制。17/283、需求规格说明软件需求规格说明是软件所应满足的全部需求,并可用文档的方式完整和精确地陈述这些需求。18/284、需求工程指应用工程化的方法、技术和规格来开发和管理软件的需求。19/285、需求的开发和管理需求工程需求开发需求管理需求获取需求分析需求描述需求验证20/281)需求获取:确定和收集与软件系统相关的、来自不同来源和对象的用户需求信息。2)需求分析:对获得的用户需求信息进行分析和综合,即提炼、分析和仔细审查已收集到的用户需求信息,并找出其中的错误、遗漏或其他不足的地方,以获得用户对软件系统的真正需求,建立软件系统的需求模型。21/283)需求定义:使用适当的描述语言,按标准的格式描述软件系统的需求,并产生需求规格说明及其相应文档。4)需求验证:审查和验证需求规格说明是否正确和完整地表达了用户对软件系统的需求。22/286、需求管理基准需求说明分析编写文档评审、商议需求变更过程市场需求客户管理市场客户管理项目环境当前基线需求开发需求管理修正后基线需求变更项目变更需求开发与管理之间的界线23/287、优秀需求的特点完整性:每一项需求都必须将所有实现的功能描述清楚,以便开发人员获得设计和实现这些功能所需的必要信息。正确性:每一项需求都必须准确地描述将要开发的功能。可行性:每一项需求都必须在已知系统和环境的限制范围内是可以实施的。24/28必要性:每一项需求都应把客户真正需要的和最终系统所遵从的标准记录下来。划分优先级:给每项需求、特性或使用实例分配一个实施优先级,以指明它在特定产品中所占的分量。无二义性:对所有需求说明都只能有一个明确统一的解释。可验证性:检查每项需求是否能通过设计测试用例或其他的验证方法。25/288、需求工程在软件开发中的地位需求是制定项目计划的基础。需求工程所产生的最终产物需求规格说明是软件设计和软件实现的基础。需求规格说明也是测试工作和用户验收软件系统的依据。需求规格说明也是软件维护工作的依据。26/28小结1、什么是软件需求2、软件需求的分类3、需求的开发和管理4、优秀需求的特点5、需求工程在软件开发中的地位
本文标题:软件需求工程(1)
链接地址:https://www.777doc.com/doc-213403 .html