热身问答
- SE 是什么的缩略语?
- SE 是 System Engineer(系统工程师)的缩略语。
- 在计算机系统的开发过程中,SE 是参与所有开发阶段的工程师。
- IT 是什么的缩略语?
- Information Technology
- IT 是 Information Technology(信息技术)的缩略语。
- 一提到 IT,通常就意味着充分地运用计算机解决问题,但 Information Technology(信息技术)这个词中并没有包含表示计算机含义的词语。
- 请列举一个软件开发过程的模型
- 软 件 开 发 过 程 的 模 型 有“瀑 布 模 型 ”“原 型 模型”“螺旋模型”等。
前面说到了很多构建计算机系统的技术, 那么如何将这些技术组合起来构建完整的计算机系统呢?
首先, 负责将这些技术组合在一起, 负责构建计算机系统的人叫做SE/系统工程师。
12.1 SE 是自始至终参与系统开发过程的工程师
SE是干什么的人呢?
SE 指的是在进行业务的信息化时,负责调查、分析业务内容,确定计算机系统的基础设计及其详细规格的技术人员。同时 SE 也负责系统开发的项目管理和软件的开发管理、维护管理工作。由于主要的工作是基础设计,所以不同于编写程序的程序员,SE 需要具备从硬件结构、软件的构建方法乃至横跨整个业务的广泛知识以及项目管理的经验。
——《日经计算机术语辞典2002》(日经 BP 出版社)
也就是说, SE是自始至终参与系统开发过程的工程师, 而不是只负责编程的程序员。 SE是负责项目管理和软件开发管理的人员, 而编程的工作则由程序员完成。
自始至终参与系统开发的意思是, SE 是从构建计算机系统的最初阶段(调查分析)开始,一直到最后的阶段(维护管理)都会参与其中的工程师。比起只参与编写程序这一工作的程序员,SE 所参与的工作范围更加广泛。为此,SE就必须掌握从硬件到软件再到项目管理的多种多样的技能。
12.2 SE 未必担任过程序员
SE和程序员是两种职业发展路线, 但SE更倾向于“管理”, 而程序员倾向于“建造”, 所以导致了SE的职位比程序员更高。
12.3 系统开发过程的规范
那么计算机系统是由怎样的开发过程构建而成的呢? 过程中的规范是什么呢?
其中一种规范叫做“瀑布模型”
在瀑布模型中要进行 7个阶段的开发。虽然实际开发中可能未必如此,但规范毕竟是规范。
在瀑布模型中,每完成一个阶段,都要书写文档(报告)并进行审核。进行审核时还需要召开会议,在会上由 SE 为开发团队的成员、上司以及客户讲解文档的内容。
-
若审核通过了,就可以从上司或客户那里得到批准,继续进入后续的开发阶段。
-
若审核没有通过,则不能进入后续的阶段。
一旦进入了后续的阶段,就不能回退到之前的阶段。为了避免回退到上一阶段,一是要力求完美地完成每一个阶段的工作,二是要彻底地执行审核过程,这些就是瀑布模型的特征。
这种开发过程之所以被称为“瀑布模型”,是因为开发流程宛如瀑布,一级一级地自上而下流动,永不后退。如图 12.2 所示,开发过程就好像是开发团队乘着小船,一边克服着一个又一个的瀑布(通过审核),一边从上流顺流而下漂向下游。而坐在船头的人当然就是 SE 了。
12.4 各个阶段的工作内容及文档
下面介绍瀑布模型各个阶段的工作内容及所要书写的文档的种类:
-
在“需求分析”阶段,SE 倾听将要使用计算机系统的客户的需求,调查、分析目前靠手工作业完成的业务内容。作为本阶段的成果,SE要书写“系统策划文档”或是“系统功能需求规格文档”。
-
接下来是设计计算机系统,该过程可以分为 3 个阶段。虽然看起来有些啰嗦,但规范终归是规范。
- 第一个阶段是“外部设计”,进行与从外部观察计算机系统相关的设计。设计内容包括系统处理的数据、显示在画面上的用户界面以及打印机打印的样式等。
- 第二个阶段是“内部设计”,进行与从内部观察计算机系统相关的设计。内部设计的目的是将外部设计的内容具体化。在计算机行业中常会提及“外部”和“内部”,一般情况下,把从用户的角度看到的东西称为“外部”,把从开发者的角度看到的东西称为“内部”。也许这样说会更容易理解,外部设计设计的是用户看得到的部分,而内部设计设计的是开发者看得到(用户看不到)的部分。
- 第三个阶段是“程序设计”,为了用程序将内部设计的内容实现出来而做出的更加详细的设计。作为以上 3 个设计阶段的结果,SE 要分别书写“外部设计文档”“内部设计文档”和“程序设计文档”。
-
再接下来,就进入了“编码实现”阶段,要进行的工作是编写代码,由程序员根据程序设计文档的内容,把程序输入到计算机中。只要经过了充分的程序设计,编程就变成一项十分简单的工作了。因为所做的只是把程序设计书上的内容翻译成程序代码。作为本阶段的文档,SE要书写用于说明程序构造的“模块设计文档”和用于下一阶段的“测试计划文档”。这里所说的模块,就是拆解出来的构成程序的要素。
-
到了“测试”阶段,测试人员要根据测试计划文档的内容确认程序的功能。在最后编写的“测试报告”中,还必须定量地(用数字)标示出测试结果。如果只记录了一些含糊的测试结果,比如“已测试”或是“没问题”,那么就难以判断系统是否合格了。在定量地标示测试结果的方法中,有“涂色检查”和“覆盖测试”等方法。
- “涂色检查”的做法是一个个地确认“系统功能需求规格文档”中的功能,如果该功能实现了,就用红笔把它涂红。
- “覆盖测试”则是一种表示有多少代码的行为已经经过确认的方法。“通过涂色检查,已确认了系统 95% 的功能。剩下的 5% 虽然有问题,但已经查明了原因,可以在 1 周内修正”“已完成了 99% 的覆盖测试。由于剩余的 1% 是不可达代码(Dead Code,绝不会被执行的代码),所以可以删除”。如果能像这样给出定量的测试结果,那么就很容易判定系统是否合格了吧。
-
如果测试合格了,就会进入“部署、维护”阶段。“部署”指的是将计算机系统引进(安装)到客户的环境中,让客户使用。“维护”指的是定期检查计算机系统是否能正常工作,根据需要进行文件备份或根据应用场景的变化对系统进行部分改造。只要客户还在使用该计算机系统,这个阶段就会一直持续下去。在这一阶段要书写的文档是“部署手册”和“维护手册”。
12.5 所谓设计,就是拆解
观察此图, 我们发现瀑布模型中,从需求分析到程序设计,所进行的工作都是拆解业务,把将要为计算机系统所替代的手工业务拆解为细小的要素。从编码实现到部署、维护阶段,所进行的工作则是集成,把拆解后的细小要素转换成程序的模块,再把这些模块拼装在一起构成计算机系统。
回顾一下计算机的三大原则:
原则 1:计算机只能够做输入、运算、输出三种操作
原则 2:程序是指令和数据的集合
原则 3:计算机有自己的处理方法
我们的重点在输入、运算、输出、指令、数据这几个要素的某一个上, 或者在某几个的组合上。引进计算机系统的目的是通过用计算机替代靠手工作业进行的业务,来提升工作效率。因此在设计时,要使手工作业的业务顺应计算机的处理方式来进行替换,这一点也值得注意。
12.6 面向对象法简化了系统维护工作
对象Object: 是把指令和数据归拢到具有一定意义的组中而形成的整体。
在面向对象的方法中,设计者就是关注对象,即事物来拆解那些靠手工作业进行的业务的。可以说现实世界的业务其实就是事物的集合,而面向对象法的特征正是可以把这些事物直接搬到计算机中。
而应用面向对象的方法设计出来的计算机系统既易于维护,又便于开发者改造其中的部分功能。
12.7 技术能力和沟通能力
12.8 IT 不等于引进计算机
IT 是 Information Technology(信息技术)的缩写。