编程语言
首页 > 编程语言> > 201871010203-陈鹏昱 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

201871010203-陈鹏昱 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

作者:互联网

项目 内容
课程班级博客链接 班级博客
这个作业要求链接 作业要求
我的课程学习目标 运用科学高效的方法学习软件工程的理论和知识
这个作业在哪些方面帮助我实现学习目标 掌握软件项目个人开发流程,掌握Github发布软件项目的操作方法
结对方学号-姓名 201871010202-曹盼盼
结对方本次博客作业链接 结对方博客链接
本项目Github的仓库链接地址 Github仓库地址

1、实验目的与要求

(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github协作开发程序的操作方法。

2、实验内容

名 称 形 式 目 的
自我复审 自己 vs. 自己 用同伴复审的标准来要求自己。不一定最有效,因为开发者对自己总是过于自信。如果能持之以恒,则对个人有很大好处
同伴复审 复审者 vs. 开发者 简便易行
团队复审 团队 vs. 开发者 有比较严格的规定和流程,用于关键的代码,以及复审后不再更新的代码。 覆盖率高——有很多双眼睛盯着程序。但是有可能效率不高(全体人员都要到会)

  复审的目的在于:
  (1)找出代码的错误。如:
    a. 编码错误,比如一些能碰巧骗过编译器的错误。
    b. 不符合项目组的代码规范的地方。
  (2)发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的。
  (3)发现算法错误,比如使用的算法不够优化。
  (4)发现潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现。
  (5)发现可能改进的地方。
  (6)教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识。

文件打开与数据预处理:
file=open('D:\Course\软件工程\实验二 任务3data_set\idkp1-10.txt','r')
file1=open('D:\Course\软件工程\实验二 任务3data_set\i.txt','w')
string=file.read().strip()
ss=string.split('\n')
s=[]
for i in ss:
    i.rstrip(',')
    i.rstrip('\n')
    i.rstrip('.')
    if i.startswith('*') or i.startswith('The') or i.startswith('IDK') or i==''  :
        continue
    else:
        s.append(i[:-1])
print(s)
file1.write("\n".join(s))
file.close()
file1.close()
散点图绘制:
fig,ax=plt.subplots()
ax1=plt.subplot(1,1,1)
for i in range(0,len(s)-1,2):
    x=list(map(int,s[i].split(',')))
    y=list(map(int,s[i+1].split(',')))
    ax1.scatter(x,y)
    plt.show()
动态规划:
def bag(n,c,w,v):
	res=[[-1 for j in range(c+1)] for i in range(n+1)]
	for j in range(c+1):
		res[0][j]=0
	for i in range(1,n+1):
		for j in range(1,c+1):
			res[i][j]=res[i-1][j]
			if j>=w[i-1] and res[i][j]<res[i-1][j-w[i-1]]+v[i-1]:
				res[i][j]=res[i-1][j-w[i-1]]+v[i-1]
	return res
回溯法:
def backtrack(i):
	global bestV,curW,curV,x,bestx
	if i>=n:
		if bestV<curV:
			bestV=curV
			bestx=x[:]
	else:
		if curW+w[i]<=c:
			x[i]=True
			curW+=w[i]
			curV+=v[i]
			backtrack(i+1)
			curW-=w[i]
			curV-=v[i]
		x[i]=False
		backtrack(i+1)
PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
lanning 计划 10 20
· Estimate · 估计这个任务需要多少时间,并规划大致工作步骤 10 20
Development 开发 330 520
· Analysis · 需求分析 (包括学习新技术) 30 30
· Design Spec · 生成设计文档 30 30
· Design Review · 设计复审 (和同事审核设计文档) 30 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30
· Design · 具体设计 30 50
· Coding · 具体编码 120 220
· Code Review · 代码复审 30 50
· Test · 测试(自我测试,修改代码,提交修改) 30 80
Reporting 报告 40 60
· Test Report · 测试报告 15 20
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结 ,并提出过程改进计划 15 30

  通过分析估计和实际消耗时间,发现在具体设计环节耗时最多,需求分析和具体设计阶段的实际用时比预期长了许多,主要是因为需求分析阶段需要完成查阅资料等工作,比较花费时间,而具体编码阶段需要复学学习算法等内容,并且还要学习项目中需要用到的以前未掌握的知识和技术。

3、实验总结

  本次实验主要是通过完成软件工程结对项目,体验软件项目开发中的两人合作,练习结对编程(Pair programming),并掌握Github协作开发程序的操作方法。对于此次的项目设计,我有很多地方还很不完善,本次结对编程项目是基于实验二个人项目的基础上完成,还需要查阅大量资料来学习遗传算法,以及熟悉web界面的设计。本次实验中,通过阅读和学习《构建之法—现代软件工程》第3-4章内容,理解和掌握了代码风格规范、代码设计规范、代码复审、结对编程概念;并在实验过程中通过实践,掌握了Github的fork、 clone、push、pull request 、merge pull request等的相关操作。此次结对编程项目使我初步感受到了结对编程的一些优势,但是毕竟是初次尝试,过程中也出现了一些小问题。结对编程减轻了个人的一部分工作量,而且让我深刻感受到在开发过程中思路更加开阔,也更不容易出错,也提高了相互的合作交流,虽然本次项目完成结果不完善,但是我认为还是优于一个人的,达到了一定的效果(1+1>2)。

标签:结对,函数,项目,代码,编程,KP,实验,陈鹏昱
来源: https://www.cnblogs.com/nwnu-cpy/p/14656505.html