国防科技大学携手头歌打造《软件工程》“101计划”新形态教材和实践课程!

软件已成为信息化 会不可或缺的基础设施,小到一块智能手表、大到一座智慧城市,都依赖于软件系统的驱动。软件开发不再仅仅是程序员的专业技能,还将成为越来越多普通人的一种生活技能和基本素养,高效地构建和应用复杂系统软件的能力也成为国家和 会发展的一种核心竞争力,软件工程教育在信息时代愈发重要。

软件开发能力不是“教”出来的而是“练”出来的,软件工程教育也不能脱离鲜活的软件创作实践。国防科技大学毛新军教授领衔的软件工程教学团队充分依托大规模开源实践,借鉴软件开发群体化方法,推动软件工程教学改革探索,依托编写的软件工程教材以及教育部101软件工程课程建设阶段性成果,在头歌平台建设了软件工程课程线上实训和综合实践。欢迎广大师生学习、交流和应用!

01课程简介

《软件工程》是101计划规划建设课程之一,由国防科技大学毛新军教授牵头负责。101计划是一项“标杆性”的计划,由教育部强化顶层设计,组建指导组、专家委员会和工作组,整合33所计算机科学类基础学科拔尖学生培养基地建设高校协同推进,并汇聚头部企业力量,行业领军企业、科研院所和出版 深度参与,实现教育链、产业链和创新链深度融合。

软件工程是计算机大类专业的一门重要核心专业课程,旨在讲授软件工程的思想和原则,介绍软件开发、管理和维护的方法、技术和工具,帮助学员掌握需求分析、软件设计、编码构造、软件测试、维护演化、质量保证、团队协作等方面的专业知识,培养学员协同开发高质量软件产品的能力和素养。

国防科技大学《软件工程》课程主页

02教学目标

