• 01《构建之法》阅读笔记01


    个人感受:

      我过去的做法:

      1、写程序以实现功能为主要目的,所以有时候为了功能的保证,会不太注重算法的使用。

      2、在团队项目中,习惯了个人编程,和团队成员沟通偏少。

      为什么这样不好:

      1、不注重算法的使用,会无端的浪费空间和运行时间,使程序效率大大降低。

      2、团队成员之间交流过少时,代码融合会经常出现问题,这是必然的。

      解决方法:

      1、在运行程序前不断比较各种算法的差距,择优使用。

      2、两天进行一次团队代码合并,防止出现差异过多难以融合的问题。

    重点记录:

      《构建之法》,是一本非常接地气的讲《软件工程》的书,它的作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让 我们通过 “做中学” ,来掌握实用的软件工程技术的教学计划。

      第一章《概论》,旨在说明软件工程的概念。

      软件工程可以定义为: 把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。它包括以下领域:源代码管理+需求分析+程序设计+软件构建+软件测试+软件维护+生命周期管理等,广泛意义的软件工程。还包括用户体验、用户界面设计等, 软件工程决定了软件质量。

      软件工程和计算机科学的关系,这也是容易让人迷糊的两个概念,像我们去年在高考填志愿的时候就不清楚他们的区别,到学校后发现学的东西差异也不是很大。而实质上,这是两个侧重点差异很大的概念:从知识领域上说,计算机科学包含计算机体系结构、操作系统、图形学、人工智能等,而软件工程包含软件需求、软件设计、软件维护、软件测试等。

      我印象较深的一句话是:软件=程序+软件工程。在我的理解中,程序、算法、数据结构是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式决定了一个软件企业的成败。

      说到软件工程的目标,自然就是:创造足够好的软件。这个足够好的定义,可不仅仅是没有bug,评价软件的维度包括:用户满意度、可靠性、软件流程的质量、可维护性等。

      关于软件流程的质量,指的是软件团队和开发流程的问题太多,导致团队成员无法良好协作,按时交付。换句话说也是软件团队的bug, 流程的质量往往是我们的研发过程中最容易忽视的地方,反思目前我们的现状,很多研发团队的研发流程实质是处于真空状态,开发人员甚至不知道怎样才是软件开发的正确姿势。

      书中点的很明确,理解软件工程,无非三点:研发出符合用户需求的软件、通过一定的软件流程,在预计的时间内发布“足够好”的软件、通过数据和其他方式展现所开发的软件是可以维护和继续发展的。

      第二章《个人技术和流程》,旨在说明一个合格的软件工程师是应该具备哪些技能。

      合格的工程师,开发时需要同时考虑质量和效率,与之同时需要具备的技能包括:单元测试、效能分析、个人研发流程。在书中,作者也为我们罗列出了关于单元测试的正确做法:

      ① 单元测试应该在最低的功能/参数上验证程序的正确性。

      ② 单元测试必须由最熟悉代码的人来写。

      ③单元测试过后,机器状态保持不变。

      ④ 单元测试要快。

      ⑤ 独立性—测试的运行/通过/失败不依赖于别的测试。

      ⑥ 覆盖所有代码路径

      ⑦ 单元测试应该集成到自动化测试的框架中

      ⑧ 单元测试必须和产品代码一起保存和维护

      性能分析往往是开发人员容易忽视的步骤,这也是为什么我们不停做性能优化的原因。

      个人开发流程要着眼的是整个软件开发的流程,输出高质量的产品,需要从个人开发流程上去找bug,然后不断修正,工程师才会成长,产品质量才会不断提高。

      第三章《软件工程师的成长》,旨在个人能力的衡量与发展。 

      软件系统的绝大部分模块都是由个人开发或维护的,这些单个的成员在团队中的流程,以开发人员为例,流程如下:

      1、通过交流、实验、快速原型等方法,理解问题、需求或任务。

      2、提出多种解决办法并估计工作量。

      3、其中包括寻找以前的解决方案,因为很多工作是重复性的。

      4、与相关角色交流解决问题的提案,决定一个可行的方案。

      5、执行,把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性。

      6、和团队的其他角色合作,在测试环境中测试实现方案,修复bug,如果此方案有严重的问题,那么就考虑其他方案。

      7、在解决方案发布出去之后,对结果负责每个人的工作质量直接影响最终软件的质量。

      软件开发的工作量和质量的衡量标准,无非就是:项目/任务有多大?花了多少时间?质量如何?交付的代码中有多少缺陷?是否按时交付?

      而对于交付这个定义,还有以下两种情况:

      1、在代码完成时,交付给测试人员的软件。

      2、最终发布时,交付给顾客可以用缺陷的数量来除以项目的大小。

      初级软件工程师成长阶段,需要掌握有以下几点:

      1、积累软件开发相关的知识,提升技术技能。

      2、积累问题领域的知识和经验。

      3、对通用的软件设计思想和软件工程思想的理解。

      4、提升职业技能。

      5、实际成果。

      我的感受:

      我们作为软件工程系的一名学生,要努力向这个方向发展,从而为以后成为一名多方面尽相完善的工程师打下坚实的专业基础。

  • 相关阅读:
    STM32低功耗模式与烟雾报警器触发信号电路设计
    cocos2d-x的环境的搭建
    window8.1中用户的管理员权限的提升方法
    cmd中目录的变更
    js的传值,table中tr的遍历,js中动态创建数组
    究竟什么是游戏引擎?
    大型网站架构学习心德
    关于listView 中的聚焦问题
    android6.0 适配的问题——activity销毁的问题
    文件发送成功率低的问题(2)
  • 原文地址:https://www.cnblogs.com/guobin-/p/8250469.html
Copyright © 2020-2023  润新知