集大软件工程15级个人作业Week2

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

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

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

Q1 : 个人技术和流程

来自第2章 p36

PSP有以下的特点:

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

我的问题是,PSP是否不适合学生

正如书中所言,PSP这一模型在实施的时候似乎有一些困难的地方,尤其是对于学生来说,例如:

  • 数据如何才能较为精确的获取到
  • 各个阶段之间的分界点不明确
  • 学生的时间比较分散,所以很可能会出现学生利用了好几块分散的时间才做完了一个阶段的事情,那么这样子又该如何统计呢?显然这之间不能简单地线性相加,例如,我要设计接下来一个项目的各模块接口。我花了三天没课的上午在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的服务,对于使用该应用的用户来说,这当然不利于他们的利益,但是从雇主的角度来说,他可以凭借该应用的巨大用户基数怒赚一笔

集大软件工程15级个人作业Week2的更多相关文章

  1. 集大软件工程15级个人作业Week1

    集大软件工程15级个人作业Week1 孙志威 201521123077 博客园主页 码云地址 阅读参考材料,并回答下面几个问题 (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络 ...

  2. 集大软件工程15级结对编程week1

    集大软件工程15级结对编程week1 0. 团队成员 姓名 学号 博客园首页 码云主页 孙志威 20152112307 Agt Eurekaaa 孙慧君 201521123098 野原泽君 野原泽君 ...

  3. [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?

    改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html   当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...

  4. BUAA软件工程个人博客作业

    软件工程个人博客作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标 团队完成好的软件,并对自己作出规划 这个作 ...

  5. 【软件工程】week5-个人作业-敏捷开发方法初窥

    敏捷开发方法初窥 引言:本周的软件工程个人博客作业是阅读关于敏捷开发方法的文章(http://martinfowler.com/agile.html),并撰写自己的读后感.文章内容非常丰富,对敏捷开发 ...

  6. 17秋 软件工程 第六次作业 Beta冲刺 总结博客

    题目:团队作业--Beta冲刺 17秋 软件工程 第六次作业 Beta冲刺 总结博客 Beta冲刺过程中各个成员的贡献百分比 世强:15.5% 陈翔:14.5% 树民:12.0% 媛媛:14.0% 港 ...

  7. [buaa-SE-2017]个人作业-Week2

    个人作业-Week2 一.代码复审Checklist 1.概要部分 1.1 代码能符合需求和规格说明么? 本次作业的需求可以分成基本的功能实现和大规模数据下程序的健壮性,以及少量的异常处理能力,也就是 ...

  8. BUAA 2020 软件工程 个人博客作业

    BUAA 2020 软件工程 个人博客作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 ...

  9. 复旦大学2015--2016学年第二学期(15级)高等代数II期末考试第六大题解答

    六.(本题10分)  设 $n$ 阶复方阵 $A$ 的特征多项式为 $f(\lambda)$, 复系数多项式 $g(\lambda)$ 满足 $(f(g(\lambda)),g'(\lambda))= ...

随机推荐

  1. VMware安装win7提示 operating system not found

    在虚拟机上安装win7时,进度条读完,重启后提示operating system not found,可能原因是在使用分区工具格式化时没有把C盘设置为主分区并激活. 解决办法: 进入PE或者使用分区工 ...

  2. python中Switch/Case实现

    学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch/Case功能. 方法一 通过字典实现 ...

  3. MyBatis:一对一关联查询

    MyBatis从入门到放弃三:一对一关联查询 前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是 ...

  4. 微信access_token请求之简单缓存方法封装

    还有东西要搞,就直接上代码 function.php <?php // 一个好玩的 curl 类 // https://github.com/metowolf/Meting/blob/maste ...

  5. MT【224】反解系数

    (2011安徽省赛)$f(x)=ax^3+bx+c(a,b,c\in R),$当$0\le x \le 1$时,$0\le f(x)\le 1$,求$b$的可能的最大值. 提示:取三个点$f(0),f ...

  6. LOJ #2718. 「NOI2018」归程(Dijkstra + Kruskal重构树 + 倍增)

    题意 给你一个无向图,其中每条边有两个值 \(l, a\) 代表一条边的长度和海拔. 其中有 \(q\) 次询问(强制在线),每次询问给你两个参数 \(v, p\) ,表示在 \(v\) 出发,能开车 ...

  7. 51Nod - 1107 斜率小于0的连线数量

    二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...

  8. 洛谷 P2680 运输计划 解题报告

    P2680 运输计划 题目背景 公元2044年,人类进入了宇宙纪元. 题目描述 公元2044年,人类进入了宇宙纪元. \(L\)国有\(n\)个星球,还有\(n-1\)条双向航道,每条航道建立在两个星 ...

  9. scp 的用法

    scp用于在linux下远程拷贝文件, 与rsync相比,scp不占资源,不会提高多少系统负荷,虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本 ...

  10. 《CSS揭秘》笔记(一)

    前言 我们在现代 CSS 中所面临的挑战已经不在于如何绕过这些转瞬即逝的浏览器 bug.如今的挑战是,在保证 DRY ① .可维护.灵活性.轻量级并且尽可能符合标准的前提下,把我们手中的这些CSS特性 ...