本周主要对《构建之法》中的一部分进行阅读。

一、软件与软件工程究竟是什么?

本书的概论部分就指出“软件 = 程序 + 软件工程”。而我们这门课的名字就叫“现代软件工程”。其实在上课之前,我对这门课存在一定的误解,我更多地把这门课归入“程序”部分。在我原来的理解中,像电设二一样,自己学新知识(当然很多在电设一已经学过),然好以团队的形式独立去完成一个项目,只不过电设属于硬件(也包含一部分软件),而软工则纯粹是软件了。

而上课之后却和我预想的不一样。首先每周读书笔记这个就让我非常不解,有些推荐书籍里面在我看来更像是鸡汤。后来,我才慢慢发现软件工程绝不只局限于就某一功能写代码去写代码实现,它的范围很广,正如书中所说,它包括软件需求分析、软件设计、软件构建、软件测试和软件维护,而我原来的理解只能算作是程序。比如书中开篇的那个例子,一段能完成出加减法题目的代码只能称为程序,而如果再根据用户的需求,给这个程序再加更多功能,甚至发布到网站上,并希望有人来维护,则这时程序已经升级成为了软件,因为要考虑的不仅仅是实现功能那么简单了。

再就是软件工程与计算机科学之间的关系,这一点我之前一直也搞不清楚。根据托尼·霍尔的比较,我们可以看到,计算机科学更强调理论的统一、确定性、正确性、原创性,它是一种长期的真理,而软件工程更强调更好的实践方法、能解决问题、处理风险以及可靠性,它是一种短期的结果。不过由于现在很多学校计算机学院也偏向工程,这有时模糊了二者的界限,但这并不代表二者是等同的。

 二、测试与性能分析

第二章强调了单元测试的重要性,不过上次个人作业由于时间等原因没有用起来,后面有机会要学会使用。而后面提到的性能分析上次个人也是第一次用起来了,以前都只是对自己程序的运行时间有一个大概印象,而具体哪个函数耗时大都没有详细说明。而通过性能分析能更有针对地去优化。然后通过第一次大作业对这方面也有所了解,这里就不赘述了。

三、结对编程

由于接下来要进行结对编程作业,我也重点阅读了一下“两人编程”这一部分。

首先,既然是合作项目,就要有一些约定,包括代码规范之类的,具体的也不赘述。还有几点特别的,一是提到了函数有个重要原则:“只做一件事,并且要做好”,这也是一直强调的模块化,模块化的好处不仅能让程序看起来更清晰,而且可以在代码移植时更简单;二就是代码复审,这个我之前编程的时候都没怎么考虑这个过程,我之前一般的流程就大概是“编码——测试——发现有错——复查”,这样的话虽然也行,不过一些小错误或者说可以改进的地方好好看一下其实很容易发现。复审可以是自我复审、同伴复审、团队复审,在结对项目中,同伴复审就非常重要。

而结对编程可以让代码处于不间断的“复审”过程中,一个驾驶员,一个领航员,互相督促,共同决策。现在还没开始结对编程,以前也没有尝试过,我相信还是能学到很多东西的。

        四、关于创新

因为本周作业里有创新的部分,我也选读了一下第十六章关于创新的内容。对于创新,我们往往认为只要想法是好的,那我们就能赢。但其实从书中举键盘布局和美国度量制可以看出,事实有时并不如此。书中还提到了很有意思的一个“黄金点”游戏,每个人选个数,所有数求平均,再乘0.618,最后离这个结果最近的同学就是赢家。作者提到了“赢者通吃”、“螳臂当车”、“只先一步”这三点,而就我自己而言,我觉得这就是一个个人决策的问题,每个人都想赢,都会思考选哪个数会让自己最可能赢,但如果大家都选这个数的话,这个数又不可能是最后答案,所以说这就考虑一个人的决断力。

魔方的创新这篇文章,则通过一个看似简单的小故事,却映射了软件开发行业的一种常态。“果冻”同学就是一个产品最先的创造者,为了保护自己的创新,他选择了对所谓的“口诀”进行保护,这个时候这个产品还只是一枝独秀。而很快,竞争——“小飞”——马上出现了,类似的技术出现,当时的产品已经成了大路货,大家对其的热情也减少了。竞争者们想要胜利,要么选择一个产品从未到达过的地方进行宣传,要么将产品与其他捆绑,而这两者终究不是长久之计,还有就是再次创新,开发属于自己更独特的地方。在百舸争流的时代,总有一两个出众者再次出现,“大牛”的新花样一时吸引了不少人,但若只是因为一点点小花样,一个产品注定不会就这么长久地火下去,而又在此时,“二柱”却能准确地把握住用户真正的需求,虽然技术上不及前面的各位,却更能抓住用户。

