项目 内容
课程班级博客链接 18级卓越班
这个作业要求链接 实验三 软件工程结对项目
我的课程学习目标 1.熟悉PSP流程
2. 熟悉github操作
3.加深对D{0-1}问题的解法的理解
4.熟悉java语言开发程序的一般流程
5.体验软件项目开发中的两人合作,练习结对编程
这个作业在哪些方面帮助我实现学习目标 1. 更加熟练git的相关操作
2. 熟练markdown编辑器的使用方法
3.温习使用前后端分离技术开发网站的过程
4.学会GitHub协作开发的操作
结对方学号-姓名 201871030116-李小龙
结对方本次博客作业链接 实验三 软件工程结对项目
本项目Github的仓库链接地址 仓库地址

任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;

1、代码风格规范

  (1)代码风格的原则是:简明,易读,无二义性。

  (2)缩进:4个空格,不用Tab键是因为在不同的情况下显示的长度可能不一样。

  (3)行宽:限定为100字符。

  (4)括号:在复杂的条件表达式中,可以清晰地表示逻辑优先级。

  (5)断行与空白的{}行:断行在程序调试时可以清晰的表达变量的变化情况,{}来判断程序的结构。

  (6)分行:不要把多个变量定义在一行上。

  (7)命名:

    ①在变量名中不要提到类型或其他语法方面的描述。

    ②避免过多的描述。

    ③如果信息可以从上下文中得到,那么此类信息就不必写在变量名中。

    ④避免可要可不要的修饰词。

  (8)下划线:用来分割变量名字中的作用域标注和变量的语义。

  (9)大小写:

    ①所有类型/类/函数名都用Pascal形式(所有单词第一个字母都大写)。

    ②所有变量都用Camel形式(第一个单词全部小写,随后单词用Pascal形式)。

    ③类/类型/变量:名词或组合名词。

    ④函数则用动词或动宾组合词来表示。

  (10)注释:注释是为了解释程序做什么(What),为什么这样做(Why)以及要特别注意的地方。

2、代码设计规范

  (1)概念:代码设计规范不光是程序书写的格式问题,而且涉及到程序设计、模块之间的关系、设计模式等方方面面,又有不少内容与具体程序设计语言息息相关(如C,C++,JAVA,C#),但是也有通用的原则。

  (2)函数:原则:只做一件事,并且要做好。

  (3)goto:函数最好有单一出口,为了达到这一目的,可以使用goto。

  (4)错误处理:

    ①参数处理:在Debug版本中,所有的参数都要验证其正确性,在正式版本中,对从外部(用户或别的模块)传递过来的参数,要验证其正确性。

    ②断言:验证正确性就要用断言。

  (5)如何处理C++中的类

    ①类:

      a.使用类来封装面向对象的概念和多态。

      b.避免传递类型实体的值,应该用指针传递。换句话说,对于简单的数据类型,没有必要要用类来实现。

      c.对于有显示的构造和析构的类,不要建立全局的实体,因为不知道它们在何时创建和消除。

      d.仅在有必要时,才是用“类”。

    ②class vs.struct:如果只是数据的封装,用struct即可。

    ③公共/保护/私有成员:按照这样的次序来说明类中的成员。

    ④数据成员:

      a.数据类型的成员用m_name说明。

      b.不要使用公共的数据成员,要用inline访问函数,这样可兼顾封装和效率。

    ⑤虚函数

      a.使用虚函数来实现多态。

      b.仅在很有必要时,才使用虚函数。

      c.如果一个类型要实现多态,在基类中的析构函数应该是虚函数。

    ⑥构造函数

      a.不要在构造函数中做复杂的操作,简单初始化所有成员即可。

      b.构造函数不应该返回错误。

    ⑦析构函数

      a.把所有的清理工作都放在析构函数中。如果有些析构函数在之前就释放了,要重置这些成员为0或NULL。

      b.析构函数也不应该出错。

    ⑧new和delete

      a.如果可能,实现自己的new/delete,这样可以方便地加上自己的跟踪和管理机制。自己的new/delete可以包装系统提供的new/delete。

      b.检查new的返回值。new不一定都成功。

      c.释放指针时不用检查NULL。

    ⑨运算符

      a.在理想情况下,我们定义的类不需要自定义操作符。确有必要时,才会自定义操作符。

      b.运算符不要做标准语义之外的任何动作。

      c.运算符的实现必须非常有效率,如果有复杂的操作,应定义一个单独的函数。

      d.当拿不定注意时,用成员函数,不要用运算符。

    ⑩异常

      a.不要用异常作为逻辑控制来处理程序的主要流程。

      b.当使用异常时,要注意在什么地方清理数据。

      c.异常不能跨过DLL或进程的边界来传递消息,所以异常不是万能的。

    ⑪类型继承

      a.仅在有必要时,才使用类型继承。

      b.用const标注只读的参数。

      c.用const标注不改变数据的函数。

3、代码复审:看代码是否在代码规范的框架内正确的解决了问题。代码复审的形式包括:自我复审、同伴复审、团队复审。

4、结对编程:结对编程中有两个角色:领航员和驾驶员。在个人编写的过程中,很多人喜欢根据个人喜好来规定代码规范,而且存在的bug自己难以发现,因此,在结对编程时,我们可以互换角色,在开始写代码之前,规定两个人都认可的一套代码规范,并且不间断地进行复审,以减少软件中存在的问题,修复bug,提高软件质量。

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

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

结对方博客链接

结对方Github项目仓库链接

对结对方博客的评论

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

代码核查表

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

结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据

任务3:采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台,使之具有以下功能:

(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)外的任意有效平台功能实现。

本项目的PSP

PSP 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Estimate 计划 30 30
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 30 30
Development 开发 2585
Analysis 需求分析 (包括学习新技术) 20
Design Spec 生成设计文档 30
Design Review 设计复审(和同事审核设计文档) 10
Coding Standard 代码规范 (为目前的开发制定合适的规范) 5
Design 具体设计 900
Coding 具体编码 1440
Code Review 代码复审 180
Test 测试(自我测试,修改代码,提交修改) 120
Reporting 报告 30
Test Report 测试报告 10
Size Measurement 计算工作量 10
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 30 30

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

通过本次合作我觉得两个人合作做项目比一个人独自做效果要好很多。在项目完成方面,结对编程会带来1+1>2的效果,在编写程序遇到问题时,可以及时的向同伴求助,特别感谢我这次的结对编程伙伴李小龙同学。我在写程序时遇到好几个问题都是他帮我解决的。通过这次合作我真真体会到了结对编程的乐趣和互相督促的进步。结对编程还可以找出自己代码的不足之处,以及版本的兼容问题。比如在我的的电脑上字体显示正常,结果到编程伙伴的电脑上出现乱码,通过这种相互测试,可以更好的优化自己的程序。再次特别感谢李小龙同学。在结对过程我也看到了自己能力上的缺陷,以前学习的时候重视理论课而疏于实践课,导致和别人在动手实践上面的差距,需要及时的弥补自己。同时算法方面我真是欠缺太多,在面对这样的问题时缺乏思路,因此今后我需要补习算法方面的知识,加强软件课程的学习,在遇到任何问题时都能有一个正确的思路。

201871030127-王明强 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告的更多相关文章

  1. 201871030137-杨钦颖 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030137-杨钦颖 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级连接 这个作业要求链接 作业连接 我的课程学习目 ...

  2. 201871030139-于泽浩 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030139-于泽浩 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 软件工程结对项目 ...

  3. 201871030125-王芬 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    实验三 软件工程结对项目 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs ...

  4. 201871030110-何飞 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030110-何飞 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 ...

  5. 201871030116-李小龙 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  6. 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...

  7. 201871030115-康旭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming):(2)掌握Git ...

  8. 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...

  9. 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...

