分享好友 最新动态首页 最新动态分类 切换频道
201871030102_崔红梅 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
2024-12-26 21:17
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程
2. 掌握Github协作开发程序的操作方法。
3.阅读《现代软件工程—构建之法》学习代码规范等知识 这个作业在哪些方面帮助我实现学习目标 1.熟悉了软件工程结对编程
2.掌握Github克隆结对方项目
3.学习了代码风格规范、代码设计规范、代码复审等知识 结对方学号-姓名 201871030101-包凤梅 结对方本次博客作业链接 https://www.cnblogs.com/baofengmei/p/14652366.html 本项目Github的仓库链接地址 https://github.com/chmcll/shiyan3

(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。

201871030102_崔红梅 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

(2)掌握Github协作开发程序的操作方法。

任务1:阅读《现代软件工程—构建之法》理解并掌握代码风格规范、代码设计规范等

1、代码风格规范 :

代码风格规范包括命名规范,代码展示风格的规范(缩进、空格、换行),控制语句的规范以及代码注释的规范,好的代码风格规范可以让其他人更好的理解。它的原则是:简明易读无二义性

  • 四个空格的缩进
  • 每个{}独占一行
  • 不要把多个变量定义在一行上
  • 一个类型的成员变量用同一类型命名
  • 所有的类型/类/函数名
  • 注释是为了解释程序做什么(What),为什么这么做(Why),以及要特别注意的地方,只用ASCII字符,不要用中文

2、代码设计规范:

  • 函数:只做一件事,并且要做好
  • 单一出口
  • 不要在构造函数中做复杂的操作,简单初始化所有的数据成员即可

3、代码复审:

看代码是否在代码规范的框架内正确地解决了问题、长远的问题 :

  • 修改之后,有没有别的功能会受影响;
  • 项目中还有别的地方需要类似的修改吗;
  • 有没有留下足够的说明,让将来维护代码时不会出现问题;
  • 对于修改,是否需要告知成员;
  • 导致问题的根本原因是什么?以后如何能自动避免这样的情况再次出现;

4、结对编程

结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员。两个程序员经常互换角色。

在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

结对编程是极端编程的组成部分。

(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。

结对方博客链接:包凤梅的博客

结对方Github项目仓库链接:包凤梅Github项目仓库链接

(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。

代码核查表

1)概要部分

a.代码符合需求和规格说明

​ b.代码设计没有考虑周全,有很多代码使用的很不合适。

​ c.代码可读性还性吧,不过有的还存在很多问题。

​ d.代码比较容易维护。

​ e.代码的每一行都执行了,都检查了。

2)设计规范部分

​a.代码遵循了已知的设计模式和在项目中的常用模式, 学习了很多知识。

​b.我代码设计中有字符串和数字的存在。

​c.程序代码没有依赖于某一平台,从Win32移植到Win64上没有出现很大的问题。

​d.在本程序中类似的功能差不多都可以调用而不用全部重新来实现。

​e.有无用的代码可以删除,在我的抽签程序中,我对于按组抽签中的添加人员姓名进行了编码,实际上是不需要的,因为一个学号就做够啦,而且还有窗体控件的功能实现。

3)代码规范部分

​a.修改的部分有很多地方是符合代码标准和风格的,但是有也有代码是没有符合标准和风格的。

4)具体代码部分

​a.在抽签程序中对错误进行了处理,在实现号码滚动的代码上出现了错误,只能实现代码中的数字,而不能随机的进行输入数字。对于调用的外部函数,检查了返回值。

b.参数传递无错误,字符串的长度是字节的长度,是双字节,是以1开始计数

​c.Switch语句的用的很好,没有出现死循环

​d.没有使用断言(Assert)来保证我们认为不变的条件真的满足

f.对资源的利用,是在C#书上借鉴的,内存、文件、各种GUI资源、数据库访问的连接没有可能导致资源泄露,有可能优化

​e.数据结构中有很的元素是没有用到的。

5)效能

​ a.代码中,特别是循环中没有明显可优化的部分。

​ b.对于系统和网络调用会超时,可以等待一会。

6)可读性

​ 代码可读性很易懂,没有足够的注释,代码量很少。

7) 可测试性

​ a.代码需要更新和创建新的单元测试。

​ b.可以针对部分功能的实现对代码进行进一步改进或创建新的单元测试。

代码核查表

内容 完成效果 是否可正确读入实验数据文件的有效D{0-1}KP数据 代码实现了从本地读取数据,符合需求且比较容易维护 是否能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图 可根据读入的不同数据准确绘制以重量为横轴、价值为纵轴的数据散点图,符合实验要求。 是否对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序; 对不同的数据可以进行选择并对其进行能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;但相关部分代码可读性较差,存在较多问题。 是否自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间 代码中选择动态规划算法任意选择一组数据并求解了这组数据的最优解和求解时间,求解时间也是按照以秒为单位,符合实验要求 是否将任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。 完成了任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件保存在本地。 代码规范 项目中大部分代码是符合代码标准和风格的,但对于返回函数没有进行检查 代码可读性 代码可读性较强,在有些较难理解部分进行了详细的注释使得程序的可读性增强。

