第二次作业,从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. 第20章 定义客户端 - Identity Server 4 中文文档(v1.0.0)

    客户端表示可以从您的身份服务器请求令牌的应用程序. 详细信息各不相同,但您通常会为客户端定义以下常用设置: 唯一的客户ID 如果需要的秘密 允许与令牌服务的交互(称为授权类型) 身份和/或访问令牌发送 ...

  2. HttpClient post提交数据,返回json

    // string data = "{\"uid\":515,\"timestamp\":\"2018 - 5 - 25 19:05:00\ ...

  3. 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上

    Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...

  4. 【JavaScript】封装实用方法【持续积累】

    介绍 主要记录一些平时积累或者常用方法或者小技巧的集合.以便在以后用到还要重复写或者忘记. 还有就是如果遇到好的方法封装值得收藏进行收藏.这里主要是记录一些包含JavaScript的一些积累.没有什么 ...

  5. [MySQL] 联合索引与using index condition

    1.测试联合索引的最左原则的时候, 发现了5.6版本后的新特性Index Condition Pushdown 2.含义就是存储引擎层根据索引尽可能的过滤数据,然后在返回给服务器层根据where其他条 ...

  6. 零基础学Python--------第5章 字符串及正则表达式

    第5章 字符串及正则表达式 5.1 字符串常用操作 在Python开发过程中,为了实现某项功能,经常需要对某些字符串进行特殊处理,如拼接字符串.截取字符串.格式化字符串等.下面将对Python中常用的 ...

  7. jq筛选方法

    jq筛选方法(参照手册) 过滤: 1) eq(index|-index):获取第N个元素 负值表示从末尾开始匹配 <!-- 获取匹配的第二个元素 --> <p> This is ...

  8. phpstudy等php本地环境运行缓慢的问题解决方法

    我们经常会使用些一键安装包部署本地服务器环境.比如phpstudy.但是会有不少人发现,wordpress等使用数据库的程序打开或者切换页面的速度明显低于静态站点.甚至需要好几秒.这个问题一直困扰了我 ...

  9. git克隆github上的代码(整个分支),并使用vs code上传到github

    好久没写博客辣,之前一直用sublime text3,最近开始用vc写,感觉很良好.然后公司也在用git,就写一个克隆上传的教程吧 1.下载git https://www.git-scm.com/do ...

  10. 环境设置——pyCharm环境下导入MySQLdb遇到的一系列问题

    本文转自http://blog.sina.com.cn/s/blog_135031dae0102yc8l.html 安装好pyCharm后想要import MySQL,结果发现了一系列问题,像推到了塔 ...