《程序设计与软件工程实践》教学大纲 课程代码:T正LE2136 课程名称:程序设计与软件工程实践 大纲执笔人:徐清源 英文名称:Programming and Software Engineering Practice审批人: 课程学时(周数):5414周) 实践学时(周数): 课程学分:3 适用专业:通信工程 一、课程性质和教学目标 课程性质:本课程是通信工程专业一门重要的专业课,是通信工程专业必修课。 本课程采用教师知识讲授为主,实践为辅的教学模式,旨在让学生掌握软件工程的概 念和应用。软件己经成为电子信息技术和互联网领域的灵魂,传统通信工程专业教育 造成学生的软件开发能力与培养目标之间有很大的差距。在学生具备了基本的编程、 计算机及网络知识后,本课程旨在培养他们的程序设计技能,为未来的工程实践中硬 件向软件转变的趋势做好准备。 课积日标,修完木里程生应能且加下能力 1. 能够利用软件工程的分析和设计方法,分析具体工程的需求,并转换为相应模块 的设计。 2.能独立完成小规模软件设计工作 3.能利用网络资源和开源软件,辅助软件设计,能够利用各种现代设计开发工具。 4 能够组成有效团队,合理分工,参与团队软件开发 二、课程目标与毕业要求的对应关系 毕业要求 指标点 理识日标 1、工程知识 12掌握计算机软硬件基础知识,具备对工程问题进行软硬件分课程目标】 析与设计的基本能力: 3、设计/开发解32能适当考虑社会、健康、安全、法律、文化及环境因素,根 油方案 据设计目标进行需求分析,设计解决方案。 课程目标2 5、使用现代工其5】能合理使用现代信息技术工具: 课程目标3 9、个人和团队 92能胜任团队成员的角色与责任,组织团队成员开展工作,完 课程目标4 成团队分配的工作。 三、课程教学内容及学时分配(重点内容:*:难点内容:△) 1、概述(6学时)(支撑课程目标1)
` 《程序设计与软件工程实践》教学大纲 课程代码:TELE2136 课程名称:程序设计与软件工程实践 大纲执笔人:徐清源 英文名称:Programming and Software Engineering Practice 审批人: 课程学时(周数):54(14 周) 实践学时(周数): 课程学分:3 适用专业:通信工程 一、课程性质和教学目标 课程性质:本课程是通信工程专业一门重要的专业课,是通信工程专业必修课。 本课程采用教师知识讲授为主,实践为辅的教学模式,旨在让学生掌握软件工程的概 念和应用。软件已经成为电子信息技术和互联网领域的灵魂,传统通信工程专业教育 造成学生的软件开发能力与培养目标之间有很大的差距。在学生具备了基本的编程、 计算机及网络知识后,本课程旨在培养他们的程序设计技能,为未来的工程实践中硬 件向软件转变的趋势做好准备。 课程目标:修完本课程,学生应能具备如下能力。 1. 能够利用软件工程的分析和设计方法,分析具体工程的需求,并转换为相应模块 的设计。 2. 能独立完成小规模软件设计工作 3. 能利用网络资源和开源软件,辅助软件设计,能够利用各种现代设计开发工具。 4. 能够组成有效团队,合理分工,参与团队软件开发。 二、课程目标与毕业要求的对应关系 毕业要求 指标点 课程目标 1、工程知识 1-2 掌握计算机软硬件基础知识,具备对工程问题进行软硬件分 析与设计的基本能力; 课程目标 1 3、设计/开发解 决方案 3-2 能适当考虑社会、健康、安全、法律、文化及环境因素,根 据设计目标进行需求分析,设计解决方案。 课程目标 2 5、使用现代工具 5-1 能合理使用现代信息技术工具; 课程目标 3 9、个人和团队 9-2 能胜任团队成员的角色与责任,组织团队成员开展工作,完 成团队分配的工作。 课程目标 4 三、课程教学内容及学时分配(重点内容:;难点内容:) 1、 概述(6 学时)(支撑课程目标 1)
1.1软件与硬件 1.2软件危机与软件工程 13数件生命周期★ 1.4软件过程模型★ 目标及要求: 1)通过概述的介绍,使得学生了解软件类型和软件工程基本概念 2)理解软件的完整生命周期,以及了解各种过程模型: ◇作业内容: 强化对软件生命周期认识,各种过程模型以及应用场合。 讨论内容: 常用软件或者工具的软件类型,个人软件编程方面的体验和困惑。 女自学拓展: 小组确定,讨论实践工程项目选题。 2、可行性分析(3学时)(支撑课程目标1) 31可行性分析任务 32可行性分析过程 3.3成本效益分析★ ◇目标及题成 1)了解可行性分析的重要性,具体步骤和内容 作业内容: 计算利率对投入产出的影响,进行成本效益分析。 女讨论内容: 项目中需要考虑的具体问题:技术、社会、环境以及效益等。 自学拓展: 考虑实践工程项目的可行性 3、需求分析(9学时)(支撑课程目标1,2,3,5) 41需求分折任条 4.2需求获取方法 4.3数据流图与数据字典★4 4.4状态转移图★△ 45其他图形工具 4.6验证软件需求 女目标及要求: 1)理解需求分析的重要性,方法和内容 2)学握需求分析的表达方法和工具 3)掌握数据流图以及状态转移图的使用方法 4)了解其他需求分析表达工具 令作业内容: 加强数据流图的使用能力,状态转移图的使用方法。以及使用工具发现需求 分析中存在问题等
` 1.1 软件与硬件 1.2 软件危机与软件工程 1.3 软件生命周期 1.4 软件过程模型 目标及要求: 1)通过概述的介绍,使得学生了解软件类型和软件工程基本概念 2)理解软件的完整生命周期,以及了解各种过程模型; 作业内容: 强化对软件生命周期认识,各种过程模型以及应用场合。 讨论内容: 常用软件或者工具的软件类型,个人软件编程方面的体验和困惑。 自学拓展: 小组确定,讨论实践工程项目选题。 2、 可行性分析(3 学时)(支撑课程目标 1) 3.1 可行性分析任务 3.2 可行性分析过程 3.3 成本效益分析 目标及要求: 1)了解可行性分析的重要性,具体步骤和内容 作业内容: 计算利率对投入产出的影响,进行成本效益分析。 讨论内容: 项目中需要考虑的具体问题:技术、社会、环境以及效益等。 自学拓展: 考虑实践工程项目的可行性。 3、 需求分析(9 学时)(支撑课程目标 1,2,3,5) 4.1 需求分析任务 4.2 需求获取方法 4.3 数据流图与数据字典 4.4 状态转移图 4.5 其他图形工具 4.6 验证软件需求 目标及要求: 1)理解需求分析的重要性,方法和内容 2)掌握需求分析的表达方法和工具 3)掌握数据流图以及状态转移图的使用方法 4)了解其他需求分析表达工具 作业内容: 加强数据流图的使用能力,状态转移图的使用方法。以及使用工具发现需求 分析中存在问题等
女讨论内容: 需求分析如何提出,如何根据实际项目从不同渠道获取需求。数据流绘制过 程中常出现的问题。如何从用户需求描述中提炼状态和状态转移。 分自相关人的不同果并用工具表达 4、总体设计(6学时)(支撑课程目标1,2,3) 6.1设计过程 3和设计发则 6.4软件结构绘制工具:层次图和HPO图★ 6.5面向数据流设计方法★A ☆目标及要求: 1)理解总体设计原则以及应用方法 ))了解软件结物类型 3)掌握软件结构绘制工具使用方法 4)掌握数据流设计方法 令作业内容: 加强对设计原理的理解,面向数据流方法的使用,软件结构表达的方法等。 令讨论内容: 如何利用用户需求进行软件设计,如何提出不同设计方案,不同设计方案的 分析对比。 ◇自学拓展: 根据项目的用户需求提出不同解决方案,并做对比分析,使用合适工具表达。 5、详细设计(6学时)(支撑课程目标1,2,3,4,5) 6.6结构化设计方法 5.1人机界面设计 5.2过程设计工具:程序流程图,判定表,判定树等 5.3程序复杂度度量 目标及要求: 掌握结构化设计方法★A 2)掌握程序流程图的使用★A 3)掌握判定表和判断树的使用方法 4)了解程序复杂度的度量 令作业内容: 加强对结构化设计方法的理解,熟练绘制程序流程图以及判定表的使用等。 令讨论内容: 如何将非结构化设计转换为结构化设计。如何保证程序流程图的结构化。如 何将判定表和判断树转换成程序流程图。 ◇白学拓展: 根据项目的解决方案,进行小组分工,并完成部分模块的详细设计,使用合
` 讨论内容: 需求分析如何提出,如何根据实际项目从不同渠道获取需求。数据流绘制过 程中常出现的问题。如何从用户需求描述中提炼状态和状态转移。 自学拓展: 分析项目的不同相关人的不同需求。并使用工具表达。 4、 总体设计(6 学时)(支撑课程目标 1,2,3) 6.1 设计过程 6.2 设计原理和设计规则 6.3 软件结构 6.4 软件结构绘制工具:层次图和 HIPO 图 6.5 面向数据流设计方法 目标及要求: 1)理解总体设计原则以及应用方法 2)了解软件结构类型 3)掌握软件结构绘制工具使用方法 4)掌握数据流设计方法 作业内容: 加强对设计原理的理解,面向数据流方法的使用,软件结构表达的方法等。 讨论内容: 如何利用用户需求进行软件设计,如何提出不同设计方案,不同设计方案的 分析对比。 自学拓展: 根据项目的用户需求提出不同解决方案,并做对比分析,使用合适工具表达。 5、 详细设计(6 学时)(支撑课程目标 1,2,3,4,5) 6.6 结构化设计方法 5.1 人机界面设计 5.2 过程设计工具:程序流程图,判定表,判定树等 5.3 程序复杂度度量 目标及要求: 1)掌握结构化设计方法 2)掌握程序流程图的使用 3)掌握判定表和判断树的使用方法 4)了解程序复杂度的度量 作业内容: 加强对结构化设计方法的理解,熟练绘制程序流程图以及判定表的使用等。 讨论内容: 如何将非结构化设计转换为结构化设计。如何保证程序流程图的结构化。如 何将判定表和判断树转换成程序流程图。。 自学拓展: 根据项目的解决方案,进行小组分工,并完成部分模块的详细设计,使用合
适工具表达。 6、编码和测试(6学时)(支撑课程目标1,2,3) 21 序设计语言 7.3软件测试基础:单元测试、集成测试、确认测试 7.4黑盒测试★△ 75白盒测试★A 7.6调试 目标及要求 1)了解文档化编程风格 2)掌握覆盖的概念 3)掌握等价类划分和边界值分析方法 4)了解调试过程和途径 作业内容: 加强对各种覆盖的理解,并据此设计测试用例等】 令讨论内容: 讨论黑盒测试和白盒测试之间的关系,以及是否可互相取代。良好的编码风 格能够带来什么好处。 自学拓展, 针对项目中的模块,提出测试用例。阅读开源代码了解编码风格。 7、软件项目管理(6学时)(支撑课程目标3,4,5) 81估算软件想植 82工作量估计 8.3进度计发 安排:甘特图和工程网络★ 8.4人员组织 8.5软件配置管理 ◇目标及要求: 1)了解软件规模与工作量关系 2)能够在有限资源情况下合理安排进度计划 3)了解软件配置管理方法 令作业内容: 通过使用甘特图和工程网络图加深理解资源对进度的影响。 ◆讨论内容: 讨论不同资源情况下对进度安排的影响,以及如何优化进度安排,发现关键 路径。 ◆自学拓展: 针对项目中的模块,提出项目进度计划。 8、面向对象方法学(3学时)(支撑课程目标1)
` 适工具表达。 6、 编码和测试(6 学时)(支撑课程目标 1,2,3) 7.1 文档化编程风格 7.2 程序设计语言 7.3 软件测试基础:单元测试、集成测试、确认测试 7.4 黑盒测试 7.5 白盒测试 7.6 调试 目标及要求: 1)了解文档化编程风格 2)掌握覆盖的概念 3)掌握等价类划分和边界值分析方法 4)了解调试过程和途径 作业内容: 加强对各种覆盖的理解,并据此设计测试用例等。 讨论内容: 讨论黑盒测试和白盒测试之间的关系,以及是否可互相取代。良好的编码风 格能够带来什么好处。 自学拓展: 针对项目中的模块,提出测试用例。阅读开源代码了解编码风格。 7、 软件项目管理(6 学时)(支撑课程目标 3,4,5) 8.1 估算软件规模 8.2 工作量估计 8.3 进度计划安排:甘特图和工程网络 8.4 人员组织 8.5 软件配置管理 目标及要求: 1)了解软件规模与工作量关系 2)能够在有限资源情况下合理安排进度计划 3)了解软件配置管理方法 作业内容: 通过使用甘特图和工程网络图加深理解资源对进度的影响。 讨论内容: 讨论不同资源情况下对进度安排的影响,以及如何优化进度安排,发现关键 路径。 自学拓展: 针对项目中的模块,提出项目进度计划。 8、 面向对象方法学(3 学时)(支撑课程目标 1)
81面向对象方法学概述 82对象概念:面向对象分析、设计与实现 8.3UML工具 令目标及要求 1)了解面向对象方法 2)了解UML工具 令作业内容: 通过使用UML工具描述对象。 设计和面向对象设计的不同。 ◆自学拓展: 将项目中用户需求使用面向对象方法描述。 四、考核和成绩评定 1.考核环节 课程开始后以分组形式进行项目设计活动,加强个人设计能力和团队合作能力培 养。考核以设计为主,考试为辅的形式。 各部分比例为:平时10%,课程报告50%,考试40%。 其中课程报告包括:项目需求分析报告15%,项目设计测试报告35% 小组同学合作完成项目设计,成员分工明确。每个同学需独立提交课程报告,报 告中需要指出个人在团队中的角色,完成的任务模块在系统中的位置,和其他成员模 块的关系等。 2.课程目标达成与考核成绩比例 成绩比例% 平时 期末成绩 教学目标 毕业要求 期中成绩 成绩 40% 指标点 项日需求总体设详细设计与测 作业 分析报告 计报告 试报告 期末考试 35教学目 工程知识1.2 6 标1 6 8 15 29教学目 设计/开发解决 标2 方案32 14 15 21教学目 使用现代工具 4 标3 5.1 15教学目 标4 个人和团队92
` 8.1 面向对象方法学概述 8.2 对象概念:面向对象分析、设计与实现 8.3 UML 工具 目标及要求: 1)了解面向对象方法 2)了解 UML 工具 作业内容: 通过使用 UML 工具描述对象。 讨论内容: 讨论结构化设计和面向对象设计的不同。 自学拓展: 将项目中用户需求使用面向对象方法描述。 四、考核和成绩评定 1.考核环节 课程开始后以分组形式进行项目设计活动,加强个人设计能力和团队合作能力培 养。考核以设计为主,考试为辅的形式。 各部分比例为:平时 10%,课程报告 50%,考试 40%。 其中课程报告包括:项目需求分析报告 15%,项目设计测试报告 35% 小组同学合作完成项目设计,成员分工明确。每个同学需独立提交课程报告,报 告中需要指出个人在团队中的角色,完成的任务模块在系统中的位置,和其他成员模 块的关系等。 2.课程目标达成与考核成绩比例 教学目标 毕业要求 指标点 成绩比例 % 平时 成绩 期中成绩 期末成绩 40% 作业 项目需求 分析报告 总体设 计报告 详细设计与测 试报告 期末考试 35 教学目 标 1 工程知识 1.2 6 6 8 15 29 教学目 标 2 设计/开发解决 方案 3.2 14 15 21 教学目 标 3 使用现代工具 5.1 4 8 4 5 15 教学目 标 4 个人和团队 9.2 2 4 4 5
3.评价标准 分数 评价内容 指标点 构成 4分 3分 2分 1分 0分 文献数及综述 右 无功能 系统功能要 10%符合应 30%符合应 50%符合应用 20%符合应 用求、功 用要求 要求 列表 列表和应用背 能具体、可 景关系 测试 列出角色数 2 >2个 2个 01个 项耳 列出性能要求 3.2 需求 3.2 4 内容一致 内容一致 内容基本 内容不全而 无模型 分析 层次分明 有层次 天层次 报告 用户角度功能 16% 模型 符号规范 符号规范 有层沙 符号不规 符号基本规 范 32 内容一致 内容一致 内容基本一 内容不全面 无模型 层次分明 有层资 无层次 数据模型 符号规范 符号规范 有层次 符号不规我 符号基本规 设计者角度 不是设计者 无模型 设计者角度功 符号规范 角度 能模型 夺号部分不 规范 设者角度 不是设计者 无模型 符号规范 角度 数据模型 符号部分不 总 4 内容一致 内容一致 内容基本 内容基本 无模型 设计 结构演化过结构演化过 致 致 报告 软件结格 程正确 程基本正确 有结构演化 无结构流化 18% 1.2 2 有优化 有优化 无优化 敏件结构优化 引用原理正 确 块接口定义 4 100%且 100% >50% >20% 无 数 无错误 个人负责襟块 100%且 100% 50嘴 >20% 定义 无错误
` 3.评价标准 分数 构成 评价内容 指标点 满 分 4 分 3 分 2 分 1 分 0 分 项目 需求 分析 报告 16% 文献数及综述 3.2 1 有 无 系统功能要求 列表和应用背 景关系 3.2 4 100%符合应 用要求、功 能具体、可 测试 80%符合应 用要求 50%符合应用 要求 20% 符合应 用要求 无功能 列表 列出角色数 9.2 2 >2 个 2 个 0~1 个 列出性能要求 3.2 1 有 无 用户角度功能 模型 3.2 4 内容一致 层次分明 符号规范 内容一致 有层次 符号规范 内容基本一 致 有层次 符号基本规 范 内容不全面 无层次 符号不规范 无模型 数据模型 3.2 4 内容一致 层次分明 符号规范 内容一致 有层次 符号规范 内容基本一 致 有层次 符号基本规 范 内容不全面 无层次 符号不规范 无模型 总体 设计 报告 18% 设计者角度功 能模型 5.1 2 设计者角度 符号规范 不是设计者 角度 符号部分不 规范 无模型 数据模型 5.1 2 设计者角度 符号规范 不是设计者 角度 符号部分不 规范 无模型 软件结构 5.1 4 内容一致 结构演化过 程正确 内容一致 结构演化过 程基本正确 内容基本一 致 有结构演化 过程 内容基本一 致 无结构演化 过程 无模型 软件结构优化 1.2 2 有优化 引用原理正 确 有优化 无优化 模块接口定义 数 1.2 4 100%且 无错误 100% >50% >20% 无 个人负责模块 定义 9.2 4 100%且 无错误 100% >50% >20% 无
4 100%且 >50% 220% 被块流程图 10g 无错误 能细 4 模块测试用例 100%且 100% >50% 20% 无错误 与 试报 界而或接口协 4 100%且 100% >50% >20% 议设计 无错误 告16 名模块华成测 4 10% 0 20 试用例 无错识 七、教学教材、指导书及主要参考书 教材:软件工程导论(第6版)张海潘牟永敏清华大学出版社2013-8 参考书 [软件工程实践者的研究方法(美)Roger S Pressman机械工业出版社201l-7 [2]软件工 (第3版 美)Shari Lawrence Pfleeger人民邮电出版社2007-5 3)]邹欣.构建之法:现代软件工程.人民邮电出版社,第二版,2015-7. 4]软件工程教程孙涌机械工业出版社2010-4 j51 Andrew Hunt..程序员修炼之道:从小工到专家.电子工业出版社,2011-l 2015-4. [8]Leo Hui.程序员的自我修养 www.gitbook.com/read/book1e0n+E第2版.2006. 9[美史蒂夫·迈克康奈尔代码大全 [IO[美]Bruce Eckel.Java编程思想.机械工业出版社 第 4版 2007-6 [ll]CayS.Horstmann,Gary Comel.Java核心技术·卷I:基础知识.机械工业出版 社,第9版,2013-11. [l2]CayS.Horstmann,,Gary Comell.Java核心技术·卷2高级特性.机械工业出版 补第9版2014.3 [3][美]泽德A.肖(亿edA.Shaw),“笨办法”学Python.人民邮电出版社,第3 版,2014-10 [l4]Christine Hofmeister,Robert Nord,Dilip Soni.实用软件体系结构.北京:电子工 业出版社,2004. [l5]William E.Shotts,Jr快乐的Linux命令行.Second Internet Edition, 6.githu .io/TLCL/ [16Am ld Robbins,.Elbert Hannah,,Linda Lamb.学习vi和Vim编辑器.东南大学出 版社,2011-3 八、其他 无
` 详细 设计 与测 试报 告 16% 模块流程图 5.1 4 100%且 无错误 100% >50% >20% 无 模块测试用例 1.2 4 100%且 无错误 100% >50% >20% 无 界面或接口协 议设计 1.2 4 100%且 无错误 100% >50% >20% 无 多模块集成测 试用例 9.2 4 100%且 无错误 100% >50% >20% 无 七、教学教材、指导书及主要参考书 教材:软件工程导论(第 6 版) 张海潘 牟永敏 清华大学出版社 2013-8 参考书 [1] 软件工程实践者的研究方法 (美)Roger S Pressman 机械工业出版社 2011-7 [2] 软件工程(第 3 版) (美)Shari Lawrence Pfleeger 人民邮电出版社 2007-5 [3] 邹欣. 构建之法:现代软件工程. 人民邮电出版社, 第二版, 2015-7. [4] 软件工程教程 孙涌 机械工业出版社 2010-4 [5] Andrew Hunt. 程序员修炼之道:从小工到专家. 电子工业出版社, 2011-1. [6] Andy Hunt. 程序员的思维修炼:开发认知潜能的九堂课.人民邮电出版社, 2010. [7] [美] 乔治·莱考夫, 马克·约翰逊. 我们赖以生存的隐喻. 浙江大学出版社, 2015-4. [8] Leo Hui. 程序员的自我修养. https://www.gitbook.com/read/book/leohxj/a-programmer-prepares [9] [美] 史蒂夫·迈克康奈尔. 代码大全. 电子工业出版社, 第 2 版, 2006-3. [10] [美] Bruce Eckel. Java 编程思想. 机械工业出版社, 第 4 版, 2007-6. [11] Cay S. Horstmann, Gary Cornell. Java 核心技术·卷 1:基础知识. 机械工业出版 社, 第 9 版, 2013-11. [12] Cay S. Horstmann, Gary Cornell. Java 核心技术·卷 2 高级特性. 机械工业出版 社,第 9 版, 2014-3. [13] [美] 泽德 A. 肖(Zed A. Shaw). “笨办法”学 Python. 人民邮电出版社, 第 3 版, 2014-10. [14] Christine Hofmeister, Robert Nord, Dilip Soni.实用软件体系结构. 北京:电子工 业出版社,2004. [15] William E. Shotts, Jr. 快乐的 Linux 命令行. Second Internet Edition, http://billie66.github.io/TLCL/ [16] Arnold Robbins, Elbert Hannah, Linda Lamb. 学习 vi和Vim编辑器. 东南大学出 版社, 2011-3. 八、其他 无