点击查看 软件需求工程 高校教学平台 卷首语
此项目计划书的编写主要是为了给开发《高校教学平台》做主要的规划和整合,在开发过程中起到引导作用,保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序,以文件化的形式,把对于在项目生存周期内的工作任务范围、各项工作的任务分解、项目团队组织结构、各团队成员的工作责任、团队内外沟通协作方式、开发进度、经费预算、项目内外环境条件、风险对策等内容做出的安排以书面的方式,作为项目团队成员以及项目干系人之间的共识与约定,它又是项目生命周期内的所有项目活动的行动基础、项目团队开展和检查项目工作的依据。
高校教学平台
浙江大学软件需求工程、软件工程管理课程任课老师:邢卫、林海、金波。
浙江大学软件需求工程、软件工程管理课程小组。
老师、学生、助教、网站游客、系统管理员。
基于公网IP的服务器与数据库。
软件客户代表
项目经理
项目开发人员
软件质量分析员
软件维护人员
其它需要了解本项目质量管理情况的人员都可参阅
该项目开发的软件为一个高校教学平台网站。 21世纪是计算机网络技术全面深入运用的一个世纪,计算机网络技术对社会、教育以及大学产生着迅猛、广泛和深入的影响。信息技术在高等教育领域得到广泛地应用。网络化学习是一种通过因特网或其他数字化内容进行学习交流与教学活动的新型教学模式,这种学习方式充分地利用了计算机网络技术所提供的便捷的交流方式与全新的沟通机制,加强了教学资源的共享。这改变了传统教学模式中教师的作用和师生间的关系,从而根本的改变了教学结构和教育本质。
如今,技术的教育应用已经成为教育改革和人才培养的重要途径,应用网络进行教学已经成为当今世界的主要趋势。尤其是在2020年疫情肆虐的大背景下,网络教学基本成了各大高校线上教学的刚需。
高校教学平台是如今实现网络教学的一个重要方式。教学网站方便了师生之间的信息传递与资源分享,优质的教学资源能够不受时空约束传递给需要的学生,有利于激发学生的学习兴趣,给学生的自我提升提供了可靠资源。教学网站极大的提高了教学过程中的师生沟通交流和教学管理,是现代教学过程中有效的教学辅助工具。高校教学平台使用信息系统来辅助,推进教学过程的实施,提高教学效率,降低教学成本,改善教学管理,并使优质教育资源通达更多的学生和受众。
本项目旨在将信息技术应用于高等教学领域,构建教师教学管理、学生教育获得的在线教育模式,打造一个高效实用的高校教学平台。
平台
平台界面简洁大方,有网站导航、相关链接、关键词搜索等。平台提供新手指南。平台提供教师介绍,包括以往教学、科研成果、教学风格、联系方式等。
教师
教师可以在平台上发布课程介绍,包括课时安排、教学计划、使用教材、考核方式、学生先修课程、 作业介绍等。教师可以在教室信息发布栏发布作业点评、课程变更等通知。同时教师可以发起线上测试,并通过客户端监视学生电脑屏幕以及通过摄像头监控学生活动以达到监考的目的。
学生
学生可以凭课程访问码加入教师的课程,在线观看多媒体资料,也可缓存下载。教师和学生可以在平台上共享课件、模版、参考资料、历年卷等教学资源,登陆账户可以下载。学生接受教师的通知。学生还可以通过网站进行部分线上实验,如各种仿真实验等。
互动
教师和学生可以在平台上实现互动,包括作业提交与作业点评,问题提出与解答以及一个用户课后讨论的学术论坛。
特色
针对不同的教学情境,平台提供定制功能,如设置补交作业、设置强制学习进度安排、多位教师合作开课等。游客可以在平台的留言板块留言,可以浏览简化版课件,可以查看课程的基本信息。
HTML
HTML(Hyper Text Markup Language)称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
CSS
层叠样式表(Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
UML
统一建模语言(Unified Modeling Language)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
B/S 系统
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
Node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O的模型。Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行JavaScript的速度非常快,性能非常好。Node是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
Vue.js
Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,方便与第三方库或既有项目整合。
Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2019年12月2日,Django 3. 0发布。
《软件设计文档国家标准》
《软件工程项目开发文档范例》
《软件需求》刘伟琴、刘洪涛译
《“软件需求工程”课程案例 高校教学平台 20200921》刑卫
《软件工程 实践者的研究方法》
最终成果是一个高校教学平台,包括:
前后端代码
数据库建立代码
系统开发、测试、维护文档
网站所需资源文件(图片、视频、文档等)
《验收报告以及交接手册》
《用户操作手册》
提供给使用此教学网站的不同用户,包括教师、学生、系统管理员、游客。对系统的界面、功能以及操作说明进行描述,使用户对于网站的操作可以快速上手,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。能够给予用户准确、明晰、简介的使用指导和说明,能够在一定程度上提高软件对于用户的亲和度和用户使用体验。
《应用配置手册》
提供给系统管理员及系统维护人员进行阅读,对于网站的部署方法进行说明,对于相关参数的用途进行说明,使用有一定技术的用户得以自己解决多数问题。
《软件维护手册》
主要包括教学网站系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于维护人员对于系统的维护。
提供使用教程以及咨询服务,使解决用户在使用网站过程中的困难。提供后续一定年限的维护服务,当软件出现问题时提供技术支持。
xxx:对于软件整体的架构、开发流程等较为熟悉,擅长后端代码的编写。
xxx:对于测试流程较为熟悉,擅长测试用例编写、文档撰写等工作。
xxx:对于软件的功能和原型总体设计等较为熟悉,擅长前端代码的编写。
xxx:擅长商业模式设计,熟悉常用技术。
xxx:对于软件需求分析较为熟练,擅长业务需求、用户需求分析等工作。
xxx:能够灵活地将用户需求与功能细节联系起来,对复杂后端功能的实现有较清晰的规划。
表3-1 项目进度计划
项目阶段 | 持续时间 | 负责人 | 主要工作 | 输出内容 |
---|---|---|---|---|
项目启动 | 2020.09.23-2020.10.07 | xxx | 进行项目可行性分析,制定项目计划 | 完成《项目可行性分析报告》《项目章程》《项目计划》 |
需求分析 | 2020.10.08-2020.11.20 | xxx | 确定系统运行环境,确定系统功能及性能,建立系统逻辑模型 | 完成**《前景与范围》《质量保证计划》《需求工程计划》《软件需求规格说明书》** |
系统设计 | 2020.11.20-2020.12.01 | xxx | 进行系统设计 | 完成《系统设计计划》《系统编码实现计划》《软件概要设计说明书》《测试计划》 |
编程实现 | 2020.12.02-2020.12.22 | xxx | 进行系统编码 | 实现并部署网站,完成《用户手册》《工程部署计划 》《培训计划》 |
需求维护 | 2020.11.30-2020.12.29 | xxx | 进行需求变更控制 | 完成**《需求变更控制会规程》《需求变更控制文档》** ,更新**《软件需求规格说明书》** |
系统测试 | 2020.12.22-2021.01.10 | xxx | 进行系统测试,项目总结 | 完成《测试报告》《系统维护计划 》《项目总结报告》 |
表4-1 项目角色分配
角色 | 职责 | 人员 |
---|---|---|
项目经理 | 在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。 | xxx |
产品经理 | 负责市场调查并根据用户的需求,确定开发何种产品,选择何种技术、商业模式等,根据产品的生命周期,协调研发、营销、运营等,确定和组织实施相应的产品策略。 | xxx |
设计总监 | 建立系统框架;数据库设计;概要设计; 参加技术评审; | xxx |
测试经理 | 组织编写测试计划和测试方案,组织系统测试;参加技术评审; | xxx |
美工 | 设计网站原型 | xxx |
质量经理 | 带领软件质量监督组成员制定质量保证计划,对监督组反映的质量问题进行汇总与产品经理、项目经理进行交流,当新的问题出现时最终由质量经理决定处理方式。 | xxx |
开发人员 | 负责进行编码工作与单元测试,进行系统集成,及时解决测试时出现的问题 | 全体人员 |
测试人员 | 编写测试方案和测试用例,进行系统测试,向开发组反馈 BUG。 | 全体人员 |
软件质量监督 | 实时对质量经理以及项目经理提供项目进度与项目实际开发时的差异提出报告,指出差异原因和改进方法。 | xxx |
软硬件资源名称 | 级别 | 详细配置 | 获取时间或方式 | 使用说明 |
---|---|---|---|---|
服务器 | 关键 | CPU: 4核 内存: 8G OS: Ubuntu 20.04 带宽: 5Mbps | 购买阿里云 服务 | 开发中期和 最终部署阶段使用 |
Visual Studio Code, PyCharm | 关键 | 配置相关语言编译器或解释器插件 | 官网下载 | 开发使用的 代码编辑器 |
Vue.js, Django, SQL, CSS, HTML | 关键 | 根据语言语法使用规范 | 无 | 建立前后端分离开发机制,前端使用Vue.js框架,后端使用Python下的Django框架,后端与数据库的交互通过SQL语句实现 |
Git | 关键 | 版本: 2.28.0 | 已经存在 | 配置管理 以及代码托管 |
Microsoft Edge Chrome Safari | 关键 | 版本: 44.18362.449.0, 83.0.4103.97, 13.0 | 已经存在 | 通过浏览器测试网页端显示效果与功能实现 |
数据库基础:主要为 MySQL 编程语言培训和编程工具的培训。
前后端概念与代码基础:主要为Vue.js和Django的基本概念、运行原理和基本代码规范等的培训。
服务器基础:主要为Linux常用命令和服务器部署项目的基本操作。
针对需求,进一步加强软件开发规范和软件开发过程质量,了解客户的真正需求,提高开发人员开发素质,使开发人员成为高质量的软件工程师。结合项目进行案例讨论,根据讨论过程进行评估。通过上述培训,进一步提高开发人员技术水平,扩展开发人员的技术知识面和视野。
项目质量保证工作项目的质量保证工作由质量经理、质量保证人员及项目负责人负责,质量保证人员在项目启动后制定适用于单个项目的《质量保证计划》,并检查和督促计划的实施。
应按照质量保证计划的规定进行项目生存周期的各项活动,加强各阶段质量的早期评审与检查工作,项目质量保证人员参加所有的评审与检查活动。
在项目生存周期过程期间,各阶段责任人应按项目进展情况完成相应阶段的管理及技术文档,
还需按规范及其他相关文件的要求填写相应记录,质量保证人员通过对各阶段输出的文档及记录的检查发现存在的质量问题。
静态测试是指无需执行被测代码,而是借助专用的软件测试工具评审软件文档或阅读程序代码,特别是不运行的部分,如规范测试、软件模型测试、文档测试等,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。主要方法有代码走查、技术评审、代码审查等。
在静态测试中,一大重点是实现软件编码规范检查。编码规范是程序编写过程中必须遵循的规则,一般会详细规定代码的语法规则、语法格式等,是根据项目本身及所处阶段适合编程人员的规范。测试工程师或程序员自身可借助一些专业的工具来实施编码规范检查。例如,在C/C++语言的编程规则检查方面,比较专业的工具有C++Test、LINT工具、KlockWork等。
静态测试还可实现静态质量度量。静态质量度量所依据的标准是IS09126,在该标准中,软件的质量以功能性、可靠性、可用性、有效性、可维护性和可移植性来衡量,其中最重要的是可维护性。要衡量软件的可维护性,可以从可分析性、可改变性、稳定性和可测试性去考虑。具体到软件的可测试性,又可以分为三个度量元,即圈复杂度、输入/输出个数。圈复杂度越大或输入/输出个数越多,说明代码中路径越多,测试用例越多。在具体的实践中,这一阶段专业的工具有Testbed、Logiscope等。
由修正成本与错误检测时间的正相关关系,错误越晚发现,修正的成本就越高。传统的错误检测是动态系统测试的范围,但为了减少成本,在静态分析代码时应加入错误检测。此类静态工具有PolySpacee、PREFix等。
单元测试是代码正确性验证的最重要的工具,也是唯一需要编写代码才能进行测试的一种测试方法。单元测试的代码与实际程序的代码具有同等的重要性。每一个单元测试,都是用来定向测试其所对应的一个单元的数据是否正确。单元测试是由程序员自己来完成,证明某段代码的行为和我们期望的一致。单元测试还能够协助程序员尽快找到BUG的具体位置、让程序员对自己的程序更有自信、让程序员在提交项目之前就将代码变的更加健壮、能够协助程序员更好的进行开发、能够向其他程序员展现你的程序该如何调用、能够让项目主管更了解系统的当前状况。
单元测试又称为模块测试,主要侧重于模块中的逻辑和数据结构,一般使用白盒测试法,单元测试可以对多个模块同时进行。主要测试五个方面:
模块接口,保障数据的流出流入
数据结构,局部数据结构错误是常见的错误
执行路径,路径测试是基本任务,确保覆盖核心路径
出错处理,预测出错并提供合理的处理方法
边界条件,其是编程中常见错误
单元测试的对象可以是任何类、接口、结构等实体中的字段、属性、构造函数、方法等。创建单元测试大致可以分为两类:
整体测试,即为整个类创建单元测试,为整个类可以被测试的内容全部添加测试方法,开发人员直接在这些自动生成的测试方法中添加单元测试代码就可以了
单独测试,是单独对某个方法、属性、字段进行测试
编写单元测试代码时需要考虑哪些代码需要添加单元测试与单元测试代码如何写。单元测试代码需要逐步推进,第一步应该对所有程序集中的公开类以及公开类里面的公开方法添加单元测试;第二步对于构造函数和公共属性进行单元测试;第三步添加全面单元测试。
在产品全面提交之前可以先完成第一步的工作,二三步可以待其他所有功能完成之后再进行添加。而在第一步单元测试添加的时候,也需要有选择性的进行,我们要抓住重点进行测试。重点有两方面,一是可复用代码测试,可以大大加强底层操作的正确性和健壮性;二是为业务逻辑层对界面公开的方法添加单元测试。这样可以让业务逻辑保持正确。
在编写单元测试代码的时候还需要考虑以下几个方面:
所测试的方法的代码覆盖率必须达到100%,注意特殊情况包括边界条件数据、空数据与格式不正确数据
所测试的代码内部的状态,例如执行了某个方法之后,该方法所在的类中某个属性或者返回值是否与预期相同
被测试代码所使用的外部设备的状态,如数据库是否可读、网络是否可用、打印机是否可用、WebService是否可用等等。每一段单元测试代码,必须考虑到以上的三个问题,并且对于这些问题都要有相应的测试
这里的系统测试是相对于单元测试的整体测试,包括了集成测试、确认测试和系统测试。
集成测试就是将模块按照系统设计说明要求,组合成一个整体进行测试,是构造软件体系结构的系统化技术,主要是为了发现与接口相关的错误。集成测试有两种方式:非增量集成与增量集成,前者就是分别测试各模块,再组合起来进行整体测试;而后者则是不断向整体添加模块来运行测试,有自顶向下、自底向上、回归测试、冒烟测试等方法。
当集成测试完成后进行确认测试。确认测试主要集中于用户可见和可识别的系统输出,即是软件系统的整体行为,是通过针对软件需求或规格说明来制定测试用例,确保软件系统的行为与需求或规格说明吻合。确认测试也要关注软件系统的配置评审工作,即检查软件、文档、数据是否齐全有序。常用的方法有α测试与β测试。α测试是由有代表性的最终用户在开发者的场所进行,软件在一般的环境下使用,开发者全程观看,并记录错误和使用问题;β测试是在一个或多个最终用户的场所中进行,这种测试开发者通常不在现场,由最终用户记录测试过程中的所有问题并定期向开发者报告。
系统测试是将已经确认的软件与计算机硬件、网络、外部设备等其他因素结合在一起进行的测试,这是一种贴近实际使用环境的测试。目的是发现系统整体是否与用户需求不符。主要分为恢复测试(通过各种方式强制让系统出现故障,并验证是否能从故障中恢复,并在约定时间内恢复运行,并且不造成任何损害。如果系统具备自我恢复的能力,则需要重新验证数据是否正确。如果是由人工干预的恢复,则要对恢复平均耗时进行评估)、安全性测试(测试人员模拟非法入侵者,采取不同的方法尝试突破系统,安全性测试的准则是确认进行非法入侵所要花费的代价是否大于系统被攻破后泄露信息的价值)、压力测试(以非正常的数量、频率或容量等方式执行,使系统在大幅超出设计指标的情况运行以观察结果)、性能测试(注重于测试运行的性能,常与压力测试一同进行,而且需要硬件和软件作为工具,以严格的方式监控处理器、内存等各种资源的利用量)和部署测试(将软件在将要运行的每一种环境中执行的测试,并检查面向客户的所有安装程序和文档)。
改正性维护:改正性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。这方面的维护工作量要占整个维护工作量的17%~21%。所发现的错误有的不太重要,不影响系统的正常运行,其维护工作可随时进行:而有的错误非常重要,甚至影响整个系统的正常运行,其维护工作必须制定计划,进行修改,并且要进行复查和控制。
适应性维护:适应性维护是指使用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%~25%。由于计算机硬件价格的不断下降,各类系统软件屡出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求;企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。进行这方面的维护工作也要像系统开发一样,有计划、有步骤地进行。
完善性维护:完善性维护是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。这些功能对完善系统功能是非常必要的。另外,还包括对处理效率和编写程序的改进,这方面的维护占整个维护工作的50%~60%,比重较大.也是关系到系统开发质量的重要方面。这方面的维护除了要有计划、有步骤地完成外.还要注意将相关的文档资料加入到前面相应的文档中去。
预防性维护:预防性维护为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。例如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。这方面的维护工作量占整个维护工作量的4%左右。
表6-1 项目维护工作安排
工作内容 | 维护周期 | 需要用户配合的事宜 | 其他说明 |
---|---|---|---|
服务器维护 | 一个月 | 暂停对网站的访问 | 主要是维护保证服务器的性能 |
数据库维护 | 一周 | 无 | 主要是维护保证数据库数据的正确性和完整性,必要时可修改数据表结构及数据库迁移等 |
后端维护 | 半周 | 提醒用户在使用过程中可能会出现卡顿或无法响应的情况 | 主要是对后端与数据库的数据交互和数据处理代码进行优化 |
前端维护 | 半周 | 提醒用户在使用过程中可能会出现页面显示不正常的情况 | 主要是对前端框架的整改、界面设计的美化以及前后端数据交互的规范 |
巡检周期:1周
巡检方式:主要以现场为主,适当结合远程巡检
巡检工程师:xxx
巡检产出物:产品巡检记录表、《巡检报告》