ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

201971010116-姜婷 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告

2022-04-05 07:31:29  阅读:169  来源: 互联网

标签:姜婷 结对 201971010116 项目 代码 KP 实验 页面


项目 内容
课程班级博客链接 2022年春软件工程课程班(2019级计算机科学与技术)
这个作业要求链接 实验三 软件工程结对项目
本次课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
2.掌握Github协作开发软件的操作方法。
这个作业在哪些方面帮助我实现学习目标 1. 利用git第一次实现了协作开发,感觉不错
2. 结对编程,完成了更多的内容
3. 对自己的代码规范有了更多的启发和反省
结对方学号-姓名 201971010259-张圆圆
结对方本次博客作业链接 201971010259-张圆圆 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告
本项目Github的仓库链接地址 Knapsack-0-1

一、任务1 阅读《现代软件工程—构建之法》第3-4章内容

第三章 软件工程师的成长

  1. 软件工程师如何成长?
  • 积累软件开发相关知识
  • 积累问题领域的知识和经验
  • 对通用的软件设计思想和软件工程思想的理解。
  • 提升职业技能
  • 实际成果
  1. 软件开发的工作量和质量怎么衡量?
  • 项目/任务有多大
  • 花了多长时间
  • 质量如何
  • 是否按时交付
  1. TSP对团队成员的要求:
  • 交流
  • 说到做到
  • 接受团队赋予的角色并按角色要求工作
  • 全力投入团队的活动
  • 按照团队流程的要求工作
  • 做好准备工作
  • 理性的工作
  1. 软件工程师的思维误区:
  • 分析麻痹
  • 不分主次,相解决所有的依赖问题
  • 过早优化,无视这个模块对全局的重要性
  • 过早扩大化/泛化
    解决大问题固然让人感觉美妙,但是把小问题真正解决好,也不容易

第四章 两人合作

  1. 代码规范分为两部分
  • 代码风格规范
    • 代码风格的原则是:简明、易读、无二义性。Tab键在不同的情况下会显示不同的长度,严重干扰阅读体验。
  • 代码设计规范
    • 函数原则:只做一件事,并且要做好。
  1. 代码复审的定义:看代码是否在代码规范的框架内正确地解决了问题。

二、任务2 两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价

  1. 结对方博客链接:201971010259-张圆圆 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告
  2. 结对方Github项目仓库链接:Knapsack-0-1
  3. 博文评价:
    博客的结构很完整,每个部分都写的很棒,是学习和借鉴的目标。内容充实,书写认真,能从其中看出仔细认真的态度,是值得学习临摹的一篇博客。整个页面美化也很到位,看起来丰富多彩,目录的设置也使得跳转观看更方便。
  • 博文结构:结构清晰完整,每个部分都写得很清楚,把握了每个细节。
  • 博文内容:从开始到结尾每一部分都完成了博客要求。整个项目也实现了所有需求,代码结构完整,运行逻辑清楚。
  • 博文结构与PSP中“任务内容”列的关系:博客的内容几乎与PSP内容对应。
  • PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究:第一次做项目,对项目流程还不熟悉,不能对自己的时间做到合理把握,也不够了解自己现在的能力导致时间规划不够准确。
  1. 克隆结对方项目源码到本地机器,阅读并测试运行代码

图4 clone结对方实验二项目 结对方实现了全部功能,完成度非常高。但是我们双方使用的java编译环境不同,导致项目克隆后,选择用idea启动对方的eclipse项目,无法正常编译运行,于是选择使用终端运行。
// 终端编译运行
javac Main.java
java Main

图1 idea运行eclipse项目

项目中动态规划法输出结果不正确。在运行过程中发现,由于编写了绝对地址导致在编译错误。在编程过程中应当减少绝对地址的使用以提高代码的可移植性。

String filePath = "D:\\2021-2022\\大三下\\软件工程经济\\Git\\0-1\\0-1-knapsack\\res\\beibao"+fileId+".in";


图2 动态规划法结果有误

代码核查表

项目内容
概要部分 代码符合需求和规格说明么?
代码设计是否考虑周全?
代码可读性如何? 较好
代码容易维护么?
代码的每一行都执行并检查过了吗?
设计规范部分 设计是否遵从已知的设计模式或项目中常用的模式?
有没有硬编码或字符串/数字等存在?
代码有没有依赖于某一平台,是否会影响将来的移植? 依赖eclipse开发环境,无法在idea中运行
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现?
有没有无用的代码可以清除? 有很多重复性的代码
代码规范部分 修改的部分符合代码标准和风格么? 符合
具体代码部分 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 无错误,字符长度,从0开始计数
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? 没有死循环
有没有使用断言来保证我们认为不变的条件真的得到满足? 没有
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? 有可能,存在优化空间
数据结构中有没有用不到的元素?
效能 代码的效能如何?最坏的情况是怎么样的?
代码中,特别是循环中是否有明显可优化的部分?
对于系统和网络的调用是否会超时?如何处理?
可读性 代码可读性如何?有没有足够的注释?
可测试性能 代码是否需要更新或创建新的单元测试?
  1. 结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据

三、任务3 采用两人结对编程方式,设计开发一款{0-1}KP 实例数据集算法实验平台

  1. 散点图绘制
  2. {0-1}KP 实例数据集需存储在数据库

图3 数据库数据读入
图4 web页面数据查看
  1. 人机交互界面要求为WEB页面平台可动态嵌入任何一个有效的{0-1}KP 实例求解算法,并保存算法实验日志数据

图5 背包算法选择求解页面
图6日志查看页面
  1. 遗传算法求解{0-1}KP
  2. 注册页面

图1 app注册页面 ##PSP消耗时间
PSP2.1 任务内容 计划共完成需要的时间(h) 实际完成需要的时间(h)
Planning 计划 2 4
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 1 3
Development 开发 120(5天) 216(9天)
Analysis 需求分析(包括学习新技术) 3 10
Design Spec 生产设计文档 2 1.5
Design Review 设计复审(和同事审核设计文档) 5 5
Coding Standard 代码规范(为目前的开发指定合适的规范) 0.5 0.58
Design 具体设计 2 2
Coding 具体编码 72 96
Code Review 代码复审 40 5
Test 测试(自我测试,修改代码,提交修改) 12 15
Reporting 报告 3 6
Test Report 测试报告 1 1
Size Measurement 计算工作量 1 1
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 0.5 0.5

四、汉堡包法实施项目结对中两人的沟通

五、轮流切换领航员和驾驶员两种角色关系

在上一次的项目设计中,结对双方使用高级语言不同,且之前的学习方向不同,所掌握的编程技术不同。为实现“领航员”与“驾驶员”角色的切换,商议决定项目设计包含两部分:利用java语言实现app设计,利用Python语言实现html设计。其中app实现功能较为全面,但web页面设计功能并不全面,且web在路由跳转方面并没有做到很好。在本次结对编程实验中app显示——驾驶员为张圆圆,web设计中——驾驶员为姜婷。角色切换过程中,互相学习,互相监督,提高项目效率、代码质量。

六、项目仓库

  1. 多次commit的记录

  2. src文件夹

  3. Github项目仓库根目录下项目代码规范文档

七、程序功能评测

标签:姜婷,结对,201971010116,项目,代码,KP,实验,页面
来源: https://www.cnblogs.com/Jiokie/p/16089877.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有