201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
| 项目 | 内容 |
|---|---|
| 课程班级博客链接 | 班级博客链接 |
| 这个作业要求链接 | 作业要求链接 |
| 我的课程学习目标 | 了解软件工程的作用与意义,将软件工程与过去所学相结合 |
| 这个作业在哪些方面帮助我实现学习目标 | 体验了结对式的两人合作编程开发流程,了解了Github协作开发程序的操作方法 |
| 结对方学号-姓名 | 201871030112-贾傲羊 |
| 结对方本次博客作业链接 | 结对方本次博客作业链接 |
| 本项目Github的仓库链接地址 | 1.服务器,2.客户端 |
任务一:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
已完成阅读
任务二:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价
博文结构
博文结构清晰明了,简洁扼要,按照老师要求书写排版而成,从任务一至任务三均已达到标准。排版舒适,主次分明,标题的放置加黑,内容的排序,使博文易读易懂。
博文内容
博文内容紧扣主题,以任务要求为中心,任务一已放置点评链接,任务二完成PSP相关文章阅读并掌握流程,任务三针对需求分析、功能设计、设计实现、测试运行等部分进行了详细而准确的说明。
博文结构与PSP中“任务内容”列的关系
博文结构与PSP中“任务内容”列并不完全对应,PSP稍显规范化,缺少细节,没有结合个人开发过程中的特性进行填写,但是此种宏观视角的PSP也是一种风格。
PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究
实际完成需要的时间比计划共完成需要的时间更长,作者提到主要原因是代码经过测试后又发现了新的问题,以及超出预期的过多BUG,可能是错误估计了任务的复杂度与难度,尤其在开发部分与报告部分,开发多出了四百分钟左右的时间,可见此次任务确实是很能带来压力的,但是要求的功能最后完成得尽善尽美,可见下了一番功夫。
- 符合(2)要求的代码核查表;
----------概要部分---------- 代码是否符合需求和规范说明 符合 代码设计是否考虑周全 周全 代码可读性如何 清晰易读 代码容易维护吗 容易 代码的每一行都执行并检查过了吗 否 ----------设计规范部分---------- 设计是否遵循从已知的设计模式或项目中常用的设计模式 是 有没有硬编码或字符串/数字等存在 有 代码是否依赖于某一平台,是否会影响将来的移植 代码由C#编写,可能会影响移植 开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现? 是,用已有的Library/SDK/Framework中的功能实现 有没有无用的代码可以清除 有 ----------代码规范部分---------- 修改的部分符合代码标准和风格么 符合 ----------具体代码部分---------- 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 已处理 参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 无错误,字符的长度,从0开始计数 边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? 通过前提分析推导边界条件 有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? 否 对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? 自动申请释放,不会存在资源泄露,有优化的空间 数据结构中有没有用不到的元素? 有 ----------效能---------- 代码的效能(Performance)如何?最坏的情况是怎么样的? 效能一般,数据量过大可能会需要很长的运行时间而得不到结果 代码中,特别是循环中是否有明显可优化的部分? 无 对于系统和网络的调用是否会超时?如何处理? 如果超时,重新调用 代码可读性如何?有没有足够的注释? 结构清晰,但注释较少 ----------可测试性---------- 代码是否需要更新或创建新的单元测试 否
结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据
结对方commit记录

结对方fork记录