随机推荐

  1. py django

    创建项目 $ django-admin startproject server 运行项目 $ cd server $ python manage.py runserver 创建一个模块 $ pytho ...

  2. spring boot用ModelAndView向Thymeleaf模板传参数

    最近在调试一个Spring Boot向Thymeleaf模板传参数的例子,但踩了很多坑,这里就把详细过程记录下来,以供大家参考. 先说下,这里遇到哪些坑呢? 1 我用的是IDEA社区版,这不支持JSP ...

  3. vue之provide和inject跨组件传递属性值失败(父组件向子组件传值的两种方式)

    简单介绍:当一个子组件需要用到父组件的父组件的某些参数.那么这个时候为了避免组件重复传参,使用vue的依赖注入是个不错的方法,直接在最外层组件设置一个provide,内部不管多少嵌套都可以直接取到最外 ...

  4. WPF -- 一种添加静态资源的方式

    本文介绍使用独立的xaml文件添加静态资源的方式. 步骤 创建XAML文件,如ImageButton.xaml,添加ResourceDictionary标签,并添加静态资源: 在App.xaml的Ap ...

  5. 研究了一下 Webpack 打包原理,顺手挣了个 AirPods Pro

    这些年,Webpack 基本成了前端项目打包构建的标配.关于它的原理和用法的文章在网上汗牛充栋,大家或多或少都看过一些.我也一样,大概了解过它的构建过程以及常用 loader 和 plugin 的配置 ...

  6. 49元起!魅族Lipro LED灯泡发布:无可视频闪、无积热问题

    转: 49元起!魅族Lipro LED灯泡发布:无可视频闪.无积热问题 魅族智能家居品牌Lipro今日办会,公布一批新品,均面向健康照明领域打造. 魅族强调,Lipro健康照明产品主打博物馆级健康光. ...

  7. 解决 DatePickerDialog 在 Android7.0 API24 上使用 AlertDialog.THEME_TRADITIONAL、AlertDialog.THEME_HOLO_DARK、AlertDialog.THEME_HOLO_LIGHT等样式时无法显示为 Spinner 样式的问题

    DatePickerDemoForAndroid24 解决 DatePickerDialog 在 Android7.0 API24 上使用AlertDialog.THEME_TRADITIONAL.A ...

  8. 剑指 Offer 48. 最长不含重复字符的子字符串 + 动态规划 + 哈希表 + 双指针 + 滑动窗口

    剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Aut ...

  9. 剑指 Offer 15. 二进制中1的个数

    剑指 Offer 15. 二进制中1的个数 Offer 15 题目描述: 方法一:使用1逐位相与的方式来判断每位是否为1 /** * 方法一:使用1逐位与的方法 */ public class Off ...

  10. salesforce零基础学习(一百零一)如何了解你的代码得运行上下文

    本篇参考:https://developer.salesforce.com/docs/atlas.en-us.228.0.apexcode.meta/apexcode/apex_enum_System ...