软件工程——11、软件实现

上传人:大米 文档编号:569857204 上传时间:2024-07-31 格式:PPT 页数:47 大小:341.52KB
返回 下载 相关 举报
软件工程——11、软件实现_第1页
第1页 / 共47页
软件工程——11、软件实现_第2页
第2页 / 共47页
软件工程——11、软件实现_第3页
第3页 / 共47页
软件工程——11、软件实现_第4页
第4页 / 共47页
软件工程——11、软件实现_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《软件工程——11、软件实现》由会员分享,可在线阅读,更多相关《软件工程——11、软件实现(47页珍藏版)》请在金锄头文库上搜索。

1、软件工程模型与方法软件工程模型与方法Models & Methods of Software Engineering第十一章 软件实现 修佳鹏 2009 BUPT TSEG2本章内容本章内容u11.1 软件实现概述u11.2 程序设计语言与集成开发环境u11.3 程序设计方法u11.4 程序设计风格u11.5 程序效率 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心311.1软件实现概述软件实现概述u本节内容u11.1.1软件实现的目标 u11.1.2软件实现的任务 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程

2、中心411.1软件实现概述软件实现概述u从宏观上讲,软件实现包括详细设计、程序编码、单元测试和集成测试 。u从微观上来讲,软件实现指程序编码和单元测试 。u程序编码是详细设计的继续,程序编码过程的组织方式,编程语言特性和程序设计风格会对软件的质量即可靠性、可读性、可测试性和可维护性等产生深远的影响。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心511.1.1软件实现的目标u软件实现的目标就是选择某种程序设计语言,将详细设计结果进行编码实现,并形成可执行的软件系统的过程。 u程序编码作为软件工程过程的一个阶段,是详细设计的继续,其输入是详细设计说明书,

3、输出是源程序和可执行程序。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心611.1.2软件实现的任务u(1)程序设计语言的选择。根据软件系统的特点和设计方案,选择一种或多种程序设计语言作为编码实现的工具。 u(2)集成开发环境的选择。集成开发环境是来帮助程序设计者组织、编译、调试程序的开发工具软件。 u(3)程序实现算法的设计。针对要实现特定功能的程序模块,设计其实现所需的数据结构和算法。 u(4)程序编码实现。明确了上述任务之后,在集成开发环境中使用该程序设计语言,按照设计好的算法和数据结构,将程序实现,并通过集成环境进行调试,发现并改正错误,完成

4、程序编码工作,输出正确的可执行程序。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心711.2程序设计语言与集成开发环境程序设计语言与集成开发环境u11.2.1程序设计语言简介u11.2.2程序设计语言的选择 u11.2.3集成开发环境简介u11.2.4集成开发环境的选择 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心811.2.1程序设计语言简介u程序程序设计语言,通常简称为设计语言,通常简称为编程语言编程语言,是一,是一组用来定义组用来定义计算机程序计算机程序的语法规则。的语法规则。u它是一种被标准化的交流

5、技巧,用来向它是一种被标准化的交流技巧,用来向计算计算机机发出指令。发出指令。u一种计算机语言让程序员能够准确地定义计一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。同情况下所应当采取的行动。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心9机器语言u机器语言是由机器指令代码组成的语言,是计算机唯一能够直接识别的语言,由0和1构成,是最早期人与计算机交互的程序语言。u用机器语言编写程序,对程序员要求相当高u机器语言难于记忆和理解,编写的程序很不直观 ,虽然运行效

6、率高,但是出错率也高 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心10汇编语言u汇编语言比机器语言直观,用助记符代替操作码,用地址符号或标号代替地址码,所以汇编语言亦称为符号语言。 u汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点。 u汇编语言依赖于具体的机型,不能通用,也很难在不同机型之间移植。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心11高级程序设计语言u高级程序设计语言从20世纪50年代末至60年代初开始兴起,它用更接近自然语言的方式表示要完成的操作,

7、高级程序设计语言易理解、易使用、易维护,已经成为目前程序编码的主要工具 ,按照不同的角度可以分为: 编译语言与解释语言 ;结构化语言与面相对象语言 ;通用语言与专用语言 . 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心12第四代语言u第四代语言(Fourth-Generation Language, 以下简称4GL)是一种面向问题的程序设计语言,实现了在更高一级层次上的抽象,可以极大地提高软件生产率,缩短软件开发周期。u按照4GL的功能可以将其划分为查询语言和报表生成器、图形语言、应用生成器、形式规格说明语言等几类。 2009 BUPT TSEG 北

