《构建之法——现代软件工程》读后感

通过第一章,我大概了解我将要从这本书中学习什么,如何落实学习。本书的作者——邹老师,通过设定简单的人物和简短的话语,使得书本远离枯燥无味,同时还条理清晰,这加强了我看书的耐心。

1.1节通过3个简短的对话和一个生活实例,启发我对什么是程序,什么是软件,什么是软件工程,没有使用到算法需不需要学习、掌握,软件和算法,数据结构有无关联等问题的思考。仔细想想发现自己对这些概念模糊,毫无理解。通过继续往下看,我才渐渐的明白了一行行的代码是源程序,能满足各种功能的是应用软件,能保证维修的是软件服务…..也了解到了一个软件不是简简单单就能说写就写的,还需要考虑各种因素,如人们的需求,功能的可行性。当软件团队通过通力合作,克服重重困难写出软件后,需要考虑软件应用问题,是免费提供他人使用,还是收费,还是设有不同的版本再进行收费,这时候我不仅仅要了解什么是软件,还需要知道什么的软件企业的商业模式,要好好的遵循软件行业的职业道德规范。

1.1.2节通过介绍航空的发展阶段,我明白了软件的发展和其差不多,一样需要从有想法到动手实现,再到不断探索,改进,扩大,形成一个成熟的体系。通过商业软件和爱好者程序,加强了我对商业软件开发的重视,明白开发软件不能随心而行,要多从客户的角度出发,考虑问题,只有充分考虑全面,才能快速解决突发情况,减少用户损失。只有自己能善于发现问题,解决问题时,才能使得自己更进一步,而不是停留练习阶段。

1.2节详细的给软件工程下定义,介绍软件工程的特殊性,介绍软件工程中的“工程”的由来,讲述了软件工程与计算机科学的关系,软件工程的知识领域,强调了软降工程的目标——创建“足够好”的软件等等,告诉我软件开发中应用工程化原则的重要性;软件工程的魅力;不仅仅要学习好软件工程的知识还要将它和其他学科联合起来学习思考,还要多看书,多多了解软件工程的知识领域,使得自己强大起来;在开发软件时,结合时间,客户需求,争取在最适合的时刻开发出“好”的软件。

问题:1.1.2最后提到合格的软件工程师,有什么具体的标准吗?还是说能写代码,又能发现问题解决问题就可以成为了呢?我们现阶段可以从哪方面开始培养自己的开发思维和能力,向工程师迈进?

第二章个人技术和流程

如果说第一章我还有点概念,那么第二章我可以说一窍不通,什么是VSTS,什么是单元测试,什么是回归测试,还是什么是效能分析……好多的新名称,第一次看见,是那么的没有头绪。要不是百度了,仅仅看书,我完全不知VSTS——Visual Studio Team System,是由微软开发的一套具有高生产力、高集成性、可扩展的生命周期开发工具。

2.1.1节图文并茂的告诉我,单元测试重要作用,可能是自己的能力不足,相关知识了解的太少了,一边看还一边想,单元测试怎么写?写在哪里?什么时候写?就算是按照书本上的代码写,那又用什么工具写?

当全部看完时,我才明白了一点点,可以用VSTS来编写单元测试,VSTS能为我们提供单元测试的基本骨架;知道单元测试对编程程序是很重要的;在编写规格说明书时,最好能详细规划单元测试;编写时有单元测试的相关步骤,1.设置数据2.使用被测试类型的功能3.比较实际结果和预期的结果。我们在编写时要注意单元测试中的类库,要相对应。

2.1.2节通过清晰的排版强调了一个好的单元测试的标准是如何产生的。这一小节告诉我:单元测试是在最低的功能或是参数上验证程序的正确性,在一般情况下,单元测试必须由最熟悉程序代码的人来编写,每一个单元测试过后,都不受上一个的影响…..

2.1.3回归测试,我一看到这这个词语,还以为是将所以的单元测试都放入程序中进行整合,校验。没想到其本意是为了避免程序回归到原来不正常的状态,把所有发现并修复的bug找出路,一个个验证的大规模的全面的测试。

