软件工程实验_第1页
软件工程实验_第2页
软件工程实验_第3页
软件工程实验_第4页
软件工程实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程实验一、实验目的本实验旨在通过实际操作,加深对软件工程相关概念、方法和工具的理解与掌握。具体目标包括:1.熟悉软件开发的完整流程,从需求分析、设计、编码到测试。2.掌握常用的软件开发工具和技术,如代码编辑器、版本控制系统等。3.培养团队协作能力,通过小组合作完成一个完整的软件项目。4.提高解决实际问题的能力,在软件开发过程中应对各种技术和非技术挑战。

二、实验环境1.开发工具代码编辑器:VisualStudioCode版本控制系统:Git数据库管理系统:MySQL2.运行环境操作系统:Windows10服务器:Tomcat9.0

三、实验内容与步骤

(一)需求分析1.确定项目主题经过小组讨论,选择了一个在线图书管理系统作为本次实验项目。该系统主要面向学校图书馆,方便管理员对图书信息进行管理,包括图书的录入、查询、修改和删除,同时也方便读者进行图书借阅、归还等操作。2.收集需求通过与图书馆工作人员和潜在用户(读者)进行沟通,了解他们对系统的功能需求。例如,管理员需要能够方便地添加新图书,包括图书的基本信息(书名、作者、出版社、出版年份、ISBN等)、分类信息以及库存数量;能够根据不同条件(如书名、作者、分类等)快速查询图书信息;能够对已有的图书信息进行修改和删除操作。读者需要能够查询图书馆的图书目录,了解图书的可借状态,进行在线借阅申请,并在借阅期限到期时进行归还操作。同时,收集了一些非功能需求,如系统需要具备良好的用户界面,操作简单易懂;系统应具备较高的稳定性和响应速度,以确保大量用户同时使用时不会出现卡顿现象;系统需要具备一定的安全性,保护用户的隐私信息和图书数据安全。3.需求文档编写根据收集到的需求,编写了详细的需求规格说明书。在文档中,对系统的功能需求进行了详细描述,包括每个功能的输入、处理过程和输出。例如,对于图书添加功能,明确了输入为图书的各项信息,处理过程是将这些信息存储到数据库中,输出为操作成功的提示信息。对于非功能需求,也进行了明确说明,如界面设计应符合用户操作习惯,采用简洁明了的布局;系统响应时间应在用户操作后1秒内给出反馈等。

(二)系统设计1.总体设计架构设计:采用分层架构,包括表示层、业务逻辑层和数据访问层。表示层负责与用户进行交互,展示系统界面;业务逻辑层负责处理业务规则和逻辑,如图书的借阅、归还逻辑,用户权限验证等;数据访问层负责与数据库进行交互,实现数据的存储和读取。模块划分:根据功能需求,将系统划分为图书管理模块、读者管理模块、借阅管理模块等。图书管理模块负责图书信息的录入、查询、修改和删除;读者管理模块负责读者信息的管理,如注册、登录、信息修改等;借阅管理模块负责处理图书的借阅和归还操作。2.详细设计数据库设计图书表(books):包含字段book_id(图书编号,主键)、book_name(书名)、author(作者)、publisher(出版社)、publication_year(出版年份)、isbn(ISBN)、category_id(分类编号,外键关联分类表)、stock(库存数量)。读者表(readers):包含字段reader_id(读者编号,主键)、reader_name(读者姓名)、password(密码)、email(邮箱)、phone(电话)。分类表(categories):包含字段category_id(分类编号,主键)、category_name(分类名称)。借阅记录表(borrows):包含字段borrow_id(借阅记录编号,主键)、reader_id(读者编号,外键关联读者表)、book_id(图书编号,外键关联图书表)、borrow_date(借阅日期)、return_date(归还日期)。界面设计使用HTML、CSS和JavaScript进行前端页面设计。例如,图书管理页面采用表格形式展示图书信息,每个图书记录一行,包含图书的各项信息,并提供添加、修改和删除按钮。读者管理页面设计了注册和登录表单,方便读者进行注册和登录操作。借阅管理页面提供了图书借阅和归还的操作按钮,并实时显示借阅记录。算法设计图书查询算法:根据用户输入的查询条件(如书名、作者、分类等),在数据库中进行模糊查询。例如,当用户输入书名关键词时,通过LIKE语句在图书表的book_name字段中进行匹配查询。借阅逻辑算法:在借阅图书时,首先检查图书库存数量是否大于0,若大于0,则生成一条借阅记录,并更新图书库存数量;若库存为0,则提示用户图书已借完。在归还图书时,更新借阅记录的归还日期,并将图书库存数量加1。

(三)编码实现1.环境搭建在VisualStudioCode中安装了相关的扩展,如Java扩展(用于开发后端代码)、HTMLCSSSupport和JavaScriptIntelliSense扩展(用于前端页面开发)。配置了Git环境,用于版本控制。在本地创建了项目仓库,并将项目代码提交到仓库中进行管理。2.后端编码使用Java语言进行后端开发,采用SpringBoot框架搭建项目。在SpringBoot项目中,按照分层架构分别实现各个模块。数据访问层使用MyBatis框架与MySQL数据库进行交互。例如,通过编写MyBatis的mapper文件和对应的接口,实现对图书表、读者表等的增删改查操作。业务逻辑层实现具体的业务规则,如在借阅业务逻辑类中,通过调用数据访问层的方法,实现图书借阅和归还的逻辑处理。表示层使用SpringMVC提供的控制器和视图解析器,将业务逻辑处理后的结果展示给用户。例如,在图书管理控制器中,通过调用业务逻辑层的方法获取图书列表,并将其传递给前端页面进行展示。3.前端编码根据界面设计,使用HTML搭建页面结构,使用CSS进行样式美化,使用JavaScript实现交互效果。例如,在图书管理页面中,通过JavaScript监听添加、修改和删除按钮的点击事件,获取用户输入的数据,并通过AJAX请求将数据发送到后端进行处理。在读者注册页面中,使用JavaScript对用户输入的密码进行强度验证,确保密码符合一定的规则(如长度要求、包含字母和数字等)。

