1、以软件维护为导向的软件工程实践教学摘 要:软件维护在现实的软件开发过程中占有十分重要的地位,本文介绍了我院的软件维护实践教学的教学方案以及具体实施情况。 关键词本文来自:计算机毕业网 :软件工程;软件开发;实验;实践教学;软件维护 1 软件维护在软件工程实践教学中的意义 软件工程是一门理论与实践并重的基础课程,教学内容紧密围绕软件开发过程中的各种工程化方法、技术和思想1。在现实的软件开发过程中,软件维护占有很重要的地位,许多报告都指出软件维护成本已经占到总体成本的 40%70% 以上。软件维护关注于 “变化” ,包括纠错性(corrective)、适应性 (adaptive)、完善性(perf
2、ective)、预防性(preventative)等维护类型2。当前的软件工程教学中一般都已经包括了软件维护相关理论和方法相关的内容,例如软件维护及可维护性的概念、软件维护的类型和过程、变更管理以及软件再工程等。但软件工程实践教学仍然以瀑布式的正向开发过程为主,主要体现需求分析、设计、实现和测试等基本开发活动,缺少软件维护的实践训练。 由于软件维护在软件开发中的重要性,许多国内外学者都呼吁在软件工程教学中引入软件维护实践(如文献3)。在软件工程实践教学中引入软件维护内容主要基于以下这些考虑。 首先,软件维护在软件开发中占有十分重要的地位,典型的软件工程开发中花在软件维护上的时间往往比软件开发还
3、要多3。而且,大部分毕业生进入软件开发机构后都是从维护性的开发任务开始的。 其次,软件维护实践还能使学生更直观地体会和理解软件工程方法和原则的重要性。软件工程教学中系统地讲授了许多重要的软件工程方法和原则,包括软件文档规范、设计原则(如层次化、高内聚低耦合等) 以及编码习惯(如标识符命名、注释和排版等)等,其中大部分都与软件的可维护性相关。通过对文档不全、设计混乱和编码习惯不好的软件系统进行维护,可以对这些方法和原则获得直观、深入的认识和理解。例如,对标识符命名不规范、缺少注释、排版混乱的代码进行阅读和理解,可以深刻认识到好的编码习惯对于维护工作的重要性。 此外,软件维护实践能使学生更好地认识
4、软件开发的现实困难。缺陷报告、需求变更、软硬件平台的变化等导致软件演化的因素在现实的软件开发中总是存在的。通过在实践教学中设置阶段性的需求变更,可以让学生对于现实的软件开发有更加真实的体验,从而提高对迭代、增量式开发等实用的软件开发方法和技术的认知。 2 软件维护实践教学方案 软件维护主要包括纠错性、适应性、完善性和预防性维护四种类型2:纠错性维护是针对所发现的错误或缺陷而对软件进行的修改;适应性维护是为了适应外部环境(如硬件、操作系统、外部规则等) 的变化而对软件进行的修改;完善性维护是由于功能扩展而进行的软件修改;预防性维护是面向未来的维护需要,为了提高软件的适应性和可维护性等而进行的系统
5、优化和改进。软件维护实践教学应以循序渐进的方式覆盖这四个方面的软件维护任务,同时穿插并突出相关软件工程方法和原则的体验和熏陶。 根据这一总体目标,相应的软件维护实践教学将在给定的作为维护对象的遗留系统基础上,分三个阶段进行,如图 1 所示。遗留系统分析评估阶段的主要目的是在理解遗留系统需求的基础上对系统的外部和内部质量进行初步的了解和评价。系统改进维护阶段的目标是以当前系统需求为基础,对遗留系统的缺陷和错误进行修改,对系统内部的设计、实现以及文档质量进行改进。系统需求演化维护阶段通过若干次迭代的需求和系统环境变更,进行系统的完善性和适应性维护。针对新需求和系统环境设置的修改将通过系统测试确认,
6、测试结果反馈给系统改进维护阶段,从而进行相应的纠错性维护活动。此外,系统修改过程中发现的内部质量问题(例如可扩展性上的不足等) 同样也会反馈给系统改进维护阶段,从而进行相应的预防性维护活动。这种反馈关系以及需求和系统环境变更的迭代进行使得后两个阶段将反复迭代进行。 (1) 遗留系统分析评估阶段 与传统的基于分析、设计和实现的软件工程实践教学不同,软件维护实践教学以已经开发完成的遗留软件系统作为起点。每个小组分配到的遗留系统都是由其他人开发的,犹如在软件开发中接手其他小组的维护工作。因此,首先要求他们在理解项目当前需求的基础上,对所分配的系统进行分析和评估,从而为后续的维护活动打下基础。这阶段的
7、主要实践任务包括: 图 1 软件维护实践教学过程 1) 理解遗留系统需求。与正向软件开发一样,软件维护实践也要从了解系统需求开始。需求是评价当前系统质量,进而规划并实施各种纠错性、适应性、完善性和预防性维护活动的基础。 2) 系统测试及外部质量评价。外部质量因素是那些用户能轻易观察到的软件特性,例如功能正确性、性能、可靠性、可用性等2。通过系统测试,可以针对用户需求得到遗留系统的外部质量总体评价,以及待纠正的错误和缺陷列表,从而为纠错性维护打下基础。 3) 系统理解及内部质量评价。内部质量是指与系统内部设计和实现相关的质量特性,例如可理解性、可维护性、可扩展性等,它们对于软件工程师而言是十分重
8、要的2。通过阅读遗留系统文档( 可能残缺不全或质量不高)以及系统代码,同时借助于相关辅助理解工具的支持,获得对系统设计(如体系结构和模块结构等) 和代码的初步理解,在此基础上对系统的设计和实现质量进行评价,从而为预防性维护打下基础。 这一阶段首先强化了对于软件测试的实践。在以往的教学实践中,我们发现学生在正向开发阶段往往不太重视测试(对于自己开发的系统进行测试往往会觉得没有必要或比较敷衍了事),且常与调试混淆。而在软件维护实践中,测试对象是他人开发的系统( 实践中常常发现学生对于测试、评价其他人开发的系统比较有兴趣),而且测试结果直接决定了对遗留系统的外部质量评价和纠错性改进方案,因此学生往往
9、会认真对待。系统理解能力也非常重要。在教学实践中,可以鼓励学生充分运用相关辅助理解工具进行系统理解,例如 Eclipse相关插件所提供的代码 UML 视图、类语法树、调用关系图、度量信息等辅助理解功能。除此之外,系统理解及内部质量评价还强化了对于软件工程设计和实现原则的认识。通过阅读遗留系统文档和代码,学生们可以深切体会到好的系统设计、编码风格以及文档规范对于软件开发的重要性。实践中,他们经常会抱怨遗留系统文档不全或不一致、设计混乱、编码风格不好,而这些其实也正是他们自己在正向开发阶段很容易出现的问题。(2) 系统改进维护阶段 系统改进维护阶段将在遗留系统分析和评估基础上,进行纠错性和预防性维
10、护。针对用户需求以及一般的软件设计和实现质量准则,从外部质量和内部质量两个方面对遗留系统进行改进。这阶段的主要实践任务包括: 1) 纠错性维护实施。针对系统测试过程中发现的问题,进行纠错性维护,包括消除系统意外出错、纠正与功能需求不一致的地方、改进系统性能、可靠性等非功能质量方面的不足。2) 回归测试及总结。纠错性维护结束后,通过回归测试验证纠错性维护的效果,并进行总结。 3) 预防性维护方案制定及实施。针对系统内部质量评价中发现的问题以及纠错性维护中遇到的困难(例如难以扩展的系统结构等) ,制定并实施对系统的预防性维护方案,包括对系统设计和编码质量的改进,以及对开发文档的补充和完善等。 4)
11、 系统评审及总结。预防性维护结束后,对系统的设计、代码及文档进行评审,总结改进情况以及所获得的体会和经验。 这一阶段首先涵盖了纠错性维护和预防性维护实践。其次,预防性维护实践通过系统设计、开发文档、编码风格等方面的改进,强化了相关软件工程方法和原则的训练。 (3) 系统需求演化维护阶段 前两个阶段的软件维护实践都还停留在原有系统基础上,系统需求演化阶段将通过用户需求和系统环境的变化,引导学生进行完善性和适应性维护实践。由于现实中的软件开发一般都包含多次迭代和增量,因此这阶段的维护实践也将迭代进行多次。这阶段的主要实践任务包括: 1) 需求和系统环境变更分析。在原有系统需求基础上,提出若干新的扩
12、展功能要求和系统环境变更(例如改变原有的数据库管理系统 ),要求学生通过与助教的沟通和交流明确需求和系统环境变更要求。 2) 系统修改方案制定及实施。根据变更要求和对系统设计、实现的理解确定系统修改方案并加以实施。 3) 系统测试。针对需求或系统环境变更进行系统测试,对系统修改进行确认,所发现的错误和缺陷将反馈给纠错性维护活动。 4) 系统内部质量反馈。针对需求或系统环境变更的修改活动可以对系统的内部设计和实现质量进行检验,暴露设计、实现及文档等方面的问题,这些问题将反馈给预防性维护活动。 系统需求演化维护阶段除了涵盖完善性和适应性维护实践外,还具有以下几个方面的作用:使学生体验到真实软件开发
13、中多次迭代的增量式开发过程;通过需求变更直观体会到可维护性、可扩展性等内部设计和实现质量的重要性;验证改进维护阶段对于改进系统内部质量的效果,加深对于良好的软件设计、编码和文档习惯的认识。 3 教学方案实施 软件工程课程实验可以按照由浅入深的顺序分为认知性导入实验、方法性实验和综合实践三个部分,其中前两部分穿插在一个学期的软件工程课程中进行,而综合实践则可以在后续的软件实践类课程中安排1。在教学实践中,软件维护实践应该作为综合实践安排,此时学生已经有了软件工程课程教学和一些正向开发实践(主要包括需求分析、设计和实现) 基础。软件维护实践以35 人的小组为单位,每个人可以分别担任需摘 要:在计算
14、机组装与维护课程的实践教学中,为增强学习的效果,我院从实验内容和考核方式上进行了改革,使学生在宽松的学习氛围中,既提高了对该门课程的学习兴趣,又掌握了一项实验操作技能。本文介绍了我院的教改情况。关键词 本文来自:计算机毕业网 :实验内容;考核方式;应用;兴趣 1 引言 随着计算机应用的不断普及,学生动手组装计算机的热情也在不断高涨,兼容 PC 机以其价格低廉 (相对于品牌机)而深受在校大学生的喜爱,学生通过这门课程的学习,不仅能掌握计算机硬件的理论知识,更为自己能独立组装计算机(DIY)而对该课程产生了浓厚的兴趣。目前,很多高校开始把“计算机组装与维护”作为选修或开放实验课程来开设,其目的是为
15、了培养学生的实践动手能力,掌握一技之长。由于现行的理论或实验教材,作者从编写到出版,需经过一段较长时间,但计算机的各个部件在不断升级,性能日益提高,带来了计算机新技术、新产品与相对滞后的教材内容相矛盾,要使学生能跟上硬件发展的步伐,传统的实验教学内容和考核方式已不能适应课程发展的需要,要使实验内容跟上市场计算机硬件的变化,学生能产生该门课程兴趣,对该课程的实验内容和考核方式的改革势在必行。 2 课程的特点和要求 学生学完“计算机组装与维护”课程后,所要达到的目标是:使学生掌握计算机硬件的基本知识和基础理论,能用所学知识选购和组装计算机,具备计算机软、硬件安装、调试和维护的基本技能,常用软件的使
16、用,局域网的搭建。 该课程的特点:(1)课程内容多、知识面广,包括计算机组成部件、硬件安装、硬件测试、系统 BIOS 设置、优化、硬盘的分区规划、软件安装、局域网的建设、计算机日常维护。(2)知识更新快,具有鲜明的时代特征。新知识、新产品不断出现,只有不断更新教学(实验) 内容才能满足学生了解新产品和新技术的要求,做到与时俱进。(3)课程注重实践,培养学生的实践能力,根据该课程的特点,要达到学习的效果和课程的目的,必须通过大量的实践教学环节来完成。 3 实验内容改革 计算机组装与维护是一门实践性较强的基础课程,要求内容新、更新快,对教师的要求也很高,需要不断学习和提高。该门课程一般总学时 32
17、,占 2 个学分,结合本课程的特点,摒弃过去的先讲后练,甚至是只讲不练,在充分利用实验室计算机资源的基础上,进行实验内容和考核方式的改革,采取边讲边练,或者是先练后讲的教学模式。在课程的学时安排上,我们是理论为 12 学时,实验为 20 学时,基本内容大致分为 6 个独立的项目,现分别说明。 实验 1.认识硬件(4 学时)。通过理论讲解,使学生对计算机的主要硬件(主板、内存、CPU、硬件、光驱、显示卡、显示器)的性能指标,工作原理有一个感性的认识,通过网上计算机硬件价格、性能的查询;结合市场调研,要求学生写出计算机硬件的调研报告3,在某个价位的配置清单等手段,使学生从感性上对计算机组装产生兴趣
18、。 实验 2.计算机组装与维护(4 学时)。计算机组装与维护实验进行拆装的成本较高,破坏性较大,为此,我们采取的方法是利用现有实验室原有资源,例如我们采用 03 年购买的清华同方机型进行拆装,要求明确目标、拆装顺序、拆装过程中的注意点(曾经有学生拆硬盘上的螺丝 );在此熟练的基础上,给予指导,我们准备了 15 套目前较流行的计算机产品组装,进行分组实验,经过教师检查,方可上电。使得学生既掌握了计算机组装的步骤,又能接触到新产品,不至于用到的都是过时产品。 实验 3.常见故障的分析与判别(2 学时) 。由于现行的计算机维修,主要是板卡级的,替代法也是常用的方法之一,在本次实验过程中,要求学生能对
19、实验 2 中的常见的一些故障能进行分析、判断,在相互讨论的基础上,自己能独立排错,以便解决实验过程中遇到的问题。通过本次实验可以培养学生的团队合作精神和独立分析问题和解决问题的能力。 实验 4.系统的安装(XP 和 WINDOWS 2000 Server)(4 学时) 。通过本次实验,使学生掌握系统分区、硬盘格式化、BIOS 的设置、系统的安装、网线的制作方法,利用 H3C 的交换机组建一局域网。 实验 5.有关系统相关软件的使用(4 学时)。该实验涉及四个方面的内容,要求学生必须掌握,涉及软件的下臷和使用。 (1) 系统的备份(GHOST 的使用)。 (2) 系统的优化(WINDOWS 优化
20、大师的使用和注册表的了解)。 (3) 系统的测试(Sisoft Sandra 的使用)。 (4) 常用杀毒软件的使用(瑞星、金山毒霸、卡巴斯基) 实验 6.多媒体软件的安装与使用(2 学时)。内容涉及 (1) 图像处理软件 (2) 声音 (3) 播放器的安装与使用(豪杰、real PLAY、暴风影音) 4 考核方式的改革 通过该门课程的学习与实践,我们在考核方式上也进行了相应的改革,传统的考核方式是 7+3 模式,即理论占 70%,实验占 30%;我们采取的方式是 3+7 模式,即理论占 30%,实验占 70%。理论考核为辅、动手操作为主。笔试考核为辅、实践操作比重高于笔试,各单项实验项目独立
21、计分。这不仅使学生在考核上把风险分散到各个实验项目中去,也不必担心考试通不过,再次重修,真正使学生的实践动手能力得到提高;在实验的考核方式上采取多种形式。 (1) 分组讨论( 实验 2)(2) 调研报告(实验 1) (3) 实验报告书 宽松式的实验环境,学生在课内安排实验如不能及时完成的话,可以利用业余时间,由学生本人提出预约申请进行补做,达到规定的要求,分项目进行单独计分,目的只有一个,就是通过实践的练习,确实把按大纲规定的要求落到实处,使学生能在轻松学习的基础上掌握一项技能,体现学以致用的原则。 5 结束语 目前,计算机已广泛应用于各行各业,因此懂得计算机的软、硬件安装,常见的报错信息、检
22、测方法,日常的维护和保养, “计算机组装与维护”势必将成为学生比较感兴趣的课程之一,尤其对于民办本科的学生来说,加强实践动手能力的培养已成为大家的共识,通过对实验教学的改革,目的是为了提高学生的学习兴趣;通过考核方式的改革,消除学生对该门课程由于理论考试不及格而带来的负面影响,使学生能快乐学习,体会实验过程所带来的快乐和成功感,确实让这门课程变成大家想学又愿意学的一门课程,事实证明,通过本学期对该门课程的改革,无论从内容上还是考核方式上,都取得了很好的效果,学生反映较好,收效甚大。 参考文献: 1 徐鲁雄. 改革计算机信息素养教育模式 推进素质教育J. 计算机教育,2006,(8):57-61
23、. 2 张世伟. 浅谈计算机组装与维护课的教学模式J. 重庆科技学院学报,2007,(5):165. 3 周苏. 专业课程教学测评的创新实践 J. 计算机教育,2008,(7):88-91. 4 高尚,别小川.“计算方法”实验内容的改革J. 实验室研究与探索,2007,26(10):106-107. 5 孙中胜,高长宝. 微机组装升级与维护M. 北京:清华大学出版社,2005. 6 周苏等. 大学计算机专业基础课程实验教学的改革与创新C. 大学计算机基础程报告论坛论文集 2005M. 北京: 高等教育出版社. 7 李秉璋等. 以提高应用能力为目标进行计算机专业课教学J. 计算机教育,2006,
24、(12):28-31. 8 范跃进. 面向创新型国家建设的应用型创新人才培养模式探索J. 中国大学教学,2006,(9):24. The reform of the content and methods of examination in“Computer assembly and maintenance” TAO Jian-ping (School of NanXu,Jiangsu Univ.of Science and Technology,Zhengjiang 212004,China) Abstract: In order to enhance the Effect of learn
25、ing the computer assembly and maintenance, in the practice courses, content and assessment from the experiments carried out on the way of reform, so that students study in the relaxed atmosphere,They not only increase the interest in learning courses but master the skills. Key words: The contents of
26、 experiment; The methods of Assessment; Application ; Interest 摘 要:软件维护在现实的软件开发过程中占有十分重要的地位,本文介绍了我院的软件维护实践教学的教学方案以及具体实施情况。 关键词本文来自:计算机毕业网 :软件工程;软件开发;实验;实践教学;软件维护 1 软件维护在软件工程实践教学中的意义 软件工程是一门理论与实践并重的基础课程,教学内容紧密围绕软件开发过程中的各种工程化方法、技术和思想1。在现实的软件开发过程中,软件维护占有很重要的地位,许多报告都指出软件维护成本已经占到总体成本的 40%70% 以上。软件维护关注于 “
27、变化” ,包括纠错性(corrective)、适应性 (adaptive)、完善性(perfective)、预防性(preventative)等维护类型2。当前的软件工程教学中一般都已经包括了软件维护相关理论和方法相关的内容,例如软件维护及可维护性的概念、软件维护的类型和过程、变更管理以及软件再工程等。但软件工程实践教学仍然以瀑布式的正向开发过程为主,主要体现需求分析、设计、实现和测试等基本开发活动,缺少软件维护的实践训练。 由于软件维护在软件开发中的重要性,许多国内外学者都呼吁在软件工程教学中引入软件维护实践(如文献3)。在软件工程实践教学中引入软件维护内容主要基于以下这些考虑。 首先,软件
28、维护在软件开发中占有十分重要的地位,典型的软件工程开发中花在软件维护上的时间往往比软件开发还要多3。而且,大部分毕业生进入软件开发机构后都是从维护性的开发任务开始的。 其次,软件维护实践还能使学生更直观地体会和理解软件工程方法和原则的重要性。软件工程教学中系统地讲授了许多重要的软件工程方法和原则,包括软件文档规范、设计原则(如层次化、高内聚低耦合等) 以及编码习惯(如标识符命名、注释和排版等)等,其中大部分都与软件的可维护性相关。通过对文档不全、设计混乱和编码习惯不好的软件系统进行维护,可以对这些方法和原则获得直观、深入的认识和理解。例如,对标识符命名不规范、缺少注释、排版混乱的代码进行阅读和
29、理解,可以深刻认识到好的编码习惯对于维护工作的重要性。 此外,软件维护实践能使学生更好地认识软件开发的现实困难。缺陷报告、需求变更、软硬件平台的变化等导致软件演化的因素在现实的软件开发中总是存在的。通过在实践教学中设置阶段性的需求变更,可以让学生对于现实的软件开发有更加真实的体验,从而提高对迭代、增量式开发等实用的软件开发方法和技术的认知。 2 软件维护实践教学方案 软件维护主要包括纠错性、适应性、完善性和预防性维护四种类型2:纠错性维护是针对所发现的错误或缺陷而对软件进行的修改;适应性维护是为了适应外部环境(如硬件、操作系统、外部规则等) 的变化而对软件进行的修改;完善性维护是由于功能扩展而
30、进行的软件修改;预防性维护是面向未来的维护需要,为了提高软件的适应性和可维护性等而进行的系统优化和改进。软件维护实践教学应以循序渐进的方式覆盖这四个方面的软件维护任务,同时穿插并突出相关软件工程方法和原则的体验和熏陶。 根据这一总体目标,相应的软件维护实践教学将在给定的作为维护对象的遗留系统基础上,分三个阶段进行,如图 1 所示。遗留系统分析评估阶段的主要目的是在理解遗留系统需求的基础上对系统的外部和内部质量进行初步的了解和评价。系统改进维护阶段的目标是以当前系统需求为基础,对遗留系统的缺陷和错误进行修改,对系统内部的设计、实现以及文档质量进行改进。系统需求演化维护阶段通过若干次迭代的需求和系
31、统环境变更,进行系统的完善性和适应性维护。针对新需求和系统环境设置的修改将通过系统测试确认,测试结果反馈给系统改进维护阶段,从而进行相应的纠错性维护活动。此外,系统修改过程中发现的内部质量问题(例如可扩展性上的不足等) 同样也会反馈给系统改进维护阶段,从而进行相应的预防性维护活动。这种反馈关系以及需求和系统环境变更的迭代进行使得后两个阶段将反复迭代进行。 (1) 遗留系统分析评估阶段 与传统的基于分析、设计和实现的软件工程实践教学不同,软件维护实践教学以已经开发完成的遗留软件系统作为起点。每个小组分配到的遗留系统都是由其他人开发的,犹如在软件开发中接手其他小组的维护工作。因此,首先要求他们在理
32、解项目当前需求的基础上,对所分配的系统进行分析和评估,从而为后续的维护活动打下基础。这阶段的主要实践任务包括: 图 1 软件维护实践教学过程 1) 理解遗留系统需求。与正向软件开发一样,软件维护实践也要从了解系统需求开始。需求是评价当前系统质量,进而规划并实施各种纠错性、适应性、完善性和预防性维护活动的基础。 2) 系统测试及外部质量评价。外部质量因素是那些用户能轻易观察到的软件特性,例如功能正确性、性能、可靠性、可用性等2。通过系统测试,可以针对用户需求得到遗留系统的外部质量总体评价,以及待纠正的错误和缺陷列表,从而为纠错性维护打下基础。 3) 系统理解及内部质量评价。内部质量是指与系统内部
33、设计和实现相关的质量特性,例如可理解性、可维护性、可扩展性等,它们对于软件工程师而言是十分重要的2。通过阅读遗留系统文档( 可能残缺不全或质量不高)以及系统代码,同时借助于相关辅助理解工具的支持,获得对系统设计(如体系结构和模块结构等) 和代码的初步理解,在此基础上对系统的设计和实现质量进行评价,从而为预防性维护打下基础。 这一阶段首先强化了对于软件测试的实践。在以往的教学实践中,我们发现学生在正向开发阶段往往不太重视测试(对于自己开发的系统进行测试往往会觉得没有必要或比较敷衍了事),且常与调试混淆。而在软件维护实践中,测试对象是他人开发的系统( 实践中常常发现学生对于测试、评价其他人开发的系
34、统比较有兴趣),而且测试结果直接决定了对遗留系统的外部质量评价和纠错性改进方案,因此学生往往会认真对待。系统理解能力也非常重要。在教学实践中,可以鼓励学生充分运用相关辅助理解工具进行系统理解,例如 Eclipse相关插件所提供的代码 UML 视图、类语法树、调用关系图、度量信息等辅助理解功能。除此之外,系统理解及内部质量评价还强化了对于软件工程设计和实现原则的认识。通过阅读遗留系统文档和代码,学生们可以深切体会到好的系统设计、编码风格以及文档规范对于软件开发的重要性。实践中,他们经常会抱怨遗留系统文档不全或不一致、设计混乱、编码风格不好,而这些其实也正是他们自己在正向开发阶段很容易出现的问题。
35、(2) 系统改进维护阶段 系统改进维护阶段将在遗留系统分析和评估基础上,进行纠错性和预防性维护。针对用户需求以及一般的软件设计和实现质量准则,从外部质量和内部质量两个方面对遗留系统进行改进。这阶段的主要实践任务包括: 1) 纠错性维护实施。针对系统测试过程中发现的问题,进行纠错性维护,包括消除系统意外出错、纠正与功能需求不一致的地方、改进系统性能、可靠性等非功能质量方面的不足。 2) 回归测试及总结。纠错性维护结束后,通过回归测试验证纠错性维护的效果,并进行总结。3) 预防性维护方案制定及实施。针对系统内部质量评价中发现的问题以及纠错性维护中遇到的困难(例如难以扩展的系统结构等 ),制定并实施
36、对系统的预防性维护方案,包括对系统设计和编码质量的改进,以及对开发文档的补充和完善等。 4) 系统评审及总结。预防性维护结束后,对系统的设计、代码及文档进行评审,总结改进情况以及所获得的体会和经验。 这一阶段首先涵盖了纠错性维护和预防性维护实践。其次,预防性维护实践通过系统设计、开发文档、编码风格等方面的改进,强化了相关软件工程方法和原则的训练。 (3) 系统需求演化维护阶段 前两个阶段的软件维护实践都还停留在原有系统基础上,系统需求演化阶段将通过用户需求和系统环境的变化,引导学生进行完善性和适应性维护实践。由于现实中的软件开发一般都包含多次迭代和增量,因此这阶段的维护实践也将迭代进行多次。这
37、阶段的主要实践任务包括: 1) 需求和系统环境变更分析。在原有系统需求基础上,提出若干新的扩展功能要求和系统环境变更(例如改变原有的数据库管理系统 ),要求学生通过与助教的沟通和交流明确需求和系统环境变更要求。 2) 系统修改方案制定及实施。根据变更要求和对系统设计、实现的理解确定系统修改方案并加以实施。 3) 系统测试。针对需求或系统环境变更进行系统测试,对系统修改进行确认,所发现的错误和缺陷将反馈给纠错性维护活动。 4) 系统内部质量反馈。针对需求或系统环境变更的修改活动可以对系统的内部设计和实现质量进行检验,暴露设计、实现及文档等方面的问题,这些问题将反馈给预防性维护活动。 系统需求演化
38、维护阶段除了涵盖完善性和适应性维护实践外,还具有以下几个方面的作用:使学生体验到真实软件开发中多次迭代的增量式开发过程;通过需求变更直观体会到可维护性、可扩展性等内部设计和实现质量的重要性;验证改进维护阶段对于改进系统内部质量的效果,加深对于良好的软件设计、编码和文档习惯的认识。 3 教学方案实施 软件工程课程实验可以按照由浅入深的顺序分为认知性导入实验、方法性实验和综合实践三个部分,其中前两部分穿插在一个学期的软件工程课程中进行,而综合实践则可以在后续的软件实践类课程中安排1。在教学实践中,软件维护实践应该作为综合实践安排,此时学生已经有了软件工程课程教学和一些正向开发实践(主要包括需求分析
39、、设计和实现) 基础。软件维护实践以35 人的小组为单位,每个人可以分别担任需摘要:“网络程序课程设计”教学实践中存在教学内容涉及面广、新技术多、实验时间有限等问题。本文提出,通过精选教学内容和设计合适的课程综合实验,可以引导学生学习和掌握最新的网络程序设计技术,了解网络技术的发展趋势,能够极大地提高同学们的动手能力和团队协作能力。这些教学研究与探索,对“网络程序课程设计”的课程建设有一定的借鉴作用。 关键词本文来自:计算机毕业网 :网络编程;程序设计;综合实验;教学探索 1 引言 计算机网络的飞速发展和网络新技术的不断涌现,对计算机专业学生的网络程序设计和动手能力提出了很高的要求。作为一门重
40、要的实践课程, “网络程序课程设计”对引导学生掌握最新的网络程序设计技术,培养学生的主动性、协作精神和创新能力具有重要的作用。学生们对这门课程也非常感兴趣:一方面通过上网接触到大量的网络应用程序,对其中的原理充满了好奇;另一方面则是有主观愿望去动手编写网络程序。 本文以国防科技大学计算机学院开设的“网络程序课程设计”为例,系统地介绍了该课程的教学体系以及在教学实践中的一些经验和探索。第 2 节和第 3 节介绍了课程的相关情况和课程教学内容的选择,第 4 节介绍了课程综合实验的设计和考核等相关内容,第 5 节评估了教学效果,希望能对“网络程序课程设计”的课程建设有一定的借鉴作用。 2 课程概述
41、“网络程序课程设计”面向本科三年级学生,教学内容包括TCP 通信等网络编程基础、ASP/PHP/JSP 等动态网页编程语言、 Brower/Server 模式、J2EE等等,所需的预修课程包括计算机网络、操作系统、程序设计初步等系列课程。整个课程包括 32 学时,其中讲授 16 学时,课内上机 16 学时。 “网络程序课程设计”在教学和实践中存在如下几个难点:(1)课程涉及面广,涉及到网络通信、数据库、操作系统和程序设计等多方面的知识;(2)课程涉及的新技术多、内容更新快,无法一一讲授和实践;(3)课程时间有限,课堂上无法讲授太多知识内容,也无法安排大型综合实验。针对本课程的特点,我们在教学实
42、践中精心选择教学内容,引导学生们学习最新的网络设计技术,并通过综合实验锻炼学生们的各方面能力,较好的解决了教学实践中存在的困难,取得了不错的教学效果。 3 课程教学内容选择 “网络程序课程设计”涉及到许多方面的教学内容,主要包括: 网络编程基础 了解和掌握 Client/Server 模型和 Brower/Server 模型;网络应用和数据库系统;网络应用基本架构;HTML/XML 和网页设计基础;网络编程技术基础。 要求:掌握网络通信的两种典型模型,掌握网络应用基本架构,掌握 HTML 和 XML 以及相互间的主要差异,了解各种主要的网络编程技术和优缺点。 2)ASP 编程基础 了解和掌握
43、ASP 编程基础、重要组件、错误处理与调试;ASP 数据库编程;VBScript 和 JavaScript 等脚本语言、ASP 工具; 要求:掌握 ASP 的编程的技术和方法,掌握基于 ASP 的数据库应用编程技术,熟悉 VBScript 和 JavaScript 等脚本语言,熟悉主要的 ASP 工具的使用。 3)PHP 编程 了解 PHP 编程基础、语法概述、PHP 函数、类和对象;基于 PHP 的数据库操作技术;基于 PHP 的动态网页实现技术;基于 PHP 的网络应用实现技术; 要求:掌握 PHP 编程语言的基本成分,熟悉 PHP 在网络应用中的使用。 4)COM+组件编程 了解 COM
44、+组件、接口原理、DLL 和类、COM+组件的包容与聚合;ATL;ActiveX 控件;COM+组件服务器;对象缓冲池;消息队列; 要求:掌握COM+组件技术的基本原理,基于 COM+组件实现自动化的技术,组件的管理和消息队列。5)J2EE 技术 要求掌握 Java 服务器模型,JSP 简介;Java Servelet,Java Beans,JDBC;Java 分布计算技术、JSP 标签和 EJB 技术 要求:掌握 JSP 的主要技术,掌握基于 J2EE 开发网络数据库应用的企业应用解决方案。 因为课时有限,不可能对以上内容面面俱到的讲授,因此我们选择了 1)网络编程基础、2)ASP 编程基础
45、和5)J2EE 技术作为讲授的重点,并且特别强调学生的自学能力。推荐合适的教程和指导书,引导学生们自学课程内容,并积极开展动手实践。 4 课程综合实验设计“网络程序课程设计”在讲授有关网络编程的基本原理和基本技术的基础上,通过综合实验使学员熟练掌握有关网络程序设计基本方法、网络应用基本框架、网络程序设计主要过程等知识内容,并具备设计和编写大型网络程序的能力。因此设计一个合适的课程综合实验,是非常重要的。 4.1 课程综合实验 综合考虑教学内容和教学大纲的要求,出于考察学生对教学内容的掌握和学习能力的目的,我们设计了一个课程综合实验,要求同学们自由分组协同完成。课程实践要求学生在 Windows
46、 平台上,选择 JSP、ASP 或者 PHP 等动态网页语言,设计并实现一个呼叫中心(Call Center) 管理系统。综合实验具有较为现实的研发背景:自来水公司等公共服务行业公司每天都要面对大量市民的咨询和投诉,人工接听电话已经难以为市民提供优质的服务。因此,通过建立 24 小时的呼叫中心系统,提供“来电来信来访”三来服务,可以为用户提供全方位的服务。统一规划的呼叫中心管理平台,是满足公共服务企业为广大客户提供服务的窗口、互动的平台。 综合实验中的呼叫中心管理系统包含停水查询、水费查询、投诉举报等业务功能(如图 1 所示),并可以最终扩展成为一个技术专业化、具备配套完善公共服务行业服务流程
47、和特点的呼叫中心平台,为来自电话语音用户、互联网用户、灵通短信用户提供全方位不间断的业务受理、业务信息反馈、问题解答、费用和账务信息查询、水费催缴等功能为一体的综合业务服务语音信息平台。 我们设计的这个课程综合实验考察同学们对网站规划、数据库、网络通讯、网页设计等多方面知识的掌握,考察同学们的创新精神、自学能力和团队协作能力。 4.2 综合实验实现平台的选择 “网络程序课程设计”的课程综合实验,要求同学们用动态网页语言、数据库和 Web 服务器一起构建和设计实现一个中型的网站。动态网页语言是课程学习和实践的重点,它也往往决定了综合实验的实现平台。现在常用的动态网页语言有 ASP、JSP、PHP
48、 等几种。这几种动态网页语言具有各自的特点,并且都有一定的应用前景。因此引导学生选择合适的动态网页语言,成为确定讲授内容和课程实践手段的一项重要任务。 因为学生们大多没有接触过这几种动态网页语言,而 8 周的课程实践也无法要求学生们全部掌握和精通这几门语言,因此在课程讲授时必须重点分析这几门语言的优缺点、适用环境,引导学生根据自己的学习基础和兴趣,选择最合适的动态网页语言,并最终确定与之配套的 Web服务器和数据库。 4.2.1PHP PHP 是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用 C、Java 和 Perl 语言的语法,并耦合 PHP 特有的特性,使 Web 开发者能够快速地写
49、出动态页面。 PHP 是完全免费的开源产品,可以从 PHP 官方站点(http: /) 自由下载。PHP 与同样是开源产品的 Web 服务器 Apache 和数据库 MySQL 搭配使用,可以快速搭建动态网站系统。因此国外有众多的网站系统由 Apache、PHP 和 MySQL 一起构建,这些免费软件降低了建站的成本,其搭配后的执行效率也比 Windows 平台中的常用搭配IIS、ASP 和 ACCESS 要高。 PHP 中有一套常用的可以提供一般数据库事务需要的基库 PHPLIB,程序员也可以利用 PHP 编写外围函数去间接存取数据库,具备较好的灵活性。但是 PHP 提供的数据库接口支持彼此不统一,比如对 Oracle、MySQL 和 Sybase 的接口都不一样,处理起来就不方便了。