8、京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心1311.2.2程序设计语言的选择u程序设计语言的选择是程序编码的第一步,开发人员需要根据软件类型、质量要求、技术水平等多方面进行综合考虑,选择适当的程序设计语言,一般从以下几个方面考虑 : 软件的应用领域 ;系统用户的要求 ;现有的工具环境 ;开发环境成本;程序员的水平 ;软件可移植性的要求 ; 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心14常见的程序设计语言常见的程序设计语言 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心15程序语言的应用领域程序

9、语言的应用领域应用领域主要语言商业COBOL、C+、JAVA科学FORTRAN、C、C+、JAVA系统C、C+、JAVA人工智能LISP、Prolog出版TeX、Postscript文本等的处理UNIX shell、TCL、Perl 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心1611.2.3集成开发环境简介集成开发环境简介 u集成开发环境(IDE:Integrated Development Environment) :通常指运行在Windows操作系统中的图形界面软件系统,其将编辑源程序、调试程序、生成可执行文件等功能集成到一起,极大方便了程序员

10、的编程工作。uIDE基本组成:一个编辑器一个编译器工具链一个调试器 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心17IDE的功能的功能u项目和源代码的管理功能 ;u源代码编辑提示功能 ;u编辑功能。包括复制、粘贴、查找、替换等 ;u程序跟踪调试功能 ;u生成可执行文件功能 ;u与其他插件结合的功能 ;u屏幕管理功能。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心18常见集成开发环境常见集成开发环境u目前比较常用的IDE包括:微软公司的Visual Studio,开源的JAVA集成开发环境Eclipse,Bo

11、rland公司的Delphi、C+ Builder、JBuilder等u使用IDE进行程序编码的优点有 :快速生成项目的文件结构 ;快速生成源文件的框架代码 ;具有提示功能,快速找到需要使用的数据结构和函数 ;能够提示详细的调试信息,有利于快速发现错误 ;方便完成复杂的部署工作。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心1911.2.4集成开发环境的选择u每种程序设计语言都有多种由不同厂家、不同机构提供的集成开发环境,这些集成开发环境在外观、易用性、能力等方面都存在着一些差异,在选择集成开发环境的时候,主要考虑以下因素:程序员的熟悉程度 ;开发环

12、境的费用 ;软件的易用性 ;集成环境的成熟度 ;与其他软件的配合 ;软件规模。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心2011.3程序设计方法程序设计方法u本节内容u11.3.1结构化程序设计方法u11.3.2面向对象程序设计方法 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心2111.3程序设计方法程序设计方法u所谓程序设计方法学就是讨论程序的性质、程序设计理论和方法的科学,包含的内容非常丰富,包括:结构化程序设计面向对象程序设计程序正确性证明程序变换程序的形式说明与推导程序综合自动程序设计 2009

13、 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心2211.3.1结构化程序设计方法结构化程序设计方法 u结构化程序设计技术是在20世纪60年代末、70年代初为了解决“软件危机”而提出来的 ,结构化程序设计策略确实提高了程序的执行效率,减少了程序出错的概率,极大减少了维护的费用。 u其基本思想:“自顶向下,逐步求精” ,即将程序按照功能划分为若干个基本模块,每个模块内部均是由顺序、选择和循环三种基本结构组成。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心23结构化程序设计的基本原则u(1)使用语言中的顺序、分支、循环等有

14、限的基本控制结构表示程序逻辑 ;u(2)选用的控制结构只准许有一个入口和一个出口 ;u(3)程序语句组成容易识别的块,每块只有一个入口和一个出口 ;u(4)复杂结构应该用基本控制结构进行组合嵌套来实现 ;u(5)语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致 ;u(6)严格控制GOTO语句 . 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心24“自顶向下,逐步求精”方法 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心25“自顶向下,逐步求精”方法u例如,要求用筛选法求100

15、以内的素数. main ( ) 建立2到100的数组A ,其中Aii; - - - - - - - - 1 建立2到10的素数表B ,其中存放2到10以内的素数;- - - - 2 若Aii是B 中任一数的倍数,则剔除Ai;- - - - 3 输出A 中所有没有被剔除的数;- - - - - - - - - 4上述框架中每一个加工语句都可进一步细化成一个循环语句。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心26“自顶向下,逐步求精”方法umain ( ) u/*建立2到100的数组A ,其中Aii*/ - - - - - - - - - - - -

