
系统实施与维护教学内容.ppt
115页第8章 系统实施与维护,8.1 系统实施阶段的任务 8.2 自顶向下的实现方法 8.3 编程方法 8.4 系统测试 8.5 系统的交付使用 习题8,8.1 系统实施阶段的任务,8.1.1 系统实施阶段的主要活动 系统实施是开发信息系统的最后一个阶段这个阶段的任务,是实现系统设计阶段提出的物理模型,完成一个可以实际运行的信息系统,交付用户使用系统设计说明书详细规定了系统的结构,规定了各个模块的功能及输入和输出,规定了数据库的物理结构这是系统实施的出发点如果说研制信息系统是盖一幢大楼,那么系统分析与设计阶段就是根据盖楼的要求画出各种蓝图,而系统实施阶段则是调集各种人员、设备和材料,在盖楼的现场,根据图纸按实施方案的要求把大楼盖起来 具体讲,这一阶段的任务包括以下几个方面 1. 硬件准备 硬件设备包括计算机主机,输入输出设备、存储设备、辅助设备(稳压电源、空调设备等)、通信设备以及机房建设等等这些设备要购置、安装、调试这方面的工作要花费大量的人力、物力,持续相当长的时间2. 软件准备 软件设备包括系统软件、数据库管理系统以及一些应用程序这些软件有些需要购买,有些需要组织人力编写,也需要相当多的人力、物力和时间。
编写程序是这一阶段的主要任务之一 3. 人员培训 人员培训主要指用户的培训,包括主管人员和业务人员系统投入运行后,他们将在系统中工作这些人多数来自现行系统,精通业务,但往往缺乏计算机知识为保证系统调试和运行的顺利进行,应根据他们的基础,提前进行培训,使他们逐步适应和熟悉新的操作方法有时,改变旧的工作习惯比软件的更换更为困难所以,要特别强调一点,即不能把系统的实现仅仅归结为编程序或买机器这几方面的任务是相互联系,彼此制约的它们的关系可概括为表8.1表8.1 实施阶段的任务之间的关系,8.1.2 系统实施阶段的特点 与系统分析、系统设计阶段相比,系统实施阶段的特点是工作量大,投入的人力、物力多因此,这一阶段的组织管理工作也很繁重对于这样一个多工种多任务的综合项目,合理的调度安排十分重要在我国的信息系统建设中,项目负责人往往一身兼任多种角色在系统分析阶段,他是系统分析员;在设计阶段,他又是主要设计师;在实施阶段,他又是组织者在系统分析阶段,他的主要任务是调查研究,分析问题,与用户一起充分理解用户要求在系统设计阶段,他的任务是精心设计,提出合理方案在实施阶段,他的任务是组织协调,督促检查。
他要制定逐步实现物理模型的具体计划,协调各方面的任务,检查工作进度和质量,组织全系统的调试,完成旧系统向新系统的转换在实际工作中,系统分析员往往是这几个阶段的组织者作为合格的系统分析员,不仅要有坚实的计算机科学知识,丰富的管理知识和经验,还要有较强的组织能力8.2 自顶向下的实现方法,系统的实施有许多工作要做就程序的编写和数据库的实现而言事情也很多结构图中有大大小小很多模块,先实现哪些模块呢?是先实现上层模块,还是先实现下层模块呢?下层模块执行具体功能,上层模块是控制性的传统方法是先实现下层模块,实现一部分就调试一部分这种方法往往造成返工单个模块调试通过了,系统联调却不一定能通过,原因是模块之间的接口可能有问题结构化方法主张自顶向下实现,尽量先实现上层模块,即首先调试整个系统的结构及各模块间的接口,确保系统结构和各模块接口的正确性然后逐步向下,最后实现下层最基本的模块当然,所谓先实现上层模块也不是“一刀切”,即先实现某个层次的所有模块,而是把整个实施方案分成若干个“版本”(version),首先实现系统的轮廓或框架,在此基础上不断添加新的功能,逐步完善,最后达到物理模型所要求的全部功能。
在实现上层模块时,与这些模块有直接调用关系的下层模块只作为“树桩”(stub)出现,即只保留它的名字及有关参数传递这样,虽然这些“树桩”的内部功能还没有实现,但可以测试系统结构的正确性,保证接口的通畅为了说明如何划分版本,先看一个简单的例子图8.1是处理领料业务的系统结构图图中省略了模块间的传递信息根据自顶向下实现的思想,第一个版本可实现图中虚线以上的模块,即实现1、2、4、9、11、14共六个模块这些模块直接调用的模块有:3、5、8、10、12、13、15等七个模块这些模块即是“树桩”另外四个模块,即模块6、7、16、17暂时没有联系从图8.1可以看出,这个版本实现之后,就可以向用户演示系统的主要功能:录入领料单,打印发料通知这是用户最关心的业务实际工作中,这也是经常性的情况,即根据领料单能领到所需要的材料同时,这一版本的实现,也检验了系统结构的大部分接口若这些接口的设计有问题,可以尽早发现图8.1 版本划分示例,,第二个版本可以考虑进一步实现模块5、10、12和15,并建立库存文件,而把模块6、7、16和17作为树桩也就是在第一版的基础上,实现库存文件的查询与更新 第二个版本实现之后,其余模块与数据库的建立,可以再分两个版本实现。
例如作为第三个版本,集中考虑领料文件的建立和更新,为此,可实现模块8和模块13,并把“领料登记”文件建立起来也可以把其余模块与数据库的建立放在一个版本上,视具体情况而定这个例子说明,版本的划分需要考虑以下几个方面:,(1) 总的原则是先实现控制部分后实现具体执行部分,先上层后下层尤其是第一个版本具有特别重要的意义,应该让控制流通过尽可能多的模块,以便于测试尽可能多的接口因此,第一个版本实现的模块大多数是控制模块,也包括少数执行模块(这往往是系统最主要、最经常的业务所必须通过的模块),一些例外情况的处理留待以后实现这一步是后面各步实现的基础2) 每个版本实现多少模块以及实现哪些模块要根据开发力量、设备、培训等方面的情况确定人多,同时开发的模块可以多些,否则就少一些一般两、三个月完成一个版本比较合适时间太短,完成的任务可能太少,用户看不出什么进展间隔时间太长,与用户交流的机会少,容易偏离用户的需求,用户对项目的进展容易失去信心 (3) 复杂的模块应分散在几个版本中逐步实现 (4) 兼顾功能模块和数据库的实现 (5) 兼顾硬件、软件、人员培训方面的情况与传统的方法相比,这种自顶向下的实现方法首先有效地解决了接口问题。
接口解决不好,往往不得不对调试过的程序反复修改,甚至推倒重来,造成重大的返工其次,这种方法便于对系统的设计方案进行校正,保证系统切实符合用户的要求尽管精心设计的物理模型经过了认真的论证,用户也是同意的,但这毕竟是模型而不是实实在在的系统因此,真正实现之后还会发现某些细节不完全符合用户的需求或使用习惯自顶向下的方法有利于发现这些问题,并作某些局部的修改另外,这种方法便于控制进度,可保证研制工作按时完成8.3 编 程 方 法,编程(Coding)就是为各个模块编写程序这是系统实现阶段的核心工作在系统开发的各个阶段中,编程是最容易的,也是人们已掌握得较好的一项工作根据结构化方法设计了详细的方案,又有了高级语言,初级程序员都可以参加这一阶段的工作当然,程序员的水平决定了程序的水平8.3.1 好程序的标准 对于什么是“好程序”,20世纪50年代与现在的观点有很大不同20世纪50年代的计算机内存小、速度慢,人们往往把程序的长度和执行速度放在很重要的位置,费尽心机地缩短程序长度,减少存储量,提高速度现在情况有了很大的不同,一般认为好程序应具备下列素质:,(1) 能够工作; (2) 调试代价低; (3) 易于维护; (4) 易于修改; (5) 设计不复杂; (6) 效率高。
第(1)条当然是最基本的一个根本不能够工作的程序当然谈不上“好”,即使谈执行速度、程序长度等指标也毫无意义第(2)条调试代价低,是指花在调试上的时间少这一条是衡量程序好坏,也是衡量程序员水平的一个重要标志国外有人做过试验,选两个题目,找12个有经验的程序员来编写和调试程序结果发现最差的与最好的程序员的调试时间之比是28:1第(3)、(4)、(5)条要求程序可读性强,易于理解在相当长一个时期内,人们认为程序是用于给机器执行而不是给人阅读的,因而程序员存在严重的低估编程方法、不注意程序风格的倾向他们认为可以随意编写程序,只要结果正确就行了读这种程序像读“天书”可读性(readability)是70年代提出的新概念,它主张程序应使人们易于阅读,编程的目标是编出逻辑上正确又易于阅读的程序程序可读性好,自然易于理解、易于维护,并将大大降低隐含错误的可能性,从而提高程序的可靠性要使程序的可读性好,程序员应有一定的写作能力他应能写出结构良好,层次分明、思路清晰的文章有人说:“对于程序员来说,最重要的不是学习程序设计语言如FORTRAN、PL1等,而是学习英语(日语、汉语)程序员在写程序时应该记住:程序不仅是给计算机执行的,也是供人阅读的。
要使程序可读性好,总的要求是使程序简单、清晰七十年代以来,人们总结了使程序简单、清晰的种种技巧和方法:,用结构化方法进行详细设计; 程序中包含说明性材料; 良好的程序书写格式; 良好的编程风格 下面分别介绍8.3.2 结构化程序设计 结构化程序设计被称为软件发展中的第三个里程碑,其影响比前两个里程碑(子程序、高级语言)更为深远结构化程序设计的概念和方法,以及支持这些方法的一整套软件工具,构成了“结构化革命”这是自存储程序计算机问世以来,对计算机界影响最大的一个软件概念 对于什么是“结构化程序设计”,至今还没有被普遍接受的定义通常认为结构化程序设计包括以下四个方面的内容1. 限制使用GO TO语句 从理论上讲,只用顺序结构、选择结构、循环结构这三种基本结构就能表达任何一个只有一个入口和一个出口的程序逻辑为实际使用方便,往往允许程序增加多分支结构、REPEAT型循环等两三种结构程序中可以完全不用GO TO语句这种程序易于阅读,易于验证但在某些情况下,例如要从循环体中跳出,使用GO TO语句描述则更为直截了当因此,一些程序设计语言还是提供了GO TO语句无限制地使用GO TO语句,将使程序结构变得杂乱无章,难以阅读,难以理解,容易隐含一些错误。
2. 逐步求精的设计方法 在一个程序模块内,先从该模块的功能描述出发,一层层地逐步细化,直到最后将它分解、细化成语句为止 3. 自顶向下的设计、编码和调试 这是把逐步求精的方法由程序模块内的设计推广到一个系统的设计与实现这正是本书介绍的结构化方法的来源4. 主程序员制的组织形式 这是程序人员的组织形式一个主程序员组的固定成员是主程序员一人,辅助程序员一人,程序资料员(或秘书)一人其他技术人员按需要随时加入组内主程序员负责整体项目的开发,并负责关键部分的设计、编码和调试辅助程序员在细节上给主程序员以充分的支持主程序员、辅助程序员必须在程序技术方面和项目管理方面具有丰富的经验和才能,他们必须完全熟悉该项目的开发工作这种组织方式的好处在于显著减少了各子系统之间、各程序模块之间通信和接口方面的问题把设计的责任集中在少数人身上,有利于提高设计质量作为这种组织形式中的一个程序员,不仅应具备程序设计的基本知识,对项目所在的领域有较深入的了解,熟悉开发的技术环境,而且,更为重要的是必须具备高度的组织纪律性和团队精神,能使自己的工作与整个系统的工作协调一致起来为此,他必须严格遵守:,(1) 不使用可能干扰其他模块的命令或函数; (2) 按总体设计的要求传递参数,不随意修改其内容与含义; (3) 按统一规定的格式操作公用文件或数据库; (4) 按统一的原则使用标识符; (5) 按统一要求编写文档; (6) 保持程序风格的一致。
8.3.3 面向对象的程序设计(OOP) 传统的过程式程序。
