57
社区成员




在软件工程这门课学习的过程中,我们学到了很多知识。在一起完成项目的过程中,让我们对软件的认识有了大大的提升,从一开始对软件工程的一无所知,以为软件工程就是用语言编写软件。然而,上课之后才发现,软件工程这门课是在掌握了一门或几门语言的基础上,进行一些工程实践,在几节课过后,我们发现软件工程主要侧重于在软件的开发过程中,将系统性的、规范化的以及可定量的方法应用到软件的开发、运行和维护中,这就是所谓的将工程应用到软件开发过程。
软件工程与其说是一门课程,不如说是一门思想。让我懂得如何去分析和处理问题的过程,综合解决问题。
系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。
其步骤有三个:
1.获取客户需求客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。
2.建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。
3.进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。
我们使用的是NABCD方法进行需求分析。NABCD是指需求(Need)、做法(Approach)、好处(Benefit)、竞争(Competitors)、推广(Delivery)。只有对一个项目有了充分的认识,才有可能顺利的完成这个项目。在项目需求阶段,我们小组针对疫情期间需要上网课的老师和学生这些用户群体进行需求分析。随着疫情的出现,越来越多的学校开始了网络教学,在网课教学中,老师看不到学生是否认真听课,学生因此松懈了愈多,产生了困意,为了在上网课时提醒疲劳的学生,网课检测系统应运而生。这是人脸识别的一项新应用,有着广泛且庞大的市场,这就是需求。因此我们准备做一个基于人脸识别的学生网课疲劳检测系统的项目,目的是建立一个网课检测系统,用于检测人眼闭合时长、嘴巴的闭合程度。当检测到学生疲劳时,该系统将发出警告,系统警告学生并提醒老师,学生意识到自己处于疲劳状态,这有利于学生调整状态,更好的学习。我们准备向学校和网课平台进行宣传,加强疫情期间学生在网课时的学习效率。
在项目需求这一阶段我们认识到,在开展一项工作前要进行一定程度上的调研,并且要抓住研究对象的显著特征,针对研究对象特有的特征进行分析。一个人的想法总是有局限性的,因此需要小组内部做到集思广益,这样的话需求的分析才会更加高效且全面。在需求分析阶段的工作完成的比较好
在设计阶段,我们根据前期提出的需求进行初步设计
首先,我们小组对使用对象和、使用场景和软件功能进行了初步的设想。
在项目设计这一阶段,在做一个软件时并不仅仅是对表面上看得见的进行代码编写、参数设置,同样还要对后台看不见的步骤进行思考和代码编写。设计一定要紧贴需求来考虑,并且一定要尽可能的考虑的面面俱到。设计时也要参考现有的产品,借鉴现有产品的优势,提出自己独特的功能,设计的产品要有显著的优点。
我们小组首先对人员分工以及项目总体安排进行了详细的规划,每个人都有自己的任务,每个时间段都有进度安排。
在实现阶段,我学习到了在合作时要有明确的分工,要进行及时的沟通。有什么问题大家及时讨论及时解决。
根据之前的界面设计,用ui来对设计进行实现,实现效果如图所示。
功能实现是软件开发的重点。功能分为学生端和老师端,学生端的主要功能为摄像头的调用、学生疲劳信息的统计以及疲劳状态下的提醒。老师端的功能则是学生疲劳信息的统计。关键代码如图所示。
长时间的软件开发,包括设计、实现以及测试,软件的规模也有了雏形。现在对软件进行系统的测试,包括白盒测试和黑盒测试,不仅我们内部研发人员进行测试,还要从外部的人员第一次上手软件进行可行性测试和便利性测试。
经过测试阶段的顺利通过,软件的功能基本实现,并得到技术保障,已达到部署交付要求,如图所示。