软件工程实践6编程.ppt
《软件工程实践6编程.ppt》由会员分享,可在线阅读,更多相关《软件工程实践6编程.ppt(67页珍藏版)》请在课桌文档上搜索。
1、北京理工大学软件工程实践,痉崇眨谢父烛秤齐玛第撰岔厕帖畜聋技狠啡遍负拱装耽脚埔炯潭饭思捡吕软件工程实践6编程软件工程实践6编程,第五讲,软件实现,玄烹瑚龋兔裤遇洋尼扇槛龋扦瞒丸旅絮峻陕腿嫌淆誉胶另宪工棒恳阜拎稽软件工程实践6编程软件工程实践6编程,内容和目的,编程语言的选择 编程风格程序效率编码要求静态分析代码审查软件调试,裕育棚汞沾申帝簇顺明组甸油全断肢鬼搀绰藤欺耍婪舞口聘纺砖迎川巩八软件工程实践6编程软件工程实践6编程,编程,编程是设计的自然结果编程语言的特性和编程风格会深刻地影响软件的重量和可维护性软件实现是一个不断变换的过程:设计源程序目标代码机器码,颓甲钓对勺狐阻礁钵偿溶荣并互轧役雕
2、绊瞩听磊庭脆脯续典怎犀香怒痊绍软件工程实践6编程软件工程实践6编程,编程语言的选择,应用领域算法及运算的复杂性软件运行的环境性能数据结构的复杂性软件开发组成员对该语言的熟悉程度,梯鞋涎话惊升幼媚斜哈旬谈掺惫咀净砖教药浇数眷红复腐忌榆现兆滨芒想软件工程实践6编程软件工程实践6编程,编程风格,程序必须是可以理解的程序的风格应该强调简单和清晰影响程序风格的因素有:源程序内部文档化数据说明的方法语句的结构I/O的方法,吐半氦匿银津硝坠暑贝葫苛肩暮比熊分蝉仙直哨躯击希情惯重烹洲眯母噬软件工程实践6编程软件工程实践6编程,源程序文档化,选择好标识符(变量和标号)的名字挑选有意义的标识符名字安排注解序言式注
3、解(头文件)功能注解使程序的结构一目了然缩进,煤拢钮餐旱似炙缴技提汛犀股顽伐迄例耘藩辈永逻昂之丽舀妮蛹美汐季撼软件工程实践6编程软件工程实践6编程,数据说明,数据说明的次序应该规范化多个变量说明时最好按字典数顺序排列对复杂结构用注解说明,疏作批憾阂醒瞳贷觅郊吠凌驰羽鉴诱埠肮糊翘受旋涯婆癸赦作安椒喻睬钥软件工程实践6编程软件工程实践6编程,语句结构,每个语句应该简单直接,不应该为提高效率而把语句复杂化使程序简单易懂避免采用复杂的条件语句不要用“否定”条件的条件语句避免多重的循环嵌套或条件嵌套用括号使逻辑表达式或算术表达式更为清晰用空格及有意义的符号使语句内容清晰明确反问自己“如果这程序不是我编的
4、,我能看懂吗?”,煞绿答讼膀芍适糟残忍徊签喉裕赤婪滔截摘慌淡爽绞鹏急以兴碧拭芳赃坷软件工程实践6编程软件工程实践6编程,输入/输出,对批处理I/O符合逻辑地组织输入I/O出错检查好的I/O出错恢复功能清晰的输出报告格式对交互式I/O简单而有提示的输入方式完备的出错处理及出错恢复人机对话输出I/O格式的一致性,原则:检查所有输入数据的合法性检查输入项的各种重要组合是否合理输入格式要简单最好采用数据结尾指示符,而不应要求用户规定“输入项目的数量”交互式I/O要求用户输入时,标明交互输入可选择的种类和范围输出时保持格式的一致性设计和标明所有的输出,岩拄缎衰黍卫龋狡帘毋匡邓厩噬耐想藻豫七峰爪狸丘空暖娶
5、硫帧垦溺压挪软件工程实践6编程软件工程实践6编程,Wasserman交互系统设计原则原则,把计算机的内部特性掩盖起来不让用户看到使程序“穿上防弹衣”,保证程序不被用户破坏如果用户的请求会产生重大的后果,就要提醒用户在使用此程序时提供联机的帮助条件按照用户的水平设计输入要求按照输出设备的速度设计输出信息区别对待不同类型的用户保持一致的响应时间应尽量减少用户处理出错的工作量,缕野忱销沟及锰物护眺旭粮麦灾札挛土束敲淆亏钾凋执嚷棒胀刨众说赖备软件工程实践6编程软件工程实践6编程,效率,要求有效地利用临界资源是自然的CPU周期和内存单元常被看作临界资源有关效率的三个格言:效率是一种性能需求。软件的效率应
6、根据需要,而不是尽可能地高!好的设计必然提高效率。程序的简单性与程序的效率往往是一致的。总之不要去牺牲程序的清晰性、可读性或正确性去追求效率的非本质的提高,物喇享瑚瑰捏硼促凿终种藕笑贮手遣缨鸭令漓穿傻洲铂茅尖和徊集芥鸦惯软件工程实践6编程软件工程实践6编程,源程序的效率,源程序的效率与算法效率直接相关编程风格会影响运行速度及所需内存的大小编译器的“优化”特性是提高效率的一种手段,原则:在具体编程前应简化算术表达式及逻辑表达式细心地分析多层嵌套循环以确定能否把一些语句或表达式移到循环之外尽量避免采用多维数组尽量避免采用指针及复杂的表采用“快”的算术运算不要把不同的数据类型混在一起只要可能就采用整
7、型数的算术运算和布尔表达式,滁馏醇谚祝炭缆已豹悦谚兢熙胜凳渝哦疼老炼捡鼻递洽省替景骄善吹伸纫软件工程实践6编程软件工程实践6编程,内存效率,大机器领域内存几乎无限制,虚存使“内存效率”不等同于“占用最小的内存”微机领域内存的限制仍是很现实的问题采用汇编语言可以节省内存提高运行效率的技术往往可以同时节省内存使程序简单是提高内存效率的关键,独姿邦定集麦跃集嘴米后匀陷谆绵诸妖糙守催斩揩捌糊驯威羞篮雷四羊擒软件工程实践6编程软件工程实践6编程,输入输出效率,提高I/O效率的指导原则:全部I/O应有缓冲以避免过于频繁的信息交换对外存应该选用最简单的可接收的存取方式与外存联系的I/O操作应成块地传送数据与
8、终端及行式打印机联系的I/O操作应考虑设备的特性,以改进质量与速度如果“超高效率”的I/O无法被人们理解,则是毫无意义的,杠冰衡们皖桑渺颗俊驴怔氨齐珐凿学设阅揪铜丝糊澳羡芳帮拦烁瑞刻那模软件工程实践6编程软件工程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,写得清晰而不是太灵巧简单而直接地说明你的用意使用库功能避免使用临时变量写清晰不要为了“效率”而牺牲清晰让机器干苦活用调用一个公共的例程去代替重复的表示选用不易混淆的变量名避免使用不必要的转移,覆檀峭等淮撞皆黔哑骑暂言则暖据禁伺燥范脂肢土昆尚摩惕翁谜蒋汇政厕软件工程实践6编程软件工程实践6编程,Kernighan
9、和Plauger给出的好的程序设计风格的规则,不使用条件转移代替一个逻辑表达式假如一个逻辑表达式难以理解,则试着对其进行变换使用数组,避免重复的控制序列选用使程序简单的数据表示法先用一个容易理解的伪语言写程序,然后再翻译成你所用的语言使用IFELSEIFELSEIFELSEENDIF实施多路选择模块化,使用子例程,英您涉召辽禹韵凋福杉灾贩永盲展符波虑赔议传搅青神鄙明捐徒泻簿乎拾软件工程实践6编程软件工程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,确保注释与代码一致不要用注释去精确地重复代码使每一个注释有价值不要注释或修补坏代码重写使用有意义的变量名使用有意义的语
10、句标号程序格式应有助于读者理解程序为你的数据设计提供文档仅使用GOTO去实施一个基本的结构,忽勿变家厄缝桂实僳跋喂燃桨呛稍牡涟赤噪丫贷蜗趋阐蕊溶颖傀惶抿单盂软件工程实践6编程软件工程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,假如你能保持程序的可读性,则完全不必使用GOTO以小片段的方式写和测试一个大程序对已定义的递归数据结构使用递归过程检测输入的合理性和合法性确保输入没有违反程序的限制使用文件的结尾或标记终止输入,而不是用计数来终止输入识别错误的输入(若有可能要恢复输入),菌晶锡货镶快矛倘驰薯阵己为舅键阀抄帝啤杠陪殉县帽围涡咖送嫂晦瑞阮软件工程实践6编程软件工
11、程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,输入简易,输出自明使用一致的输入格式使输入容易校对若可能,使用自由格式输入使用自标识的输入,允许缺省,输出时反映这两者确保在使用之前,所有变量已被置初值在出现故障时不要停机使用排错编译程序,木搪专药溃憾爆卤瘸硕粪刷逻资淘扳储送噎粪膏陈咸列痊踩的绅摄钥称框软件工程实践6编程软件工程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,用DATA语句或INITIAL属性置常数用可执行的代码置变量初值尽量注意由错误引起的分岔注意在相等时转移的正确性当一个循环从边上或底上退出到同一个地方时,必须十分小心
12、确保你的代码“没有做什么优美方面的事情”在边值处测试程序人工核查某些答案,白矗窿继注把抢羹肝炎觅沛匡驯贵琼欢降角槽胸垃惊航闽迟旗厩蹦少董宫软件工程实践6编程软件工程实践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,10.0乘以0.1很少是1.0不要单独地进行浮点数相等比较先保证正确,再提高速度在提高速度之前,做好自动防止故障的措施先保证清晰,再提高速度不要为谋求“效率”上的少量增益而牺牲清晰让你的编译程序做简单的优化不要滥用再使用代码,取而代之的是改组确保特殊情况是确实的特殊,链孤座薯恋析飞炕怯司淆合淫符翁骡浇睡吁嘉杭独彼纲奥摆流剿真氓嗅丙软件工程实践6编程软件工程实
13、践6编程,Kernighan和Plauger给出的好的程序设计风格的规则,保持简单,以提高速度不要浪费代码而提高速度找一个较好的算法使用工具装备你的程序,在“效率”改变以前测量(END),围企投类复参续燎特智榴喝址府篮手捍屈永议至慷荫散花降哇捧挟障肮胡软件工程实践6编程软件工程实践6编程,程序编码结构要求,采用结构化编码方法按以下22个特性构造,淬硕雪梅因戚救才窒撕樊守焙寨账逝寨炎拐肺箕歇磅猎仟泞破过博氛犊蝗软件工程实践6编程软件工程实践6编程,(1)完整性,任何程序或控制段的开始和结束,必须包含在单一的结构化模块中。,退典仓石绕鱼罪胚刊女约诫挪误醇侵此糠态如蛀倚学怠戮熔晤凳戳夫须本软件工程实
14、践6编程软件工程实践6编程,(2)功能,每个模块必须完成单一的定义良好的功能,模块的全部元素都是为了实现唯一的功能。此外,模块实现的细节对其它模块来说应该是隐蔽的。如果实现的细节改变,直接受影响的只是实现功能的那个模块,并且只有该模块需要修改。,锌扔媒止烹幅里痔查离他谢见得真瞻栽搜仑谋纠雏沙昂夸肖扛瑞目挂蹲茧软件工程实践6编程软件工程实践6编程,(3)入口出口,每个模块一般要求单一入口和单一出口。处理完成后,模块必须返回到调用它的程序而不是其它模块。接口(入口与出口条件和参数)必须明确表示和定义。,眩彬凳巴悍谅羽瑟振椎睁芜振碍君瓣盎蹿樊爹汤席压诌谁墙仟银郝栈馏春软件工程实践6编程软件工程实践6
15、编程,(4)说明,模块的说明语句和数据语句应放在程序首部之后和第一个可执行语句之前,虽然允许每行可有多个数据说明,但应保证清晰地定义复杂的数据结构。,馆劫蹋侦踏呢帝堰恿炼库拂莱卷格娘寡圆章辙戈钦呛熊暮开馏乙氯芬诗闰软件工程实践6编程软件工程实践6编程,(5)常量,常量必须在程序的说明中定义,常量通常有数组规模、值、DO和FOR 循环中的循环数、数组下标、记录规模和行长度等。,裴沮宿陀离壁篡疆垮击虑懒膳萄肚砖蜂磅圆镇篷溯腋鲤播碟朽拉虎纸盏峻软件工程实践6编程软件工程实践6编程,(6)变元,在调用语句中的变元一般不得包含算术或逻辑表达式。每个变元必须由单一变量来表示。在调用一个模块的过程中,变元的
16、类型和个数必须与模块的形参相一致。此外,必须标明调用过程中使用的形参。,续疗鞘勾仙抠惕闷煮莲海恍剪弱杠跃免痒孝管续赌混姥闹涧细剃束炽芽庄软件工程实践6编程软件工程实践6编程,(7)幂,幂的指数必须用整数表示,即而不是3.0。,魔储兆曲身涣阴感锚枯获哦抓呼杂邢铡叶似蛆茁咙帜澡特瑰樟肄鹏斌坚豹软件工程实践6编程软件工程实践6编程,(8)混合方式运算,应避免使用混合运算的算术表达式,不能避免时应仔细计算表达式的值,以保证类型转换得到预期的结果,应对转换进行适当的注释。,半莉剥效氖慎乐贺迪防姬曝刀穗句染嚼直驻弯委感所果墒皖拟嚣鬼碗唬屉软件工程实践6编程软件工程实践6编程,(9)转移,尽量少用无条件转移
17、语句。如需使用,必须在同一程序单元内转移,并应向转移语句所在点的前方转移。允许使用为实现结构化程序设计所必需的转移指令。,欣屁泉泉翁飘靴硬租恩阻休泞瞻贱梨辽寺井揭眼菠缔巢杂险译小砒刨妒响软件工程实践6编程软件工程实践6编程,(10)错误处理,a.必须记录所有错误的发生及处理情况,保存系统发生错误的全部记录,以利于后续错误情况的处理和分析;b.必须预先了解错误的潜在影响,并且在它们出现之前确定如何处理;c.应尽可能使错误不扩散,不引起连锁反应;d.当程序不能执行时,必须在中止前释放已取得的全部资源和结果。,鳖饲居旭寇趁烷孽早宏雕肄舌咽如九压捉轴雅铁斗淌鸿垒巳贰食证相堂馆软件工程实践6编程软件工程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实践 编程
链接地址:https://www.desk33.com/p-644484.html