任务三:采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台
- 将结对编程项目的源码以增量方式提交到指定同学Github账号的项目仓库中,Github结对项目仓库的代码提交日志要体现两人合作过程,项目仓库中要能看到项目多次commit的记录,和两人各自的commit记录。
- 编撰两人合作开发遵守共同认可的编码规范,提交项目代码规范文档到Github项目仓库根目录下。
- 程序功能评测。
任务四:完成结对项目报告博文作业
需求分析陈述。
(1)平台基础功能:实验二 任务3;
(2)D{0-1}KP 实例数据集需存储在数据库;
(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;
(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);
(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);
(6)附加功能:除(1)-(5)外的任意有效平台功能实现。
软件设计说明。
此软件采用C/S的设计架构
客户机/服务器(C/S)网络的信息服务系统通常由计算机平台、网络平台和数据库平台组成。这里的C/S信息系统,在硬件条件不变的情况下,根据其作用可划分为几个部分:
1、第一部分为前端,即客户机。前端是一个运行在客户机上并向服务器发送信息,并接收服务器信息的小型应用程序,因此,前端实际就是服务器上应用程序的一个接口。
2、第二部分为后端,即服务器。后端计算机上应当 运行基于C/S模式的后台程序,如SQL Server。服务器程序可以应用于各类计算机平台上,从微机、小型机直到大型计算机。随着计算机网络规模的发展,网络中可能需要不只一个服务器来分别处理各种客户机的请求。为此,可以在同一台服务器上安装多种应用服务软件。当网络上客户机对电子邮件的服务请求不多时,还可以安排它兼做其他客户机或者服务器使用。
3、第三部分为连接件,即起连接作用的软件和硬件。其中软件连接主要包括网络协议,网络应用接口和数据库的连接接口等,而硬件连接主要有网卡和通信介质等
简言之,前端程序是负责与网络客户的交流,并向服务器提出要求的一方;后端程序则是处理相关的交互请求,为前端提供服务的一方;而连接件则是服务器与客户机的连接和支撑平台。
软件实现及核心功能代码展示:软件包括哪些类,这些类分别负责什么功能,他们之间的关系怎样?类内有哪些重要的方法,关键的方法是否需要画出流程图?
客户端的类有:
1.Articles
代表一个物品,具有重量价值等属性
2.DataExtraction
封装的数据处理类,可以对数据集进行处理、读取、传送、排序等操作
3.DataSet
数据集类,包含一个数据集中的所有物品集,并且具有动态规划法、回溯法等处理函数。
4.ItemSet
物品集,包含三个物品对象和他们的操作函数。
5.ItemSetSort
继承了比较器的接口,可以对两个物品集按照第三项的价值重量比进行比较
6.NetworkSendData
负责和服务器端进行网络连接,并且可以进行和服务器端进行交互。
public void DSW(string fn, int index) { try { int state = get_Connect_State(); if (state == 1) { send_Data_To_Server("DSW"); string temp = read_Data_From_Server(); if (temp.Equals("OK")) { int count = dataExtraction.get_items_Set_Count(index) * 3; send_Data_To_Server(count.ToString()); temp = read_Data_From_Server(); if (temp.Equals("OK")) { int i = 0; do { string[] send = dataExtraction.get_DSW_Str(index, i); for (int j = 0; j < 3 && temp.Equals("OK"); j++) { send_Data_To_Server(fn + "#" + index.ToString() + "#" + i.ToString() + "#" + send[j]); temp = read_Data_From_Server(); } i++; } while (temp.Equals("OK") && i < count); } } else { return; } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
7.OutputToFile
负责将结果和解向量输出到txt或者excel文件中
8.Program
项目的主类,是项目开始的地方
9.SortByTheThirdItem
对于给定的数据集,按照他们每一个物品集的第三个物品的价值重量比进行排序。
10.Form1、Form2、Form3
分别对应登录注册窗口、数据处理窗口和散点图绘制窗口
程序运行:程序运行时每个功能界面截图。扩展功能实现可得附加分5分。




















描述结对的过程,提供两人在讨论、细化和编程时的结对照片(非摆拍)。
两个人各自发表对项目的想法,在理解对方想法的过程中求同存异,合并计划,螺旋式改进规划方案。



提供此次结对作业的PSP。
| 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
|---|---|---|
| 商讨这个任务,交流实验二的项目完成情况,并大致规划本次工作步骤 | 20 | 30 |
| 交流沟通对汉堡法和领航员与驾驶员的理解看法 | 200 | 300 |
| 编撰两人共同认可的编码规范 | 400 | 500 |
| 数据集存储在数据库功能的代码编写 | 800 | 1200 |
| 动态嵌入有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据功能的编写 | 500 | 800 |
| 人机交互界面(增加新功能) | 400 | 400 |
| 遗传算法的学习和设计 | 180 | 240 |
| 功能测试运行 | 30 | 30 |
小结感受:两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。
1+1>2的效果是真实存在的,俗话说三百六十行,行行出状元,然而就算同是在计算机行业,两个人的能力也可能又很大的差异,同一个任务让两个人去做,可能花费的时间相差极大,因此1和1,在不同的任务面前有不同的能力,如果把两个人都分配到合适的任务上,最后就创造出了1+1>2的效果。
201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告的更多相关文章
- 201871030125-王芬 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
实验三 软件工程结对项目 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs ...
- 201871030110-何飞 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030110-何飞 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 ...
- 201871030137-杨钦颖 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030137-杨钦颖 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级连接 这个作业要求链接 作业连接 我的课程学习目 ...
- 201871030139-于泽浩 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030139-于泽浩 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 软件工程结对项目 ...
- 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 学习PSP流程并运用于结对项目:学习GitHub代码的管理;学习结对编程的流程与内容 这个作业在哪些方 ...
- 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...
- 201871030108-冯永萍 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
实验三 软件工程结对项目 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs ...
- 201871030116-李小龙 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...
- 201871010113-贾荣娟 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 18级卓越班 这个作业要求链接 实验三-软件工程结对项目 这个课程学习目标 掌握软件开发流程,提高自身能力 这个作业在哪些方面帮助我实现了学习目标 本次实验让我对软件工程 ...
随机推荐
- git config all in one
git config git global config # git global config $ git config $ git config --list --show-origin $ gi ...
- nodejs stream 创建读写流
const fs = require("fs"); const { Writable, Readable, Duplex, Transform } = require(" ...
- vue render html string
vue render html string shit element ui render string array relativeShowConvert(data) { // log(`data` ...
- Matplotlib 图表绘制工具学习笔记
import numpy as np import matplotlib.pyplot as plt import pandas as pd arr1 = np.random.rand(10)#一维数 ...
- 线上CPU飙升100%问题排查
本文转载自线上CPU飙升100%问题排查 引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考 ...
- Ubuntu 下安装Anaconda + 显卡驱动 + CUDA + CUDNN + 离线安装环境
写来给自己备忘,并不是什么教程- .- 下载安装包 Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 显卡驱动:https ...
- Java自学no.1———带你初步认识java
什么是Java Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是 计算机的语言,人们可以使用编程语言对计算机下 ...
- JS相关基础
1. ES5和ES6继承方式区别 ES5定义类以函数形式, 以prototype来实现继承 ES6以class形式定义类, 以extend形式继承 2. Generator了解 ES6 提供的一种异步 ...
- 基于西门子S7-1500的大型焊接机全套程序,使用博图V14打开(带全部注释)
程序说明:本套程序是在从事自动化行业时候的做的项目的程序,经过在设备上运行测试,其中包含20多个轴的伺服控制以及模拟量,数字量IO的控制,包括扫描枪的读取,属于大型程序,总步数有好几万步. 本程序注释 ...
- 第七届蓝桥杯JavaB组——第7题剪邮票
题目: 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示 ...