从2.2节中,我了解到效能分析,本书通过一个例子介绍了VSTS提供了效能分析工具。效能分析的两种方法:抽样和代码注入。这两种方法各有优缺点,所以我们要将两者结合使用,达到最优。本章节有许多的效能分析名词,需要我有所了解,才能体会书本所提到的专有名词。在效能分析时,我们要结合实际报告看代码被调用的次数,了解到它们的耗时间长短,要善于思考,解决某部分代码耗时长的问题,还要考虑某部分的代码所占时间的比例,不可盲目优化。2.2中的提到的Release版本和Visual Studio,我都百度了一下,感觉有点深奥,不太了解。

2.3个人开发流程,通过书本上大四学生和已工作3年的软件工程师的任务清单,我了解到从学生磨到职业的程序员,不仅仅是指编写代码时能高效率,更是不局限于某一种软件技术,有开发流程意识,花更多的时间来收集数据后,分析提高。

2.4大节叫我们动手实践,但我未能将书本上的知识了解清楚,不知道如何下手,希望VSTS写的单元测试的例子能再详细点,再多一点。

问题:a.2.1.2中提到的代码覆盖率是指单元测试能将程序中所有的代码都覆盖了,还是将代码实现的功能路径都实现,或是另有解析?

b.2.1.2中提到的单元测试应该集成到自动测试的框架中,这是如何实现的呢?

C.2.1.2中提到单元测试必须和产品代码一起保护和维护,我的理解的单元测试是在VSTS中编写的,产品代码是在某一技术软件编写的,那这两者是如何统一管理?

第三章软件工程师的成长

看了前面两章,我感觉我现阶段距离一个程序员还很远,软件工程师更是遥不可及。在学校的我学习了很多,如c语言,数据结构,面向对象……学的多而不精,前路迷茫,纵观现在我就是一个盲目学习的学生,上课时认真听了课后却没有花更多的时间去研究,遇到不懂的容易掉价死胡同,总是花很多时间闷闷思考,不到最后都没有去请教同学,去百度。看着做程序的人,都好厉害,自己就只能在一旁羡慕嫉妒恨。那现在在怎么样才能将自己对编程的兴趣提高,加强自己的编程思想?提高自己的价值?

书本上提到初级的软件工程师所需的基本条件,

1.要积累软件开发的相关知识,提高技术技能;

2.要积累问题领悟的知识和经验;

3.要对通用的软件设计思想和软件工程思想的理解;

4.提高职业技能

5.实际成果。

从1成长到5需要时间的积累外,还需要加强自己的学习力,这对现阶段的我将是一个漫长的过程。在这个过程中,我要树立正确的学习意识,对待每一个程序都要学会分析,要了解自己所编程的程序有多大,规划自己计划完成时间并于实际完成时间相对比,注重完成的质量。尽全力的将自己的软件工程师的道路建立起来。

问题:若以后毕业了,刚刚出来的我们仅仅凭借在校学习的知识是远远不够的,一般公司招聘时都会要求有一两年的工作经验或是说有经验的优先,那我们应届生该如何加强自己的价值?公司需要的是为其创造价值的人才,还有机会让我们慢慢学习吗?

第四章 两人合作

通过结对合作,令我意识到了编写程序不仅仅要自己能明白,也要便与他人查看和理解自己的程序。

4.1大节提到的代码规范,我们编写代码时要注重代码风格规范和代码设计规范,无论是类名,对象名,缩进还是行宽什么的,在结对子编程时都要有所规定,不然到后面出现的类或是对象多了,就很容易混乱,分不清楚谁是谁。要学会封装,编写函数,将功能模块具体化,减少主方法里面的代码,避免大规模的出错。

4.4中提到了代码复审,在平时编程程序时,我也会从头到尾的查看自己的代码,运行程序,若是多次结果相同,无误就可以了。没有想过发现代码错误外,还去思考逻辑是否有误,算法够不够优化等其他问题。他人能否觉得我所编写的程序是否简单易懂,能否从中学习。