16、 - - - - - 1uint A101;ufor (i = 2;i = 100;i+)Ai = i;u/* 建立2到10的素数表B ,其中存放2到10以内的素数*/ - - - - - 2uB1 =2; B2 = 3; B3 = 5; B4 = 7;u/*若Aii是B 中任一数的倍数,则剔除Ai*/ - - - - - - - - - - 3ufor (j = 1; j = 4; j+)u 检查A 所有的数能否被Bj整除并将能被整除的数从A中剔除; 3.1u/*输出A 中所有没有被剔除的数*/ - - - - - - - - - - - - - - - - - - -4for (i = 2

17、; i = 100; i+) 若Ai没有被剔除,则输出之;- - - - - - - - - - - - - - - - - - - - -4.1u 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心27“自顶向下,逐步求精”方法umain ( ) ufor (i = 2;i = 100;i+)Ai = i;uB1 =2; B2 = 3; B3 = 5; B4 = 7;u/*若Aii是B 中任一数的倍数,则剔除Ai*/ufor (j = 1; j = 4; j+)u /*检查A 所有的数能否被Bj整除并将能被整除的数从A 中剔除*/u for (i = 2

18、; i = 100; i+)u if (AiBj*Bj = Ai)Ai = 0;u/*输出A 中所有没有被剔除的数*/ufor (i = 2; i = 100; i+) u /*若Ai没有被剔除,则输出之*/u if (Ai != 0)u printf(“A%d%dn”,i,Ai);u 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心2811.3.2面向对象程序设计方法u面向对象的方法是一种分析方法、设计方法和思维方法 。u在面向对象程序设计过程中,类的实现是核心问题。所有的数据和操作都被封装在类的实例中,而整个应用则被封装在一个更高级的类中。u在应用软

19、件的主类中,通过各个类的实例,实现对象之间的通信和操作,从而建立所要实现的应用软件。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心29类的关系u一个类的实现常常在某些方面依赖于其它类的实例,所以实现类的时候就会涉及到处理类之间的关系。类的关系可以是应用级关系,也可以是类内属性的实现关系 ,下面介绍三种类继承实现方式 :(1)针对实现的继承;(2)针对特殊化的继承;(3)is kind of (是一种)继承. 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心30类的实现u类的实现有多种方案,其中一种方案是先开发一

