第二次作业,从4月7号开始,陆续开始提交作业。根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好。然后有一些普遍存在的问题,在这里做一下小结,大家可以PK下各自的思考和想法。此处主要从几个方面说:

  1. 作业雷同、抄袭问题
  2. 排版和代码插入的问题
  3. 需求分析和设计太抽象,应该如何理解和实践的建议
  4. 手工测试单元测试的区别,以及单元测试的使用等
  5. 作业反馈和迭代改进,做中学

作业雷同问题

作业雷同的问题。对于作业,我希望大家一定要独立完成。这个独立在不同场合下意义不一样,比如是PSP训练里,那么独立应该是指自己一个人独立完成,如果是结对编程,那么独立应该有两层含义,一方面指代小组相对于其他小组的独立,另一方面指代小组里两个人要各自分工协作,不能编程一个人完全全部,另外一个人啥都没做。所有的作业我们都会看过去,谁在抄袭谁在独自完成,都是能看出来的,这方面请同学们自己注意。

排版和代码插入的问题

首先是排版和代码插入的问题。根据博客园后台编辑器的选择,有些同学使用可视化编辑器,有些同学选择使用MarkDown编辑器。一般来说学会了MarkDown排版的同学,插入代码都是没有问题的,这就是我推荐大家用MarkDown的原因,它既简洁,又排版效果好。而是用可视化编辑器的同学,排版一般也都还可以,只是有些同学可能对如何正确的插入代码不熟悉,所以插入的代码存在排版错乱、没有高亮、缩进不正确等等问题。所以这点上建议大家都改进。学会基本的排版技能对于你们以后的职业生涯都是一个重要的事情。

需求分析和设计太抽象,应该如何理解和实践的建议

其次是需求分析和设计的问题。这两个本身比较抽象,听上去都属于可做可不做的事情,这是神码东西呢:D。什么是需求分析?什么是设计?我想很多同学都是在代码做完了之后,为了写上这么两个环节,而拼凑出内容的。但另一方面,我又看到一些同学在分析和总结里说一开始看不懂题目,在经过A、B、C步骤之后终于搞明白题目要做什么。这个过程本身就是属于需求分析的一部分,软件开发过程中,需求分析是重要的一环,它本身就是要将不明确的、模糊的需求厘清、并写下来的,然后和目标(比如客户)达成一致的一个过程。设计,对于本次作业来说,可能最重要的就是关于代码如何实现的大致划分,比如要不要用函数?如果要,大致有哪些函数,整体又要怎样组合。再一个就是要做单元测试,那么可能首先要根据书上的例子、老师的课堂呈现、以及自己的查阅先搞明白单元测试是什么,有一个直观的认识。然后自己在设计函数、类、模块应该如何设计使得更易于做单元测试。此外,《构建之法》书中的wc程序也是一个很好的从基本需求、扩展需求、到高级需求分析的一个案例,当然这样的过程需要反复训练

手工测试单元测试的区别,以及单元测试的使用等

接着还是说测试。大部分同学都做了手工测试,就是把程序跑起来手工输入一个个答案,然后程序都跑对了,就算是做了测试。但这个和真正的单元测试是不一样的,这块希望大家能结合书上的例子,或者http://en.wikipedia.org/wiki/Unit_testing对这个页面的阅读,能有一个自己认识上的改变,可以将自己的理解写下来,写成博客。单元测试的目的是为了对软件的基本单元,比如函数,做各种边界条件测试或者语义测试。语义测试比较高阶,此处单说边界条件测试,很多人的作业里都对除法的被除数为0,或者除不尽的情况没考虑到,但是如有设计单元测试,则单元测试的测试用例就可以故意针对这种边界条件做测试,所以你在设计测试用例的过程中就实际上把问题考虑的更全面。再比如,有的同学用了goto语句,goto在现代结构化编程里是不推荐使用的,至于为什么,使用了goto语句的同学也可以自己把事后的查阅理解写下来,写成博客。我们说,如果你有了单元测试,那么,你在把goto语句去掉的过程中,就可以要求修改后的函数,通过之前设计的测试用例。这就属于回归测试。你也可以理解成回退测试,就是说我的函数的实现改变了,但是依然通过之前设计的那些测试用例。

作业反馈和迭代改进,做中学