4.5结对编程,两人合作,一同思考一同编写程序,有利于提高效率,相互学习。所以要学会4.6节提到的合作的不同阶段和技巧,一开始探索项目时,中途遇上不可解决问题时,后期简单的复查时,可以独立思考,期间思路清晰,沟通良好时,一起结对编写,加强合作。在合作中在客观全面的对待自己的结对伙伴,懂得相互鼓励,相互学习。

问题:a.本章4.3.3中的错误处理和第二章提到的单元测试一样吗?

b.本章4.3.3中提到的断言是什么?仅仅从书上写的代码,我理解就是判断语句,这样的理解可以吗?

第五章  团队合作

结对编程,两个人好交流意见,产生分歧不大,换做是团队合作会怎么样呢?会不会尚未从结对编程中脱离出来,对团队合作感到混乱,不会分工,不便于交流?所以我们要学会需找合适的团队合作模式和开发流程。书本上提到了很多的团队合作模式和开发流程,都各有优缺点。仅仅从校园合作的角度出发,我认为使用功能团队模式更适合彼此合作交流,而开发流程在校园合作阶段,容易被忽视或是考虑的不全面,大伙要着重培养。

时间: 06-15

《构建之法——现代软件工程》读后感的相关文章

《构建之法—现代软件工程》读后感

大家好,我是一名软件工程的在读大学生,之前对于软件工程并没有太大的认知,想着大概也就是敲敲代码,写写文档之类的,并没有进行太过深入的了解,但自从阅读了邹欣老师的<构建之法—现代软件工程>,似乎为我打开了关于软件工程的另一扇新世界的大门,让我对此有了不同的认识.       整本书中主要讲述了软件工程的基本概述,个人技术以及流程,软件工程师的成长,团队协作及流程,需求分析项目经理,软件设计与实现,用户体验以及软件测试,软件质量保证以及关于IT行业的创新.我们常常宣称软件工程非常的重要,它甚至背负

读《构建之法 现代软件工程(第二版)》

1.读后感: 对于计算机相关专业的学生来说,我们学习了很多的专业课程,像编程语言.算法.数据结构.编译原理.软件工程等.但是我相信很多同学和我一样仍然对于我们现在学到的课程在之后有什么用心存疑惑.也就是说,大家都觉得理论和实践之间有着不可逾越的鸿沟.然而在读到邹欣老师的这本书<构建之法 现代软件工程(第二版)>的时候,我解决了我一直纠结的这个问题. 因为作业要求,第一遍是快速阅读,虽然仍然对书里的一些内容有些疑问,但是仍然觉得这本书有很多特点: (1)文字+图画:很多专业书都有一个问题就是整本

构建之法现代软件工程(第二次)

构建之法现代软件工程(第二次) 单元测试是什么? 单元测试是为了让各个模块的质量能得到稳定的,量化的保证的一种有效解决方案.(VSTS) 好的单元测试的标准是什么? 1.单元测试应该在最基本的功能/参数上验证程序的正确性 2.单元测试必须由最熟悉代码的人(程序的作者)来写 3.单元测试过后,机器状态保持不变 4.单元测试要快 5.单元测试应该产生可重复,一致的结果. 6.独立性--单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性. 7.单元测试应该覆盖所有代码

《构建之法——现代软件工程》

在读完邹欣老师的<构建之法——现代软件工程>后颇有感想,这本书的厉害之处是把软件的开发方法写的十分的清晰.有趣,将每一章的理论和知识点进行了归纳,举例说明,故事与企业相结合相联系,让我们进行了一次头脑风暴.在每一章要点中有重点字眼的加黑,图文搭配更加的生动形象,在阅读完代码.文字之后的图片不禁让人会心一笑.它结合了作者自身的开发经验,书中创造了一个虚拟环境,通过人物的对话和活动,讲述不同人物在软件工程中等不同角色和作用,展现出了软件工程这么学科,文中的代码有很强的实用性,更容易让人接受,让人有

