《软件工程》-程序编码

【前言】
1.了解程序设计语言的分类和特点。
2.了解结构化程序设计是什么。
3.什么是结构化程序设计原则?
4.了解程序设计风格的相关内容。
5.掌握度量程序复杂性的方法。
【内容】
1.程序设计语言分类
1)程序设计语言的分类可分为汇编语言和高级语言二大类。
(1)机器语言、汇编:
第一、第二代计算机用
(2)高级语言
同一个问题,高级语言编码长度可比汇编少3-7倍;
按照软件工程的分类,语言的发展大致分为4代、3阶段:
在这里插入图片描述
2)从语言的内在特征看,高级语言可分为:
系统实现语言、静态高级语言、块结构高级语言和动态高级语言四大类。
2.语言的选择
(1)应用领域的不同决定选择的语言
在这里插入图片描述
(2)系统用户的要求决定
用户使用他们熟悉的语言。
(3)可以使用的编译程序
运行目标系统的环境中可以提供的编译程序往往限制了对语言的选择。
(4)程序员的经验和知识(编程者对语言的熟悉程度
(5)软件可移植性要求
(6)当工程规模很大时,而又没有完全合适的语言,可编一个专用的语言。
(7)算法与计算机复杂性、软件的可靠性
(8)数据结构的复杂性,软件的可维护性
(9)效率的考虑(处理器、存储器、输入和输出)
(10)了解语言的发展前景

3.语言选择的原则
(1)最少的工作量原则
(2)最少的技巧性原则
(3)最少错误原则
(4)最少维护原则
(5)减少记忆原则
4.程序编码原则
(1)先求正确后求快
(2)先求清晰后求快
(3)求快不忘保持程序正确
(4)保持程序整洁以求快
(5)不要因效率而牺牲清晰
5.好程序标准
(1)易于测试和调试
(2)易于维护
(3)易于修改
(4)设计简单
(5)高效率
据统计,一个典型的程序的50%的执行时间被3%的语句所占用,故这部分代码的效率很重要。
6.结构化程序设计
结构化程序设计主要包括两方面:
(1)在编写程序时,强调使用几种基本控制结构(顺序、选择、循环)
(2)在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。
7.结构化程序设计的主要原则
(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑;
(2)选用的控制结构只准许有一个入口和一个出口
(3)复杂结构应该用基本控制结构进行组合嵌套来实现。
8.程序设计风格
程序实际上也是一种供人阅读的文章,有一个文章的风格问题。应该使程序具有良好的风格。
(1)源程序文档化
标识符的命名:注意不要和关键字同名
安排注释:给阅读的人提供方便。
程序的视觉组织:布局
(2)数据说明
为了使程序中数据说明更易于理解和维护,必须注意以下几点:
a.数据说明的次序应当规范化
数据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护。
b.说明语句中变量安排有序化
当多个变量名在一个说明语句中说明时,应当对这些变量按字母的顺序排列。
c.使用注释说明复杂数据结构
如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的固有特点。
(3)语句结构
语句构造力求简单,直接,不能为了片面追求效率而使语句复杂化。
1在一行内只写一条语句
2程序编写首先应当考虑清晰性
3程序要能直截了当地说明程序员的用意。
4除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二。
5首先要保证程序正确,然后才能提高速度。
6避免使用临时变量而使可读性下降。
7让编译程序做简单的优化。
8尽可能使用库函数。
9避免不必要的转移。同时如果能保持程序可读性,则不必用GOTO语句。
10尽量只采用三种基本的控制结构来编写程序。
11避免使用空的ELSE语句和IF…THEN IF…的语句。这种结构容易使读者产生误解。
12避免采用过于复杂的条件测试
13尽量减少使用“否定”条件的条件语句。
14尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言。
15数据结构要有利于程序的简化。
16要模块化。
17利用信息隐蔽,确保每一个模块的独立性。
18从数据出发去构造程序。
19不要修补不好的程序,要重新编写。
20对太大的程序,要分块编写、测试,然后再集成。
(4)输入/输出方法
输入和输出信息是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用。
9.程序设计质量评价
正确性
(1)程序中没有语法错误;
(2)程序运行时没有发现明确的运行错误;
(3)程序中没有不适当的语句;
(4)用有效的测试数据,得到程序的正确结果;
(5)用无效的测试数据,得到程序的正确结果;
(6)用任何可能的数据,使程序在运行时得到正确的结果。
结构清晰性
(1)是否用三种结构化格式表示程序的控制逻辑
(2)是否有一个入口,一个出口
(3)是否严格控制GOTO语句
易修改性
易读性
简单性

10.程序复杂性度量
程序复杂性主要指模块内程序的复杂性。
一.方法
(1)代码行度量法
方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数作为程序复杂性的度量。
(2)McCabe度量法
又称为环路复杂性度量,是一种基于程序控制流的复杂性度量方法。
说明:环路复杂度取决于程序控制结构的复杂度;环路复杂度是可加的;McCabe建议,对于复杂度超过10的程序,应分为几个小程序,以减少程序中的错误。
二.计算方法
1.计算环路复杂性的方法
根据图论,在一个强连通的有向图G中,环的个数有以下公式给出
V(G)= m - n + p
其中,V(G)是有向图G中环路个数,m是图G弧数,n是图G中结点数,p是图G中强连通分量个数。
2.Halstead的软件科学方法
Halstead软件科学研究确定计算机软件开发中的一些定量规律,它采用以下一组基本的度量值。
程序长令n1表示程序中不同运算符的个数,令n2表示程序中不同运算对象的个数,令H表示“程序长度”,则有
H = n1log2n1+n2log2n2
这里,H是程序长度的预测值,它不等于程序中语句个数。
三.计算
1.程序量
在这里插入图片描述
2.程序量比率
在这里插入图片描述
3.程序员工作量
E = V / L
4.程序的潜在错误
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值