(四)测试1.单元测试针对后端代码中的各个类和方法,编写单元测试用例。例如,对于图书管理模块中的图书添加方法,编写测试用例验证添加图书时输入的各种数据是否能正确存储到数据库中,包括正常数据和边界数据(如最大长度的书名、最小库存数量等)。使用JUnit框架进行单元测试,在项目中添加JUnit的依赖,然后在测试类中编写测试方法,通过断言来验证方法的执行结果是否符合预期。2.集成测试对各个模块之间的集成进行测试。例如,测试图书管理模块与借阅管理模块之间的交互,验证当在图书管理模块中修改图书库存数量时,借阅管理模块能否正确获取到最新的库存信息,并在借阅操作时进行正确的库存校验。使用SpringBoot提供的测试框架,通过编写测试类来模拟不同模块之间的调用场景,检查各个模块集成后的功能是否正常。3.系统测试进行系统级别的测试,模拟实际用户的操作场景。包括功能测试,检查系统的各项功能是否满足需求规格说明书中的要求,如图书的各种操作是否能正确执行,读者的注册、登录、借阅和归还操作是否正常。性能测试,使用JMeter工具对系统进行性能测试,模拟大量用户同时访问系统,检查系统的响应时间和吞吐量是否满足非功能需求中的要求。例如,设置不同数量的并发用户,观察系统在不同负载下的响应时间变化,确保系统在高并发情况下仍能稳定运行。安全测试,检查系统的安全性,如用户密码是否加密存储,是否存在SQL注入、跨站脚本攻击(XSS)等安全漏洞。通过使用专业的安全测试工具和手动测试相结合的方式,对系统进行安全检查。

四、实验结果与分析

(一)功能实现情况1.通过测试,系统的各项功能均能正常实现。图书管理模块能够准确地进行图书信息的录入、查询、修改和删除操作;读者管理模块能够实现读者的注册、登录、信息修改功能;借阅管理模块能够完成图书的借阅和归还操作,并正确更新图书库存和借阅记录。2.在界面方面,实现了简洁明了、易于操作的用户界面,符合用户的操作习惯。例如,图书管理页面的表格展示清晰,按钮操作响应灵敏,方便管理员进行图书管理工作。读者管理页面的注册和登录表单设计合理,能够引导用户正确输入信息。

(二)性能测试结果1.在性能测试中,当并发用户数较少时(如10个并发用户),系统的响应时间较短,平均响应时间在1秒以内,吞吐量较高,能够满足正常业务需求。2.随着并发用户数的增加,系统的响应时间逐渐增长。当并发用户数达到100时,平均响应时间增长到3秒左右,吞吐量有所下降。这表明系统在高并发情况下性能有所下降,但仍能在可接受的范围内运行。通过分析性能测试结果,发现部分数据库查询语句在高并发情况下存在性能瓶颈,通过对数据库索引进行优化,如在经常用于查询的字段上添加索引,再次进行性能测试,发现系统在高并发情况下的响应时间得到了明显改善,平均响应时间缩短到2秒以内。

(三)安全测试结果1.在安全测试中,未发现明显的安全漏洞。用户密码采用了加密存储方式,有效防止了密码泄露。通过对系统进行SQL注入和XSS攻击测试,未发现系统存在此类安全风险,表明系统在安全方面具有较好的防护能力。

五、实验总结通过本次软件工程实验,我们小组成功完成了一个在线图书管理系统的开发。在实验过程中,我们全面深入地理解了软件工程的开发流程,从需求分析、设计到编码实现和测试,每个环节都紧密相连,缺一不可。1.需求分析:通过与用户沟通和实地调研,准确收集了系统的功能需求和非功能需求,并编写了详细的需求规格说明书,为后续的开发工作提供了明确的指导。2.系统设计:采用分层架构和模块化设计方法,对系统进行了合理的架构设计和模块划分。数据库设计满足了系统的数据存储需求,界面设计和算法设计保证了系统的易用性和功能性。3.编码实现:在开发过程中,熟练掌握了相关的开发工具和技术,如VisualStudioCode、Git、Java、SpringBoot、MyBatis等。通过团队协作,按照设计方案完成了后端和前端代码的编写,实现了系统的各项功能。4.测试:通过单元测试、集成测试和系统测试,对系统进行了全面的测试。及时发现并解决了开发过程中出现的问题,确保了系统的功能正确性、性能和安全性。5.存在的问题与改进方向在开发过程中,有时会出现需求变更的情况,导致部分代码需要重新修改。在今后的项目中,应加强需求管理,尽量减少需求变更的发生。若需求变更不可避免,应及时评估其对项目的影响,并制定合理的应对措施。在性能优化方面,虽然通过优化数据库索引提高了系统在高并发情况下的性能,但仍有进一步提升的空间。未来可以考虑采用缓存技术、分布式架

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论