本课程从软件工程实践者的角度讲述软件工程的基本原理、概念和技术,强调软件开发过程的方法和技术的应用和评价。通过本课程的学习,使学生能够熟练应用软件分析、设计、实现和测试的基本技术以及面向对象分析和设计的基本方法。通过课程实践,实际运用软件工程的技术和方法,以及软件项目管理和团队开发的工作方法。
课程重点讲授软件开发的全过程以及贯穿过程的各阶段中所采用的技术、方法和工具。课程前一部分的内容介绍传统的结构化分析和设计方法,后一部分的内容介绍九十年代开始出现的面向对象软件工程的研究。
通过本课程的学习,要求学生能够分析、评价这两种不同风格的方法学,并有意识地按照软件工程规范指导软件系统开发实践。教学重点和难点是:在课程实践中熟练运用结构化方法、面向对象方法开发软件,包括必要的过程、步骤及应遵循的原则。教学中不但注重概念、原理方法、技术的讲解和分析评价,也十分注重方法、技术的实际应用,使学生能够利用所学的方法和技术开发小型软件项目。
2
教学目标
通过本课程的学习,要求学生能够分析、评价这两种不同风格的方法学,并有意识地按照软件工程规范指导软件系统开发实践。教学重点和难点是:在课程实践中熟练运用结构化方法、面向对象方法开发软件,包括必要的过程、步骤及应遵循的原则。教学中不但注重概念、原理方法、技术的讲解和分析评价,也十分注重方法、技术的实际应用,使学生能够利用所学的方法和技术开发小型软件项目;培养学生具有新时代、新思想、新实践,唯物辩证法的根本观点,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感;激发学生科技报国的家国情怀和使命担当。
具体包括:
(1)掌握软件、软件危机、软件工程的定义和内容、软件过程的不同模型及其优缺点。
(2)了解结构化分析、设计和实现的方法;掌握软件模块独立性分析原则,能进行模块接口设计、过程设计,并能解决小型软件项目中遇到的各种问题。掌握结构化软件测试方法,掌握黑盒测试,白盒测试。
(3)了解面向对象的分析、设计和实现方法;掌握UML,能结合行业需求进行系统领域划分;掌握软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构;掌握面向对象的软件测试方法,掌握系统状态图及脚本撰写。
(4)了解软件项目管理、软件风险管理的方法;了解软件团队合作方法,了解利用配置管理工具进行团队开发的方法。
(5)了解敏捷开发理念及DevOps,了解现代软件开发趋势,了解微服务、云服务开发、部署。了解软件重用的方法和手段。
1.课程目标制定依据
2.课程目标
知识目标
课程目标1:理解软件、软件危机、软件工程的定义和内容,能够分析不同模型软件过程的优缺点,将软件开发过程应用于软件开发中,支持毕业要求3.4和毕业要求8.4。
课程目标2:理解结构化软件测试方法原理,能够应用黑盒测试,白盒测试方法测试软件,支持毕业要求11.1和毕业要求11.2;
课程目标3:理解面向对象的软件测试方法原理,能够分析系统状态图及脚本,编写测试用例,支持毕业要求11.1和毕业要求11.2;
课程目标4:能够应用软件项目管理、软件风险管理的方法,支持毕业要求9.1和毕业要求9.2;
课程目标5:理解软件重用的方法和手段,支持毕业要求3.4。
能力目标
课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题,支持毕业要求11.1和毕业要求11.2;
课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分,支持毕业要求11.1和毕业要求11.2;
课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构,支持毕业要求3.4和毕业要求8.4;
课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发,支持毕业要求9.1和毕业要求9.2。
课程目标10:具备自我评价能力和职业规划能力,支持毕业要求8.4、毕业要求9.1和毕业要求11.2。
3.课程教学目标与毕业要求指标点的对应关系
考核形式与成绩计算
本课程考核由实验成绩、MOOC成绩和期末大作业成绩三个部分构成。
1.评价标准
2.考核方法及与指标点的支撑关系
3.课程目标的达成情况评价
4
参考教材
1.主要教材
2.参考书
5
配套资源
1.线上教学资源
软件工程MOOC(1000分钟).杜文峰等软件工程课程组.深圳大学优课联盟.
2.其他资源
PPT课件,教学大纲,实验大纲,教学进度表,习题答案。
3.辅助材料
6
课程教学设计
本课程主要教学内容包括软件发展史及软件工程、软件生命周期、结构化分析、结构化设计、结构化实现、统一建模语言、面向对象分析、面向对象设计、面向对象实现、软件过程、软件项目管理、腾讯敏捷研发、人机交互设计等内容。由于本课程是计算机科学与技术专业的核心课程,而且与社会工程实践有着紧密联系,因此本课程包含36学时的理论教学和36小时实验教学。
根据课程思政与教学内容的契合点,在理论教学上,学生一方面掌握软件及软件工程、结构化方法学、面向对象方法学等基本概念;一方面学习国家发展战略、中华传统文化等思政内容;而且还要学会采用不同方法学解决复杂软件工程问题,培养软件工程思想和科学思维方式。
通过在线视频课程,本课程可以开展实时反馈、全程紧张的实验教学模式,引导学生点、线、面地把所学知识点串联起来,构筑整体知识结构;在实验作业中加入思政元素,启迪学生进行知识的再发现,激发问题和创新意识,培养学生的工匠精神和创新精神。
课程思政元素主要包括:国家发展战略、中华传统文化、个人道德素养、唯物辩证观。主要通过类比、隐喻、演绎、关联等方式,融入到课堂讲授和实验编程中,实现润物无声的思政教学模式。
理论教学部分(54学时)
(一)软件发展史及软件工程(4学时)
1.主要内容
(1)软件的发展历程
(2)软件的定义和特点
(3)软件危机
(4)软件工程
(5)软件开发方法
(6)软件工程知识体系
2.基本要求
(1)了解什么是软件开发的发展史,软件开发的本质特性;
(2)了解软件危机产生的根本原因,以及消除危机的途径;
(3)理解软件工程的实质和内容;了解软件开发的过程、原理;
(4)了解不同的软件开发方法的特点;
(5)了解软件工程涵盖的知识体系。
3.重点、难点
重点:软件、软件危机、软件工程的定义和内容、不同软件开发方法的优缺点。
难点:对于没有大型软件开发经验的学生来说,如何加强学生对软件危机的理解、软件开发团队的作用和软件工程方法学的实践是本章的难点。
4.作业及课外学习要求
作业:根据课程讲解内容,复习基本的软件工程理论知识
课外学习要求:能够了解和分析现有软件项目的开发过程以及开发方法
5.思政内容
了解软件工程在人工智能、工业互联网、大数据、云计算等新兴技术系统架构与软件开发中得到广泛应用,了解我国科技发展形势,科技兴国科技强国战略。通过分组讨论方式分析自己在研发过程中遇到的软件危机问题,以及当初自己是如何克服的。如果你生活在中国近代,当国家遇到危机的时,你会怎么办?
6.支撑课程目标和毕业要求及指标点
本知识点的讲授和学习,可以支撑“课程目标1:理解软件、软件危机、软件工程的定义和内容,能够分析不同模型软件过程的优缺点,将软件开发过程应用于软件开发中”及“课程目标10:具备自我评价能力和职业规划能力”。
(二)软件生命周期(4学时)
(1)软件生命周期
(2)项目构想及立项
(3)可行性分析
(4)项目开发计划
(5)需求分析概述
(6)软件设计概述
(7)软件实现概述
(8)软件测试概述
(9)软件维护概述
(2)了解软件构想及立项涉及的内容范围;
(3)了解可行性分析的实质和包含的技术内容;
(4)了解软件开发计划需要包含内容,以及软件开发计划各个部分的作用;
(5)了解软件需求分析的重要性,了解不同软件开发方法进行需求分析的方式,以及软件需求涵盖不同内容对用户需求描述的实质;
(6)了解软件设计的重要性,了解不同软件开发方法进行设计的方式;
(7)了解软件实现的实质,对不同软件开发方法实现软件的方式进行分析;
(8)了解软件测试的实质,了解软件测试包含的技术内容和软件测试用例产生方法;
重点:软件生命周期、项目开发计划、需求分析、软件设计、软件实现、软件测试、软件维护等。
难点:由于学生没有完整的软件开发经验,如何加深学生对软件生命周期各个阶段的理解是本章内容的重点和难点。
作业:根据课程讲解内容,结合已有的软件项目经验来理解软件生命周期的不同阶段
课外学习要求:能够理解软件生命周期,以及理解不同软件开发方法设计的生命周期阶段
结合软件业务需求与非业务需求的重要性,讨论所学知识与精神力量之间的关系。强调只有拥有了正确的人生观、价值观、世界观,才能有效利用所学知识来实现人生理想。
本知识点的讲授和学习,可以支撑“课程目标2:理解结构化软件测试方法原理,能够应用黑盒测试,白盒测试方法测试软件”、“课程目标3:理解面向对象的软件测试方法原理,能够分析系统状态图及脚本,编写测试用例”、“课程目标4:能够应用软件项目管理、软件风险管理的方法”、“课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题”、“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”和“课程目标10:具备自我评价能力和职业规划能力”。
(三)结构化分析(4学时)
(1)结构化需求描述方法
(2)结构化需求建模
(3)数据流图
(4)处理/加工逻辑说明
(5)状态转换图
(6)数据模型
(1)理解结构化需求建模的方式和方法
(7)掌握软件需求规格说明的撰写
重点:结构化分析概念,数据流图、处理/加工逻辑说明、状态转换图和数据模型
作业:根据课程教学内容,分析和调研软件开发项目(即期末大作业)。
课外学习要求:通过项目实践,掌握结构化需求分析中的各种建模工具。
了解结构化方法学软件开发中的应用,了解如何分析国家面临的问题,能够从行为角度对问题进行详细描述。
本知识点的讲授和学习,可以支撑“课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题。”
(四)结构化设计(8学时)
(1)结构化设计与结构化分析的关系;
(2)模块化及模块独立性
(3)结构化设计启发式规则
(4)系统结构设计
(5)数据设计
(6)过程设计
(7)设计优化
(1)掌握结构化设计与结构化分析的关系
(2)理解结构化设计的概念和原理
(3)掌握模块独立
(4)掌握软件结构
(7)理解设计优化的方式和方法
重点:模块独立性、结构化中的内聚和耦合、软件结构、数据设计、过程设计。
难点:模块划分方法,数据流图到软件结构设计的转换方法等。
了解如何从行为角度来设计针对国家面临的问题的解决途径,并能够身体力行,感受作为社会主义建设者的自豪感!
本知识点的讲授和学习,可以支撑“课程目标2:理解结构化软件测试方法原理,能够应用黑盒测试,白盒测试方法测试软件”、“课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题”和课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构。
(五)结构化实现(8学时)
(1)结构化实现与结构化设计的关系;
(2)模块化编码概念、结构化程序的源代码组成、结构化程序的文件组织、结构化模块集成
(3)结构化测试概念、结构化测试阶段、测试覆盖标准、结构化测试用例设计、结构化实施
(1)理解结构化实现与结构化设计的关系
(2)了解结构化编码的概念
(3)掌握结构化程序的源代码组成及文件组织
(4)掌握结构化模块集成方法
(5)了解结构化测试的概念、测试阶段划分、测试覆盖标准
(6)掌握结构化测试用例设计方法
(7)掌握结构化测试实施方法
重点:结构化实现方法、多文件组织、结构化集成、结构化测试用例设计方法。
难点:如何采用多文件来组织程序源代码,以及进行代码集成;如何设计符合要求的白盒、黑盒测试用例;
作业:将前期的软件设计内容转换为对应的程序代码,并为各个软件模块及软件设计测试用例。
了解国家在做各种规划设计后是如何付诸实施,并且检测各个规划的实现效果。理解我国从建国以来取得的辉煌成就来之不易!
本知识点的讲授和学习,可以支撑“课程目标2:理解结构化软件测试方法原理,能够应用黑盒测试,白盒测试方法测试软件”、“课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题”和“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发”。
(六)统一建模语言(2学时)
(1)统一建模语言发展史
(2)UML中的图
(1)了解面向对象建模方法
(3)了解UML中的各种图的作用和使用方法
重点:用例图、活动图、类图、顺序图、对象图、通信图、部署图、包图
难点:掌握各种图的作用和使用方法
作业:了解UML的使用方法,了解如何借助UML进行面向对象建模。
课外学习要求:学习其他面向对象软件建模技术,掌握UML在面向对象软件开发过程中的应用。
了解当前国家各种规章制度的拟定形式,思考如何才能将各种惠民政策、方针通过有效的途径表达出来,确保各种信息能够被人民准确无误的理解。
本知识点的讲授和学习,可以支撑“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”和“课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构”。
(七)面向对象分析(4学时)
(1)业务用例分析
(2)业务用例描述
(3)活动建模
(4)分析模型
(5)面向对象分析评审
(1)了解用例方法,掌握用例表示途径
(2)掌握活动建模方法
(3)掌握分析模型建模方法
(4)了解面向对象分析模型评审的途径和方法
重点:用例划分方法、对象建模、交互建模、主题划分等
作业:根据课程教学内容,思考如何将面向对象需求建模技术应用于实际项目中。
课外学习要求:能够学习和利用面向对象分析技术来完成项目需求分析。
了解面向的对象方法学软件开发中的应用,了解如何分析国家面临的问题,能够从实体角度对问题进行详细描述。
本知识点的讲授和学习,可以支撑“课程目标4:能够应用软件项目管理、软件风险管理的方法”和“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”。
(八)面向对象设计(6学时)
(1)分析模型到设计模型的转换
(2)面向对象设计原则
(3)面向对象的模块独立性
(4)面向对象设计启发式规则
(5)设计模式
(6)面向对象架构设计
(7)软件构件设计
(8)部署设计
(1)理解分析模型如何转换为设计模型
(2)理解面型对象的设计原则
(3)理解面向对象的模块独立性
(4)了解面向对象设计启发式规则
(5)了解设计模式
(6)掌握面向对象架构设计方法
(7)掌握软件构件设计方法
重点:分析模型到设计模型的转换、面向对象的模块独立性、软件构架设计方法、软件构件设计方法
难点:由于学生缺少实际项目经验,如何帮助学生理解软件架构设计和软件构件设计是本章的难点。
作业:根据课程教学内容,将前期的面向对象分析模型转换为设计模型。
课外学习要求:能够采用UML各种图示工具来建模面向对象设计内容
了解如何从个人、组织等角度来思考、设计针对国家面临的问题的解决途径;并能结合身体力行,感受作为社会主义建设者的自豪感。
本知识点的讲授和学习,可以支撑“课程目标5:理解软件重用的方法和手段”、“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分和“课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构”。
(九)面向对象实现(6学时)
(1)面向对象编码
(2)面向对象业务实现
(3)面向对象测试
(4)面向对象测试用例设计
(1)理解面向对象实现中的文件组织
(2)掌握对象业务实现方法
(3)了解面向对象测试及测试阶段
(4)掌握面向对象测试用例设计方法
重点:面向对象业务实现,面向对象测试用例设计
课外学习要求:理解面向对象设计到面向对象实现的转换过程,明白面向对象测试的方法
了解如何从个人、组织等角度来思考、设计针对国家面临的问题的解决途径;并能结合身体力行,感受作为社会主义建设者的自豪感!
本知识点的讲授和学习,可以支撑“课程目标3:理解面向对象的软件测试方法原理,能够分析系统状态图及脚本,编写测试用例”、“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”、“课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构”和“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发”。
(十)软件过程(2学时)
(1)软件过程概述
(2)瀑布模型
(3)演化模型
(4)快速原型法
(5)增量模型
(6)螺旋模型
(7)喷泉模型
(8)构件组装模型
(9)统一过程
(10)能力成熟度模型
(11)净室软件工程
(12)敏捷开发过程
(1)理解软件开发过程的作用
(2)理解瀑布模型
(3)了解演化模型
(4)理解快速原型法
(5)理解增量模型
(6)了解螺旋模型
(7)了解喷泉模型
(8)了解构件组装模型
(9)了解统一过程
(10)了解能力成熟度模型
(11)了解净室软件工程
(12)理解敏捷开发过程
重点:软件开发过程,瀑布模型,快速原型法、增量模型、螺旋模型、统一过程、敏捷开发过程
难点:讲解不同软件开发过程对软件开发的作用及效果,评估不同过程的设置原理
课外学习要求:结合所学知识来思考已经完成的软件项目开发过程,思考哪种过程更加适合于学校软件项目开发,以及各种软件过程适合的目标项目。
在项目分析过程中,可以通过类比方式引入国家在制定各类政策时针对不同情况采用的工作方式,例如采用敏捷研发思想来理解国家的五年规划;使用瀑布模型的流程来理解港珠澳大桥设计、建设过程;使用能力成熟度模型来理解国家对完成各项任务的组织进行资质和能力评估等。
本知识点的讲授和学习,可以支撑“课程目标1:理解软件、软件危机、软件工程的定义和内容,能够分析不同模型软件过程的优缺点,将软件开发过程应用于软件开发中”、“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发。”,和“课程目标10:具备自我评价能力和职业规划能力”和“课程目标10:具备自我评价能力和职业规划能力”。
(十一)软件项目管理(2学时)
(1)项目管理
(2)项目管理框架
(3)项目阶段管理
(1)了解项目管理的内容
(2)了解项目管理框架
(3)理解项目阶段管理各个阶段的内容
重点:软件项目管理,软件风险管理,软件配置管理
难点:软件项目的管理和实施,以及如何利用配置管理帮助项目开发
作业:根据课程教学内容,完善期末大作业,即软件开发项目。
课外学习要求:能够利用本章学习的知识内容,学习管理开发项目,并利用配置管理工具进行团队开发。
本知识点的讲授和学习,可以支撑“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发。”,和“课程目标10:具备自我评价能力和职业规划能力”和“课程目标10:具备自我评价能力和职业规划能力”。
(十二)腾讯敏捷软件开发(2学时)
(1)腾讯敏捷
(2)腾讯敏捷解决方案
(3)敏捷的核心应用
(1)了解腾讯敏捷的核心思想;
(2)了解腾讯敏捷解决方案的实质和精髓;
(3)了解敏捷核心应用的内在实质。
重点:敏捷研发思想、需求、迭代、测试、DevOps、缺陷等
难点:如何收集和撰写用户故事、迭代规划、DevOps
作业:使用腾讯敏捷研发平台组织软件项目开发。
课外学习要求:能够按照敏捷思想撰写用户需求,合理估计各个用户故事的任务量以及规划各次迭代。
引入项目管理知识点内容时,适时可以通过类比方式让学生通过项目组织管理的有效性来理解我国国家政体的合理性,让学生了解只有在中国共产党的领导下,才能有效带领中国走向复兴,才能让人民群众过上幸福的生活;同时,可以借助风险管理来让学生了解中国共产党、中国政府在和平时期的工作努力。通过在平时积累救援物资、战略储备物资等,让中国在98年大洪水、汶川地震、疫情期间打赢各场攻坚战中取得一次又一次的胜利。
本知识点的讲授和学习,可以支撑“课程目标1:理解软件、软件危机、软件工程的定义和内容,能够分析不同模型软件过程的优缺点,将软件开发过程应用于软件开发中”、“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”和“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发”。
(十三)人机交互设计(2学时)
(1)人机交互
(2)交互模型和框架
(3)人机交互设计原则
(4)人机交互界面设计过程
(1)了解人机交互涵盖的内容;
(2)理解交互模型和框架的原理;
(3)了解人机交互设计的原则;
(4)掌握人机交互界面设计过程及各个阶段需要完成的任务。
重点:人机交互概念、交互模型和框架、人机交互设计原则、交互界面设计过程
难点:如何将用户需求转化为交互界面
作业:将前期的软件项目需求转换为人机交互界面,并对各个界面元素进行说明。
课外学习要求:能够使用软件原型设计工具来完成交互界面设计。
介绍中国政府实施的便民措施设置方式,分析国家如何将复杂的办事流程通过简明、便捷的方式呈现给人民群众,优化政府与人民之间的沟通途径,提高人民的幸福感和满意度。
本知识点的讲授和学习,可以支撑“课程目标4:能够应用软件项目管理、软件风险管理的方法”、“课程目标5:理解软件重用的方法和手段”、“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发”和“课程目标10:具备自我评价能力和职业规划能力”。
实验教学部分(18学时)
1.实验内容
(1)软件界面设计
(2)数据库建模
(3)模块过程设计
(4)配置管理及团队开发
(5)敏捷开发平台配置及使用
(6)敏捷需求,迭代,故事墙
(1)掌握软件需求分析、设计、实现与测试的基本方法和原则
(2)掌握软件项目管理的方法
重点:软需求分析、软件原型建立,软件设计实现。
难点:软件模块划分。
作业:完成所有实验。
课外学习要求:通过课外查找和阅读文档完成系统分析与设计。
本知识点的讲授和学习,可以支撑“课程目标1:理解软件、软件危机、软件工程的定义和内容,能够分析不同模型软件过程的优缺点,将软件开发过程应用于软件开发中”、“课程目标2:理解结构化软件测试方法原理,能够应用黑盒测试,白盒测试方法测试软件”、“课程目标3:理解面向对象的软件测试方法原理,能够分析系统状态图及脚本,编写测试用例”、“课程目标4:能够应用软件项目管理、软件风险管理的方法”、“课程目标5:理解软件重用的方法和手段”、“课程目标6:能够应用结构化分析、设计和实现的方法,结合项目需求提出目标系统可行的解决方案;能够分析软件模块独立性,能设计模块接口、过程,并能分析并解决小型软件项目中遇到的各种问题”、“课程目标7:能够应用面向对象的分析、设计和实现方法,结合项目需求提出目标系统可行的解决方案;能应用UML,对行业需求进行系统领域建模和划分”、“课程目标8:能够应用软件架构及软件设计模式的设计优化方法,能针对具体行业应用设计和优化软件体系结构”、“课程目标9:理解软件团队合作方法,能应用配置管理工具进行团队开发”。
7
课程教学进度安排
参考书籍
《软件工程(微课视频版)》
作者:杜文峰袁琳朱安民叶聪
定价:69.80元
扫码京东优惠购书
内容简介
全书共5篇、14章,涵盖软件工程领域涉及的主要内容。前四篇内容主要包括:软件的发展历程,软件的定义和特点,软件危机产生的原因,软件工程产生的背景以及软件生命周期中各阶段的工作;如何利用数据流图、状态转换图和数据字典等来建模用户需求,如何采用层次图、IPO图及程序流程图来设计软件,如何有效地将结构化设计结果转换为程序代码,对完成的软件进行测试;如何提取用户需求、分析用户活动、建模系统状态、提取类的候选者和类关系,对象之间如何交互来完成业务逻辑、如何实现面向对象设计结果,为以面向对象方法实现的软件设计测试用例;经典的软件开发过程、现代主流的软件开发过程以及项目开发过程中的管理实践。最后一篇讲解腾讯公司内部的敏捷开发流程和开发平台,以及结合领域驱动设计总结如何分析、设计和实现云原生软件系统。
本书配有1000分钟左右的MOOC视频、教学大纲、PPT课件、习题等丰富的教学资源。