本课程的教学目标是:

  • 理解和掌握软件工程的基本原理、思想和原则;掌握和应用软件工程方法、技术及工具进行软件系统的开发、管理和维护;分析和评价软件系统的质量;组织具有一定规模软件系统的开发,管理其软件制品;培养解决复杂工程问题的能力、系统能力、创新实践能力以及软件工程素质。
  • 技能标签

    03

    课程特色

    (1) 新形态、实践型教材

    本课程基于两本以“实践”为特色的软件工程教材建设,形成传统教材 + 在线课程的配套衔接:

    毛新军,董威,软件工程:从理论到实践,高等教育出版 ,ISBN:978-7-04-058548-3,2022年6月.

    毛新军, 王涛, 余跃, 软件工程实践教程-基于开源和群智的方法, 高等教育出版 , ISBN 978-7-04-052423-9, 2019年8月.

    (2) 全链条、在线化课程

    依托“软件工程”课程国家规范和101课程建设所建立的软件工程课程知识体系,构建了线上课程实训,帮助学生扎实掌握软件工程知识。线上实训共17个章节,89个实训任务,340多道习题。

    (3) 渐进性、混合式课堂

    遵循循序渐进、持续改进的思想和理念,构建了软件工程课程线上课堂综合实践。主要包括两项实践任务,一项是分析和维护开源软件,围绕指定开源项目进行代码阅读、分析、标注和维护;另一项是开源有创意、上规模、高质量的软件系统,需要综合应用软件工程方法、技术和工具开发具有一定规模和复杂性的软件系统。

    (4) 综合性、实战化案例

    课程通过设计难度递进的实训闯关项目,包括选择题关卡和实践关卡,将理论教学与实践教学协同,培养学员解决复杂工程问题的能力、系统能力、创新实践能力以及软件工程素质。

    下方实训从Git最基本的功能出发,让挑战者在闯关的过程中通过实际的操作来达到熟悉Git的目的。主要介绍了Git常用的一些操作,更多内容可以参考课程Git 从小白到高手。

    04

    课程章节

    第一章

    软件工程课程概述

    本章介绍软件工程课程教学的相关背景,包括计算机软件应用及其发生的变化,业界对软件工程人才的需求及要求,分析软件工程课程的特点,阐述本课程教学的目标、内容及要求。本章在学习软件工程相关基础知识的同时,要求学习现代软件工程开发的主流工具和平台,掌握基于Git的分布式版本管理和协同式软件开发技术、代码标注技术,以及群体化学习平台。

    1-1 计算机软件的变化1-2 实践准备 – 分布式版本管理工具1-3 实践准备 – 协同开发方法与平台1-4 实践准备 – 群智代码标注平台1-5 实践准备 – 群体化学习平台第二章

    从程序到软件

    本章聚焦于程序和软件二个概念,从程序概念入手,引申出软件概念,分析程序和软件二者之间的区别和联系,阐明软件的特点和质量要求,讨论开源软件及其应用价值,指出当前软件特征出现的一些新变化以及这些变化对软件开发带来的新挑战。

    2-1 程序及其质量2-2 程序质量保证方法2-3 程序质量分析方法2-4 软件及其质量2-5 开源软件第三章

    软件工程概述

    本章聚焦于软件工程概念,阐述其产生的背景和原因,介绍其思想、构成、目标和原则,分析软件工程的发展历程及取得的主要成果,讨论软件工程教育问题

    3-1 软件工程产生背景3-2 软件工程的概念和思想3-3 计算机辅助软件工程3-4 软件工程视角下的软件开发

    第四章

    软件过程模型和开发方法

    本章介绍软件开发过程模型的概念,阐述常见的软件开发过程模型如瀑布、迭代、原型、增量、螺旋、UP等,并分析它们各自的特点,介绍敏捷软件开发方法、群体化开发方法等,分析这些开发方法的特点及其相关的技术手段。

    4-1 软件过程模型4-2 敏捷软件开发方法4-3 群体化开发方法第五章

    软件需求工程基础

    本章聚焦于软件需求工程,介绍软件需求的概念、类别、特点和质量要求,需求工程的任务、过程和原则;在此基础上阐述二个经典的需求工程方法学:结构化需求分析方法学和面向对象需求分析方法学;最后介绍需求工程的CASE工具、软件制品输出及软件需求管理。

    5-1 软件需求5-2 需求工程5-3 需求分析方法学5-4 需求工程的输出和评审第六章

    获取软件需求

    本章聚焦于获取软件需求的工作,介绍软件需求从何而来,获取软件需求的任务、方式、过程和策略;结合具体的案例详细阐述了获取软件需求的方法,最后介绍了软件需求确认及质量保证。

    6-1 获取软件需求的方法和过程6-2 明确问题及基于软件的解决方案6-3 导出和构思软件需求6-4 描述和验证初步的软件需求第七章

    分析软件需求

    本章聚焦于分析软件需求的工作,介绍该项工作的原因、任务和过程,描述支持软件需求表示的UML模型及表示方法;详细阐述软件需求的重要性,包括分析和确定软件需求的优先级、理解和掌握软件需求的过程、步骤、方法和策略、文档化软件需求、确认和验证软件需求。

    7-1 分析软件需求的任务和过程7-2 软件需求模型及UML表示方法7-3 分析和确定软件需求的优先级7-4 建立和分析软件需求模型7-5 文档化、确认和验证软件需求第八章

    软件设计基础

    本节聚焦于软件设计,介绍软件设计的概念、类别和质量要求,软件设计工作的任务、过程和原则,在此基础上介绍二个经典的软件设计方法学:结构化软件设计方法学和面向对象软件设计方法学;最后介绍软件设计的CASE工具、输出、评审及管理。

    8-1 软件设计8-2 软件设计的过程和原则8-3 结构化软件设计方法学8-4 面向对象软件设计方法学8-5 软件设计的CASE工具8-6 软件设计的输出、评审和管理8-7 软件设计管理第九章

    软件体系结构设计

    本章聚焦于软件体系结构设计,介绍软件体系结构的概念和风格;软件体系结构设计的任务、过程和重要性;软件体系结构模型及表示方法;软件体系结构设计的详细过程和策略;最后介绍软件体系结构设计的文档化及评审。

    9-1 软件体系结构设计概述9-2 软件体系结构模型的表示方法9-3 软件体系结构设计过程9-4 设计初步的软件体系结构9-5 重用已有软件资源9-6 精化软件体系结构9-7 设计软件部署模型9-8 文档化和评审软件体系结构设计第十章

    软件用户界面设计

    本章聚焦于用户界面设计,介绍何为用户界面,用户界面包含哪些设计要素,用户界面设计的任务和表示方法;以图形化用户界面设计为例,结合具体的应用案例,介绍用户界面设计的过程和原则;用户界面设计的输出及评审。

    10-1 用户界面设计概述10-2 用户界面组成及表示方法10-3 用户界面设计的过程和原则10-4 用户界面的初步设计10-5 建立用户界面间的跳转关系10-6 精化用户界面设计10-7 用户界面设计的输出和评审

    10-8 评审用户界面设计

    第十一章

    软件详细设计

    本章聚焦于软件详细设计,介绍详细设计的任务、过程和原则,基于UML的详细设计模型表示方法,面向对象软件设计原则和设计模式,以及用例设计、类设计、数据设计、子系统/软构件设计等具体的详细设计内容,软件详细设计的文档化和评审。

    11-1 软件详细设计概述和UML建模11-2 面向对象详细设计模式11-3 用例设计11-4 类设计11-5 数据设计11-6 子系统和软结构设计11-7 文档化和评审软件详细设计第十二章

    软件实现基础

    本节聚焦于软件实现,介绍软件实现的概念、过程、原则和质量要求,支持软件实现的程序设计语言,在此基础上介绍如何编写高质量的代码,最后介绍支持软件实现的CASE工具。

    12-1 软件实现概述12-2 程序设计语言12-3 高质量编码12-4 支持软件实现的CASE工具12-5 软件实现的输出第十三章

    编写代码

    本节聚焦于编写代码,介绍编写代码的任务,基于软件设计编写代码的策略和方法,基于代码片段的软件重用和基于群智知识的编程问题解决,最后介绍软件调试的有关策略和方法。

    13-1 编写代码的任务13-2 基于设计编写代码13-3 代码片段重用13-4 软件缺陷13-5 程序调试13-6 基于群智知识来解决编程和调试问题13-7 编写代码的输出

    第十四章

    软件测试

    本章聚焦于软件测试,介绍软件测试的概念、思想和原理,阐述软件测试的过程和原则,详细介绍软件测试技术,以及软件测试计划的制定和实施。

    14-1 软件测试概述14-2 软件测试的过程和策略14-3 软件测试技术14-4 软件测试计划的制定14-5 Junit实训入门篇14-6 Junit实训进阶篇第十五章

    软件部署

    本章聚焦于软件部署,介绍软件系统的运行环境,软件部署的方式和方法。

    15-1 软件及其环境15-2 软件部署的方式和方法第十六章

    软件维护与演化

    本章聚焦于软件维护和演化,介绍软件维护和演化的概念,阐述软件维护的特点和演化的法则;讨论软件维护所导致的软件内部逻辑老化问题;介绍软件维护的技术和过程、软件可维护性的概念;最后阐明软件维护的输出。

    16-1 软件维护与演化16-2 软件逻辑老化16-3 软件维护技术及过程第十七章

    软件项目管理

    本章聚焦于软件项目管理,介绍软件项目管理的对象和内容,软件度量、测量和估算的概念、方法及应用,软件项目计划制定和表示的方法,软件项目跟踪的方法和步骤,软件配置管理的过程和计划,软件风险管理的模式和方法,软件质量保证的方法和计划等。

    17-1 软件项目管理概述17-2 软件项目计划17-3 软件项目跟踪17-4 软件配置管理17-5 软件风险管理17-6 软件质量保证

    05

    学习导航

    (1) 课程实战训练可以从头歌平台查看:

    学员点击上面链接,可进入对应页面,在章节目录下点击“开始实战”即可进行关卡实践。左侧提供了相应的任务要求,包括详细的知识点讲解,右侧进行实训操作。根据指导步骤完成任务,平台会提供关卡测评,闯关成功可以增加经验点。以第14章软件测试为例。

    (2) 线上综合实践:

    老师可通过“复制课堂”来创建自己所在班级的线上综合实践,并通过平台发布综合实践任务、布置线上作业等;学生可基于线上综合实践来创建实践项目、开展协同开发、提交和管理项目成果等。

    06

    教学团队

    毛新军

    国防科技大学计算机学院教授,校优秀教师,入选教育部新世纪优秀人才、湖南省121人才计划、全国高校计算机专业优秀教师,教育部计算机领域本科教育改革试点工作计划(101计划)软件工程课程建设负责人,教育部101软件工程课程虚拟教研室负责人,CCF CCD教改导教班软件工程课程主讲教师,信息技术新工科产学研联盟和中国高校计算机教育MOOC联盟的实践教学工委主任;从事软件工程方向的科学研究、教学教改和人才培养工作,研究成果发表在TSE、ICSE、ASEJ、ESE、ICSME、JSEP、SANER、COMPSAC、JCST、中国科学,软件学 ,计算机学 等期刊和会议上,建立了依托课程簇的软件工程专业课程体系,开展了基于开源和群智的课程实践教学改革,提出了群体化学习的教育理念和教学方法,研制了群体化学习支撑平台LearnerHub,建立了软件工程课程学习 区和教学生态,制定了软件工程课程国家标准,编写教材和著作6部,获国家教学成果二等奖1项,省和军队教学成果一等奖各1项。

    董威

    国防科技大学计算机学院博士/教授、博士生导师,现任中国计算机学会形式化方法专委会秘书长,先后主持了国家自然科学基金项目5项、国家863项目1项、国防973课题1项、国防预研和预研基金重点项目4项、国家973子课题1项,入选教育部新世纪优秀人才支持计划,先后获霍英东基金会高校青年教师奖、军队院校育才银奖、中国计算机学会首届NASAC青年软件创新奖、IEEE Reliability Society和IEEE Division VI联合授予的杰出服务奖。在国际高水平会议和期刊上发表学术论文70余篇,出版国家级规划教材两部,获军队科技进步二等奖2项、三等奖2项,相关研究成果成功应用于装备控制、探月工程、载人航天、自主操作系统等关键领域型 工程。

    尹良泽

    卢遥

    国防科技大学计算机学院讲师,从事软件工程方向的科学研究、教学教改和人才培养工作,作为骨干成员参与国家重点研发项目和NSFC重点项目2项,作为平台技术负责人研发的群体化学习平台知士荟(LearnerHub)在10余所高校得到推广和应用,在ICSE、ICSME、JSEP等高水平会议和期刊上发表论文10余篇,参与主讲的“软件工程”课程获国家精品课程、精品资源共享课程以及湖南省金课。

    陈振邦

    王涛

    国防科技大学副研究员,计算机学院PDL实验室分布计算研究室副主任,CCF开源发展委员会副秘书长,木兰开源 区技术委员会委员。长期从事群智软件工程、开源生态研究以及开源平台的建设与实践,是群体化创新实践科教平台Trustie以及CCF开源创新服务平台GitLink研发负责人,为木兰开源 区、红山开源 区等提供平台和技术支撑。

    余跃

    国防科技大学副研究员,OpenI启智开源 区运营中心主任、技术委员,CCF开源发展委员会常务委,主要从事开源生态、群体智能、智能化软件开发等相关领域的研究工作,在CSCW、CHI、TSE、ICSE、FSE、ASE等软件工程国际重要会议和期刊发表论文50余篇,曾获湖南省优秀博士论文、ACM学会优秀博士论文、OW2国际开源比赛一等奖与特等奖等奖励,作为技术负责人牵头开展我国新一代人工智能规划重点开源 区OpenI启智 区基础平台与生态建设。

    头歌 — 让高校教学更有创造力

    EduCoder

    头歌(EduCoder)是广受欢迎的高校实践教学服务平台与创新环境,致力于为高校人才培养和企业能力提升提供智能化在线实践教学、实验实训、课程建设、案例共享与共建等服务,服务2500家高校、数百家企业。2020年初,教育部将头歌列为首批高校在线教学解决方案。

    更多内容敬请关注头歌~

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年10月22日
    下一篇 2022年10月22日

    相关推荐