您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > [软件工程]CH06-编码
2019/8/91软件工程软件工程刘迎春软件工程2019/8/92第六章编码问题定义可行性研究可行否?否是需求分析终止项目计划时期开发时期主要内容6.1编码概念6.2程序设计语言6.3编码风格6.4编码工具概要/详细设计编码2019/8/936.1编码概念程序设计语言的特性、程序设计风格会深刻地影响软件的质量和可维护性。概要设计报告详细设计报告源程序清单程序设计语言2019/8/946.1编码概念【㈠目标】产生正确可靠、简明清晰、具有较高效率的源程序。【说明】⒈源代码越是清楚和简明,就越便于验证源代码和设计文档的一致性,越容易对它进行测试和维护;⒉清晰和效率却常常会有矛盾,清晰性好的程序一般效率较低,而要求效率高的程序往往清晰度不太好;⒊对于大多数模块,编码时应该把简明清晰放在第一位。2019/8/95面向过程与面向对象编程面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。2019/8/966.1编码概念【㈠目标】产生正确可靠、简明清晰、具有较高效率的源程序。【㈡自顶向下,逐步求精】把一个模块的功能逐步分解。详细设计模块功能细化为一系列具体的步骤。编码阶段用程序设计语言翻译成一系列的程序。2019/8/976.1编码概念例:用筛选法求100以内的素数。(从2到100中去掉素数2,3,5,7的倍数,剩下的就是100以内的素数。)【⒈先按程序功能写出一个框架】main(){//1、建立2到100的数组A[],其中A[i]=i//2、建立2到10的素数表B[]//3、若A[i]=i是B[]中任一数的倍数,则剔除A[i]//4、输出A[]中所有没有被剔除的数}2019/8/986.1编码概念例:用筛选法求100以内的素数。【⒉对框架中的局部再做细化,得到整个程序】main(){for(i=2;i=100;i++)A[i]=i;//1B[1]=2;B[2]=3;B[3]=5;B[4]=7;//2for(j=1;j=4;j++){/*3.1检查A[]所有的数能否被B[j]整除并将能被整除的数从A[]中剔除*/}for(i=2;i=100;i++){/*4.1若A[i]没有被剔除,则输出*/}}2019/8/996.1编码概念例:用筛选法求100以内的素数。【⒉对框架中的局部再做细化,得到整个程序】main(){……for(j=1;j=4;j++){for(i=2;i=100;i++){if(0==A[i]%B[j])A[i]=0;//3.1}}for(i=2;i=100;i++){if(A[i]!=0)printf(“A[%d]=%d\n”,i,A[i]);//4.1}}2019/8/9106.1编码概念【㈡自顶向下,逐步求精】优点:⑴符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率。⑵用先全局后局部,先抽象后具体的过程开发出来的程序具有清晰的层次结构。同一层节点的细化工作相互独立。每一步工作仅在上层节点的基础上做不多的设计扩展。有利于设计的分工和组织工作。有利于编码、测试和集成。程序清晰和模块化强。在修改和重新设计一个软件时,可复用的代码量大。2019/8/9116.2程序设计语言程序设计语言指编写计算机程序所用的语言,是人与计算机进行交流的工具。计算机硬件仅仅知道0和1有问题需要计算机解决的人交流的鸿沟2019/8/9126.2程序设计语言程序设计语言指编写计算机程序所用的语言,是人与计算机进行交流的工具。程序设计语言计算机硬件仅仅知道0和1有问题需要计算机解决的人2019/8/9136.2.1程序设计语言分类按发展过程,程序设计语言分为:低级语言高级语言硬件依赖于机器系统软件硬件独立于机器机器语言汇编语言2019/8/9146.2.1程序设计语言分类按发展过程,程序设计语言分为:低级语言③高级语言①机器语言②汇编语言人工智能Lisp、Prolog用于军事Ada2019/8/9154GL-第四代语言-14GL以数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报表生成、多窗口表格设计、菜单生成系统等,为用户提供了一个良好的应用开发环境。4GL简单易学,用户界面良好,提供了功能强大的非过程化问题定义手段,用户只需告知系统做什么,而无需说明怎么做4GL的代表性软件系统有:Oracle应用开发环境、SQLWindows、PowerBuilder、Delphi和INFORMOX-4GL等2019/8/9164GL-第四代语言-2由于近代软件工程实践所提出的大部分技术和方法并未受到普遍的欢迎和采用,软件供求矛盾进一步恶化,软件的开发成本日益增长,导致了所谓“新软件危机”。这既暴露了传统开发模型的不足,又说明了单纯以劳动力密集的形式来支持软件生产,已不再适应社会信息化的要求,必须寻求更高效、自动化程度更高的软件开发工具来支持软件生产。4GL就是在这种背景下应运而生并发展壮大的。2019/8/9174GL-第四代语言-34GL应具有的标准(1)生产率:4GL一出现,就是以大幅度提高软件生产率为己任的,4GL应比3GL提高生产率一个数量级以上。(2)非过程化:4GL基本上应该是面向问题的,即只需告知计算机“做什么”,而不必告知计算机“怎么做”。当然4GL为了适应复杂的应用,而这些应用是无法“非过程化”的,就允许保留过程化的语言成分,但非过程化应是4GL的主要特色。(3)用户界面:4GL应具有良好的用户界面,应该简单、易学、易掌握,使用方便、灵活。(4)功能:4GL要具有生命力,不能适用范围太窄,在某一范围内应具有通用性。2019/8/9184GL-第四代语言-4(1)4GL虽然功能强大,但在其整体能力上却与3GL有一定的差距。这一方面是语言抽象级别提高;另一方面是人为带来的,许多4GL只面向专项应用。有的4GL为了提高对问题的表达能力,提供了同3GL的接口,以弥补其能力上的不足。如Oracle提供了可将SQL语句嵌入C程序中的工具PRO*C。(2)4GL系统开销庞大,运行效率低下,对软硬件资源消耗严重,应用受硬件限制。(3)由于缺乏统一的工业标准,4GL产品花样繁多,用户界面差异很大,与具体的机器联系紧密,语言的独立性较差(SQL稍好),影响了应用软件的移植与推广。(4)目前4GL主要面向基于数据库应用的领域,不宜于科学计算、高速的实时系统和系统软件开发。2019/8/9194GL-第四代语言-5分类1.查询语言和报表生成器查询语言是数据库管理系统的主要工具,它提供用户对数据库进行查询的功能。有的查询语言(如SQL)实际上还包括有查询、操纵、定义、控制四种功能。报表生成器是为用户提供的自动产生报表的重要工具,它提供非过程化的描述手段让用户很方便地根据数据库中的信息来生成报表,如ADF2019/8/9204GL-第四代语言-52.图形语言图形信息较之一维的字符串、二维的表格信息更为直观、鲜明。目前较有代表性的是Gupta公司开发的SQLWindows系统。它以SQL语言为引擎,让用户在屏幕上以图形方式定义用户需求,系统自动生成相应的源程序(还具有面向对象的功能),用户可修改或增加这些源程序,从而完成应用开发。2019/8/9214GL-第四代语言-63.应用生成器应用生成器是重要的一类综合的4GL工具,它用来生成完整的应用系统。应用生成器让用户不必使用多个软件,而只用这样一个综合工具来实现多种功能。应用生成器按其使用对象可以分为交互式和编程式二类。2019/8/9224GL-第四代语言-7交互式:FOCUS、RAMIS、MAPPER、UFO、NOMAD、SAS等。它们服务于维护、准备和处理报表,允许用户以可见的交互方式在终端上创立文件、报表和进行其它的处理。应用开发环境目前较有代表性的有PowerBuilder和Oracle。Oracle提供的SQL*FORMS、SQL*MENU、SQL*REPORTWRITER等工具建立在SQL语言基础之上,借助了数据库管理系统强大的功能,让用户交互式地定义需求,系统生成相应的屏幕格式、菜单和打印报表。2019/8/9234GL-第四代语言-8编程式应用生成器:是为建造复杂系统的专业程序人员设计的,如NATURAL、FOXPRO、MANTIS、IDEAL、CSP、DMS、INFO、LINC、FORMAL、APPLICATIONFACTORY以及作者设计的OO-HLL等。这一类4GL中有许多是程序生成器(ProgramGenerator),如LINC生成COBOL程序,FORMAL生成PASCAL程序等。为了提供专业人员建造复杂的应用系统,有的语言具有很强的过程化描述能力。虽然语句的形式有差异,其实质与3GL的过程化语句相同,如Informix-4GL和Oracle的PRO*C。2019/8/9244GL-第四代语言-94.形式规格说明语言软件规格说明是对软件应满足的需求、功能、性能及其它重要方面的陈述,是软件开发的基础,有软件的需求规格说明、功能规格说明、设计规格说明等。用来书写规格说明的语言称为规格说明语言。传统的规格说明语言是自然语言。在我国,主要使用现代汉语来表达软件的规格说明。自然语言为开发者和用户所熟悉,易于使用。但也会不可避免地将自然语言的歧义性、不精确性引入到软件规格说明中,从而给软件的开发和软件的质量带来隐患。2019/8/9254GL-第四代语言-10形式的规格说明语言则很好地解决了上述问题,而且还是软件自动化的基础。从形式的需求规格说明和功能规格说明出发,可以自动或半自动地转换成某种可执行的语言(如高级语言)。需求规格说明和功能规格说明是面向问题、非过程化的,因此属于4GL。这一类语言有Z、NPL、SPECINT以及作者设计的JAVASPEC。设计规格说明语言由于包含了大量过程化成分,原则上不应划入4GL。2019/8/9264GL-第四代语言-11发展趋势:4GL与面向对象技术将进一步结合支持网络分布式应用开发4GL将出现事实上的工业标准受限的自然语言加图形作为用户界面4GL将进一步与人工智能相结合4GL继续需要数据库管理系统的支持4GL要求软件开发方法发生变革2019/8/927第五代语言第五代语言就是自然语言又被称为知识库语言或人工智能语言,目标是最接近日常生活所用语言的程序语言。目前并没有真正意义上的第五代语言,LISP和PROLOG号称第五代语言,其实还远远不能达到自然语言的要求。2019/8/9286.2.3程序设计语言的选择由于软件系统的绝大部分成本用于生命周期的测试、维护阶段,所以容易测试和容易维护非常重要。【选择编程语言的经验准则】⑴系统用户的要求;⑵选择适合应用领域的语言;⑶可以使用的编译程序编译程序是否可以运行在目标系统的环境中。⑷可以得到的软件工具是否有支持某种语言程序开发的软件工具可以利用2019/8/9296.2.3程序设计语言的选择由于软件系统的绝大部分成本用于生命周期的测试、维护阶段,所以容易测试和容易维护非常重要。【选择编程语言的经验准则】⑸软件可移植性要求如果目标系统将在不同类型的设备上运行,或者预期的使用寿命很长,那么选择一种标准化程序高、程序可移植性好的语言就是很重要的⑹人的因素尽量选用程序员和系统维护人员熟悉的语言环境,以节省开发时间,也有利于将来使用和维护工作⑺工程规模2019/8/9306.2.3程序设计语言的选择【语言选择的一些比较、综合性资料】2010年2月编程语言排行榜:新语言势头逼人
本文标题:[软件工程]CH06-编码
链接地址:https://www.777doc.com/doc-165733 .html