1、南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录B 第72页C311SE:软件需求工程课程描述 0 课程基本信息 课程编号: C311SE 课程名称: 软件需求工程 英文名称: Software Requirements Engineering 英文简称: RE 预备课程: 计算与软件工程I、计算与软件工程II、计算与软件工程实践 授课时间: 三年级第一学期 时间分配: 课堂教学(36课时)实验安排(36课时)课后作业与阅读(36课时) 学分数: 3 1 课程简介 本课程是软件工程专业的专业核心课程。课程内容包括需求工程的基础知识、软件需求的基础理论、常用的需求获取方法与技术、
2、常用的需求分析方法、常用的需求分析模型与建模技术、需求管理知识和初步的需求工程过程管理知识。课程在整个软件工程的背景下介绍需求工程知识,试图让学生理解需求工程工作可能给后继软件项目工作带来的影响,并在此基础上全面深入的了解软件需求领域的各项方法、技术与工具。 2 教材与参考资料 2.1 教材与指定阅读材料 1) 骆斌,丁二玉,需求工程软件建模与分析,高等教育出版社 2.2 参考资料 1) Karl E. Wiegers,软件需求,机械工业出版社 2) Benjamin L.Kovitz,实用软件需求,机械工业出版社 3) Dean Leffingwell,Don Widrig,软件需求管理统一
3、方法,机械工业出版社 4) Ralph R. Young,有效需求实践,机械工业出版社、中信出版社 5) David C. Hay,Requirement Analysis(英文影印版),清华大学出版社 6) Carig Larman, Philippe Kruchten,UML和模式应用,机械工业出版社 7) Grady Booch,面向对象分析与设计,机械工业出版社 8) Kenneth E. Kendall etc.,系统分析与设计,清华大学出版社 9) Sharon Allen,数据建模基础教程,清华大学出版社 10) 相关课程:http:/www.cs.toronto.edu/sme
4、/CSC2106S/index.html 11) 相关课程:http:/www.cs.uta.fi/re/ 12) 需求工程论文汇总:http:/web.uccs.edu/adavis/UCCS/reqbib-demog.html 13) 需求管理工具:http:/www.volere.co.uk/tools.htm 3 教学目标 通过本课程的学习,学生应该能够: 1) 理解需求工程及其各个活动,掌握常用的需求工程技术,能够组织并完成复杂系统的各项需求工程工作; 南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录B 第73页2) 掌握常用的需求获取方法与技术,能够用多种方法与技术
5、发现或者提取需求; 3) 掌握常用的需求分析方法与技术,能够完成需求分析、目标分析和用例分析等建模工作,能够正确的描述和度量质量属性,能够检测并解决特征交互; 4) 理解常用的需求规格说明技术,能够使用形式化、半形式化和非形式化技术为不同类型系统表示功能性和非功能性需求; 5) 理解常用的需求确认与验证技术,能够根据标准确认需求,如可行性、清晰性和无二义性; 6) 理解与需求工程相关的软件“工程性”,能够组织需求,确定需求的优先次序,能够与不同人员会谈得到一致的需求集。 4 相关知识体系 编号 描述 k, c, a E, D, O 学时 MEP-EF.ec.0 软件的工程经济学 4 MEP-E
6、F.ec.1 软件生命周期中的价值考虑 k E 1 MEP-EF.ec.2 系统目标生成(如共享设计、stakeholder win-win,质量函数实施、原型等) c E 1 MEP-EF.ec.3 解决方案成本效益比分析(如收益的实现、折中分析、成本分析和投资收益等) c E 1 MEP-EF.ec.4 系统价值实现(如优先权、风险判别、成本控制等) k E 1 MEP-PF.pr.0 职业技能 1 MEP-PF.pr.6 软件的经济影响 c E 1 SEF-MA.md.0 建模基础 2 SEF-MA.md.1 建模原理(例如分解、抽象、一般化、投影/视点、清晰化、使用形式化方法等) a
7、E * SEF-MA.md.2 前置和后置条件,不变式 c E * SEF-MA.md.3 数学建模和规范语言(Z、VDM等) c E * SEF-MA.md.4 建模语言的性质 k E * SEF-MA.md.5 语法与语义(理解模型的表示) c E * SEF-MA.md.6 Explicitness(不作任何假设,或说明所有的假设) k E * SEF-MA.tm.0 模型类型 5 SEF-MA.tm.1 信息建模(例如实体关系建模、类图等) a E 2 SEF-MA.tm.2 行为建模(例如状态图、用例分析、交互图)a E 2 SEF-MA.tm.4 领域建模(如领域工程方法等) k
8、E * SEF-MA.tm.6 企业建模(如业务过程、组织、目标等) k D * SEF-MA.tm.7 需求交互分析(如特征交互、视点分析等) k D * SEF-MA.tm.8 分析模式(如问题框架、规范重用等) k D * SEF-MA.af.0 分析基础 4 SEF-MA.af.1 良好形式分析(如完整性、一致性、健壮性等)a E * SEF-MA.af.2 正确性分析(如静态分析、模拟和模型检验等)a E * SEF-MA.af.3 分析质量(非功能性)需求(如安全性、保密性、易用性、性能、根本原因分析等) a E * 南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录
9、B 第74页SEF-MA.af.4 优先度,折中分析、风险分析和影响分析 c E * SEF-MA.af.5 可追踪性 c E * SEF-MA.af.6 形式化分析 k E * SEF-MA.rfd.0 需求基础 4 SEF-MA.rfd.1 需求定义(如产品、项目、约束、系统边界、外部、内部等) c E * SEF-MA.rfd.2 需求处理 c E 1 SEF-MA.rfd.3 需求的层/级 c E * SEF-MA.rfd.4 需求特性 c E * SEF-MA.rfd.5 需求与体系结构的交互 k E * SEF-MA.rfd.6 需求与系统工程的关系、以人为本的设计等 k D *
10、SEF-MA.rfd.7 严重的问题(如结构错误、解决方案的问题等)k D * SEF-MA.rfd.8 COTS约束 k D * SEF-MA.er.0 需求获取 7 SEF-MA.er.1 获取来源(如投资者、领域专家、操作和组织环境等) a E 2 SEF-MA.er.2 获取技术(如会谈、提问/调查、原型、用例、观察、共享技术等) a E 4 SEF-MA.er.3 高级技术(如ethnographic、知识获取等) c D 1 SEF-MA.rsd.0 需求规约和文档化 4 SEF-MA.rsd.1 需求文档化基础(如类型、受众、结构、质量、属性和标准等) k E 1 SEF-MA.
11、rsd.2 软件需求规约 a E 1 SEF-MA.rsd.3 规格说明语言(如结构化英语、UML等) k E 2 SEF-MA.rv.0 需求确认 2 SEF-MA.rv.1 评审和审查 a E * SEF-MA.rv.2 需求确认的原型 c E * SEF-MA.rv.3 确认测试设计 c E * SEF-MA.rv.4 产品质量属性的确认 c E * SEF-MA.rv.5 形式化需求分析 k D * SEF-MA.rm.0 需求管理 2 SEF-MA.rm.1 需求变更管理 c E * SEF-MA.rm.2 需求管理(如一致性管理、发行计划、重用等)k E * SEF-MA.rm.3
12、 需求跟踪 k E * STP-SD.mod.0 建模工具 6 STP-SD.mod.1 Rational Rose a E 4 STP-SD.mod.2 Power Designer(ProcessAnalyst) k E 2 STP-ITM.mod.0 信息建模工具 2 STP-ITM.mod.1 Power Designer(DataArchitect) a E 1 STP-ITM.mod.2 ERWin a E * STP-ITM.mod.3 ER/Studio a E * STP-PM.rm.0 需求管理工具 4 南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录B 第
13、75页STP-PM.rm.1 Rational RequisiteProk E 2 STP-PM.rm.2 Borland CaliberRM k E 1 STP-PM.rm.3 Telelogic Doors k E 1 5 教学补充事项 5.1 对前驱课程的要求 要求计算与软件工程I、II课程向学生介绍初步的软件需求知识,让学生理解软件需求在整个软件工程过程中的定位。计算与软件工程实践软件学生有初步的需求分析体验。 5.2 本课程的教学考虑 教师必须举例说明不好的需求会导致的灾难(经济上和物理上的),以激励那些更加喜欢软件工程中技术和程序设计的学生。同时,力图模拟实际的需求应用环境,让学生
14、理解真实的需求过程。 5.3 对后续课程的教学建议 无 6 教学计划 序号 主题 内容 课时 相关知识点 1 导论 需求在软件开发中的重要性;软件需求工程概述;需求工程的特性;需求工程师的知识要求;课程设置的目的及课程要求 2 SEF-MA.rfd.12SEF-MA.rfd.572 需求基础 需求的概念和原理;需求的类型;需求的层次;需求开发的思路;优秀需求的特性;常见需求错误分析 2 MEP-PF.pr.6 SEF-MA.rfd.14SEF-MA.rfd.7 SEF-MA.af.1 SEF-MA.af.3 3 需求工程过程 需求工程过程;各项需求工程活动细节;需求工程的迭代特性;有效实践方法
15、的应用 1 SEF-MA.rfd.2 4 需求获取概述 需求获取活动过程;需求获取的常见问题和困难;需求获取的特性 2 SEF-MA.er.13 5 确定项目前景和范围 问题分析;建立解决方案;边界定义;前景和范围文档 2 MEP-EF.ec.14 SEF-MA.af.4 SEF-MA.rsd.126 涉众分析与硬数据采样 涉众识别;涉众描述;涉众评估;涉众采样;硬数据采样 2 MEP-EF.ec.14 SEF-MA.er.1 SEF-MA.rfd.8 7 需求获取方法 面谈、原型、观察法和文档审查 5 SEF-MA.er.23 MEP-EF.ec.348 需求获取结果的组织 面向目标的方法;
16、基于场景的方法;基于用例的方法 2 SEF-MA.md.16SEF-MA.tm.2 SEF-MA.tm.67SEF-MA.af.13 SEF-MA.af.6 SEF-MA.rsd.3 9 需求分析概述 建模与分析理论基础;需求分析技术;需求分析方法;需求分析活动;优先级划分;冲突协4 SEF-MA.md.1 SEF-MA.md.36MEP-EF.ec.14 南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录B 第76页商;多视角技术;Win-Win模型;前期需求阶段的需求分析 SEF-MA.af.34 10 数据建模 数据建模;ERD 2 SEF-MA.tm.1 SEF-MA.m
17、d.16SEF-MA.rsd.3 SEF-MA.af.1311 结构化建模 过程建模;DFD 2 SEF-MA.tm.2 SEF-MA.md.16SEF-MA.rsd.3 SEF-MA.af.13 12 面向对象分析 面向对象分析;类图;用例图;行为图;示例4 SEF-MA.tm.12SEF-MA.md.16SEF-MA.rsd.3 SEF-MA.af.13 13 需求规格说明 文档化的作用、手段和类型;需求文档的标准规范;文档化技巧;优秀文档的特性 2 SEF-MA.rsd.13SEF-MA.af.1 14 需求验证 需求验证的目的;需求验证的方法(审查、原型、测试设计、产品确认和形式化分析
18、) 2 SEF-MA.rv.15 SEF-MA.af.2 SEF-MA.af.6 15 需求管理 需求管理(一致性管理、发布计划与重用等);可跟踪性;需求变更控制 2 SEF-MA.rm.13SEF-MA.af.45 7 实验 7.1实验目标 1) 使学生掌握需求工程逐步展开的迭代过程; 2) 使学生了解实际软件开发工作中的需求过程; 3) 是学生更好的掌握需求的种类、特性及其书写规则; 4) 使学生掌握需求分析的各种技术,并能综合运用; 5) 使学生掌握需求工程文档的要点和文档写作技巧; 6) 使学生了解需求验证的常用方法与过程。 7.2 实验内容 实验分为下面几个阶段 1) 项目启动 a)
19、 在该阶段,每个小组构想一个需要解决的实际问题,并申请其他小组提供解决方案; b) 每个小组通过随机选择的方式,选择解决其他小组提出的问题; c) 提出问题的小组扮演用户方,负责解决问题问题的小组扮演需求工程团队,以需求工程团队为主,完成项目的业务需求分析,建立有效的高层解决方案及系统特性,完成项目前景和范围文档; d) 随机选择一个其他小组作为评审组,与用户方一起完成项目前景和范围文档的评审。 2) 项目展开 a) 需求工程团队以经过评审的前景和范围文档为依据,安排计划,展开需求获取活动; b) 利用需求获取方法,通过45次结合获取与分析的迭代过程,获取完备的用户需求; c) 完成用户需求文
20、档(招标书); d) 随机选择一个其他小组作为评审组,与用户方一起完成对用户需求文档的评审。 3) 项目定型 a) 每个小组随机选择其他小组完成的用户需求文档(招标书),作为开发方,原问题提出小组仍然为用户方; 南京大学软件工程专业本科教程附录B:专业基础/核心课程描述 附录B 第77页b) 开发方在用户方的配合下,负责为用户需求文档设计解决方案,完成系统需求规格说明文档(投标书); c) 随机选择一个其他小组作为评审组,与用户方一起完成对系统需求规格说明文档的评审; d) 开发方细化系统需求,建立分析模型,完成软件需求规格说明文档; e) 随机选择一个其他小组作为评审组,与用户方一起完成对系
21、统需求规格说明文档的评审。 4) 项目评审 a) 每个问题的用户方、需求工程团队、开发方和曾经参与评审的小组联合进行前景和范围文档、用户需求文档、系统需求规格说明文档和软件需求规格说明文档的综合评审,共同总结整个需求开发中的得失。 7.3 实验组织 实验以小组为单位,34人一组。 每个阶段结束后,所有的小组互相交流工作经验,助教集中讲解该阶段存在的问题。 7.4 实验报告 下列实验报告是考核的依据,每次评审的得分为基本数据,计算得到最后的实验得分,其中: z 前景和范围文档:10; z 用户需求文档(招标书):10; z 系统需求规格说明文档(投标书):20; z 软件需求规格说明文档:30;
22、 z 所有文档的联合(最后一次评审):30。 8 课后作业 课后作业应该包含: 1) 要求学生了解需求工程的实践状况,形成对需求工程方法的基本认知; 2) 要求学生阅读针对指定技术的经典文献,形成对技术的深入理解; 3) 要求学生了解并尝试使用需求管理工具; 4) 完成相应的课后习题,包括: a) 给出有缺陷的需求描述,要求学生进行相关特性的判断,并予以修正; b) 给出具体的应用情景,要求学生设计需求获取的方案设计; c) 给出简单的需求描述,要求学生使用不同的技术进行建模并加以比较,以加强学生的技术选择与判断能力; d) 给出实际工程中产生的SRS,要求学生尽可能的发现其中的问题并修正。 9 评分体系 笔试60实验30+平时作业10