zoukankan      html  css  js  c++  java
  • 构建之法阅读笔记01

    构建之法-1章概论

    第一章概论主要介绍软件工程涉及的知识点,名词等内容。

    在读《构建之法》之前,我对软件的一些知识点和名词不是很了解,在我看了《构建之法》之后,就把我看到的认为重要的记录了下来,

    一.软件=软件工程+程序

    1.  程序就是指的源程序,就是一行行的代码。程序是建立在数据结构上些算法,还要对数据进行操作,这些数据可以是静态或者是动态的。

    软件还需要把数据构建成机器能懂的可执行代码,构建不仅仅是cclink命令,一个复杂的软件要有合理的软件架构,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,链接参数,这些都是软件构建的过程。

    1. 源代码管理或者配置管理:我们需要修改源代码来实现不同的功能,例如有些程序需要配置不同的界面,运行在中文,英文或者其他语言的操作系统上,有些程序还有32位,64位,这些是源代码管理有时候也叫配置管理的问题。

     

    1. 软件团队的完成软件的过程:需求分析,设计(软件架构),实现(写数据结构和算法),测试到最后发布软件。
    2. 程序理解:新的成员需要尽快读懂已有的程序,了解程序的设计。
    3. 软件维护或服务运营:团队的新老成员一起工作,修复各种各样的问题。
    4. 这一系列的过程叫做软件的生命周期。
    5. 软件=软件工程+程序   扩展推论:软件企业=软件+商业模式

     

    二:软件开发的不同阶段。(用航空产业作比较

    1.玩具阶段:例如制造纸飞机的过程。

    2.业余爱好阶段:肯特。柯西,一位美国俄勒冈州的居民,用100多个气球和一把椅子飞上了天。

    3.探索阶段:美国的莱特兄弟,制造出了飞机。

    4.成熟的产业阶段:现在的航空行业。

     我们现在的状态就处于第一阶段,在Java上编一些代码,实现其中的几个功能,运行出来没有错误,就算完成任务了,既没有目的,也不具有实用性,没有数据的保存,这些只能作为代码编程最基础的东西,虽然不可或缺,但是也应该在

    实现第一阶段的基础上再多花一些时间去研究它,学会追根溯源,这样我们才会收获更多。

    三:软件工程是什么?

    1.软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。

    2.软件工程包括以下领域:软件需求分析,软件设计,软件构建,软件测试和软件维护。

    3.软件工程和下列的学科相关:计算机科学,计算机工程,管理学,数学,项目管理学,质量管理,软件人体工学,系统工程,工业设计和用户界面设计。

    4.软件工具:工程师自行开发的工具,软件团队独有的工具也有公开的软件工具,例如编译工具,源代码管理工具,源代码编译工具。也有一些软件工具系统等等。

    5.软件是可以运行在计算机及电子设备中的指令和数据的有序集合。

    6.软件形式:系统软件:操作系统,设备驱动程序,工具软件。

     应用软件:用户使用他们来完成工作,从管理核电厂到写文章,或者是通信,游戏,浏览网页,播放视频。

     恶意软件:软件病毒等。

    四:软件开发的难题

    1.复杂性:软件是人类创造的最复杂的系统类型,软件的各个模块之间有各种显性关系或者隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以及和技术的速度的增长。

    2.不可见性:软件工程师能看见代码,但是源代码不是软件本身,工程师看不到自己的源代码如何具体的在用户的机器上被执行。

    3.易变性:软件看上去很容易修改,修改软件比修改硬件容易得多,的那是正确的修改软件是一件很困难的事。

    4.服从性:软件不能独立存在,他总是要运行在硬件上面,他要服从系统中其他组成部分的要求。

    5.非连续性:人们比较容易理解连续的系统,但是许多软件系统却没有这样的特性。

    这些特性前四个是佛瑞斯。布鲁克斯提过的,第五个特性是瓦茨拉夫。拉里奇提过的。

    我们现在能体会到的软件编程中的难题只是其中的一小部分,比如易变性,代码很容易进行改变,但是要想使代码能够正确的按照我们需求的功能来实现他,就不是那抹容易了,还有不可见性,

    我们能看到只是代码,而不是软件本身,我们只能通过代码来实现所需的功能,至于是怎么执行的,我们都接触不到。

     随着以后的学习和编代码的积累,我们会面对更多的难题,从而会对这些性质能有更深的了解。

    五.计算机科学和软件工程的不同侧重点。

    计算机科学

    软件工程

    发现和研究长期,客观的真理

    短期的实际结果(具体的软件会过时)

    理想化的

    对各种因素的折衷

    确定性,完美,通用性

    对不确定性和风险的管理,足够好,具体的应用

    各个学科独立深入研究,做出成果

    关注和应用各个相关学科的知识,解决问题

    理论的统一

    百花齐发的实践方法

    强调原创性

    最好的,成熟的实践方法

    形式化,追求简明的公式

    在实践中建立起来的灵感和直觉

    正确性

    可靠性

      看完这个后,我对计算机科学和软件工程之间有了一个更好的认识,计算机科学是偏向于理论,比较重视理论,耗时更长,研究更深入,追求完美,而软件工程则不需要长期的探究,比较注重实践,

    而且生命周期不会太长,注重的是解决问题。

      总结:通过《构建之法》的阅读,了解了很多以前不知道的名词和知识点,同时对软件工程有了一个更深的认识,了解了计算机网络和软件工程的区分,这本书很好,相信我以后可以收获更多。 

      建议:我们要学会对所学过的内容进行总结和对比,这样会有助于我们对内容的掌握。

  • 相关阅读:
    我总结的面试题系列:kafka
    RabbitMQ大厂面试题
    [Algorithm] 并查集
    [LintCode] 编辑距离
    [LeetCode] Length of Longest Fibonacci Subsequence
    [LintCode] 交叉字符串
    [LeetCode] Permutation Sequence
    Permutation Sequence
    [LeetCode] Next Permutation
    [LeetCode] Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/qingtianxt/p/6383622.html
Copyright © 2011-2022 走看看