总结一下,一个产品要想胜利,不在于你是不是开创者,也不在于你能想出什么新花样,还是在于你能不能真正把握住用户的需求。

软工读书笔记 week 5 ——《构建之法》的更多相关文章

  1. 软工读书笔记 week 9 ——《构建之法》

    软工读书笔记  week 9                 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...

  2. 软工读书笔记 week 7 ——《构建之法》

    总时长近两周的结对项目终于算是结束了,马上要重新开启团队项目.于是这几天决定对<构建之法>一书中与团队项目及需求分析有关的章节进行重点阅读,希望能够从中得到启发,并运用到接下来的团队项目中 ...

  3. 软工读书笔记 week 8 —— 《疯狂的程序员》

    这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下.      程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...

  4. 软工读书笔记 week4 ——《黑客与画家》下

    因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...

  5. 软工读书笔记 week 1

    这次读书笔记主要是就<程序员修炼之道>这本书的前半部分做一些总结以及发表一些自己的看法. 本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下: 1.处理问题的态 ...

  6. 软工个人阅读作业2 —— 构建之法与CI/CD

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 阅读思考教材,调研软工工具 这个作业在哪个具体方面帮助我实 ...

  7. 软工读书笔记 week 6 ——《疯狂的程序员》Part 1

    这本小说以主人公绝影上大学后初次接触编程开始讲起,这周主要看的就是绝影还在大学的那段经历,虽然故事背景很多年前,但很多地方仍然会引发我的共鸣. 第一个梦想 在“第一个梦想”一节讲了作业布置做一个通讯录 ...

  8. 软工读书笔记 week3 (《黑客与画家》上)

    一.何谓黑客? 黑客,在我们大多数普通人眼里,就是入侵计算机的人,通常还与干坏事挂钩.而书中告诉我们,这 并不是它的真正含义.而要想理解这本书,就要首先理解什么是黑客. 黑客这个词最初起源时,完全是一 ...

  9. 软工读书笔记 week2

    <程序员修炼之道>这本书后面一部分则是更深入.更具体.更细致地就程序员应该注意的事项做一些讨论,书中说的很多在过去的经历中都有较深的体会,同时也给了我很多启发.以下是一些我感悟较深的点: ...

随机推荐

  1. Bomb(要49)--数位dp

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submi ...

  2. win10 下springcloud打包docker镜像部署。

    1:建一个最简单的springcloud应用. 2:在根目录下新建dockerfile,文件如下: FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ...

  3. 正则表达式 IP域名

    不废话,我这个起码不坑人,有的把我坑死 var objRegExp = /^((([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))))\.)((([0-9]|([ ...

  4. Java Web入门学习(二) Eclipse的配置

    Java Web学习(二) Eclipse的配置 一.下载Eclipse 1.进入Eclipse官网,进行下载 上图,下载Eclipse IDE for JaveEE Developers 版本,然后 ...

  5. Redis快照持久化

    Redis的持久化功能: redis为了内部数据的安全考虑,会把本身的数据以文件的形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)里边. 数据保存到硬盘的过程就被称为” ...

  6. 《python灰帽子》学习笔记:写一个windos 调试器(一)

    一.开发内容介绍 为了对一个进程进行调试,你首先必须用一些方法把调试器和进程连接起来.所以, 我们的调试器要不然就是装载一个可执行程序然后运行它, 要不然就是动态的附加到一个运行的进程.Windows ...

  7. Cocos文档案例游戏设计的梳理与分析

    导语:这是一篇新手教程,适用于已看完Cocos官方文档,但还对游戏设计.运行流程不熟悉的新人.这篇教程是对文档[快速上手]里那款名叫"摘星星"的坑爹小游戏(文档原话)流程的梳理,以 ...

  8. 闲话handle和handler

    虽然handle和handler只有一个字符之差,但在计算机的世界里,含义却大相径庭. 1. 先说说handle 北京话说"一边儿玩儿去,玩勺子把儿去","勺子把儿&qu ...

  9. 【angular5项目积累总结】一些正则积累

    /^[1-9][0-9]{0,4}$/ /^[1-9][0-9]{0,4}(,[1-9][0-9]{0,4})*$/ /^([a-zA-Z0-9_\-])+\@(([a-zA-Z0-9\-])+\.) ...

  10. Spring.Net---4、IoC/DI注入方式

    spring.net里实现了控制反转IOC(Inversion of control),也即依赖注入DI(Dependency Injection),以达到解耦的目的,实现模块的组件化.程序在调用sp ...