zoukankan      html  css  js  c++  java
  • 《构造之法》阅读笔记一

      个人感受部分:

      01.在读这部分之前,我认为程序=软件,会写程序就等于写出了软件,以为所谓的bug就是让控制台不再报错,程序可以正常运行。

      02.综合书中所讲,我明白写一个软件并不等于程序的堆积,其中涉及很多问题。“软件=程序+软件工程”,如果我们仅仅将代码堆积,做出来的软件必定是没有灵魂的,自己都不知道能够做什么的软件别人一定不会接受。

      03.以后在写软件的时候一定要认真考虑布局,用户需求,尽最大努力保证软件的健壮性,可靠性,可维护性,做一个真正的软件。

      读后感:

      这次阅读笔记主要包括整本书前言和概论,我想它必定与所有书的前言和概论一样,告诉我们作者的真是心里写照,以及他想要通过这本书告诉我们的内容。在注册博客园一年多的时间以来,我的粉丝数寥寥无几,当然我也很明白其中的原因。但后来我渐渐的发现,几乎我的每一篇博客都有一个名叫SoftwareTeacher的用户评价,我很是困惑,谁有时间和经历来看我这个小白中的小白的博客呢?我的博文也都是最简单的思路和写的乱七八糟的代码。但确实被人关注的感觉是很好的,他的每一个评论也都引发了我的思考,让我继续修改着博客。

      后来我知道SoftwareTeacher是一个在IT界有名的前辈,直到这个学期我在《软件构造》这本书的封皮上看到邹欣老师的名字时才恍然大悟。但是我不能明白,为什么在这个老师几乎与学生课后便毫无瓜葛的大学时代,还有这么一个人还在默默地坚持着激励督促着一批批菜鸟。建民老师的教学方法独特,我也在一次次痛苦中喊着,骂着。但每次学期结束,我都会惊人的发现我的技术和水平会到达一个比开学预期还要高的水平。现在的人普遍眼高手低,我到现在都这样看待自己,但就在建民老师的手底下,就这样不知不觉在折磨之中成长了。

      好了,言归正传。软件工程说到底还是一门工程学科,说到底就是重实践的学科。但是大学特殊的教育现状决定了我们没有太多的机会去实践,课堂上教会我们的语法和算法不足以让我们真正的写出一个好的软件,这是整个中国大学的现状。《构建之法》整本书就是建立在理论和实践结合的基础上,面向实战教学,强调做中学。很庆幸的是我们的建民老师十分认同《构建之法》的教学思想,他的每一节课堂都遵守了做中学的规则,让我们在大量的练习当中成长自己。

      大多数人喜欢听故事,少有人喜欢长篇大论的理论灌输。作者抓住了这一点,这本书不是干巴巴的讲述理论和原则,也脱离了让读者乏味的怪圈。读这本书的感觉就是仿佛将自己代入了作者精心构建的场景之中。邹欣老师在本书中创造了一个虚拟的环境:王屋村软件学院、移山公司和一些人物(阿超、果冻、消费、小李),我通过读他们的故事,就好像在读发生在自己身边的故事一样,因为我们都和这些虚拟人物一样,普通但努力着。阿超:有几年实战经验的项目带头人;国栋:外号“果冻,喜欢引进据典”,对知识有些消化不良;小飞:两年编程经验,对任何事情都有自己的看法,爱唱歌,喜欢足球和军事;小李L有几年项目管理经验的产品经理。这些可爱的人物将伴随着我们读完整本书籍,我很喜欢他们,也很喜欢读他们的故事。

      之前在看《大道至简》的时候就接触到了一个程序员人人都知道的公式:“程序=数据结构+算法”。在强调实践的今天,程序不意味着就是结束,一个个独立的程序不能有效的组织起来变成一个软件的话,其意义将大大打折扣。这就引发了我们的思考,软件行业来一生存的软件,是不是也存在着这样一个类似的公式去描述呢?作者在章节题目上就给了明确答案:“软件=程序+软件工程”。软件工程是一门很大的学问,我虽然是一名软件工程的学生,但我不是很明白软件工程究竟是怎样一个概念。作者详细的阐述了软件开发的不同阶段,希望通过这些来让我们体会软件工程究竟是什么,能用来干嘛。一,玩具阶段。我们小的时候特别是男生都喜欢玩纸飞机,我们总会在纸飞机起飞之前嘴对着纸哈一口气,虽然不明白有什么科学依据,但是几乎所有人都这么做。在跟着纸飞机奔跑,欢呼的时候,纸飞机也带着我们小小的梦想,飞过了童年,转眼到现在。二,业余爱好阶段。多年以后,我们长大了,不再满足于玩耍纸飞机,而是真正的思考如何飞上天空。这时候有的人异想天开,用气球带着凳子飞上了天,是真的飞上了天空,但是还是离在天空中自由飞翔还差很远。三,探索阶段。1903年冬天,经过多年的努力,莱特兄弟在海滩上试飞了他们的飞机,但这次的飞行仅仅持续了12秒,但仍然是具有历史意义的探索。4,成熟的产业阶段。现在,航空业已经成为了一个巨大的产业,每天都有上百万人在这个行业工作。你看,我们从最初的纸飞机谈到了大飞机,航空业,这跟程序、软件、软件工程、软件产业的道理是一样的,都将经历这些阶段。

      前面大篇幅都在谈工程,我们熟知的工程有土木工程,材料工程,软件工程等等。所以另一个关键点一定在软件上面。软件到底是什么,软件是可以运行在计算机及电子设备中的指令和数据的有效集合。软件和人类制造出来的其他产品比较,有很多的相同点,也有许多的不同点。作者着重谈了软件开发的特性:1.复杂性。软件可以说是人类创造的最复杂的系统类型。大型软件(操作系统、办公软件、搜索引擎)有超过百万行的代码,上万个不同的文件。2,不可见性。软件工程师能直接看到源代码,但是源代码不是软件本身。软件以机器码的形式告诉运行,工程师是看不到的。3,易变性。软件看上去很容易修改,修改软件感觉比修改硬件容易多了。4,服从性。软件不能独立存在,它总是要运行在硬件上面,它要服从系统中其组成部分的要求,它还要服从用户的要求和行业的要求。5,非连续性。人们比较容易理解连续的系统:增加输入,就能看到输出相应的增加。但是许多软件系统却没有这样的特性,有时候输入上很小的变化,会引起输出上极大地变化。

      从开始学习到现在, 我们都在追求做一个好的软件,这是我们最简单也最实在的目标。那么什么好的软件?软件没有bug不代表这就是一个好的软件,但这恰恰是大多数学生的追求。和软件工程打交道的专业人士都知道软件有bug,bug的多少可以直接衡量一个软件的开发效率,用户满意度,可靠性和维护性,例如:用户满意度,可靠性 ,软件流程的质量,可维护性。我们现在的阶段可以简单的以这几个层面来判断自己的软件作业是否合格,来审查自己的软件项目。

      

      

      

  • 相关阅读:
    Codeforces Round #455 (Div. 2) A. Generate Login【贪心】
    Codeforces Round #315 (Div. 2)【贪心/重排去掉大于n的元素和替换重复的元素】
    CSU-ACM2018寒假集训选拔-入门题
    Codeforces Round #454 C. Shockers【模拟/hash】
    Nowcoder Girl 参考题解【待写】
    2017吉首大学新生赛
    P1450 包裹快递 RP+14【二分】
    NewCode
    2017年浙江工业大学大学生程序设计迎新赛决赛题解
    Codeforces Round #451 (Div. 2) B. Proper Nutrition【枚举/扩展欧几里得/给你n问有没有两个非负整数x,y满足x·a + y·b = n】
  • 原文地址:https://www.cnblogs.com/Aduorisk/p/10971550.html
Copyright © 2011-2022 走看看