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

首先,在书的开头就介绍了软件工程是一门枯燥且学习量大的课程,所以为了提高同学们的学习效率,提出了“做中学”的学习方法。
第一章从“软件=程序+软件工程”开始讲起,掺杂了诸如二叉树、如何区分一名好的程序员和上班后从事这方面工作的经历等例子。详细的说明了,作为一名程序员在软件工程这方面的道路上面会遇到的问题,如何学习,如何成长。软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程的领域,定义等基本知识在第一章也介绍的非常清楚。
第二章讲了单元测试,回归测试,效能分析工具。这一章围绕这3个方面讲的很详细,就跟手把手教学一样,不过也并不是很容易弄懂,读书的时候也只能带过,想要弄懂可能还是肥自己利用其他的方法寻找答案。介绍了,测试的工具,测试的方法,分析的方法。最后简短的讲了个人开发的方法和实践。
第三章主要讲的就是一个软件工程师的成长,从个人能力出发软件工程师所要具备的条件,分别是:1.积累软件开发相关知识,提升技能技术。2.积累问题领域的知识和经验。3.对通用的软件设计思想和软件工程的理解。4.提高职业技能。5…实际成果。这让我认识到自己离一个软件工程师还有很远的距离。先要衡量自己作为软件工程师的个人能力,然后努力提升发展。当我们走入职场,我们发展,要学会如何在职场中发展。书中讲了考级之路,Steve McConnell的成长之路,大公司的职业成长。最后,从玩魔方的经历引入,讲述了,技能方面的知识。
第四章讲诉了在我们写代码是应该要注意代码的规范,不能够只能让自己看的懂,也要让别人看得懂。以后讲述代码复审,从“为什么要代码复审?”、“代码复审的步骤”、“代码复审后该做什么”等问题入手,详细讲述了该做什么。以后,讲到了结对编程的重要。在合作中在客观全面的对待自己的结对伙伴,懂得相互鼓励,相互学习。
第五章为我们介绍了团队合作的几种模式,以及团队中的几种开发流程。让我明白从现在开始就应该着重培养自己的团队合作意识。首先从团队和非团队的对比入手,举例说明了团队合作分的重要性。介绍了各种各样的团队合作模式。然后介绍了开发的模式,比如,写了再改模式、瀑布模型。然后为了解决在瀑布模型中遇到的各种各样的问题然后在实践中展开了变形,诸如,生鱼片模型,大瀑布带着小瀑布,子瀑布。
第六章主要讲敏捷流程,先是从历史发展的角度来向我们介绍,敏捷是怎么产生的。之后介绍了敏捷使用的方法。因为这一章看的不是很明白,所以百度了一下,在这里补充一下遵循的原则,我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。工作的软件是首要的进度度量标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。不断地关注优秀的技能和好的设计会增强敏捷能力。简单是最根本的。最好的构架、需求和设计出于自组织团队。每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
第七章讲MSF的发展,MSF的基本原则,MSF团队模型过程模型,敏捷开发模式和CMMI模式。
第八章讲需求分析,从软件开发团队从以下步骤获取需求:1.获取和引导需求(Elicitation)2.分析和定义需求(Analysis & Specification)3.验证需求(Validation)4.在软件产品的生命周期中管理需求(Management)。对于软件的功能从产品功能性的需求、产品开发过程的需求、非功能性需求、综合需求。然后从调查的角度理解用户的需求。
第九章从PM是啥?这个问题开始。讲述了PM应该干什么,怎么才能减少风险,他的能力要求还有任务是啥。
第十章主要讲了典型的用户和典型场景,主要讲了Visual Stidio的典型用户,然后再讲每个典型用户应该有一个典型目标,对于每一个目标,列出达到目标所必须经历的过程,这就是场景,也可以叫故事(Story)。
第十一章写了关于的设计与实现,其中包括代码完成,开发阶段的日常管理。
第十二章写了关于软件的用户体验,用户体验的要素:1.用户的第一印象。2.从用户的角度考虑问题。3.软件服务始终记得用户的选择。4.用户的体验和质量。
第十三章主要讲软件测试,从软件测试的原则各种测试的方法来讲。一,测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。二,程序员应该避免检查自己的程序,软件测试应该由第三方来负责。三,设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下不要制造极端状态和意外状态。四,应该充分注意测试中的群集现象。五,对策就错误结果进行地一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格的确认,是否真的存在这个问题以及严重程度等。六,制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成也有一个高水平的测试。七,妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
第十四章主要就是围绕“软件质量=程序质量+软件工程质量”这一等式来讲软件的质量保证。
第十五章讲在软件发布之后,我们要多多总结,弥补之前的不足,多多交流。 第十六章就讲到了整个IT行业,主要的思想就可以从G-number这个游戏领悟:1,赢者通吃。2,螳臂当车。3,只先一步。 我们知道这游戏玩次数越多,答案越小。所以把握好创新的时机是非常重要的。 第十七章讲人、绩效和职业道德。从猪、鸡和鹦鹉的故事开始入手总结到还是人的问题,然后把人分为诸类,我们需要科学的管理,这样才能走良好的绩效。由团队效率和团队影响率可以知道高效的团队可以获得最好的效绩,而假团队则陷入泥潭。作为从业者要有良好的职业道德,有以下原则:原则1 公众软件工程师的行为应与公众利益一致。原则2 客户与雇主软件工程师应以其客户和雇主利益最大化的方式做事,与公众利益保持一致。原则3 产品软件工程师应当确保自己的产品以及相关的修改满足最高的专业标准。具体来说,软件工程师应当:1.力求高质量、可接受的成本和合理的计划;确保雇主和客户了解并同意你做的重要折衷,并让用户和公众也能了解这些折衷。2.确保在开展或提议任何项目时,设定恰当、可行的目标。3 识别、定义和解决各种与项目相关的道德、经济、文化、法律和环境。4 .确保自身有足够的资质去参与或准备参与相关项目,这里的资质由相应的教育、培训和经验组合而成。5.确保在参与或准备参与的项目中采用得当的方法。6. 只要条件许可,就应当采取最合适的专业标准去完成手头的任务,除非有道德或者技术上的正当理由来支持你不这么做。7. 力求完全理解参与开发的软件的规格要求。8. 确保软件的规格说明书是完善的、满足用户需求的,也经过了恰当的批准流程。9. 对于任何正在或计划进行的项目,要在费用、进度、人员、质量和产出上进行合乎实际和量化的评估,而且要说明评估的不确定性。10.确保项目的程序和文档经过足够的测试、调试和复审。11. 确保项目文档齐全,包括所有发现的问题和解决的方法。12. 致力于开发尊重用户隐私的软件和文档。13.留心只用合乎道德和法律的手段去使用准确的数据,并且只按照被适当授权的方式去使用这些数据。14.维护数据的完整性,注意过期和有问题的数据。15. 对于任何形式的软件维护工作,要具备同开发新软件时一样的专业精神。原则4 判断软件工程师应当具备完整且独立的专业判断。原则5 管理软件项目的经理和领导人应该提倡并亲自采用符合道德规范的方法来管理软件的开发与维护。原则6 职业在与公众利益一致的原则下,软件工程师应当保证其职业的诚信和声誉。原则7 同事软件工程师应当公平对待同侪,并予以支持和帮助。原则8 自身软件工程师应当终生学习以提高自身的专业水平,并在工作实践中推动落实道德准则。
通过读完这本书,我已经对软件工程这门课程有了初步的认识,的确复杂且工作量大,所以要更加认真负责的学习,并且多多实践,运用“做中学”的学习方法。

发布了2 篇原创文章 · 获赞 1 · 访问量 67

猜你喜欢

转载自blog.csdn.net/qq_44761233/article/details/104446405