读《构建之法-现代软件工程》前三张后感

刚开学的第一天,学校发下了书本,有六本书,当时会在上这门课的头一天晚上去看看书本的内容,去大概了解这门课程.其中有一门课程的书吸引了我,感觉这本书和其他的教科书有所不同,它不像其他书一样那么的死板,除了公式,就是理论,没什么奇特的地方.而这本书却很奇特,它不但吸引了我,还让我觉得很有趣,这本书是邹欣老师写的一本书,一本胜似小说的书,平时爱看小说的我,就开始喜欢上了这本书,这本有关软件工程的小说书. 到现在,老师也上了好几次课,我们也对软件工程有了一些初步的了解,而软件工程这本书,我也大概的看完了

快速阅读《构建之法——现代软件工程》

2017年4月1日,我借阅了<构建之法--现代软件工程>一书,2017年4月13日上午终于快速读完了一遍.书中包含的内容丰富,其中大量的网上链接没有阅读.在我看来,读这本书应该先通览全篇,不能被大量的链接在第一次阅读的时候就打断.网上的链接一个接一个,这样会导致我忘记了最初的阅读目的.也许,这就是万维网的一个弊端吧. 速读<构建之法--现代软件工程>记录日程如下: 星期日 星期一 星期二 星期三 星期四 星期五 星期六             1开始阅读 2 3第二章第三章 4 5

构建之法现代软件工程(第五次)

构建之法现代软件工程(第五次) 这周我阅读了<构建之法>第六第七章 敏捷开发的原则: (1)尽早并持续地交付有价值的软件以满足顾客的需求: (2)敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势: (3)经常发布可用的软件,发布间隔可以从几周到几个月,能短则短: (4)业务人员和开发人员在项目开发过程中应该每天共同工作: (5)以有进取心的人为项目核心,充分支持信任他们: (6)无论团队内外,面对面的交流始终是最有效的沟通方式: (7)可用的软件是衡量项目进展的主要指标: (8)敏捷

《构建之法—现在软件工程》心得体会

作为软件工程专业的一员,我觉得自己并没有学习到太多跟专业有关的知识,甚至不是很清楚的了解“软件工程”这一词的意思,每逢家中的长辈问学的什么专业,我都需要用很白化的词语解释,就是开发游戏的软件,纯属敷衍了事.因为本人自己也不太清楚. 本学期有一门课程叫——软件测试,可此课程居然有两本教材,后经老师介绍后,才知道<构建之法——现在软件工程>这本书由我们自己去阅读.起初由于无聊,我把<构建之法——现在软件工程>这本书拿出来看,没想到根本停不下来,它把软件开发方法讲得清晰有趣,书中还遇用许

构建之法 现代软件工程

这篇是计算机类的优质预售推荐>>>><构建之法 现代软件工程(第二版)> "做中学 Learning By Doing"的现代方式教授软件工程,李未院士鼎力推荐,众多软工教师一致好评,微软研发总监邹欣力作 编辑推荐 1.作者的讲授方法非常新颖,符合现代软件工程的学习和训练规律,在各大高校计算机教学中取得很好的效果和反馈. 2.作者知名度很高,具有深厚的微软工作背景,是软件工程产学结合的典范. 3.作者在博客园开设了专题博客,提供教学指导.教学素材以及

浅谈对《构建之法——现代软件工程》第一章的理解

---恢复内容开始--- 一.精读第一章后对专业术语的整理 <构建之法——现代软件工程>一书第一章向我们主要介绍了计算机科学的领域.软件工程与计算机科学的关系.软件的特性以及软件工程的定义与组成部分. 1.通过对第一章的学习,我们了解到了软件的 几种分类: 系统软件:操作系统.设备驱动程序.工具软件等 应用软件:办公软件.通信软件.游戏视频软件等 恶意软件:软件病毒等 以及软件的几种特殊性:1.负责性:2.不可见性:3.易变性:4.服从性:5.非连续性: 2.软件工程与计算机科学的关系 首先,