前言
随着信息时代的飞速发展,计算机和软件已成为生产和生活中极为重要的组成部分。因此,培养熟练掌握计算机科学技术与软件工程相关领域知识的专业人才刻不容缓。
作为计算机和软件工程专业本科学生的必修课程,“软件工程”在国内外都是大学计算机科学教育体系中的核心课程之一。它担负着系统、全面地介绍软件工程的基本理论,为其他专业课程的学习奠定坚实基础,培养学生具备基本工程思维及提高学生实践和管理能力的重任。
软件工程是应用计算机科学、数学、逻辑学及管理科学等原理开发软件,将系统化的、严格约束的、可量化的方法应用于软件的开发、运行与维护,以实现提高质量、降低成本等目的的一门新兴的、综合性的应用科学。传统的仅通过理论课程讲授软件工程的授课方式显然无法提高学生的操作和实践能力。因此,我们建议在开设“软件工程”的理论课程的同时,开设与之配套的“软件工程实践”课程。
随着软件工程理论的发展,项目开发框架、自动化测试工具、项目管理工具、配置管理工具相关的自动化工具也在不断涌现。这些工具使软件开发效率大大提高,降低了软件的开发成本。相应地,这些工具也对软件开发领域的从业者、相关专业的学生提出了新的要求。要培养相关专业的人才,除了重视软件工程理论与实践的教学方法外,同样需要有足够优秀的实验辅导材料作为支撑。
市面上现有的软件工程类书籍更注重理论和概念,对实际中用到的工具介绍不甚详细,因此不能满足软件工程专业教师与学生的日常教学要求。大部分现有教材中使用的软件版本过低,内容也较为陈旧,实验设置只是作为理论内容的补充,实践性和可操作性不强,课时安排不够合理,因此与当今计算机和软件工程相关专业的大学生的实践需求严重脱轨。
针对以上诸多问题,本书作者旨在编写一本适用于计算机和软件工程相关专业的学生、内容与当前软件工程理论和工具发展实际情况紧密结合的软件工程实践课程参考书籍。本书在以下几个重要方面有突出特色。
目标针对性强: 本书针对计算机和软件工程相关专业学生,而不是广泛的高校学生,旨在培养他们的实践能力,加深他们对软件工程的理解,为今后的课程学习和实践打下基础。
内容与时俱进: 本书充分考虑到现今软件与技术使用的实际情况,内容既考虑了软件版本的兼容性,又与最新的技术紧密结合,去除了过于陈旧和不实用的内容,符合软件工程工具发展的最新趋势。
真实实验项目: 本书围绕“论文检索系统”这一现实软件项目的软件生存周期设置实验,从不同角度展现软件生存周期各阶段的工作内容,使读者能够最大化地掌握软件开发中各个工具的使用方法。
配图充实丰富: 讲解和实验都配有丰富的插图,清晰易懂,融入了大量具体的实践过程,而非简单介绍原理。
视角新颖独到: 每章附有思考题和实验练习题,鼓励学生将实践过程和理论相联系,延伸思考,开阔学生视野。
教学操作性强: 实验有清晰的步骤提示,易于老师讲授和学生自学,实验难度从浅入深,可按实际需要选做和调整,实验课时合理,符合一般教学安排。
此外,本书还在讲解的过程中穿插提示和注意部分,其图标及对应的说明如下。
提示部分通常会对讲解的内容进行拓展说明,这些说明可能是超出本书知识范围的,目的是起到启发的作用。读者可以跟随提示部分自行搜索相关的内容,以进行更深入的学习。
注意部分通常会强调讲解内容中容易被忽略或容易被混淆的部分,这些说明用于提醒读者需要注意的内容,目的是防止对知识点的错误理解带来学习上的阻碍。
本书分为9章,涉及软件工程理论与发展、软件设计与分析、软件开发、软件测试和代码管理等方面的内容。每章将根据不同工具或框架的特点对其进行详细的介绍,包括软件的基本介绍、版本信息、功能用途、使用步骤、拓展延伸等; 每章的最后都配有相关的思考题和实验题,同时还附有本章的参考文献,帮助学生消化理解本章知识和拓展思路。
在学习本书时,笔者建议读者能够掌握一些基本的UML图绘制的知识,如用例图、类图等。本书虽基于UML2.5对涉及的UML图的概念进行了一定的介绍,但受篇幅所限,本书没有对绘制的思路、规范等理论知识进行讲解。相反地,本书基于对工具的使用方法进行讲解的目的,对使用工具绘制UML图元素的方式进行具体的讲解。因此,读者如果能了解UML的理论知识,在这方面的学习和实践中将会进步得更加迅速。
对于编程方面,笔者建议读者能够掌握一些编程语言。例如,在学习前端编程框架Vue.js时,读者需要掌握HTML、CSS和JavaScript 3门语言; 在学习后端编程框架Django时,读者需要掌握Python语言; 在学习部署时,读者需要掌握基本的Linux命令行的操作,如cd、ls、touch等指令。由于篇幅所限,本书没有对这些编程语言和指令进行讲解,希望读者能够在学习对应章节前对这些内容有一定的了解。
对于编程工具,本书在讲解编程和部署的过程中使用了一些主流的IDE,如Visual Studio Code和PyCharm。由于IDE之间的使用方法类似,本书不在该方面过多讲解。在实践中,读者也可以使用其他的、自己习惯使用的IDE。
对于软件获取,本书所使用的大部分软件都能够从官网获取试用版。读者在学习时可以前往软件的官网获取。但是,试用版的使用期限有限,如果读者想更深入或长久地使用这些软件,可以从官网等渠道购买这些软件的正式版,以获取较为完整的功能。
本书建议教学课时为36课时,其中课内24课时,课外12课时。具体教学安排可以根据实际教学情况进行调整。
软件工程实践课程应该建立在理论课程的基础上,本书不是取代软件工程理论课程的教材,因此,在学习本课程时,应同时学习软件工程理论课程,并配合理论课程教材一同使用。
本书总结了我们多年软件工程实践与教学的经验。为了使本书更具有可用性,我们以北京航空航天大学软件学院作为试点,用本书的内容进行了实验性教学。在此,感谢北京航空航天大学软件学院在工作上给予的支持,以及在成书过程中所提供的各种宝贵资源。
本书配套微课视频,详细讲解实验操作,请读者先扫描封底刮刮卡内二维码,获得权限,再扫描正文中章名旁的二维码,即可观看学习。本书其他配套资源可从清华大学出版社官网下载,或通过“书圈”公众号下载。
本书的作者为吕云翔、黎可为、张中基,曾洪立参与了部分内容的编写及资料整理工作。
由于计算机技术发展迅速,软件工程实践课程本身还在探索之中,在市场上针对计算机和软件工程相关专业的软件工程实践课程的教材中,能使人耳目一新的并不多见。我们力求使本书完美,但我们的学习能力和水平有限,书中难免有疏漏之处,恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流。
作者2022年6月
于北京航空航天大学软件学院
商品简介
本书依据典型的软件开发过程组织内容,围绕“论文检索系统”这一实际软件项目设计项目开发实验,旨在培养读者应用软件开发工具和框架进行实际软件项目开发的实践能力。全书共9章,所涉及的软件开发工具和框架包括: 项目管理工具Microsoft Project,集成建模平台Enterprise Architect,软件数据模型建模工具PowerDesigner,分布式版本控制系统Git,前端开发框架Vue.js,后端开发框架Django,软件测试工具Vue Test Utils、Unit Test、Postman,服务器软件Nginx。 本书是高等院校计算机科学、软件工程及相关专业“软件工程”实践课程的理想教材,也可以供开发人员、软件测试工程师、系统工程师及软件项目经理等相关人员阅读参考。
目录
目录 第1章绪论 1.1软件工程概述 1.1.1软件工程的概念与理论 1.1.2软件工程的发展 1.1.3软件生命周期 1.1.4软件生命周期模型 1.1.5软件工程实用工具 1.2网络应用程序的开发 1.2.1网络应用程序 1.2.2前端和后端 1.3“论文检索系统”案例介绍 1.3.1项目背景 1.3.2需求说明 1.3.3系统要求 1.4小结 1.5习题 1.6参考文献 第2章项目管理工具Microsoft Project 2.1概述 2.2基本操作 2.2.1界面说明 2.2.2视图 2.2.3日程表 2.2.4甘特图 2.3绘制“论文检索系统”的甘特图 2.3.1设置项目信息 2.3.2输入计划内容 2.3.3审查任务进度 2.4小结 2.5习题 2.6参考文献 第3章集成建模平台Enterprise Architect 3.1概述 3.1.1统一建模语言UML 3.1.2Enterprise Architect 3.2基本使用 3.2.1操作面板介绍 3.2.2创建一个EA项目 3.3绘制“论文检索系统”的用例图 3.3.1基本概念 3.3.2创建用例图 3.3.3绘制用例图元素 3.4绘制“论文检索系统”的类图 3.4.1基本概念 3.4.2创建类图 3.4.3绘制类图元素 3.5绘制“论文检索系统”的顺序图 3.5.1基本概念 3.5.2创建顺序图 3.5.3绘制顺序图元素 3.6绘制“论文检索系统”的状态图 3.6.1基本概念 3.6.2创建状态图 3.6.3绘制状态图元素 3.7绘制“论文检索系统”的活动图 3.7.1基本概念 3.7.2创建活动图 3.7.3绘制活动图元素 3.8绘制“论文检索系统”的通信图 3.8.1基本概念 3.8.2创建通信图 3.8.3绘制通信图元素 3.9绘制“论文检索系统”的组件图 3.9.1基本概念 3.9.2创建组件图 3.9.3绘制组件图元素 3.10绘制“论文检索系统”的部署图 3.10.1基本概念 3.10.2创建部署图 3.10.3绘制部署图元素 3.11绘制“论文检索系统”的包图 3.11.1基本概念 3.11.2组织项目目录 3.11.3创建包图 3.11.4绘制包图元素 3.12双向工程 3.12.1正向工程 3.12.2逆向工程 3.13小结 3.14习题 3.15参考文献 第4章软件数据模型建模工具PowerDesigner 4.1概述 4.2基本使用 4.3构建业务处理模型 4.4构建“论文检索系统”的数据模型 4.4.1构建概念数据模型 4.4.2构建物理数据模型 4.5模型的转换 4.5.1概念数据模型CDM转换为逻辑数据模型LDM 4.5.2概念数据模型CDM转换为物理数据模型PDM 4.5.3物理数据模型PDM转换为数据库 4.6小结 4.7习题 4.8参考文献 第5章分布式版本控制系统Git 5.1概述 5.2Git Bash 5.3远程仓库 5.3.1选择远程仓库 5.3.2在网页端创建远程仓库 5.3.3邀请成员 5.4基本使用 5.4.1代码的修改与提交 5.4.2将远程仓库同步到本地 5.5分支 5.5.1分支的概念 5.5.2分支的管理 5.6冲突 5.7版本 5.7.1回滚 5.7.2标签 5.8小结 5.9习题 5.10参考文献 第6章前端开发框架Vue.js 6.1概述 6.2创建一个Vue项目 6.2.1安装Vue 6.2.2Vue项目 6.3Vue实例与生命周期 6.3.1Vue实例 6.3.2Vue文件 6.3.3选项参数与生命周期 6.4数据绑定 6.4.1Mustache插值 6.4.2vbind 6.4.3vmodel 6.4.4von 6.4.5vif和vshow 6.4.6vtext和vhtml 6.4.7vfor 6.5Vue Router 6.5.1routerview和routerlink元素 6.5.2路由设置 6.5.3路由跳转 6.6组件化 6.6.1引入和注册组件 6.6.2组件间的通信 6.6.3slot(选读) 6.6.4用UI库丰富自己的网站 6.7Vuex 6.7.1设置Vuex 6.7.2state 6.7.3getters 6.7.4mutations 6.7.5action 6.7.6module 6.8利用Axios发送请求 6.8.1安装并全局引入Axios 6.8.2使用Axios发送HTTP请求 6.9Vue配置文件 6.10小结 6.11习题 6.12参考文献 第7章后端开发框架Django 7.1概述 7.2配置环境 7.2.1安装Python 7.2.2创建项目文件夹 7.2.3安装Django 7.3Django项目 7.3.1创建项目 7.3.2运行项目 7.4应用 7.5模型层 7.5.1创建数据库表 7.5.2数据库迁移 7.5.3Admin管理系统 7.6视图层 7.6.1数据库操作 7.6.2请求处理函数 7.6.3注册URL 7.6.4CSRF 7.6.5请求处理函数的优化(选读) 7.7模板层 7.8项目设置 7.8.1ALLOWED_HOST 7.8.2INSTALLED_APPS 7.8.3MIDDLEWARE 7.8.4TEMPLATES 7.8.5DATABASES 7.8.6AUTH_PASSWORD_VALIDATORS 7.9小结 7.10习题 7.11参考文献 第8章软件测试工具 8.1概述 8.1.1软件测试 8.1.2软件测试的特点 8.1.3软件测试的分类 8.2Vue Test Utils 8.2.1安装并执行Vue Test Utils 8.2.2编写简单的测试脚本 8.2.3包裹器 8.2.4异步加速测试 8.2.5等待DOM结点更新 8.2.6等待Axios请求或复杂的异步行为 8.2.7模拟请求结果 8.3Unit Test 8.3.1Unit Test的组成元素 8.3.2编写简单的测试脚本 8.3.3结合Selenium工具进行Web自动化测试(选读) 8.4Postman 8.4.1安装并执行Postman 8.4.2利用Postman测试接口 8.4.3请求记录 8.5小结 8.6习题 8.7参考文献 第9章项目部署 9.1概述 9.1.1部署 9.1.2云服务器 9.1.3跨域请求 9.2配置云服务器 9.2.1购买云服务器 9.2.2连接服务器 9.3Nginx 9.3.1安装和运行Nginx 9.3.2Nginx配置文件 9.4前端部署 9.4.1设置Axios跨域请求 9.4.2构建生产环境的代码 9.4.3上传代码文件到服务器 9.4.4修改Nginx配置文件 9.5后端部署 9.5.1开放跨域请求 9.5.2测试项目运行 9.5.3uWSGI 9.5.4Nginx+uWSGI部署 9.5.5配置文件启动uWSGI 9.6将前后端部署在同一端口 9.6.1配置Django 9.6.2配置uWSGI 9.6.3配置Vue 9.6.4运行服务器 9.7小结 9.8习题 9.9参考文献
内容摘要
本书依据典型的软件开发过程组织内容,围绕“论文检索系统”这一实际软件项目设计项目开发实验,旨在培养读者应用软件开发工具和框架进行实际软件项目开发的实践能力。全书共9章,所涉及的软件开发工具和框架包括: 项目管理工具Microsoft Project,集成建模平台Enterprise Architect,软件数据模型建模工具PowerDesigner,分布式版本控制系统Git,前端开发框架Vue.js,后端开发框架Django,软件测试工具Vue Test Utils、Unit Test、Postman,服务器软件Nginx。
本书是高等院校计算机科学、软件工程及相关专业“软件工程”实践课程的理想教材,也可以供开发人员、软件测试工程师、系统工程师及软件项目经理等相关人员阅读参考。
主编推荐
1.目标针对性强:本书针对计算机和软件工程相关专业学生,而不是广泛的高校学生,旨在培养他们的实践能力,加深对软件工程的理解,为今后的课程学习和实践打下基础。 2.内容与时俱进:本书充分考虑到现今软件与技术使用的实际情况,内容既考虑了软件版本的兼容性,又与近期新的技术紧密结合,去除了过于陈旧和不实用的内容,符合软件工程工具发展的近期新趋势。 3.真实实验项目:本书围绕“论文检索平台”这一现实软件项目的软件生存周期设置实验,从不同角度展现软件生存周期各阶段的工作内容,使读者能够优选化掌握软件开发中各个工具的使用方法。 4.配图充实丰富:讲解和实验都配有丰富的插图,清晰易懂,融入了大量具体的实践过程,而非简单介绍原理。 5.视角新颖独到:每章附有思考题和实验练习题,鼓励学生对实践过程和理论相联系,延伸思考,开阔学生视野。 6.教学操作性强:实验有清晰的步骤提示,易于老师讲授和学生自学,实验难度从浅入深,可按实际需要进行选做和调整,实验课时合理,符合一般教学安排。 7.配套资源丰富:本书提供240分钟微课视频、教学大纲、教学课件、实验素材等配套资源,便于师生教学。
精彩内容
本书依据典型的软件开发过程组织内容,围绕“论文检索系统”这一实际软件项目设计项目开发实验,旨在培养读者应用软件开发工具和框架进行实际软件项目开发的实践能力。全书共9章,所涉及的软件开发工具和框架包括: 项目管理工具Microsoft Project,集成建模平台Enterprise Architect,软件数据模型建模工具PowerDesigner,分布式版本控制系统Git,前端开发框架Vue.js,后端开发框架Django,软件测试工具Vue Test Utils、Unit Test、Postman,服务器软件Nginx。 本书是高等院校计算机科学、软件工程及相关专业“软件工程”实践课程的理想教材,也可以供开发人员、软件测试工程师、系统工程师及软件项目经理等相关人员阅读参考。
以下为对购买帮助不大的评价