- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在第四届中国软件工程大会上演讲稿-ThinkinPic
软件分析、测试、开发和维护的利器--SI-NS图技术
杭州思图软件科技有限公司 斯传根
感谢大会执行主席和希赛网为我安排这次演讲。我要讲的和演示的是SI-NS图技术,它适用于程序设计、开发、测试、文档、维护的全过程,能显著改善一线软件开发人员的工作环境,提高他们的工作质量和效率。
1. 程序员在分析、测试和维护程序时面临的困境
现有的无论面向过程还是面向对象的计算机语言,都是人为定义的形式化语言。受形式语言和编译技术的制约,它们并非完全人性化的,或者说与人和谐的。程序员整天面对的是显示屏里见首不见尾、整体结构差、冗长的、存在二义性的、一维的文本程序。他们的精力、聪明才智和时间的很大部分要耗费在不断弄懂自己或者别人开发出来的程序结构和设计思想上,连每个“if”、“else”的配对次序以及语法标点符号都不能疏忽。这会严重影响程序员的整体结构性思维和解决实际复杂问题的能力。软件的开发成功率低、开发周期长、成本大、可靠性和可维护性差已成为当前软件业的通病。所谓“不上ERP是等死,上了ERP是找死。”就是业内人士对目前企业信息化遭遇尴尬局面的无奈评价。即便是世界软件巨子微软公司,它的Windows操作系统也始终存在漏洞,需要不断打补丁更正。
2. 美国Sun公司要求规范程序代码
为了规范每个人写的程序,便于相互理解和交流,创立了Java语言的美国著名Sun公司在1997年9月发布过一篇很有影响的名为“Java程序代码规范”的文章[9]。文章一开始就为什么要规范程序代码提出了以下理由:
1、在一个软件的生命周期里,80%的成本是花在维护中。
2、很少有软件自始至终一直由它最初的设计者维护的。
3、规范程序代码可以改善软件的可读性,使软件工程师能更快更好地理解别人提供的程序代码。
4、如果将源代码视作一件要交付的产品,应当像对待别的产品一样妥善地整理和包装。
笔者非常同意文章的观点和提出的上述理由。但细看文章的规范内容,涉及的只是程序代码的注释、缩排以及语句长度和格式等等。而程序形式仍然是我们司空见怪的,一维的、类似于接下去我们要测试其可读性的文本程序。它并没有根本改善程序的可读性,程序员也没有因此根本摆脱面临的困境。
3. 测试一个已按Sun公司要求规范的程序可读性
请看程序1,这是一个Turbo C系统程序。程序不长,不算太复杂,书写格式也已经按Sun公司要求作了规范。我们从以下三方面测试其可读性。
1、自上而下依据条件判别程序要执行的语句;
2、自下而上依据执行的语句判别程序须满足的条件;
3、程序总体结构层次的清晰度。
void valuestring(CELLPTR cellptr, double value, char *vstring, int col,
int fvalue, int *color, int formatting)
/* Sets the string representation of a value */
{
char s[81];
char *fstring;
int width, pos;
if (value == HUGE_VAL)
{
strcpy(vstring, MSGERROR);
*color = ERRORCOLOR;
}
else
{
if (formatting)
{
sprintf(vstring, %1.*f, fvalue 15, cellptr-v.value);
if (fvalue COMMAS)
{
pos = strcspn(vstring, .);
while (pos 3)
{
pos -= 3;
if (vstring[pos - 1] != -)
{
movmem(vstring[pos], vstring[pos + 1], strlen(vstring) - pos + 1);
vstring[pos] = ,;
}
}
}
if (fvalue DOLLAR)
{
if (vstring[0] == -)
{
文档评论(0)