第二次作业,从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) 第二次作业进度

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

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

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

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

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

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

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

  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. 第59章 IdentityServer交互服务 - Identity Server 4 中文文档(v1.0.0)

    IIdentityServerInteractionService接口旨在提供用户界面用于与IdentityServer通信的服务,主要与用户交互有关.它可以从依赖注入系统获得,通常作为构造函数参数注 ...

  2. [C#] 使用 StackExchange.Redis 封装属于自己的 RedisHelper

    使用 StackExchange.Redis 封装属于自己的 RedisHelper 目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List ...

  3. 拯救老旧工程,记桥接SpringMVC与Stripes框架

    背景: 公司基础设施部门推出了自己的微服务框架(以下简称M),要求所有业务应用都要接入进去,但坑爹的是M只提供了SpringMVC工程的support,对于采用Stripes作为MVC框架的应用并不支 ...

  4. netfilter及iptables基本概念

    网络访问控制 网络访问控制可以简单理解为防火墙,常用的网络访问控制有:哪些IP可以访问服务器, 可以使用哪些协议,哪些接口,是否需要对数据包进行修改等. netfilter netfilter是通过i ...

  5. excel函数2

    1截取函数的应用 实例: 2.日期的年周月星期数据处理

  6. 设置抓包工具Fiddler的host

    大家都知道在电脑本地上有一个Host文件. Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定.可以用文本文件打开!当用户在浏览器中输入一个需要登录的网址时,系统 ...

  7. Monkey测试记录

    配置环境变量,不然用不了adb命令 path这里也一样配置一下 命令的各种意思百度一下看看也就知道了 看到一篇博客推荐的一种测试命令,我也直接拿来用了 adb shell monkey -p 你的包名 ...

  8. (办公)TOKEN

    token就是HTTP认证,输入正确的token,在放在Authorization header中发送给服务器,认证成功.,就可以正确的拿到接口数据. 举个例子: 第一步:  客户端发送http re ...

  9. Web开发人员学习路线图

    http://www.runoob.com/w3cnote/2018-web-developer.html

  10. 【公众号系列】浅谈SAP项目管理的技能

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[[公众号系列]浅谈SAP项目管理的技能   写 ...