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

下载本文档

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

文档简介

软件工程实验一、实验目的本次软件工程实验旨在通过实际操作和实践项目,加深对软件工程概念、方法和流程的理解与掌握。具体目标包括:1.熟悉软件开发的完整生命周期,从需求分析、设计、编码到测试和维护。2.掌握常用的软件开发工具和技术,如代码编辑器、版本控制系统、数据库管理系统等。3.培养团队协作能力,学会在团队环境中进行有效的沟通、分工和协作。4.提高解决实际问题的能力,能够运用所学知识和技能解决软件开发过程中遇到的各种问题。

二、实验环境1.操作系统:Windows102.代码编辑器:VisualStudioCode3.版本控制系统:Git4.数据库管理系统:MySQL5.编程语言:Python6.Web框架:Django

三、实验内容与步骤

(一)需求分析1.确定项目主题本次实验选择开发一个简单的在线博客系统,用户可以注册、登录、发表博客文章、评论文章等。2.收集需求通过与团队成员讨论、参考类似博客系统的功能以及向潜在用户进行调研,收集了以下需求:用户能够使用用户名和密码进行注册和登录。已登录用户可以撰写、编辑和删除自己的博客文章。每篇博客文章都有标题、正文、发布时间等信息。用户可以对博客文章进行评论,评论内容包括评论者姓名、评论内容和评论时间。系统应具备一定的权限管理,如管理员可以删除任意文章和评论。3.需求规格说明书编写根据收集到的需求,编写了详细的需求规格说明书,包括功能需求、性能需求、界面需求等方面的内容。

(二)设计阶段1.总体设计采用分层架构设计博客系统,分为表示层、业务逻辑层和数据访问层。表示层负责与用户交互,展示系统界面;业务逻辑层处理业务规则和流程;数据访问层负责与数据库进行交互,实现数据的存储和读取。2.数据库设计使用MySQL数据库设计了以下数据库表:用户表(users):包含用户ID、用户名、密码、注册时间等字段。文章表(articles):包含文章ID、标题、正文、发布时间、作者ID等字段。评论表ments):包含评论ID、文章ID、评论者姓名、评论内容、评论时间等字段。3.详细设计对各个模块的功能进行了详细设计,包括用户注册登录模块、文章管理模块、评论管理模块等。例如,用户注册登录模块的详细设计如下:用户输入用户名和密码。系统验证用户名是否符合格式要求,密码强度是否满足条件。如果验证通过,将用户信息插入到用户表中,并返回注册成功信息;否则返回相应的错误提示。用户登录时,系统根据输入的用户名和密码查询用户表,如果匹配成功,则返回登录成功信息并生成会话标识;否则返回登录失败信息。

