软件工程基础之程序实现.ppt
《软件工程基础之程序实现.ppt》由会员分享,可在线阅读,更多相关《软件工程基础之程序实现.ppt(60页珍藏版)》请在三一文库上搜索。
1、第五章 程序实现,本章学习目标,2,3,培养良好的编程习惯,理解编程规范,了解选择程序设计语言的一般原则,程序编码就好比建筑工程中最基础的砌砖和泥工作一样是工程的基础,是设计的具体实施。,引言不同 瓷砖特点,砌砖风格,砌墙的手艺,砌墙的规范 程序语言特点,编程风格,编程基本功,编程规范,手艺太差了,还不规范,手艺不错,规范,屋里的墙砖的应用不合适,程序设计语言,程序设计语言是:人与计算机通信的最基本工具。 程序设计语言的特性不可避免地会影响开发人员的思路和解决问题的方式,会影响代码的可理解性和可维护性。 编码之前的一项重要工作就是选择一种适当的编程语言。,不同的语言适用于不同的应用,COBOL
2、语言:数据处理程序 PHP语言:专门用来编写网页处理程序 Perl语言:更适合文本处理 C语言:被广泛用于系统软件开发 JAVA语言:用于跨平台的应用软件开发等等。,程序设计语言的特点-技术方面,一旦确定了软件需求之后,待选用的程序设计语言的技术特性就显得非常重要了。 如果需要复杂的数据结构,就要仔细衡量有哪些语言能提供这些复杂的数据结构描述。 如果软件要求高性能及实时处理能力,就该选用适合于实时处理的语言,如C或汇编语言。 如果应用有许多输出报告或繁杂的文件处理,则选用PowerBuilder、Delphi或SQL比较合适。,所有程序语言的基本成分都可归纳为4种: 数据成分:指明该语言能接受
3、的数据,如各种类型的变量、数组、指针、记录等。作为程序操作的对象,具有名称、类型和作用域等特征。使用前要对这些特征加以说明,数据名称由用户通过标识符命名,类型是说明数据需占用多少存储单元和存放形式,作用域说明数据可被使用的范围。 运算成分:指明该语言可执行的运算,如+,-,*、/ 控制成分:顺序结构、条件选择结构和循环结构 传输成分:数据的传输方法,例如输入、输出函数,程序设计语言的特点-语言本身,名字声明 类型声明 初始化 程序变量的局部性 程序模块的独立性 循环结构 分支结构 异常处理 独立编译 ,1、名字声明,预先说明程序中所使用的变量名字,编译程序能够检查程序中出现的名字的合法性,从而
4、帮助程序员发现和改正程序中的错误。 但是,有些语言不要求显式地声明程序中所使用的变量名称,它把变量第一次出现时使用的名字看做对这个变量的声明。这样做可能会引入一些很难发现的错误,并且可能会产生严重后果。,2、类型声明,变量的类型声明确定一个变量的使用方式,有了类型声明,编译程序就能够很容易地发现程序中某个特定类型的变量使用不当的错误。有些语言不要求显式的类型声明,例如FORTRAN语言规定,名字的第一个字母决定它的类型,但是一旦显式地声明了一个变量的类型,则以显式声明为该变量的类型。这很容易造成阅读时的混淆。 现代的大多数高级语言都有自定义类型,即允许开发人员定义与特定应用相关的类型,并且可以
5、用自定义类型嵌套定义新的类型。例如,可以定义记录、链表、二叉树等复杂的结构类型。 程序设计语言中的类型说明不仅仅是一种安全措施,还是一种重要的抽象机制。,3、初始化,程序设计中最常见的错误之一就是在使用变量之前没有对变量进行初始化。为了减少发生错误的可能性,应该强迫程序员对程序中所使用的变量进行初始化。 另一个办法是在说明变量时由系统给变量赋予一个特殊的标识,表明它尚未初始化,以后如果没给这个变量赋值就企图使用它,系统会发出报警信号。,4、程序变量的局部性,程序设计的一般原则是变量的名字应该在靠近使用它的地方引入,并且应该只有程序中真正需要它的那些部分才能够访问它。 通常有两种提供局部变量的途
6、径:单层局部性和多层局部性 。,PROGRAM TEST PROCEDURE A() VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; PROCEDURE B() VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; END.,程序中过程A和B内的变量是单层局部性的,两个过程中声明的变量的作用范围局限于所在的过程。,PROGRAM TEST PROCEDURE A() VAR ARRAY A20,B20:INTEGER; WORK,I,J,K:INTEGER; PROCEDU
7、RE B() VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; BEGIN END; ,程序的结构是多层的,模块A中声明的变量与模块B中声明的变量除了变量K之外全部相同。内层模块B中有意义的变量是属于该模块的A,B,WORK,I,J和属于外层模块的变量K。 要尽量避免内层模块与外层模块定义相同的变量名,容易引起差错,给维护人员理解代码带来很多困难,5、程序模块独立性,结构化语言提供了控制局部变量可见性的某些手段,主要是在较内层程序模块中定义的变量不能被较外层的程序块访问。 由于动态存储分配的缘故,在两次调用一个程序块的间隔中不能够保
8、存局部变量的值。因此,即使只有一两个子程序使用的变量,如果需要在两次调用这些子程序的过程中保存这个变量的值,也必须把这个变量说明成全局的,这将增加维护时发生差错的可能性。因此现在大多数语言提供了静态变量,这种变量可以保存前次调用时的数据,解决了多次调用一个模块时局部变量不能保存的问题。,6、循环结构,最常见的循环结构有for语句、while-do语句和repeat-until语句,这些语言都是在循环体外判断循环条件。 有许多场合需要在循环体内的任意一点测试循环结束条件,如果使用if-then-else语句和附加的布尔变量实现这个要求,则将增加程序长度并且降低程序的可读性。 某些程序设计语言考虑
9、到上述要求,适当地解决了这个问题。 exit(标识符)when(条件)这个语句把控制转移到循环语句后面的一条语句或转移到由标识符指定的语句上 。,7、分支结构,简单的分支语句一般不会出现问题,但是多分支的case型语句注意以下2个问题: 如果case表达式取的值不在预先指定的范围内,需要用缺省方式处理。 在某些程序设计语言中,由case表达式选定的执行语句取决于所有可能执行的语句排列顺序,如果语句顺序排列错了,编译和运行时系统是不会发现这类错误的。,8、异常处理,程序运行过程中发生的错误或意外事件称为异常。 以前大多数程序设计语言在检测和处理异常方面几乎没有给程序员提供任何帮助,程序员只能使用
10、条件控制检测异常,在发生异常时把控制转移到处理异常的程序段。但是,JAVA等一些语言提供了异常处理机制,程序员可以很容易地利用语言提供的异常处理机制实现错误和异常的处理操作。,9、独立编译,独立编译意味着能够分别编译各个程序单元,然后再把它们集成为一个完整的程序。 一个大程序通常由许多程序单元组成,如果修改了其中任何一个程序单元都需要重新编译整个程序,将大大增加程序开发、调试和维护的成本; 反之,如果可以独立编译,则只需要重新编译修改了的程序单元,然后重新连接整个程序即可。独立编译的机制对于开发大型系统极其重要。,10、其它特性,某些语言带有一些特别的功能,这些功能可实现一些特殊的设计。如MO
11、DULA语言和并发PASCAL语言支持并发处理、以及必须彼此通信和协调的分布式进程。因此适应并发的和分布式处理的要求。,程序设计语言的特点-软件工程方面,详细设计能够直接地翻译成程序代码。 源程序的可移植性。改善软件可移植性的主要途径是使语言标准化。对于可移植性要求的软件,应该严格遵守相应的标准编写程序代码,不要图一时的省事去使用语言的非标准特性。 编译程序效率较高。编译程序首先应该支持独立编译,并且能够发现尽可能多的程序代码错误,辅助程序员提高程序调试效率。 尽可能应用代码生成工具。许多语言都有与它相应的编译程序、连接程序、调试程序、代码格式化程序、交叉编译程序、宏处理程序和标准子程序库等。
12、对于提高效率是明智的选择。 可维护性。可维护性的前提是代码的可理解性,源程序的可读性、语言的文档化特性是影响可维护性的重要因素。,程序设计语言的分类,按语言级别分类,有低级语言和高级语言之分 按照用户要求,有过程式语言和非过程式语言之分 按照应用范围,有通用语言和专用语言之分 按照使用方式,有交互式语言和非交互式语言之分 按照成分性质,有顺序语言、并发语言和分布式语言之分 第四代语言,有数据库查询语言DEV2000、程序代码生成器以及其他一些原型语言、形式化规格说明语言等等。,低级语言:与特定计算机体系结构密切相关,如机器语言、汇编语言,特点是与机器有关,功效高,但使用复杂、开发费时、难维护
13、高级语言:不与特定计算机体系结构密切相关,表示方法贴近于待解问题,特点是在一定程度上与具体机器无关,易学、易用、易维护,但编译后的目标程序的功效往往较低,过程式语言:通过指明一列可执行的运算及运算次序来描述计算过程,如FORTRAN、C、Java等 非过程式语言:不显式指明处理过程细节,在这种语言中尽量引入抽象度较高的非过程性描述手段,以期在程序中增加“做什么”的描述成分,较少“如何做”的描述细节,如第四代语言(4GL)、函数式语言、逻辑式语言。,通用语言:目标非单一的语言,如:FORTRAN、C、Java等 专用语言:目标单一的语言,如:自动数控程序APT,交互式语言:具有反映人机交互的语言
14、,如:BASIC 非交互式语言:不反映人机交互的语言,如:FORTRAN、COBOL,顺序语言:只含顺序成分的语言,如:FORTRAN、C 并发语言:含并发成分的语言,如:Modula、Ada、并发Pascal 分布语言:考虑分布式计算要求的语言,如:Modula,选择一种语言要考虑的因素,在选择与评价语言时,首先要从应用要求入手,对比各项要求的相对重要性,然后再根据这些要求和相对重要性来选择合适的编程语言。 具体选择的考虑: 编程人员的水平和编程经历 待开发软件的类型 算法和计算复杂性 数据结构的复杂性 软件的开发成本和时间要求 软件的可移植性要求 可用的软件工具,编程人员的水平和编程经历,
15、虽然程序员学习一门新的语言并不困难,但是要熟练地掌握和精通一门语言是需要长期的实践开发积累的。因此,在选择语言时一定要考虑到时间限制和程序员掌握语言的程度,尽可能选择一种程序员熟悉的语言。,待开发软件的类型,待开发软件的类型可能不同,一般分为数据库应用软件、实时控制软件、系统级软件、人工智能类软件、军用软件等等。根据软件的类型选择合适的开发语言,例如,FORTRAN语言适合科学计算,PowerBuilder、Delphi、C#等语言适合于信息系统的开发,LISP、PROLOG语言适合于人工智能领域。,算法和计算复杂性,待开发软件算法的复杂性不同,应该选择合适的语言,例如,科学计算领域大都选择F
16、ORTRAN,因为它的运行性能比较好,但是当今计算机硬件的发展使得运算速度已不再成为瓶颈,因此许多计算型软件普遍采用C/C语言。然而计算复杂度很高的软件采用汇编语言、人工智能类的语言肯定是不合适的,前者编写代码的工作复杂度太高,后者的运行效率太低,并且这两类语言的科学计算库都很少,可复用的软件元素较少。,数据结构的复杂性,有些语言,例如FORTRAN、BASIC语言,定义数据类型的能力非常差,一旦设计中有比较复杂的数据结构,程序员实现时会感到很棘手。而PASCAL、JAVA之类的语言其数据结构描述能力非常强大,为程序员创造了一个很广阔的编程空间。,考虑软件的开发成本和时间要求,不仅要考虑当前的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 基础 程序 实现
链接地址:https://www.31doc.com/p-3499370.html