《构建之法》学习书摘(一)

构建之法

第一章 概论

  1. 程序=数据结构+算法;

  2. 简单的程序可以扩展为满足各种功能的应用软件,再扩展到一个保证服务质量的软件服务

  3. 一个复杂的软件不但要有合理的软件架构、软件设计和实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数,这些都是构建的过程;

  4. 我们需要一些工具、流程和文档来保证程序的正确性,这些工具、流程应达到很高的质量,才能保证开发出的软件的质量,这称为软件质量保证,具体的验证过程称为软件测试;

  5. 软件团队要从需求分析开始,把合适的需求梳理出来,然后开展后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到最后发布软件;

  6. 软件在运行过程中,会发生这样那样的问题,我们需要解决这些在软件运行过程中发生的问题,这称为软件维护

  7. 以上的一系列过程组成了软件生命周期;在这一个周期中,负责软件项目的人,就是项目经理;

  8. 在相关法律完善之前,软件行业还有一个行规,即应该有**职业道德规范来约束**IT人的行为;

  9. 软件=程序+软件工程;

  10. 构建管理、源代码管理、软件设计、软件测试、项目管理等是软件工程的核心;

  11. 软件企业=软件+商业模式;

  12. 软件开发的不同阶段:

    1. 玩具阶段:尝试各种“Hello World”程序,写程序练习数据结构、算法等;
    2. 业余爱好阶段:使用JS、JSP等语言写写网站;
    3. 探索阶段:钻研新技术、应用新技术在软件行业创新;
    4. 成熟产业阶段:银行软件系统、互联网搜索行业、电子商务系统、操作系统;
  13. 软件工程是把系统的、有序的、可量化的方法应用到软件开发、运营和维护上的过程;

  14. 软件工程包括:软件需求分析、软件设计、软件构建、软件测试、软件维护等领域;

  15. 软件的五大特性:

    1. 复杂性:软件各个模块之间的各种显性和隐性的关系,随着系统的成长和模块的增多,这些关系往往成几何级数增长,而理解和运用这些复杂性的人并没有太大的变化;
    2. 不可见性:软件的源代码并不是软件本身;软件以机器码的形式高速运行;
    3. 易变性:软件的变化包含两种情况:一是让系统更好的工作,二是让系统干更多的工作,但是与此同时,正确地修改软件是一件很困难的事情;
    4. 服从性:软件的运行受到硬件的影响、受到人的影响甚至还会受到环境的影响;
    5. 非连续性:连续的输入,不一定会带来连续的增长,也就是说系统的输入和输出关系不是那么明确;
  16. 哲学家的宗旨是:我思过我在;科学家的宗旨是:我发现故我在;工程狮的宗旨是:我构建故我在;

  17. 软件工程的一个重要任务就是在时间、成本等多种约束条件下决定一个软件在什么时候能“足够好”,可以发布;

猜你喜欢

转载自blog.csdn.net/slx3320612540/article/details/81367664