(三)编码阶段1.搭建开发环境安装Python和Django框架,配置开发环境。2.创建项目和应用使用Django的命令行工具创建一个新的项目和应用:```bashdjangoadminstartprojectblog_projectcdblog_projectpythonmanage.pystartappblog_app```3.实现数据模型在blog_app/models.py文件中定义数据库模型类,对应数据库表:```pythonfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUser

classArticle(models.Model):title=models.CharField(max_length=200)body=models.TextField()pub_date=models.DateTimeField(auto_now_add=True)author=models.ForeignKey(User,on_delete=models.CASCADE)

classComment(models.Model):article=models.ForeignKey(Article,on_delete=models.CASCADE)name=models.CharField(max_length=50)ment=models.TextField()pub_date=models.DateTimeField(auto_now_add=True)```4.编写视图函数在blog_app/views.py文件中编写视图函数,处理业务逻辑,如用户注册登录、文章管理、评论管理等:```pythonfromdjango.shortcutsimportrender,redirectfromdjango.contrib.auth.formsimportUserCreationForm,AuthenticationFormfromdjango.contrib.authimportlogin,logout,authenticatefrom.modelsimportArticle,Comment

defregister(request):ifrequest.method=='POST':form=UserCreationForm(request.POST)ifform.is_valid():user=form.save()login(request,user)returnredirect('article_list')else:form=UserCreationForm()returnrender(request,'register.html',{'form':form})

defuser_login(request):ifrequest.method=='POST':form=AuthenticationForm(data=request.POST)ifform.is_valid():user=form.get_user()login(request,user)returnredirect('article_list')else:form=AuthenticationForm()returnrender(request,'login.html',{'form':form})

defuser_logout(request):logout(request)returnredirect('article_list')

defarticle_list(request):articles=Article.objects.all()returnrender(request,'article_list.html',{'articles':articles})

defarticle_detail(request,pk):article=Article.objects.get(pk=pk)ments=Comment.objects.filter(article=article)returnrender(request,'article_detail.html',{'article':article,ments':ments})

defcreate_article(request):ifrequest.method=='POST':title=request.POST['title']body=request.POST['body']author=request.userarticle=Article(title=title,body=body,author=author)article.save()returnredirect('article_detail',pk=article.pk)returnrender(request,'create_article.html')

defupdate_article(request,pk):article=Article.objects.get(pk=pk)ifrequest.method=='POST':article.title=request.POST['title']article.body=request.POST['body']article.save()returnredirect('article_detail',pk=article.pk)returnrender(request,'update_article.html',{'article':article})

defdelete_article(request,pk):article=Article.objects.get(pk=pk)article.delete()returnredirect('article_list')

defcreatement(request,pk):article=Article.objects.get(pk=pk)ifrequest.method=='POST':name=request.POST['name']ment=request.POST[ment']Comment.objects.create(article=article,name=name,mentment)returnredirect('article_detail',pk=article.pk)returnrender(request,'createment.html',{'article':article})```5.编写模板文件在templates目录下创建相应的HTML模板文件,如register.html、login.html、article_list.html等,用于展示页面和与用户交互:```html<!register.html><!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF8"><title>注册</title></head><body><h1>注册</h1><formmethod="post">{%csrf_token%}{{form.as_p}}<buttontype="submit">注册</button></form></body></html>```6.配置URL路由在blog_project/urls.py文件中配置URL路由,将请求映射到相应的视图函数:```pythonfromdjango.contribimportadminfromdjango.urlsimportpath,includefromblog_app.viewsimportregister,user_login,user_logout,article_list,article_detail,create_article,update_article,delete_article,createment

urlpatterns=[path('admin/',admin.site.urls),path('register/',register,name='register'),path('login/',user_login,name='login'),path('logout/',user_logout,name='logout'),path('',article_list,name='article_list'),path('article/<int:pk>/',article_detail,name='article_detail'),path('create_article/',create_article,name='create_article'),path('article/<int:pk>/update/',update_article,name='update_article'),path('article/<int:pk>/delete/',delete_article,name='delete_article'),path('article/<int:pk>ment/',createment,name='createment'),]```

(四)测试阶段1.单元测试使用Django的测试框架编写单元测试,对各个视图函数和模型类进行测试。例如,对用户注册视图函数的测试:```pythonfromdjango.testimportTestCasefromdjango.urlsimportreversefromdjango.contrib.auth.modelsimportUser

classRegisterViewTest(TestCase):deftest_register(self):data={'username':'testuser','password1':'testpassword','password2':'testpassword'}response=self.client.post(reverse('register'),data)self.assertEqual(response.status_code,302)self.assertTrue(User.objects.filter(username='testuser').exists())```2.集成测试进行集成测试,检查各个模块之间的接口是否正常工作。例如,测试用户登录后能否正常访问文章列表页面:```pythonclassLoginAndArticleListTest(TestCase):defsetUp(self):User.objects.create_user(username='testuser',password='testpassword')

deftest_login_and_article_list(self):data={'username':'testuser','password':'testpassword'}response=self.client.post(reverse('login'),data)self.assertEqual(response.status_code,302)response=self.client.get(reverse('article_list'))self.assertEqual(response.status_code,200)```3.系统测试模拟真实用户场景,对整个博客系统进行系统测试,检查系统的功能是否完整、性能是否满足要求、界面是否友好等。发现并修复了一些问题,如页面加载速度慢、部分功能按钮点击无响应等。

(五)维护阶段1.问题修复根据测试阶段发现的问题,及时进行修复和优化。例如,对页面加载速度慢的问题,通过优化数据库查询语句、压缩CSS和JavaScript文件等方式进行了改进。2.功能增强根据用户反馈和业务需求的变化,对博客系统进行功能增强。例如,增加了文章分类功能、用户头像上传功能等。3.性能优化定期对系统进行性能监测和优化,确保系统在高并发情况下的稳定性和响应速度。如对数据库进行索引优化、缓存常用数据等。

四、实验

温馨提示

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

评论

0/150

提交评论