20、个比较小的、简单的类,作为开发比较大的、复杂的类的基础,实现时需要考虑如下内容 :(1) 软件库(Software Base);(2)复用(Reuse);(3) 断言(Assertions);(4) 调试(Debugging);(5) 错误处理(Error Handling);(6)内建错误处理(Built_In Error Handling ;(7)用户定义的错误处理(User_Defined Error Handling);(8) 多重实现(Multiple Implementation)。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心31应用程

21、序的实现u应用程序的实现是在所有的类都被实现之后的事情。使用面向对象方法实现应用程序比用过程化方法更加简单、快捷。u当我们把类开发出来后,就已经实现了应用程序的大部分工作。每个类提供了完成应用程序所需要的某种功能。u在实现应用时,根据业务需求,创建这些类的实例对象,并通过消息交互,共同完成系统功能。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3211.4程序设计风格程序设计风格u本节内容u11.4.1源程序文档化 u11.4.2数据说明 u11.4.3语句结构 u11.4.4输入和输出 (I / O)u11.4.5错误处理 2009 BUPT TS

22、EG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3311.4程序设计风格程序设计风格u好的程序设计风格可以极大提高程序的质量 ,在程序设计中要使程序结构合理、清晰,加入清晰的注释信息,避免使用逻辑复杂的算法,使用有含义的变量命名方式等等 。u程序设计风格一般表现在5个方面:源程序文档化、数据说明的方法、表达式和语句结构、输入/输出方法、错误处理。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3411.4.1源程序文档化源程序文档化 1.标识符的命名标识符的命名u标识符即符号名,包括模块名、变量名、常量名、子程序名、数据区名、缓冲区名、

23、类名、接口名、包名等 。u标识符名应能反映它所代表的实际东西,具有一定实际意义。 u名字不是越长越好,过长的名字会使程序的逻辑流程变得模糊,给修改带来困难。u在一个程序中,一个变量只应用于一种用途。就是说,在同一个程序中一个变量不能身兼几种工作。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3511.4.1源程序文档化源程序文档化 2程序的注释程序的注释u一些正规的程序文本中,注释行的数量占到整个源程序的13到12,甚至更多。注释一般分为以下两种: (1)序言性注释 : 通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引

24、导作用。 (2)功能性注释 : 嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,不要解释具体是怎么做的。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3611.4.1源程序文档化源程序文档化 3源程序布局源程序布局u源程序布局指源程序的代码编排格式。在源程序中,可以利用空格、空行和移行,提高程序的可视化程度。u这样可使程序的逻辑结构更加清晰,层次更加分明。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3711.4.2数据说明数据说明 u声明数据结构的过程叫做数据说明。在编写程序时,要尽量遵循数据说

25、明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点。数据说明的次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护;当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列 ; 如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的用途和特点。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3811.4.3语句结构u在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求简单,直接,不能为了片面追求效率而使语句复杂化。一般应从以下方面加以注意: 一行内只写一条语句,并且采取适当的移行

26、格式,使程序的逻辑和功能变得更加明确;程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑 ;程序编写得要简单,写清楚,直截了当地说明程序员的用意 ;除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二 ; 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心3911.4.3语句结构首先要保证程序正确,然后才要求提高速度 ;让编译程序做简单的优化 ;尽可能使用库函数 ;避免使用临时变量而使可读性下降 ;尽量用公共过程或子程序去代替重复的功能代码段 ;用调用公共函数去代替重复使用的表达式 ;使用括号来清晰地表达算术表达式和逻辑表达式的运算顺

27、序 ;避免不必要的转移;尽量只采用三种基本的控制结构来编写程序 ; 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4011.4.3语句结构用逻辑表达式代替分支嵌套 ;避免使用空的ELSE语句和IFTHEN IF的语句 ;避免使用ELSE GOTO和ELSE RETURN结构 ;使与判定相联系的动作尽可能地紧跟着判定 ;避免采用过于复杂的条件测试 ;尽量减少使用“否定”条件的条件语句 ;避免过多的循环嵌套和条件嵌套 ;不要使GOTO语句相互交叉 ;避免循环的多个出口 ;使用数组,以避免重复的控制序列等。 2009 BUPT TSEG 北京邮电大学北京邮电

28、大学 通信软件工程中心通信软件工程中心4111.4.4输入和输出 (I / O)u不论是批处理的输入输出方式,还是交互式的输入输出方式,在设计和程序编码时都应考虑下列原则: 对所有的输入数据都进行检验 ;检查输入项的各种重要组合的合理性 ;使得输入的步骤和操作尽可能简单 ;输入数据时,应允许使用自由格式输入 ;应允许缺省值 ;输入一批数据时,最好使用输入结束标志 ;屏幕上给出状态信息 ;应保持输入格式与输入语句的要求一致 ;给所有的输出加注解,并设计输出报表格式。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4211.4.5错误处理u错误处理大致可包

29、含两类技术: 避开错误技术 :在开发过程中不让错误潜入软件;容错技术:对某些无法避开的错误,使其影响减到最小 。 u要考虑以下错误处理方法 : 返回错误代码 ;调用错误处理函数 ;显示错误信息 ;记录日志 ;退出程序 。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4311.5程序效率程序效率 u11.5.1讨论效率的准则 u11.5.2算法对效率的影响 u11.5.3存储效率 u11.5.4输入/输出效率 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4411.5.1讨论效率的准则u程序的效率是指程序的执行

30、速度及程序所需占用的内存的存储空间。程序效率的几条准则为:效率是一个性能要求,应当在需求分析阶段确定效率方面的要求 ;效率是靠好的设计来提高的 ;程序的效率与程序的简单性相关,但是不要以牺牲程序的清晰性和可读性来提高软件的效率。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4511.5.2算法对效率的影响算法对效率的影响 u指导原则 :尽可能化简有关的算术表达式和逻辑表达式 尽可能将某些语句或表达式移到循环外面 ;尽量避免使用多维数组 ;尽量避免使用指针和复杂的二维数组 ;采用“快速”的算术运算 ;避免在表达式中出现类型混杂 ;尽量采用整数算术表达式

31、和布尔表达式 ;选用等效的高效率算法 。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4611.5.3存储效率存储效率 u采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度,减少内外存交换,提高存储效率。 u建议使用尽可能小的数据类型以节约存储空间,例如用short取代int,用float代替double,但这会带来一定的精度损失。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心4711.5.4输入输入/输出效率输出效率 u指导原则 :输入输出的请求应当最小化 ;安排适当的缓冲区,以减少频繁的信息交换 ;对辅助存储(例如磁盘),选择尽可能简单的、可接受的存取方法 ;对辅助存储的输入输出,应当成块传送 ;尽可能改善输入输出的质量和速度 ;任何不易理解的、对改善输入输出效果关系不大的措施都是不可取的 ;任何不易理解的所谓“超高效”的输入输出是毫无价值的 。 2009 BUPT TSEG 北京邮电大学北京邮电大学 通信软件工程中心通信软件工程中心

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号