在程序设计中树立编写高质量程序代码的理念
2012-04-29赵占芳
赵占芳
摘要在高级语言程序设计教学中,普遍重视语法知识点的教学,忽略了程序质量的教学工作,因此造成了学校教学与实际工作需求严重脱节的情况。软件质量是软件的生命线,因此在高级语言程序设计教学工作中,树立编写高质量程序代码的理念是至關重要的,将为学生顺利走上工作岗位,打下良好的基础。
关键词程序设计高质量代码编程中图分类号:TP31.5文献标识码:A
0 引言
软件质量就是软件的生命线。软件代码中一个微小的错误,就可能造成无法预计的重大损失。高级语言程序设计是本科生初次接触软件编程的一门入门级的课程,但是在这门课的教学中,教师普遍重视基本语法和知识点的讲解,在程序设计教学中忽视了程序质量的概念,教师们和学生们也很少自觉关心软件的质量。一些勤奋好学的程序员长期在低质量的程序堆中滚爬,吃尽苦头之后才有一些心得体会,并且长进极慢。①
1 树立高质量程序设计理念的必要性
由于软件本身特有的性质决定了只要存在一个很小的错误,就可能带来灾难性的后果。②千年虫事件,仅仅是因为程序员为了节省宝贵的内存资源和硬盘空间,在存储日期时,只保留年份的后两位,如“1990”年被保存成“90”,结果到2000年快要来临的时候,为此一个简单的设计缺陷,全世界付出了几十亿美元的代价。因为若是1990年的存款,到2000年取款的时候,存款年限就被计算为了-90年,以此错误数据计算的话,银行要支付巨额利息。还有1999年的火星登录事故,美国宇航局的火星基地登录飞船在试图登陆火星表面时突然坠毁失踪,质量管理小组观测到故障,认定出现错误动作的原因极可能是某一个数据位被意外更改了。由此可见,软件质量的问题造成的损失是巨大的,甚至是无法估计的。如果不懂得如何有效地提高软件质量,项目会付出巨大的维护和修补的代价,因此作为软件的开发者,就应该树立编写高质量程序代码的理念,将高质量内建于开发过程之中,这就是“预防胜于治疗”的道理。
在当前软件行业迅猛的发展下,软件逐渐走向大型化。在这种形势下,一个软件的开发势必需要众多人的参与。因此软件的开发工作是一种工程,而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战,如果开发工作者没有树立编写高质量程序代码的理念,不遵循统一的编程规范,最终合到一起的程序其可读性将较差。这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误和缺陷的可能性也比较大。由此造成的测试和维护成本会远远大于开发成本。BELL实验室的研究资料表明软件错误中50%左右产生于代码编写阶段,因此在代码开发阶段程序员自觉的建立编写高质量程序代码的理念,能够自觉遵循相关规范,将有效的降低软件后期的测试和维护费用。
在学习程序设计语言之初,就建立编写高质量程序代码的理念,对学生来说,将是受益终生。可以让学生在学习的过程中少走弯路,可以使学生在迈上工作岗位之初,有效降低个人成长周期,快速的适应工作环境,融入开发团队,快速成长为一名优秀的软件开发工作者。
2 高级语言程序设计教学中渗透高质量程序设计理念
2.1 在教学过程中明确高质量程序设计的概念
在教学过程,要通过实例讲解什么是高质量的程序,让学生了解软件质量属性的概念。明确“正确性”只是反应软件质量的因素之一,且运行正确的软件也不一定就是高质量的软件。软件运行正确,但是内存消耗过大,运行速度低,可移植性差,那此软件实际应用价值就会大打折扣,这依然不是一个高质量的软件。
软件的质量属性可以分为两大类:“功能性”与“非功能性”,非功能性的质量属性也称为是软件的“能力”。功能性属性主要包括:正确性、健壮性和可靠性。非功能性属性主要包括:性能、易用性、清晰性、安全性、可扩展性、兼容性和可移植性等等。高级语言程序设计是大部分学生初次接触软件编程的课程,在教学过程中,要向学生明确,正确性、健壮性、易用性、清晰性等的质量属性在初学程序设计的时候就要掌握,可靠性、性能、安全性、兼容性等属性会在数据结构和操作系统等后续课程的教学中讲授。让学生理解高质量程序设计的概念也是贯穿于计算机软件课程教学的始终的,并且深刻理解高质量的程序设计理念对专业知识的学习有深刻的促进作用。
2.2 在教学过程中渗透高质量程序设计理念
2.2.1 遵循编程规范,养成良好的编程习惯
在学习程序设计入门之处,就要循环代码编程的规范。这些规范包括:命名规范、连接规范、文件结构规范、代码版式规范等等。俗话说,“没有规矩,不成方圆”,高质量代码编写也是同样的道理。遵循一定的编程规范,养成良好的编程习惯,是成为优秀程序员的先决条件。从程序设计的入门阶段就锻炼编写规范干净的程序代码,可以在程序开发过程中及后续的程序维护过程中不断受益。
具有良好编程风格的代码,版式美观,具有较好的清晰度,为代码的后期维护升级提供了较好的基础。成熟的IT企业都有自己内部的软件编程规范,遵循共同的规范编写出的各模块的代码,具有了更好的整合性,可以大大降低软件整合、测试的费用,提高软件的整体质量,降低软件的开发成本。
2.2.2 掌握简单的软件测试技术
软件测试是提高软件质量的重要手段。一个程序能够正确的运行一次,是否就证明程序是正确的呢?答案当然是否定的。例如对于分支结构的程序设计中,我们常用的测试方法,就是路径覆盖测试和边界测试。我们至少要设计多个测试用例把程序的分支结构的每一条分支语句都要覆盖一遍,来检测程序的正确性。而且还要对分支结构的边界值进行必要的检测,因为很多的错误的产生就是发生在输入输出的边界点上。如果这些测试用例都能正确执行,这仅仅是检查了代码的正确性。
除此之外,还要检查代码的健壮性和容错能力。对需求之内的数据设计测试用例,还要对需求之外的数据设计合适的测试用例,检查程序的健壮性。程序的健壮性是指在发生异常的情况下,例如一旦有用户输入了意外的数据,则程序有无容错能力,有无出错的处理,程序还能否正常运行的能力。这些都要通过测试来检查程序的健壮性。
2.2.3 建立模块化的编程思想
在第一门程序设计语言教学中,学生必须掌握自顶向下,逐步求精的软件模块化思想。其基本理念就是将一个大的程序按功能分割成一些小模块。软件模块化设计就是现实生活中“分而治之”思想的具体体现。并且保证各模块之间要高内聚、低耦合、结构清晰、接口简单。这样既可以实现模块的复用,也易于维护和功能扩充,缩短开发周期。
总之,在程序设计教学中,让学生牢固树立编写高质量程序代码的理念是至关重要的,这不仅能够提高教学质量,而且为学生后续的学习和工作打好了坚实的基础。
注释
①林锐,韩永泉.高质量程序设计指南——C++/C语言(第3版)[M].北京:电子工业出版社,2011.
②朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.