zoukankan      html  css  js  c++  java
  • 读《构建之法》1-5章有感

    这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178

    第一章:概论

      在以往的学习当中,我们可得知软件是由程序和软件工程组成,即软件=程序+软件工程。而程序则又由数据结构和算法组成。而这一章则更加具体生动形象的向我们展示了软件的组成,同时也表明了软件的特殊性,软件工程与计算机科学的关系,软件工程的目标等。

          在阅读到1.1节时,有这样一段话使我陷入了沉思:“我用C语言实现了二叉树的遍历算法,在这里,二叉树是数据结构,遍历的实现细节是算法,C程序是结果。但是这个程序有什么实际用处呢?在Java和其他一些语言中,似乎没有指针,那我可以不必了解二叉树么?”其实这个问题早在之前就使我困惑了,刚开始学数据结构时,一些老师、师兄师姐都说过数据结构时非常非常重要的,即使他非常难学,但我们还是得去学会掌握它,但是现如今Java已经把数据结构封装的很好了,那我们是否可以这样说:我们不必太深入去学习数据结构呢,只需要对数据结构有所了解就可以?因此,对此问题我查了一些资料,但是资料上对这个问题也是人云亦云的,有的说:“java把数据结构封装的这么好,我们有必要再去深入研究数据结构么?当然研究是没有坏处的,我认为没必要看的那么重要,研究它就好比去研究java的源代码,不要刻意去研究!java已经封装的很好了,我们不是比技术的,不是比算法的,不是比面子的,我们要的只有一个:实用!”也有的说:“数据结构就犹如武侠小说中的内功修为,而java等语言知识招式。如果内功修为不够,懂得的招式再多也不会有太大的杀伤力”。而且书本上也说了:程序(算法和数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式影响了一个软件企业的成败。其实最后的结论看起来已表明了数据结构是非常重要的,但是说实在的,我还是不太能够了解到深入学习数据结构的重要性,毕竟“实用”这两字使我感到了困惑了。

    第二章:个人技术和流程

      第二章向我们介绍了单元测试,回归测试,效能分析,个人软件开发流程。

      单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。因此可知单元测试对于软件开发过程是相当重要的。在阅读2.1.2时,文章写:单元测试必须由最熟悉代码的人(程序的作者)来写。这使我有些困惑,如果由程序作者来写的话,会不会存在着一种可能,由于程序作者在敲代码时没有考虑到特殊情况的发生,进行单元测试时,由于程序作者的定向思维的原因,没有考虑到其余情况的发生,从而使得单元测试不够完美。毕竟不是说好的单元测试的标准是:不能只测试一条正确执行路径,要考虑到所有可能的情况 吗?同时加入代码功能这么简单,逻辑也不复杂,我们是否还需进行单元测试呢?

    第三章:软件工程师的成长

      一个优秀的软件工程师必须具有认真的职业态度和素养,正如文章所告诉我们的:“如果我们对职业有认真的态度,那就能发现很多证明个人能力的方式”。Emanuel Derman就他的职业经历说过:“任何事情,当你仔细研究,你就会理解他的量和质;当你对一个领域的神韵足够了解,并开始连接这个领域的表现形式和实现细节的时候,任何一个领域都是会变得引人入胜的”。同时文章也跟我们表明了专和精的关系,告诉了我们什么是“全栈工程师”——是指掌握多种技能,并能利用多种技能独立完成产品的人。那么我们是否都可以成为一个全栈工程师呢?的确可以,但又不是每个人都能够成为全栈工程师的。通过查找资料,我们可知不能成为的原因:

      1、基础知识太渣,急于求成表现,盈利

      2、坐井观天,会一项或者几项技能之后,自信心膨胀

      3、技术浮于表面,经不起细节和解决具体问题方案的推敲

      4、缺乏对解决问题的深度思考和负责人的能力

    普通人与全栈工程师的区别在于:

    普通人:全栈 = 全干 = 啥都会 = 啥都不会

    真全栈:全栈 = 全都不干 = 全都有解决方案 = 各个行业都能干

    因此:在我们一些人一开始就要喊做全栈时,我们必须得看看自己到底行不行,再来改变下自己的定位。

      在阅读3.3.1节时,我们得知职业发展之路之一为考级之路,但是其真的能够表示我们的真实实力吗?在我看来,这其实不太可以,毕竟就全国计算机等级考试而言,只要我们多做题,就能够在考试的时候考到原题,倘若有些人去死记硬背的话,照样能后拿到证书,但这样的话能够说明实力吗?因此:证书对于我们大学生来说是很有用的吗?或者说是非常必要的。这是我想提的问题。

    第四章 两人合作

      凭借一个人完成一个大型软件往往是不可能的,软件都是在相互合作中完成的。因此在开始设计代码之前,我们必须得统一代码格式,实现代码设计规范,为以后两个人的合作提供良好的基础,不规范的代码格式会增加双方阅读代码的时间。在阅读4.5.2时,我们可知“每人在各自独立设计、实现软件的过程中不免要犯这样那样的错误。在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中水平较高的那一位,这样,程序中的错误就会少很多,程序的初始化质量就会高很多”。但是假如两个人在合作过程中,产生了分歧,那他们又得该如何解决呢?是否继续合作下去还是分道扬镳呢?

    第五章 团队和流程

      通过这一章的学习,使我了解到了软件团队的模式和开发流程的种类及其优缺点。只有拥有了恰当的团队模式,才能更加快速有效的生产出新的“产品”。软件开发过程的核心思想是将软件开发过程分为若干个阶段,每个阶段都遵循“高内聚、低耦合”,每个模型都有其使用的适用范围。那么团队模式与团队的开发模式又有什么关系呢?

  • 相关阅读:
    oracle-查询执行速度慢的sql
    oracle 锁表的处理。
    linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)
    【转】soapUI和Jmeter的接口测试结构区别
    什么是探索性测试?
    loadrunner动态从mysql取值 [需要下载跟数据库服务器一致的dll,32位或64位]
    myeclipse中disable maven nature怎么恢复
    Eclipse+Maven创建webapp项目<一>
    Loadrunner
    自动化测试,基于selenium/appnium 学习
  • 原文地址:https://www.cnblogs.com/zy5250/p/9752220.html
Copyright © 2011-2022 走看看