集大软件工程15级我的做业Week2

集大软件工程15级我的做业Week2

快速通读教材《构建之法》,并参照提问模板,提出5个问题。linux

  • 在每一个问题后面,请说明哪一章节的什么内容引发了你的提问,提供一些上下文
  • 列出一些事例或资料,支持你的提问。
  • 说说你提问题的缘由,你说由于本身的假设和书中的不一样而提问,仍是不懂书中的术语,仍是对推理过程有疑问,仍是书中的描述和你的经验(直接经验或间接经验)矛盾?

【附加题】:请将问题提交至豆瓣:https://book.douban.com/subject/27069503/, 并在博客中给出连接
在豆瓣页面的最下方 “读书笔记” 那里发言, 《构建之法》的做者会亲自答复问题android

Q1 : 我的技术和流程

来自第2章 p36web

PSP有如下的特色:算法

  • ...
  • PSP依赖于工程输入数据,记录工程师的各项活动,这自己就须要不小的时间代价
  • 若是数据不许确或者有遗失,怎么办?让工程师编造一些?
  • 若是一些数据不利于工程师本人(例如:花不少时间修改缺陷),咱们怎么才能保证工程师愿意如实地记录这些数据呢?

个人问题是,PSP是否不适合学生编程

正如书中所言,PSP这一模型在实施的时候彷佛有一些困难的地方,尤为是对于学生来讲,例如:windows

  • 数据如何才能较为精确的获取到
  • 各个阶段之间的分界点不明确
  • 学生的时间比较分散,因此极可能会出现学生利用了好几块分散的时间才作完了一个阶段的事情,那么这样子又该如何统计呢?显然这之间不能简单地线性相加,例如,我要设计接下来一个项目的各模块接口。我花了三天没课的上午在onenote上写好了文档,可是实际上从我开始准备写文档那一刻起,个人脑中就开始构思各模块的接口之间的关系了,可能在某一节无聊的课堂上,也多是在食堂里吃饭的时候...对于常常没有完整时间块的学生来讲,PSP的数据很难获取到
  • 文中所举例举例的工程师的问题固然一样也适用于学生身上

问题提出的缘由是与我在平常学习生活中的经验矛盾编程语言

Q2 :两人合做

来自第4章 p87函数

如何结对编程单元测试

  1. 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
  2. 领航员:审阅驾驶员地文档;监督驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否须要和如何重构;帮助驾驶员解决具体的技术问题。领航员也能够设计TDD中的测试用例
  3. ......

我认为,结对编程可能在现今的大学环境下难以发挥效果。学习

首先看到书中关于结对编程的例子,通常都是公司内部的两个工程师,两者同为一家公司的工程师,那他们之间通常来讲技术、关于技术的思想等等就不会差距太大,而这个技术差距偏偏是学生之间和工程师之间的不一样之处。好比说用0到10的数字表示一我的对有关结对编程中使用技术的掌握程度,两个工程师是4和7,而学生之间甚至可能出现0和1的状况(没有其它人比学生更了解学生,做为计算机学院的学生,四年下来连要求的某些编程语言的基本语法都没有学会的也不是没有)。这样的状况下,根本无法结对,别说设计单元测试了,可能连表述出来的设计需求都听不懂。

问题出发点一样是与学习环境中的经验不符。

Q3 : 实战中的软件工程

来自第7章 141

保持敏捷,预期和适应变化......

以及 第3章 p53

“过早优化是一切罪恶的根源”......

当我看到敏捷的思想的时候,就回想起了在本书前面看到的过早扩大化/泛化等的问题。前者的要点是:要预料变化,适应变化,对变化作好准备;然后者的要点是:不要过早地泛化......我感受这两种思想彷佛有着冲突的地方,问题是该如何在两者在过早泛化和提早为变化作好准备之间找到平衡点呢

举个更具体的例子,我要用C++写一个web/linux/windows/iOS/android上均可以使用的我的事项管理软件。我打算从windows客户端开始设计,在设计其中一些方法的时候,我是应该将函数所有泛型化,抽取出变化的部分所有设置成参数?仍是先将这一平台的当前需求以合理的资源和算法结构等先设计实现出来呢?

Q4 :软件测试

来自第13章

章节中的各类测试技术的应用场景......

在阅读软件测试等章节的时候,我认为确实单元测试和软件测试等等都是十分有必要的,那么一个GUI软件该如何更好地测试呢,或者说GUI软件的自动化测试有没有必要呢?

这是我找到的部分观点:

在我看来,GUI测试因为其变化可能性大,测试(覆盖率/成本) 率高,因此难以进行大规模的自动化测试,就像某前辈所说的

keep the UI very, very thin—all it does is forward user gestures to some underlying code, and display the results. No logic. Definitely no database access.

UI就该作UI的事情,而且只作那件事

在测试问题上,该如何找到最佳的GUI测试方案呢

Q5 : 人,绩效和职业道德

来自第17章 p411

软件工程师的职业道德

其中有一个规范:

原则1 公众
软件工程师的行为应与公众利益一致
原则2 客户与雇主
软件工程师应以其客户和雇主利益最大化的方式作事,与公众利益保持一致
......

看到这种一条一条的的准则,就会产生疑问:

  • 如何衡量是否与公众利益一致
  • 若公众利益与雇主利益不一致,甚至互斥怎么办

举个例子 某大厂开发的一款即时通信软件,在发布后因为其出色地整合了许多同类应用的优秀功能而大火。以后雇主(公司老板)要求工程师设计出一套付费vip的服务,对于使用该应用的用户来讲,这固然不利于他们的利益,可是从雇主的角度来讲,他能够凭借该应用的巨大用户基数怒赚一笔

相关文章
相关标签/搜索