(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。

fork:从别人发布的项目上复制一个过来,相当于一个分支;项目复制到自己的个github中,于是本地就有了一个仓库,假设名字为A;

clone: 从自己的github上把fork过来的复制到本地,这样本地就有了一个项目A1;

push:当你在A1中进行修改进行开发后,最后同步到你的github上的仓库中;

pull request:你把自己github中的已经修改的内容申请同步到最初那个开发者的项目中;

从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,并使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大。

功能分析

1、可读取实验数据,有效呈现所有数据;
2、用读取的数据绘制出以重量为横轴、价值为纵轴的数据散点图;
3、将数据按项集第三项的价值:重量比进行非递增排序;
4、用户能够自主选择动态规划算法、回溯算法求解数据的最优解和求解时间;
5、数据的最优解、求解时间和解向量可保存为txt文件

软件设计

1、D{0-1}KP 实例数据集需存储在数据库;
2、平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;
3、人机交互界面要求为GUI界面;
4、查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);

软件实现及核心功能代码展示


ScatterController(散点图绘制)


程序运行

程序运行时每个功能界面截图。扩展功能实现可得附加分5分。


遗传算法

遗传算法(Genetic>遗传算法(Genetic Algorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通用,鲁棒性强,适于并行处理。

遗传算法的基本流程

描述结对的过程

任务内容 计划共完成需要的时间/分钟 实际完成需要的时间/分钟 计划总时长 1180 2050 任务一 50 55 阅读《现代软件工程—构建之法》第3-4章 50 55 任务二 320 400 对项目博文作业进行阅读并进行评论 20 20 克隆结对方项目源码到本地机器,阅读并测试运行代码 100 120 依据复审结果用github的Fork、Clone、Push等操作对同伴个人项目仓库的源码进行合作修改 200 260 任务3 810 1595 D{0-1}KP 实例数据集存储在数据库 40 60 将数据库数据读取出来 40 70 用读出来的数据绘制散点图并显示在人机交互页面 60 270 动态规划算法结果显示在前端 60 120 回溯算法结果显示 40 75 将数据项显示在前端,按其第三项进行排序并显示 80 100 平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据 250 400 人机交互界面要求为GUI界面 40 50 查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求 200 450

小结感受

两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。

最新文章
蓬莱SEO优化秘籍,助您网站在搜索引擎中独领风
蓬莱优化SEO,为您提供独家策略,助您网站在搜索引擎中脱颖而出。通过深入分析关键词、优化网站结构、提升内容质量等手段,让您的网站获得更高排名,吸引更多流量。掌握SEO技巧,让您的网站成为行业翘楚!随着互联网的普及,越来越多的企业
网站搭建与推广策略全攻略,高效推广秘诀大揭秘
高效推广网站搭建,全方位策略解析:本文深入解析网站推广的全方位策略,涵盖SEO优化、内容营销、社交媒体营销、付费广告等多个方面,助您快速提升网站流量和品牌知名度。确立网站定位优化网站架构搜索引擎优化(SEO)策略社交媒体营销策略
【A52QQ同步助手下载】酷比A52QQ同步助手8.0.14免费下载
* 国内知名数字生活媒体AppSo推荐【QQ同步助手,备份你的手机生活!】换手机必备神器!手机资料自动备份,安全保护防丢失!一键备份手机通讯录、软件、文档到云端的超实用工具!------手机随便换,资料不丢失------ 【智能管理通讯录】备份
购买google账号后在大陆能用吗、googleplay韩国账号
“买韩国谷歌账号”这一现象在中国已经持续了多年,有一定的风险,但仍有很多人愿意购买。这些人中既有需要使用韩国谷歌服务的用户,也有一些从事网络推广或其他行业的人士。购买韩国谷歌账号存在一定的风险,但对于需要使用谷歌服务的用户
架构师指南:构建 AI/ML 数据湖参考架构
在企业人工智能中,有两种主要类型的模型:判别型和生成型。判别型模型用于对数据进行分类或预测,而生成型模型用于创建新数据。尽管生成型人工智能最近占据了新闻头条,但组织仍在追求这两种类型的人工智能。对于希望提高运营效率并寻求额
有哪些适合新媒体运营的平台(「网络推广」适合用于推广的营销平台有哪些?)
网络推广通过各种在线平台和渠道传播产品或服务信息,提高知名度和曝光度,并与目标受众互动建立良好的品牌形象和声誉。网络推广可以增加品牌知名度、拓宽客户基础和提高客户忠诚度,同时成本较低,适用于小型企业。网络推广旨在扩大企业或
氛围游戏大全 高人气氛围游戏排行榜前十
探索游戏新风尚!《氛围游戏大全》揭示高人气排行榜,带你领略那些让人沉浸其中、备受玩家喜爱的前十大游戏。无论是紧张刺激的冒险,还是轻松愉快的社交体验,这里有你不可错过的精彩之作。一探究竟,感受最热门的游戏氛围吧!《40 Seconds
访客来访统计、地域访问限制、url链接跳转
收费插件应有良好的售后服务,售后QQ:购买后查看插件说明,备注“订单编号”。漠漠睡访问统计插件说明1.支持统计所有来访者IP、页面地址、页面状态1.1.默认只记录蜘蛛爬取数据1.2.可在后台设置开启记录访客访问数据,有效获取访客访问页面数
长丰万国汽配城的状况怎样了解?了解后怎样进行分析?
长丰万国汽配城是一个在汽配领域具有一定影响力的商业项目。要全面了解其状况,可以从以下几个方面入手:再者,与在汽配城经营的商户交流。他们对汽配城的运营管理、租金水平、市场竞争等方面有着切身的感受和深入的了解,能够提供真实且实
百度词条每个人可以编辑吗怎么弄?如何参与编辑?
在众多网络百科中,百度百科因其用户基数庞大、信息量丰富而备受关注。百科创建搜锦随推。许多人出于学习和工作的需求,在使用百度时需要获取更多更详尽的信息。随着互联网的发展,越来越多的用户希望了解能否参与词条的编辑工作,以及具体
相关文章
发表评论
0评