《构建之法—现代软件工程》读书笔记
今天阅读了《构建之法:现代软件工程》的第一章,受益匪浅。本来我对软件的了解只是处在最基本层面,通过阅读本书,我对软件工程的了解有了更深入的认识。
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。软件工程和下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。人们在开发、运营和维护软件的过程中有很多技术、做法、习惯和思想体系。系统工程把这些相关技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件的开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。
但是,软件开发光有各种流程的思想是不够的,我们还要有一系列的工具来保证这些思想能够在实践中有效率地运作。软件工具有很多:有工程师自行开发的工具,有软件团队独有的工具,也有许多公开的软件工具,例如编译工具、源代码管理工具、源代码编辑工具;也有一些软件工具系统,例如Microsoft Visual Studio 、GitHub、Clearcase和ClearQuest,等等。
软甲和人类制造出来产品相比有很多共性,也有一些特殊性。随着人类社会的发展,技术的进步,一些事情总是变得越来越容易,但是为什么软件的开发流程却没有这样的提速呢,学者们总结五点:(1)复杂性。软件可以说是人类创造出来的最复杂的系统类型。(2)不可见性。软件工程师能直接看见源代码,但是源代码不是软件本身。软件以机器码的形式高速运行,还可能在几个CPU核上同时运行,工程师是看不到自己的源代码是如何具体执行的。(3)易变性。软件看上去很容易修改,修改软件比修改硬件容易多了。(4)服从性。软件不能独立存在,总是要运行在硬件上,服从用户要求和行业系统要求。(5)非连续性。