Code Complete 2第一部分
最近看完了《code complete 2》的第一部分。书中把第一部分叫做“打好基础”。
在我看来,更像是对软件工程做了总体的介绍,和软件工程开始编码之前的准备。大多数人在第一次听到软件工程时,首先想到的可能就是编码。
然而,这本书一开始便否决了人们的这种想法。软件工程绝不是单纯简单的编码,而是一系列工作。最后的到一个高质量,可维护,低成本,高满意度的软件交予客户。
软件工程包含一系列的活动: 定义问题、需求分析、规划构建、软件架构、详细设计、编码与调试、单元测试、集成测试、集成、系统测试、保障维护。
对于不同的软件,人们可以适当的增删其中的某些步奏。但是其中最重要的是软件的构建,那是每个软件都不可或缺的。构建中最重要的部分又是编码与调试,但是没有之前的设计,直接进行编码与调试是行不通的。回想起大二上的面向对象课程,就深有体会,当时老师一再强调我们画UML图,之前大家都不把它当回事,不仔细设计。到了最后开始编码了发现根本无从下手,开始回头来做类图什么的。软件真不是一早一夕就完成的工作。
接下来书中开始讨论软件工程的前期准备了,对于前期准备的重要性有一张表显示了修复缺陷的成本与引入缺陷的时间比,在构建之后找到缺陷并修复需要的时间是做需求时发现的10倍以上,所以需求的定义一定要充分。同时开发之前要对所开发的软件进行定位,基本分为商业系统,使命攸关的系统,性命攸关的嵌入式系统。对于不同的系统,人们会在开发过程中用不太相同的步骤,或者强调某些步骤。
最后,书中对两种开发方式进行了比较,一种是迭代式开发,一种是序列化开发,两种开发在成本上迭代式会节省一部分。但是不明显,序列化开发要求你对你现在所写的软件充分了解,这样你的开发很显得很有效果。但是如果你是初步接触某个行业,对用户需求不明确,那么最好还是用迭代式开发,那样会好很多。比如我们即将开始的爬虫的编写用迭代式编程效果会好很多。
浙公网安备 33010602011771号