• 软件工程第二周阅读作业


    提出问题


    快速通读教材《构建之法》,并参照提问模板,提出5个问题。 如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:
    • 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
    • 列出一些事例或资料,支持你的提问。
    • 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
      一个模板可以是这样:

    我看了这一段文字 (引用文字),有这个问题(提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。

    或者这样:

    我反对作者的观点(提出作者的观点,自己的观点,以及理由)。

    大学生应该能写出自己的思考, 而不是摘抄书本内容。

    提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。


    Q1:关于软件工程师的个人方面

    针对第二章中提及的个人技术

    单元技术
    效能分析工具
    个人开发流程
    实践

    第三章中提及的软件工程师的成长

    什么样的数据能说明一个软件工程师的技术和能力呢?衡量能力有哪些参数?没有量化的指标,就谈不上衡量和比较。

    那么如何硬性地评定一个IC软件工程师,怎么才能看出他的价值?

    仅仅是

    a.项目/任务有多大
    b.花了多少时间
    c.质量如何
    d.是否按时交付

    这几点就足以说明了吗?那么在两人合作甚至是团队内,又是如何评定的?


    Q2:关于软件工程师的职业发展

    对于自己选择的计算机领域,对待它的职业态度真的像您在书中所说的

    我上课、上班不用心,正因为这不是我想投身的事业,我想投身什么我也不知道,但是肯定不是正在学习的软件工程!

    那样绝对吗?我对此抱有怀疑态度。
    抛开上班这点不提,说下学生这方面。我认为一个人对于新鲜未知的事物,往往是会踌躇不前的(当然除了少数好奇心极强的),这时就需要一个“引路人”。老师往往是充当这个角色的,那么老师的上课讲解便是我认识新事物的一种手段,这时老师的上课方式往往能影响我对这门课程的兴趣甚至是认识。在这方面您觉得都做到了吗?


    Q3:关于软件工程师的思维误区

    过早优化:既然软件是“软”的,那么它就有很大的可塑性,可以不断改进。放眼望去,一个复杂的软件似乎很多的模块都可以变得更好。......容易在某一个局部问题上陷进去,花大量的时间对其进行优化,无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。这个毛病早就被归纳为“过早的优化是一切罪恶的根源”。

    这个观点似乎是片面的,写程序当然也要学会分析它,在很多时候分析程序性能可能比写程序更重要,该书中也介绍了很多代码模块的执行效率,着重优化耗时长内存大的部分会提升代码的效率。正是我们在优化一些基础代码的时候产生了数据结构和算法。如果我们可以在项目的前期就发现一些BUG或者可优化的部分却没有进行优化,等到项目越来越大(几万、几十万行),甚至发布出去之后再来优化,在成本和时间上会优于过早优化吗?试问我们在编写自己的项目的时候,我们能在不理解全局的情况下去着手吗?我们会忽视这个模块队全局的作用吗?


    Q4:关于结对编程

    在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少得多,程序的初始质量会高很多,这样会省下很多以后修改、测试的时间。具体地说,结对编程有如下的好处:
    1.在开发层析,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。
    2.对开发人员本身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。
    3.在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。

    但似乎编程更看重的是个人的能力,有的时候结对反而带来不了更高的效率。例如两个搭档的能力相差甚多,那么在结对中,拥有较高能力的程序员的工作量势必会更重,而另外一个程序员只会拉低较高能力程序员的效率,在计划时间不能保证较好地完成项目,项目的开发率既然会下降。因此,结对真的好吗?


    Q5:关于BUG于测试

    从开始编程我们就懂得了,代码尽管在优化中会越来越好,但是并非毫无缺陷,BUG是一直都会存在的。怎么判断这些BUG的重要程度或者说是解决的优先级?如何确定对某个BUG的修改就不会影响到其它的功能?怎么去理解某个BUG对于整个项目的影响?那么有没有一种比单元测试更简单、更快速的方法来保证所有单元的正确性?即使在优化方面下了足够的努力,但在发布之后还会有其它的问题。那么在维护阶段出现BUG有没有比打补丁更规范适用的方法?


    另外再说几句

    对于我们计算机专业的学生而言,我们学习了很多的专业课程,但是我相信还是有很多同学和我一样仍然对于我们现在学到的课程在之后有什么用而疑惑。大家对于理论和实践之间的联系还不太理解。在粗略读过邹欣老师的这本书《构建之法 现代软件工程(第三版)》的时候,我解决了一些一直以来纠结的问题。
    这本书说来有很多特点:
    1.图文并茂。大多教材一整本都是密密麻麻的文字,虽然不乏许多优质的内容,但是读者读来却很容易疲乏。邹欣老师的书加入有趣的图片,在有趣之外还能通过图文很好的阐释一些内容。这也是我一星期能看完这本书的原因。
    2.理论+实践。邹欣老师在讲解软件工程相关概念时,会全面地诠释了它们在实际的研发工作中是如何表现的,它们又是如何与每个开发和测试人员息息相关的。读来更容易理解。
    3.幽默而严谨。邹欣老师介绍概念时,会使用人物角色的有趣对话来使同学更深入理解。同时作为一本专业指导书,也使用数据说话,严谨认真。
    

    **【附加题】**:请将问题提交至豆瓣:https://book.douban.com/subject/27069503/, 并在博客中给出链接 在豆瓣页面的最下方 “读书笔记” 那里发言, 《构建之法》的作者会亲自答复问题 ![](https://images2018.cnblogs.com/blog/1109894/201803/1109894-20180318155729714-532124819.png)
  • 相关阅读:
    HTML图片映射
    js数组去重问题
    Mooc--五子棋(js)小结
    js跨域问题
    HTML5新特性
    js输出
    CSS display属性学习
    理财课堂日记第1天
    磁盘性能测试方法
    一个清空数据库数据的脚本总结
  • 原文地址:https://www.cnblogs.com/LianYanbo/p/8594729.html
Copyright © 2020-2023  润新知