然后,我们说下迭代改进的问题。这次作业只有少数几个同学能对点评做反馈改进--意味着更多工作量。为什么应该要迭代改进呢?此处我要表扬下涂江凤同学,她的作业一开始用到了goto,我给了她点评,她就立刻抓紧时间去对代码做了改进,去掉了goto,并且自己去思考为什么不推荐用goto,这样她就从改进做学到了为什么,并且在博客里记录下了改进的结果,以及从中学到的东西,这就符合《构建之法》的核心理念做中学,通过在实践作业中发现问题,进而通过重新理解重新看书重新写代码等等过程中,去到课程真正要传递给你的那些知识或者认知方法。涂同学看到了zhaoxiong关于代码写法改进以及函数注释的反馈后,就立刻对自己的函数做了详细的注释同时改进了自己的代码,排版风格良好,这样她就有了对代码规范代码风格的一个初步认识,如果她这个时候重新去看《构建之法》里写代码风格和代码规范的章节,那么她就不再是觉的这是很抽象的东西,而是实实在在的切实有用的----写代码的过程中时刻要注意的。涂同学也把每次的修改增加到了PSP耗时统计里,这样她就能看到自己的每次改进的完整记录,包括解决的问题、提出的疑问、以及消耗的时间,这些都可以用在以后的过程中改进自己。这里的核心就是做中学,有迭代改进和无迭代改进,这是一个问题,请同学们也思考下。软件工程里,处处存在人与人之间的沟通和交流,快速的对点评或者建议做反馈,迭代改进,这样的行为它本身就是符合工程思维的,我想在这点上,如果能做到,那么至少是学到了工程的一个小小但非常重要的点。

大概就写这些,大家加油~。

软件工程(GZSD2015)第二次作业小结的更多相关文章

  1. 软件工程(GZSD2015) 第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  2. 软件工程(GZSD2015) 第二次作业进度

    贵州师范大学软件工程第二次作业 徐 镇 王铭霞 张 英 涂江枫 张 燕 安 坤 周 娟 杨明颢 杨家堂 罗文豪 娄秀盛 周 娟 李盼 岳庆 张颖 李丽思 邓婷 唐洁 郑倩 尚清丽 陈小丽 毛茸 宋光能 ...

  3. 软件工程(GZSD2015) 第二次作业文档模板

    题目: (此处列出题目) 需求分析: 基本功能 基本功能点1 基本功能点2 ... 扩展功能(可选) 高级功能(可选) 设计 设计点1 设计点2 ... 代码实现 // code here 程序截图 ...

  4. 软件工程(GZSD2015) 第二次作业成绩

    作业评分表 姓名 提交 语言 界面 PSP(3) CODE(4) 代码规范(2) 改进(1) 基本得分 提交时间 原始总得分 相对得分 最终得分 涂江凤 20150407 C CLI 3 4 2 1 ...

  5. 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...

  6. OO第二单元作业小结

    前言 转眼已是第九周,第二单元的电梯系列作业已经结束,终于体验了一番多线程电梯之旅. 第一次作业是单电梯的傻瓜调度,虽然是第一次写多线程,但在课程PPT的指引下,写起来还是非常容易:第二次作业是单电梯 ...

  7. 软件工程(GZSD2015)第二次作业进度

    贵州师范大学软件工程第二次作业 徐 镇 王铭霞 张 英 涂江枫 张 燕 安 坤 周 娟 杨明颢 杨家堂 罗文豪 娄秀盛 周 娟 李盼 岳庆 张颖 李丽思 邓婷 唐洁 郑倩 尚清丽 陈小丽 毛茸 宋光能 ...

  8. 软件工程(QLGY2015)第一次作业小结(含成绩)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 Github项目提交 github的代码提交,大部分人都只是提交了单个文件,存在几个问题 请提交完整的项目文件到github 问题:为什 ...

  9. 关于Axure RP软件的介绍——软件工程实践第二次个人作业

    关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...

随机推荐

  1. Centos 7.3 安装mysql5.7.19 各种调试就不多说了

    mysql 5.7.19linux-glibc2.12 (x86_64) 安装 1.在安装目录进行解压2.mv解压目录为mysql3.创建mysql的用户 useradd -s /sbin/nolon ...

  2. 编写一个简单的TCP服务端和客户端

    下面的实验环境是linux系统. 效果如下: 1.启动服务端程序,监听在6666端口上  2.启动客户端,与服务端建立TCP连接  3.建立完TCP连接,在客户端上向服务端发送消息 4.断开连接 实现 ...

  3. 超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

    超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 &l ...

  4. Sublime Text3快捷键

    Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下 ...

  5. MySQL数据库IO问题

    --MySQL数据库IO问题 ----------------------2014/05/25     看http://www.mysqlperformanceblog.com 的时候,发现Perco ...

  6. JDK问题--linux下java unrecognized class file version错误的解决

    linux下java unrecognized class file version错误的解决 环境:RedHat Linux Enterprise 5.4 问题:java.sun.com下载jdk1 ...

  7. 程序设计中的数学思维函数总结(代码以C#为例)

    最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算. 现将经常会使用到的基础函数做一总结,供大家分享.自己备用. 1.判断一个数是否为奇 ...

  8. 遇到local variable 'e' referenced before assignment这样的问题应该如何解决

    问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变 ...

  9. cycript

    cycript是大神saurik开发的一个非常强大的工具,可以让开发者在命令行下和应用交互,在运行时查看和修改应用.它确实可以帮助你破解一些应用,但我觉得这个工具主要还是用来学习其他应用的设计(主要是 ...

  10. OpenCms JSP 模板开发——创建一个简单的JSP模板

    OpenCms中的JSP模板就是一个普通的JSP页面,在特定的位置使用标签来包含内容,在这个的例子中,我们将要开发一个简单JSP模板,这个模板只是在内容(如<html>.<body& ...