1700417625
1700417626
庞大复杂的事物往往无法直接做出来。这个道理不仅适用于计算机系统,也同样适用于建筑物、飞机……人们往往要把庞大复杂的事物先分解成细小简单的要素来进行设计。有了各个要素的设计图,整体的设计图也就出来了。先根据每个要素的设计图制成小零件(程序中的模块),待每个小零件的测试(单元测试)都通过了,剩下的就只是一边看着整体的设计图,一边把这些零件组装起来了。然后再来一轮测试(集成测试),测试组装起来的零件是否能正确地协作运转。大型的计算机系统就是这样构建出来的(如图12.3所示)
1700417627
1700417628
图12.3 把小的模块组装起来,构成大的计算机系统
1700417629
1700417630
1700417631
1700417632
1700417633
可以说,所谓计算机系统的设计,就是拆解。老一辈工程师们已经发明出了可作为规范的各种各样的设计方法,这些方法之间的差异只是拆解时的关注点不同,这里先把几个具有代表性的程序设计方法列在表12.3中
1700417634
1700417635
表12.3 具有代表性的程序设计方法
1700417636
1700417637
设计方法 拆解时所关注的事物
1700417638
1700417639
通用功能分割法 在整个计算机系统中通用的功能
1700417640
1700417641
STS法 数据流(输入、变换、输出)
1700417642
1700417643
TR法 事务(数据的处理单位)
1700417644
1700417645
Jackson法 输入数据和输出数据
1700417646
1700417647
Warnier法 输入数据
1700417648
1700417649
面向对象法 构成计算机系统的事物(对象)
1700417650
1700417651
STS:Source, Transofrm, Sink
1700417652
1700417653
TR:Transaction
1700417654
1700417655
下面回忆一下第1章中的“计算机三大原则”
1700417656
1700417657
原则1:计算机只能够做输入、运算、输出三种操作
1700417658
1700417659
原则2:程序是指令和数据的集合
1700417660
1700417661
原则3:计算机有自己的处理方法
1700417662
1700417663
可以看到,表12.3所示的各种设计方法,其关注点要么在输入、运算、输出、指令、数据这几个要素的某一个上,要么在某几个的组合上。引进计算机系统的目的是通过用计算机替代靠手工作业进行的业务来提升工作效率。因此在设计时,要使手工作业的业务顺应计算机的处理方式来进行替换,这一点也值得注意。
1700417664
1700417665
1700417666
1700417667
1700417669
计算机是怎样跑起来的 12.6 面向对象法简化了系统维护工作
1700417670
1700417671
称为“面向对象”的设计、编程方法备受瞩目。所谓“对象”(Object)就是把指令和数据归拢到具有一定意义的组中而形成的整体。在面向对象的方法中,设计者就是关注对象,即事物来拆解那些靠手工作业进行的业务的。可以说现实世界的业务其实就是事物的集合,而面向对象法的特征正是可以把这些事物直接搬到计算机中
1700417672
1700417673
应用面向对象的方法设计出来的计算机系统既易于维护,又便于开发者改造其中的部分功能。这是为什么呢?对于已进入部署、维护阶段的系统而言,早则几个月,迟则几年,日后都免不了要进行或多或少的改造。这是由于现实世界的部分业务发生了变化,为了响应现实世界的变化,计算机系统的某些部分也必须随之改造,否则就不能去学业务了。举例来说,消费税从3%提到5%,邮政编码从5位增加到7位等都是现实世界的变化。如果计算机系统是以消费税对象或邮政编码对象为单位拆解业务的,那么只需要改造这两个对象就可以了(如图12.4所示)。甚至可以这样说,只有以易于维护为标准把业务拆解成对象的做法,才是具有专家风范的面向对象法
1700417674
[
上一页 ]
[ :1.700417625e+09 ]
[
下一页 ]