# 第十二章 SE负责监管计算机系统的构建

SE 是什么的缩略语?

SE 是 System Engineer ( 系统工程师 ) 的缩略语

# 12.1 SE是自始至终参与系统开发过程的工程师

SE 是的指在进行业务的信息化时,负责调查、分析业务内容,确定计算机系统的基础设计及其详细设计规格的技术人员。同时 SE 也负责系统开发的项目管理和软件的开发管理、维护管理工作。由于主要的工作是基础设计,所以不同于编写程序的程序员, SE 需要具备从硬件结构、软件的构建方法乃至横跨整个业务的广泛知识以及项目管理的经验。

# 12.2 SE未必担任过程序员

SE 虽然也是工程师,但他们并不同于孜孜不倦地处理具体工作的专业技术人员。可以说 SE 是一种更接近“管理者”的职业,负责管理技术人员。

# 12.3 系统开发过程的规范

无论任何事都需要规范,即便未能按其实践,规范的存在也算是一种参考。

在瀑布模型中,每完成一个阶段,都要书写文档并进行审核。进行审核是还需要召开会议,在会上由 SE 为开发团队的成员、上司以及客户讲解文档的内容。

# 12.4 各个阶段的工作内容及文档

阶段 文档
需求分析 系统策划文档、系统功能需求规格文
外部设计 外部设计文档
内部设计 内部设计文档
程序设计 程序设计文档
编码实现 模块设计文档、测试计划文档
测试 测试报告
部署、维护 部署手册、维护手册

# 12.5 所谓设计,就是拆解

从需求分析到程序设计, 所进行的工作都是拆解业务, 把将要为计算机系统所替代的手工业务拆解为细小的要素。

从编码实现到部署、 维护阶段, 所进行的工作则是集成, 把拆解后的细小要素转换成程序的模块, 再把这些模块拼装在一起构成计算机系统。

庞大复杂的事物往往无法直接做出来。人们往往要把庞大复杂的事物先分解成细小简单的要素来设计。有了各个要素的设计图,整体的设计图也就出来了。

# 12.6 面向对象法简化了系统维护工作

最近, 称作“面向对象” 的设计、 编程方法备受瞩目。 所谓“对象”( Object), 就是把指令和数据归拢到具有一定意义的组中而形成的整体。 在面向对象的方法中, 设计者就是关注对象, 即事物来拆解那些靠手工作业进行的业务的。 可以说现实世界的业务其实就是事物的集合, 而面向对象法的特征正是可以把这些事物直接搬到计算机中

只有以易于维护为标准把业务拆解成对象的做法, 才是具有专家风范的面向对象法。

# 12.7 技术能力和沟通能力

SE 所要具备的能力是多种多样的。这些能力大体上可以分为两类——技术能力和沟通能力。所谓技术能力,是指灵活运用硬件、软件、网络、数据库等技术的能力。而沟通能力,是指和他人交换信息的能力,而且这里要求的是双向的信息交换能力。

# 12.8 IT 不等于引进计算机

IT 是信息技术的缩写,也许翻译成“充分运用信息的技术”会更容易理解。若手工作业也能充分地利用信息,那么即便未使用计算机,也是了不起的信息化。

SE 的工作是分析靠手工作业完成的业务,提出能够用计算机解决客户所面临问题的方法。如果靠手工作业完成的业务根本“无法用信息化的方法解决”,而客户又深信“只要引进了计算机,自然就可以用信息化的方法解决了”, SE 这时应该向客户说明,计算机并不是万能的机器,并不是什么解决。

# 12.9 计算机系统的成功与失败

成功的计算机系统是什么样的呢? 那就是能完全满足客户需求的计算机系统。 客户期待的是由计算机带来的 IT 解决方案, 而并非计算机技术。 能满足需求且稳定地工作, 这样的计算机系统正是被客户所需要的。

# 12.10 大幅提升设备利用率的多机备份

构成计算机系统的每个要素只有一个状态, 要么处于正常运转状态, 要么是出现故障处于维修状态。 其中, 处于正常运转状态的比率叫作“设备利用率”。

将计算机系统的构成要素设成多机备份,可以出乎意料地大幅度提升设备利用率。

我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他备份能够顶上。