《软件工程07.ppt》由会员分享,可在线阅读,更多相关《软件工程07.ppt(68页珍藏版)》请在第壹文秘上搜索。
1、软件工程1第七章第七章 软件实现软件实现软件工程课件软件工程课件软件工程软件工程2第七章第七章 软件实现软件实现7.1 软件实现的过程与任务软件实现的过程与任务7.2 程序设计方法概述程序设计方法概述7.3 编程风格与编码标准编程风格与编码标准7.4 编程语言编程语言7.5 程序效率与性能分析程序效率与性能分析 7.6 程序复杂性程序复杂性软件工程软件工程3n程序编码就是程序编码就是将软件设计的结果翻译成为用某种将软件设计的结果翻译成为用某种程序设计语言描述的源代码程序设计语言描述的源代码。其中涉及到方法、。其中涉及到方法、工具和过程。工具和过程。n然而,在实现中所遇到的问题,例如,编程语言然
2、而,在实现中所遇到的问题,例如,编程语言的特性和程序设计风格会深刻地影响软件的质量的特性和程序设计风格会深刻地影响软件的质量和可维护性。和可维护性。n本章不是具体介绍如何编写程序,而是从软件工本章不是具体介绍如何编写程序,而是从软件工程这个更广泛的范围去讨论与编程语言及程序编程这个更广泛的范围去讨论与编程语言及程序编码有关的问题。码有关的问题。软件工程软件工程47.1 软件实现的过程与任务软件实现的过程与任务 n软件实现阶段也称为程序编码阶段,通常包括软件实现阶段也称为程序编码阶段,通常包括编程实编程实现和单元测试现和单元测试。本章只讲。本章只讲编程实现编程实现。n软件实现是软件产品由概念到实
3、体的一个关键过程,软件实现是软件产品由概念到实体的一个关键过程,它将它将详细设计的结果翻译成用某种程序设计语言编写详细设计的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码的并且最终可以运行的程序代码。n虽然软件的质量取决于软件设计,但是虽然软件的质量取决于软件设计,但是规范规范的程序设的程序设计计风格风格将会对后期的软件维护带来不可忽视的影响。将会对后期的软件维护带来不可忽视的影响。n软件实现的过程如图:软件实现的过程如图: 软件工程软件工程5 软件实现的过程软件实现的过程 n根据根据程序设计结果程序设计结果和和编码规范编码规范等编写代码,在单元测试过程,检等编写代码,在单元测试
4、过程,检查和记录程序代码中可能的缺陷和错误,通过程序调试,对缺陷查和记录程序代码中可能的缺陷和错误,通过程序调试,对缺陷和错误定位和改正。和错误定位和改正。 n编码的编码的依据是软件详细设计说明依据是软件详细设计说明,它给出程序模块的,它给出程序模块的实现逻辑和实现逻辑和处理规则处理规则、算法和算法分析的结果算法和算法分析的结果,以及为配合算法实现所必须,以及为配合算法实现所必须的的局部数据结构局部数据结构。n程序编码活动的程序编码活动的工作制品是源程序工作制品是源程序、目标程序和用户指南。、目标程序和用户指南。 n软件实现与软件设计、软件测试密不可分。软件设计为软件实现软件实现与软件设计、软
5、件测试密不可分。软件设计为软件实现提供输入,软件实现的输出是软件测试的输入。提供输入,软件实现的输出是软件测试的输入。n软件实现还会产生大量软件配置项,如源文件、测试用例等,因软件实现还会产生大量软件配置项,如源文件、测试用例等,因此软件实现还涉及此软件实现还涉及配置管理配置管理。n按照现代软件开发过程的要求,软件实现与其他软件工程活动交按照现代软件开发过程的要求,软件实现与其他软件工程活动交织在一起,不能完全孤立地执行。织在一起,不能完全孤立地执行。软件工程软件工程67.2 程序设计方法概述程序设计方法概述n为了保证程序编码的质量,程序员必须深刻地理为了保证程序编码的质量,程序员必须深刻地理
6、解、熟练地掌握并正确地运用编程语言的特性。解、熟练地掌握并正确地运用编程语言的特性。n只有语法上没有错误的程序才能通过编译系统的只有语法上没有错误的程序才能通过编译系统的语法检查。语法检查。n然而,软件工程项目对代码编写的要求,绝不仅然而,软件工程项目对代码编写的要求,绝不仅仅是源程序语法上的仅是源程序语法上的正确性正确性,也不只是源程序中,也不只是源程序中没有各种错误,还要求源程序具有没有各种错误,还要求源程序具有良好的结构性良好的结构性和良好的程序设计风格。和良好的程序设计风格。软件工程软件工程7结构化程序设计结构化程序设计n结构化程序设计技术主要包括两个方面:结构化程序设计技术主要包括两
7、个方面:u在程序设计过程中,尽量采用在程序设计过程中,尽量采用自顶向下和逐步自顶向下和逐步细化的原则,由粗到细,细化的原则,由粗到细,一步步展开。一步步展开。u在编写程序时强调使用几种在编写程序时强调使用几种基本控制结构基本控制结构,通,通过组合嵌套,形成程序的控制结构。过组合嵌套,形成程序的控制结构。尽可能避尽可能避免免使用会使程序质量受到影响的使用会使程序质量受到影响的GOTO语句语句。软件工程软件工程8以自顶向下逐步求精的方式编写程序以自顶向下逐步求精的方式编写程序 n采取自顶向下,逐步细化的方法,把模块功能逐步分解,细化为采取自顶向下,逐步细化的方法,把模块功能逐步分解,细化为一系列具
8、体的步骤,进而翻译成一系列用某种编程语言写成的程一系列具体的步骤,进而翻译成一系列用某种编程语言写成的程序。序。n用用先全局后局部先全局后局部,先整体后细节先整体后细节,先抽象后具体先抽象后具体的的逐步求精逐步求精的过的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解。程开发出来的程序具有清晰的层次结构,程序容易阅读和理解。n把程序分解成树形结构。把程序分解成树形结构。 同一层的节点相互间没有关系,它们同一层的节点相互间没有关系,它们的细化工作相互独立。在任何一步发生错误,只影响它下层的节的细化工作相互独立。在任何一步发生错误,只影响它下层的节点。点。逐逐步步细细化化软件工程软件工程9
9、for(int i=1;i100;i+) int n=0; for(int j=1;j=sqrt(i);j+) if(i%j=0) n+; if(n=1) System.out.print(i+ ); 求求100以内的素数以内的素数软件工程软件工程10 用筛选法求用筛选法求100以内的素数以内的素数 筛选法就是从筛选法就是从 2 到到 100 中去掉中去掉 2, 3, , 9, 10 的倍数,剩下的倍数,剩下的就是的就是100以内的素数。以内的素数。 为了解决这个问题,可先按程序功能写出一个框架。为了解决这个问题,可先按程序功能写出一个框架。main ( ) /程序框架程序框架 建立建立2到到
10、100的数组的数组A , 其中其中Aii;-1 建立建立2到到10的素数表的素数表 B , 其中存放其中存放2 到到10以内的素数;以内的素数;-2 若若Aii是是B 中任一数的倍数,则中任一数的倍数,则 剔除剔除Ai;-3 输出输出A 中所有没有被剔除的数;中所有没有被剔除的数;-4 软件工程软件工程11n再细化框架中每条语句再细化框架中每条语句main ( ) /*建立建立2到到100的数组的数组A ,其中,其中Aii*/ for ( i = 2;i = 100;i+ ) Ai = i; /* 建立建立2到到10的素数表的素数表B ,其中存放,其中存放2到到10以内的素数以内的素数*/B1
11、= 2;B2= 3;B3= 5;B4= 7; /*若若Aii是是B 中任一数的倍数,则剔除中任一数的倍数,则剔除Ai*/ for ( j = 1;j = 4;j+ ) 检查检查A 所有的数能否被所有的数能否被Bj整除并将整除并将 能被整除的数从能被整除的数从A 中剔除;中剔除; -3.1 /*输出输出A 中所有没有被剔除的数中所有没有被剔除的数*/ for ( i = 2;i = 100;i+ ) 若若Ai没有被剔除,则输出之没有被剔除,则输出之 -4.1 软件工程软件工程12main ( ) main ( ) /*建立2到100的数组A ,其中Aii*/ for ( i = 2for ( i
12、 = 2;i = 100i = 100;i+ ) Ai = ii+ ) Ai = i; /* 建立2到10的素数表B ,其中存放2到10以内的素数*/B1= 2B1= 2;B2= 3B2= 3;B3= 5B3= 5;B4= 7B4= 7; /*若Aii是B 中任一数的倍数,则剔除Ai*/ for ( j = 1for ( j = 1;j = 4j = 4;j+ )j+ ) /*检查A 所有的数能否被Bj整除并将能被整除的数从A 中剔除*/ for ( i = 2 for ( i = 2;i = 100i = 100;i+i+) if (Ai != 0 & Aiif (Ai != 0 & AiB
13、jBj* *Bj = Ai)Bj = Ai) Ai = 0 Ai = 0; /*输出A 中所有没有被剔除的数*/ for ( i = 2 for ( i = 2; i = 100i = 100;i+i+) /*若Ai没有被剔除,则输出之*/ if ( Ai != 0 if ( Ai != 0 ) printf ( “A%dprintf ( “A%d%dn”, i, Ai )%dn”, i, Ai ); 软件工程软件工程13n自顶向下,逐步求精方法符合人们解决复杂问自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律。用先全局后局部,先整体后细题的普遍规律。用先全局后局部,先整体后细节,先抽象后
14、具体的逐步求精的过程开发,成节,先抽象后具体的逐步求精的过程开发,成功率和生产率都很高。功率和生产率都很高。 软件工程软件工程14使用基本控制结构构造程序使用基本控制结构构造程序 (1)使用语言中的使用语言中的顺序顺序、选择选择、重复重复等有限的基本等有限的基本控制结构表示程序逻辑。控制结构表示程序逻辑。(2)选用的控制结构只准许有选用的控制结构只准许有一个入口一个入口和和一个出口一个出口。(3)程序语句组成容易识别的块(程序语句组成容易识别的块(Block),每块只),每块只有一个入口和一个出口。有一个入口和一个出口。(4)复杂结构应该用基本控制结构进行组合嵌套来复杂结构应该用基本控制结构进
15、行组合嵌套来实现。实现。(5)语言中没有的控制结构,可用一段等价的程序语言中没有的控制结构,可用一段等价的程序段模拟,段模拟, 但要求该程序段在整个系统中应前后但要求该程序段在整个系统中应前后一致。一致。软件工程软件工程15(6)严格控制严格控制GOTO语句语句,仅在下列情形才可使用:,仅在下列情形才可使用:u用一个非结构化的编程语言去实现一个结构用一个非结构化的编程语言去实现一个结构化的构造。化的构造。u在某种可以改善而不是损害程序可读性的情在某种可以改善而不是损害程序可读性的情况下。况下。n例例1 打印打印A, B, C三数中最小者程序三数中最小者程序AB?BC?AC?打印打印C打印打印B
16、打印打印AFFFTTT软件工程软件工程16if ( A B ) goto 120; if ( B C ) goto 110; 100 write ( C ); goto 140; 110 write ( B ); goto 140; 120 if ( A C ) goto 130; goto 100; 130 write ( A ); 140 end程序程序1:输出输出A、B和和C中最小值中最小值软件工程软件工程17n在面向对象的程序设计中,数据和操作数据的算在面向对象的程序设计中,数据和操作数据的算法不再分离,它们被封装在一起,构成对象,其法不再分离,它们被封装在一起,构成对象,其他的对象可以使用这个对象所提供的服务。他的对象可以使用这个对象所提供的服务。n面向对象程序设计方法的特点是面向对象程序设计方法的特点是封装、泛化、多封装、泛化、多态、协同和复用。态、协同和复用。1. 封装封装u按照抽象数据类型的要求,对象把数据和相应按照抽象数据类型的要求,对象把数据和相应操作封装在其内部,操作封装在其内部,通过定义在接口上的操作通过定义在接口上的操作访问。访问。u 面向对象的程序设计方法面