201971010242王凯英 实验四 团队作业1:软件研发团队组建
课程班级博客链接 | 班级 |
这个作业要求链接 | 作业 |
团队名称 | 花开富贵! |
团队的课程学习目标 | (1)实验三作业互评(2)组建软件项目研发团队。 |
这个作业在哪些方面帮助团队实现学习目标 | (1)通过测试运行其他人的项目,优化自己的项目(2)团对协作,组建软件开发团队 |
团队博客链接 | 链接 |
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成任务
1.被评论作业的博客链接: 链接
2.被评论作业的Github项目仓库链接: 链接
3.符合(1)要求的博客评论:
博文结构:博文整体排版清晰美观。
博文内容:较完整的完成了实验的内容,但有些内容还是要加以改进。
博文结构与PSP中“任务内容”列的关系:博文按照PSP的各个流程进行撰写,使得项目的完成更加系统化,这一点完成度很好。
代码部分要进一步改进还有所欠缺。
4.符合(2)要求的代码核查表:
概要部分 | 内容 |
---|---|
代码符合要求和规范说明吗? | 是 |
代码设计是否考虑周全? | 是 |
代码可读性如何? | 好 |
代码容易维护吗? | 容易 |
代码的每一行都执行并检查过了吗? | 是 |
设计规范部分 | 规范 |
设计是否遵循从已知的设计模式或项目中常用的模式? | 是 |
有没有硬编码或字符串\数字等存在? | 有 |
代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64) ? | 不清楚 |
有没有无用的代码可以清楚? | 有 |
代码规范部分 | 内容 |
修改的部分符合代码标准和风格吗 | 符合 |
具体代码部分 | 内容 |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 是 |
参数传递有无错误? | 五 |
字符串的长度是字节的长度还是字符的长度 | 字节 |
是以0开始计数还是以1开始计数? | 0 |
对资源的利用,是在哪里申请,在哪里释放的? | 内存 |
有无可能存在资源泄露? | 五 |
有没有优化的空间? | 有 |
数据结构中有没有用不到的元素? | 有 |
效能 | 内容 |
代码的效能如何? | 好 |
最坏的情况是怎样的? | 不清楚 |
代码中,特别是循环中是否有明显可优化部分? | 有 |
对于系统和网络的调用是否会超时? | 不会 |
可读性 | 内容 |
代码的可读性如何? | 好 |
有没有足够的注释? | 有 |
可测试性 | 内容 |
代码是否需要更新或创建新的单元测试? | 是 |
5.符合(3)要求总结:
人机交互界面截图:
软件功能基本上齐全,但在软件界面以及代码的细节上面还需要改进。软件所包含的功能及为上面截图中所含的内容。
(2)总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
答:要求的功能软件已完全解决;软件没有比较明显的优缺点;可以添加用户自己输入的背包数据模块
(3)从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
这款软件主要使用群体为在校大学生,在他们学习算法分析与设计时可以结合课本使用。
6.符合(4)要求结论:
不错
7.本小组任务3迭代改进要点说明:
主要对遗传算法块的代码进行了修改
##初始化,N为种群规模,n为染色体长度
def init(self,N,n):
C = []
for i in range(N):
c = []
for j in range(n):
a = np.random.randint(0,2)
c.append(a)
C.append(c)
return C
##评估函数
# x(i)取值为1表示被选中,取值为0表示未被选中
# w(i)表示各个分量的重量,v(i)表示各个分量的价值,w表示最大承受重量
def fitness(self,C,N,n,W,V,w):
S = []##用于存储被选中的下标
F = []## 用于存放当前该个体的最大价值
for i in range(N):
s = []
h = 0 # 重量
f = 0 # 价值
for j in range(n):
if C[i][j]==1:
if h+W[j]<=w:
h=h+W[j]
f = f+V[j]
s.append(j)
S.append(s)
F.append(f)
return S,F
## 适应值函数,B位返回的种族的基因下标,y为返回的最大值
def best_x(self,F,S,N):
y = 0
x = 0
B = [0]*N
for i in range(N):
if y<F[i]:
x = i
y = F[x]
B = S[x]
return B,y
## 计算比率
def rate(self,x):
p = [0] * len(x)
s = 0
for i in x:
s += i
for i in range(len(x)):
p[i] = x[i] / s
return p
## 选择
def chose(self,p, X, m, n):
X1 = X
r = np.random.rand(m)
for i in range(m):
k = 0
for j in range(n):
k = k + p[j]
if r[i] <= k:
X1[i] = X[j]
break
return X1
## 交配
def match(self,X, m, n, p):
r = np.random.rand(m)
k = [0] * m
for i in range(m):
if r[i] < p:
k[i] = 1
u = v = 0
k[0] = k[0] = 0
for i in range(m):
if k[i]:
if k[u] == 0:
u = i
elif k[v] == 0:
v = i
if k[u] and k[v]:
# print(u,v)
q = np.random.randint(n - 1)
# print(q)
for i in range(q + 1, n):
X[u][i], X[v][i] = X[v][i], X[u][i]
k[u] = 0
k[v] = 0
return X
## 变异
def vari(self,X, m, n, p):
for i in range(m):
for j in range(n):
q = np.random.rand()
if q < p:
X[i][j] = np.random.randint(0,2)
return X
任务二:
见团队博客 团队博客
- 总结:在本次实验中我们小组和其他小组进行了组队,组队小组的实验三明显要比我们小组完成的好,在这次合作中也学习到了许多的知识,也意识到了自己的不足。在以后的实验中要更加努力。