欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    L2(软件工程概论).ppt

    • 资源ID:242008       资源大小:3.29MB        全文页数:129页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    L2(软件工程概论).ppt

    第二讲 软件工程概论,软件工程导论 1.概述,目的 利用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件。软件工程的概念,水利工程,建筑工程,机械工程,软件工程,传统工程,新兴工程,气象工程,生物工程,是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。-于1968年 NATO 组织在德国召开的一次会议上提出。,软件:,software,soft+ware,软制品(软体),软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。,软件工程导论 1.概述,软件的特点软件是一种逻辑实体,而不是具体的物理实体软件的生产与硬件不同在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,软件工程导论 1.概述,软件成本越来越高,软件技术的发展落后于需求,硬、软件成本比例的变化,年份,成本%,软件,硬件,软件工程导论 1.概述,软件工程学,软件开发技术,软件工程管理,软件开发方法学,软件工具,软件工程环境,软件工程管理学,软件经济学,程序,传统软件开发,现代软件开发,软件工程学的范畴与发展,软件工程导论 1.概述,特点:上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。,需求分析,问题定义,可性行研究,计划时期,概要设计,详细设计,编 码,测 试,开发时期,运行与维护,运 行时 期,把软件从产生、发展到成熟、直至衰亡为止,软件生存周期模型(瀑布模型 Waterfall Model),软件生存周期,软件工程导论 1.概述,加工原型,原型:是指模拟某种产品的原始模型,快速分析和设计,建造原型,客户评价原型,1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。,2、为了尽快向用户提供原型,开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。,软件工程导论 1.概述,软件工程导论 2.问题的定义与可行性分析,Who,What,Why,3W,有用的软件,开始,问题定义,可性行研究,可行否?,项目实施计划,终止项目的建议,结束,Y,N,明确该软件产品开发的任务,以及完成任务的价值,从而制定出完成任务的计划。-计划时期,软件工程导论 2.问题的定义与可行性分析,系统目标与规范说明书1、项目:教材销售系统2、问题:人工销售教材手续繁琐,容易出错3、项目目标:建立一个高效率、无差错的计算机教材销售系统4、项目范围:利用现有的计算机,软件开发费用不得超过2000元5、初步想法:建议在系统中增加对缺书的统计与采购功能6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元,目的:弄清楚用户要求计算机解决什么问题,任务:编写系统目标与规范说明书,软件工程导论 2.问题的定义与可行性分析,1、经济可行性:,进行成本效益分析,评估项目的开发成本。,基于计算机系统的成本由四部分组成,其论证的焦点是:围绕着对系统开发的价值进行论证,软件工程导论 2.问题的定义与可行性分析,2、技术可行性:,对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。,通过技术可行性的分析,将为新系统提交技术可行性评估。以指明为完成系统的功能和性能需要什么技术?需要哪些材料、方法、算法、或者过程等,可行性论证报告,2023/3/16,软件需求分析是软件开发早期的一个重要阶段。它在问题定义和可行性研究阶段之后进行。需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。这是关系到软件开发成败的关键步骤,也是整个系统开发的基础。软件需求分析阶段要求用 需求规格说明书(SRS)来表达用户对系统的要求。规格说明书可用文字方式表示,也可用图形表示。,软件工程导论 3.软件需求分析,2023/3/16,一、确定目标系统的具体要求,1、确定系统的运行环境要求,2、系统的性能要求,3、系统功能,3.1 需求分析的任务,硬件环境和软件环境,确定目标系统具备的所有功能,软件工程导论 3.软件需求分析,2023/3/16,二、建立目标系统的逻辑模型,通常软件软件开发项目是要实现目标系统的物理模型,即 确定待开发软件系统的系统元素,并将功能和数据结构分配到 这些系统元素中。它是软件实现的基础。但是目标系统的物理模型是由它的逻辑模型经实例化,即 具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽 视机制和细节,只描述系统要完成的功能和要处理的数据。为此,该阶段的主要任务是,借助于当前系统的逻辑模型 导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问 题。,软件工程导论 3.软件需求分析,2023/3/16,用户调查,具体模型,建立系统模型的工作流程,逻辑抽象,当前系统,逻辑模型,当前系统,计算机化,评审修改,正式模型,完善细节,目标系统,目标系统初始模型,经认可的,问题需求,系统模型,用户,1、建立目标系统逻辑模型的步骤,软件工程导论 3.软件需求分析,2023/3/16,图形工具,2、建立目标系统逻辑模型的图形工具,软件工程导论 3.软件需求分析,2023/3/16,-学生购买教材的具体模型,请建立计算机售书系统的逻辑模型,-学生购买教材的 逻辑模型,软件工程导论 3.问题的定义与可行性分析,2023/3/16,-学生购买教材的 逻辑模型,完善目标系统并补充细节,的出目标系统的正式逻辑模型,软件工程导论 3.软件需求分析,2023/3/16,三、需求规格说明书与评审,软件需求说明书,-SRS(Software Requirement Specification),主要包括以下的内容:,SRS,数据流图,数据字典,软件工程导论 3.软件需求分析,2023/3/16,一、数据流图,3.1 面向数据流的方法,-DFD(Data Flow Diagram),软件工程导论 3.软件需求分析,2023/3/16,储户,检验,付款,登录,存折,帐卡,取款信息,办理取款手续的 DFD 图,检验不合格,现款,付款信息,取款单,存折,软件工程导论 3.软件需求分析,2023/3/16,1、数据流图中的主要图形元素,-转换数据流的处理过程,-可以是数据库文件或任何形式的数 据组织。箭头向内则表示写入文件 或查询文件,箭头向外则表示从文 件中读取数据或得到查询结果,数据转换,外部实体,-位于软件系统边界之外的信息生产者 或 消费者,数据流,-在转换之间有向流动的数据项或数据 集合,数据存储文件,软件工程导论 3.软件需求分析,2023/3/16,-系统逻辑模型,软件工程导论 3.软件需求分析,2023/3/16,-学生购买教材的 逻辑模型,软件工程导论 3.问题的定义与可行性分析,2023/3/16,人工销售教材 系统流程图,软件工程导论 3.软件需求分析,2023/3/16,学生,教材购销系统,保管员,外部实体,外部实体,软件工程导论 3.软件需求分析,2023/3/16,教材销售子系统,1.3登记并开领书单,1.2开发票,1.1审查有效性,1.4登记缺书,1.5补售教材,采购,学生,学生,暂缺书单,补售书单,第 3 层,F1书号单价数量,外部项,软件工程导论 3.软件需求分析,2023/3/16,采购 子系统,第 2 层,缺书单,2.3修改教材库存和待购量,销售,2.1按书号汇总缺书,2.2按出版社统计缺书,保管员,软件工程导论 3.软件需求分析,2023/3/16,二、*数据字典,-DD(Data Dictionary),软件工程导论 3.软件需求分析,2023/3/16,1、数据字典的定义,数据流名:说明:简要介绍作用即它产生的原因和结果。数据流来源:即该数据流来自何方。数据流去向:去向何处。数据流组成:数据结构。每个数据量流通量:数据量、流通量。,(1)数据流词条的描述,数据流名:发票 说明:用作学生已付书款的依据 数据流来源:来自加工“审查并开发票”数据流去向:流向加工“开领书单”。数据流组成:学号+姓名+书号+单价总价+书费合计,软件工程导论 3.软件需求分析,2023/3/16,数据元素名:类型:数字(离散值、连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构,(2)数据元素词条的描述,软件工程导论 3.软件需求分析,2023/3/16,(3)数据文件词条的描述,数据文件名:简述:存放的是什么数据。输入数据:输出数据:数据文件组成:数据结构。存储方式:顺序,直接,关键码。存取频率:,软件工程导论 3.软件需求分析,2023/3/16,加工名:加工编号:反映该加工的层次 简要描述:加工逻辑及功能简述 输入数据流:取值范围:相关的数据元素及数据结构,(4)加工逻辑词条的描述,软件工程导论 3.软件需求分析,2023/3/16,软件工程导论 4.软件设计基础,2023/3/16,4.1 软件设计过程,编码,测试,设计,-软件开发阶段的信息流,软件工程导论 4.软件设计基础,2023/3/16,软件设计任务,4.2 软件设计的任务和步骤,软件工程导论 4.软件设计基础,2023/3/16,软件设计方法,4.3 软件设计的方法,软件工程导论 4.软件设计基础,2023/3/16,4.5 结构化设计方法(SD-Structured Design),结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供了一种“结构图”的描述工具,是专门用来描述软件的总体结构的。,软件工程导论 4.软件设计基础,2023/3/16,结构化设计属于面向数据流 的设计方法。在软件的需求分析阶段,数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端,则要经历一系列的变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件系统的逻辑模型。面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图 映射(Mapping)-软件系统的结构。换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。结构化设计方法中,软件的结构一律用 SC 图来描述。,软件工程导论 4.软件设计基础,2023/3/16,软件工程导论 4.软件设计基础,2023/3/16,目标系统的DFD,SC 图-Structured Chart,该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。,SD,目标系统的SC,软件工程导论 4.软件设计基础,2023/3/16,A,SC 图中的主要内容,1、模块-在SC图中用矩形框表示,并用名字来标记它,-模块调用关系,2、模块的调用关系和接口,B,调用模块,调用模块,A(查询学生),B(查找学生记录),数据信号,控制信号,学号,查找成功信号,-模块间接口的表示,软件工程导论 4.软件设计基础,2023/3/16,SC 图的一般格式,软件工程导论 4.软件设计基础,2023/3/16,采 购,按书号汇总,缺书登记表,统计缺书,登记进书,按出版社汇总,打印缺书单,修改教材存量表,修改教材待购量,统计命令,登记命令,待购教材表,暂缺书单,暂缺书单,进书通知,进书通知,-采购子系统的 SC 图-,缺书登记表=班号+姓名+书号+数量,软件工程导论 4.软件设计基础,2023/3/16,5.1 详细设计阶段的目的与任务,详细设计的目的:为软件结构图(SC)中的每一个模块确定采用的算法和模块内 数据结构,用某种选定的表达工具给出清 晰的描述。,详细设计阶段的主要任务:编写软件的“详细设计说明书”,软件工程导论 5.详细设计,2023/3/16,软件工程导论 5.详细设计,2023/3/16,详细设计阶段的主要任务,软件工程导论 5.详细设计,2023/3/16,描述工具,5.2 详细设计阶段的描述工具,软件工程导论 5.详细设计,2023/3/16,A,1、顺序型,一、程序流程图,B,几个连续的加工依次序排列,exp,A,B,2、选择型,由某个判断式的取值决定选择两个加工中的一个。,软件工程导论 5.详细设计,2023/3/16,3、当型循环型,当循环控制条件成立时,重复执行特定的加工。,4、直到型循环型,重复执行特定的加工,直到循环控制条件成立时。,软件工程导论 5.详细设计,2023/3/16,5、多情况选择型,列出多种加工情况,根据控制变量的取值,选择执行其一。,软件工程导论 5.详细设计,2023/3/16,软件工程导论 5.详细设计,2023/3/16,标准化程序流程图规定符号,软件工程导论 5.详细设计,2023/3/16,流程符号的使用规则,1、循环符号的使用,循环体,-循环流程符号的使用,软件工程导论 5.详细设计,2023/3/16,2、判断有一个入口,但也允许有多个可选出口,-多出口判断流程符号的使用,软件工程导论 5.详细设计,2023/3/16,顺序型,二、N-S 图,选择型,-Nassi and Shneideman,当型循环型,直到型循环型,多分支选择型,软件工程导论 5.详细设计,2023/3/16,软件工程导论 5.详细设计,2023/3/16,三、PAD 图,直到型循环型,当型循环型,顺序型,选择型,多分支选择型循环型,-Problem Analysis Diagram,软件工程导论 5.详细设计,2023/3/16,举例,软件工程导论 5.详细设计,2023/3/16,四、*PDL,-Program Ddesign Language,PDL 是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪代码(Pseudo code),PDL,-关键词+自然语言,软件工程导论 5.详细设计,2023/3/16,(1)、数据说明:,格式:TYPE AS,其功能是定义数据的类型和作用域,说明:1.变量名:是一个模块内部使用的变量或模块间共用 的全局变量名。,2.限定词1:标明数据类型,3.限定词2:标明该变量的作用域,TYPE number AS STRING LENGTH(12),软件工程导论 5.详细设计,2023/3/16,(2)、程序块:,PDL的过程成分是由块结构构成的,而块将作为一个单个的实体来执行。,BEGIN END,软件工程导论 5.详细设计,2023/3/16,(3)、子程序结构:,把 PDL 中的过程称为子程序。,PROCEDURE INTERFACE END,软件工程导论 5.详细设计,2023/3/16,(4)、基本控制结构:,IF THEN;ELSE;ENDIF,-选择型结构,软件工程导论 5.详细设计,2023/3/16,DO WHILE;ENDDO,REPEAT UNTIL;ENDREP,-重复型结构,软件工程导论 5.详细设计,2023/3/16,DO LOOP;EXIT WHEN ENDLOOP,DO FOR;ENDFOR,-重复型结构,软件工程导论 5.详细设计,2023/3/16,-多路选择结构,CASE OF;WHEN SELECT;WHEN SELECT;DEFAULT:;ENDCASE,软件工程导论 5.详细设计,2023/3/16,READ/WRITE TO,-输入/输出结构,软件工程导论 5.详细设计,2023/3/16,Enter a vector Set Maximum to the value of the first element in the vector DO for each second one to the last IF value of THEN element is greater than the Maximum value Set Maximum to value of the element ENDDO Print the Maximum value,软件工程导论 5.详细设计,2023/3/16,编码的目的:是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码),模块的过程性描述(不可执行的),源程序(可执行的),编码,6.1 编码的目的,软件工程导论 6.*程序编码,2023/3/16,Winberg 的程序实验结果,软件工程导论 6.*程序编码,2023/3/16,结构化程序设计是一种设计程序的技术,它采用自顶向下逐步细化的设计方法和单入口(Single entry)单出口(Single exit)的控制结构。这种控制结构包括有:顺序、选择和循环。,6.2 结构化程序设计(Structured Programming),软件工程导论 6.*程序编码,2023/3/16,for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5;,单入口,单出口,软件工程导论 6.*程序编码,2023/3/16,If(A.LT.B)goto 120 If(B.LT.C)goto 110100 write(6,*)C goto 140 110 write(6,*)B goto 140 120 If(A.LT.C)goto 130 goto 100 130 write(6,*)A 140 continue,-单入口多出口结构,软件工程导论 6.*程序编码,2023/3/16,无节制地使用了GOTO语句所产生的程序流程,软件工程导论 6.*程序编码,2023/3/16,一、结构化程序设计的原则,1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个入口和一个 出口4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句,软件工程导论 6.*程序编码,2023/3/16,F0=F(a);F1=F(b);if(F0*F10)X0=Xm;F0=Fm;else X1=Xm;finish:printf(“%dn”,Xm);,软件工程导论 6.*程序编码,2023/3/16,Begin,(F0*F1)=0,X0=a X1=b i=1,Xm=(X0+X1)/2 Fm=F(m),Q,(F0*Fm)0,X0=Xm,X1=Xm,F0=Fm,T,T,Xm,F,T,F,F,F0=F(a)F1=F(b),1,1,End,2,2,i=n,i,Q=abs(Fm)eps|abs(X1-X0)eps),软件工程导论 6.*程序编码,2023/3/16,F0=F(a);F1=F(b);if(F0*F10)X0=Xm;F0=Fm;else X1=Xm;printf(“%dn”,Xm);,软件工程导论 6.*程序编码,2023/3/16,F0=F(a);F1=F(b);if(F0*F10)X0=Xm;F0=Fm;else X1=Xm;i+;printf(“%dn”,Xm);,软件工程导论 6.*程序编码,2023/3/16,二、程序设计自顶向下,逐步求精,1、程序设计是一个由粗到细的“渐进”的过程,2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。二者都要一步一步地细化。,采用逐步细化方法设计程序的步骤,软件工程导论 6.*程序编码,2023/3/16,三、程序效率,程序效率是指程序的执行速度及程序占用的存储空间。程序编码是最后提高运行速度和节省存储机会,因此在此阶段不能不考虑程序的效率。,软件工程导论 6.*程序编码,2023/3/16,1、算法对效率的影响,源程序的效率与详细设计阶段确定的算法的效率有着直接的关系。当我们把详细设计翻译并转换成源代码之后,那么算法效率就会反映为程序的执行速度和存储容量的要求,软件工程导论 6.*程序编码,2023/3/16,(1)在编程序前,尽可能化简有关的算术表达式和逻辑表达式,(2)仔细检查算法中的嵌套的循环,尽可能将某些语句或表达 式移到循环外面,(3)尽量避免使用多维数组,(4)尽量避免使用指针和复杂的表,(5)不要混淆数据类型,避免在表达式中出现类型混杂,(6)尽量采用整数算术表达式和布尔表达式,(7)选用等效的高效率算法,转换过程中的指导原则是:,软件工程导论 6.*程序编码,2023/3/16,举例,请设计求解下列问题的算法,软件工程导论 6.*程序编码,2023/3/16,main()int i,j;float sum;sum=0.0;for(i=1;i=20;i+)for(j=1;j=3;j+)sum=sum+(i+1)*(i+1)*(j+2);printf(“sum=%dn”,sum);,内循环次数,20X4=80,外循环次数,21,总循环次数,101,软件工程导论 6.*程序编码,2023/3/16,main()int i,j;float sum;sum=0.0;for(j=1;j=3;j+)for(i=1;i=20;i+)sum=sum+(i+1)*(i+1)*(j+2);printf(“sum=%dn”,sum);,应把变化范围大的循环变量放在内层。,内循环次数,3X21=63,外循环次数,4,总循环次数,67,软件工程导论 6.*程序编码,2023/3/16,main()int i,j;float sum;sum=0.0;for(j=1;j=3;j+)for(i=1;i=20;i+)sum=sum+(i+1)*(i+1)*(j+2);printf(“sum=%dn”,sum);,j+2 共计执行了,3X20=60次,软件工程导论 6.*程序编码,2023/3/16,main()int i,j;float sum;sum=0.0;for(j=1;j=3;j+)k=j+2;for(i=1;i=20;i+)sum=sum+(i+1)*(i+1)*k;printf(“sum=%dn”,sum);,j+2 共计执行了,3次,减少了57次,应尽量把与循环变量无关的运算移到循环外去。,软件工程导论 6.*程序编码,2023/3/16,main()int i,j;float sum;sum=0.0;for(j=1;j=3;j+)k=j+2;for(i=1;i=20;i+)sum=sum+(i+1)*(i+1)*k;printf(“sum=%dn”,sum);,i+1 共计执行了,60X60=120次,软件工程导论 3.问题的定义与可行性分析,2023/3/16,main()int i,j;float sum;sum=0.0;for(j=1;j=3;j+)k=j+2;for(i=1;i=20;i+)m=i+1;sum=sum+m*m*k;printf(“sum=%dn”,sum);,i+1 共计执行了,60次,软件工程导论 6.*程序编码,2023/3/16,练习,从键盘输入 10个整数,要求按有小到大的顺序将它们输出。,请采用比较交换法和选择法对上述10条数据进行排序,然后分别对这两种方法进行比较,并从程序的运行了效率的角度对两个程序进行比较。,软件工程导论 6.*程序编码,2023/3/16,main()int a10,i,j,t;for(i=0;i10;i+)scanf(“%d”,软件工程导论 6.*程序编码,2023/3/16,for(i=0;ij)t=aj;aj=ak;ak=t;,软件工程导论 3.问题的定义与可行性分析,2023/3/16,五、程序设计风格 Coding style,1、保持控制流的直线性,(1)、对多入口和多出口的控制结构 要作适当的处理,If C1 then goto 30S2 20 If C2 then goto 40goto 10 S1 goto 20 40 Sn,多入口循环结构,软件工程导论 6.*程序编码,2023/3/16,If C1 then S1 else S2 While(not C2)do S2,改进后的循环结构,重复环节法,软件工程导论 6.*程序编码,2023/3/16,10 if(not C1)then goto 20 if(not C2)then goto 30 S1 goto 10 20 S2 30 Sn,多出口循环结构,软件工程导论 6.*程序编码,2023/3/16,while(C1 and C2)doS1 If(not(C1)then S2Sn,经过处理后的单出口循环结构,逻辑分析法,软件工程导论 3.问题的定义与可行性分析,2023/3/16,while(C1)do Begin S1 If C2 then goto 10 else S2End 10 Sn,EXIT:=false while(C1 and(not EXIT)do Begin S1 If C2 then EXIT:=true else S2 End 10 Sn,标志变量法,标志变量,break,Exit do,Exit for,软件工程导论 6.*程序编码,2023/3/16,SUM=0 Do input x if x=0 then exit do SUM=SUM+x loop until SUM1000 Print SUM,使用 Ture Basic 语言中的专用语句退出循环,上面程序的功能是:从键盘输入一个数,并累加到总和中。当总和超过1000或输入为 0时则停止输入,并打印出总和。,软件工程导论 6.*程序编码,2023/3/16,if(N=0)then if(N能被2整除)then print“正偶数”else print“负数”,导致二义性的 then-if 结构,(2)、避免使用模糊或费解的结构,软件工程导论 6.*程序编码,2023/3/16,While C1 If C2 then While C3 If C4 then Repeat S Until C5 Loop Loop.,费解的 深层嵌套 结构,软件工程导论 6.*程序编码,2023/3/16,二、保持控制流的局部性,局部性是程序设计的一条准则。像应用甚广的 模块化设计,可看成是局部化原理在总体设计中的 具体体现。其实,在编码时也要遵守局部化的原则,这就是保持控制流的局部性,其目的不仅是为了 提高程序的清晰度,也有利于防止错误的扩散,提 高程序的可修改性。,软件工程导论 6.*程序编码,2023/3/16,1、GOTO 语句的使用准则,向前不向后的规则,软件工程导论 6.*程序编码,2023/3/16,goto的目的地最好在同一控制结构内部,或者离本结构出口相近的地方。,1,2,软件工程导论 6.*程序编码,2023/3/16,2、GOTO 语句的常见用法,请将右侧的具有多个循环出口的结构改写为单出口结构,软件工程导论 6.*程序编码,2023/3/16,(用GOTO语句提前退出循环)方法一:,EXIT2=false;EXIT3=false;while(C1)and(not(EXIT2)and(not(EXIT3)do begin if C2 then EXIT2:=true;if C3 then TXIT3:=true;end if(EXIT2)then goto 20;if(EXIT3)then goto 30;goto 40;20:C2为真时执行的语句 gotot 40;30:C3为真时的语句 40:Sn 后续语句,标志变量,软件工程导论 6.*程序编码,2023/3/16,while C1 do begin if C2 then goto 20;if C3 then goto 30;end goto 40;20:从e2退出前执行的语句 gotot 40;30:e3 退出前执行的语句 40:Sn 后续语句,(用GOTO语句提前退出循环)方法二:,软件工程导论 6.*程序编码,2023/3/16,在计算机应用中,用户与计算机都要以适当的形式把消息传递给对方,称为人-机交互:(HumanComputer Interface)交互是通过界面进行的。这种界面既存在于用户与计算机硬件之间,也存在于用户与一切软件(包括系统软件与应用软件)之间,所以现在常把“用户界面”简称为“HCI”,软件工程导论 7.*用户界面的设计,2023/3/16,7.1 用户界面设计分析,软件工程导论 7.*用户界面设计,2023/3/16,外行型,用户特性分析,用户特性分析的目的是:了解所有用户的技能和经验,以便能预测他们对不同的界面设计会做出社么反映,并针对用户的能力来设计或更改界面。,初学型,熟练型,专家型,软件工程导论 7.*用户界面设计,2023/3/16,系统的功能分解,可以用数据流图和数据词典来描述。其中,每一个加工相当于一个功能,也就是一个任务。任务可以由一组动作构成,它规定了为实现该任务所必须的一系列活动 任务的 细节,可以使用结构化英语来表达。它描述了动作完成的序列以及在完成动作时的所有例外情况。,用户工作分析,用户工作分析,也称为任务分析。它是系统内部活动的分解。用户工作分析与需求分析中结构化分析的方法类似,是采用自顶向下,逐步进行功能分解。,软件工程导论 7.*用户界面设计,2023/3/16,任务和工作设计的目的在于创造用户的工作环境。通常,任务应组织得与人的能力相适应。既不能完全由非常复杂的步骤组成,也不能太过简单而使操作者感到厌烦。,7.2 用户界面任务,软件工程导论 7.*用户界面设计,2023/3/16,7.3 界面设计的基本类型,如果从用户与计算机交互的角度来看,用户界面设计的类型主要有问题描述语言、数据表格、图形与图表、菜单、对话以及窗口等。,使用的难易程度,学习的难易程度,操作速度,复杂程度,控制,开发的难易程度,类型,软件工程导论 7.用户界面设计,2023/3/16,在开发软件的过程中,我们使用了保证软件质量 的方法分析、设计和实现软件,但难免还会在工作中 犯错误。这样,在软件产品中就会隐藏着许多错误和 缺陷。特别是对于规模大、复杂性高的软件更是如 此。在这些错误中,有些是致命性的错误如果不排除,就会导致生命与财产的重大损失。,DO 5 I=1,3,DO 5 I=1.3,软件工程导论 8.软件测试,2023/3/16,8.1 软件测试的基础,软件测试是为了发现错误而执行程序的过程。或者 说,软件测试是根据软件开发各阶段的规格说明和程序 内部结构而精心设计的一批测试用例(即输入数据及预 期的输出结果),并利用这些测试用例去运行程序,以 发现程序错误的过程。,什么是软件测试,软件工程导论 8.软件测试,2023/3/16,测试工具软件开发工程师(Software Development Engineer in Test,简称SDE/T),软件测试人员,软件测试工程师(Software Test Engineer,简称STE),软件工程导论 8.软件测试,2023/3/16,SDE/T,负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。,软件工程导论 8.软件测试,2023/3/16,负责理解产品的功能要求,然后对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性,并写出相应的测试规范和测试案例。,STE,软件工程导论 8.软件测试,2023/3/16,Exchange 2000 和 Windows 2000 的人员结构,例如,,软件工程导论 8.软件测试,2023/3/16,软件测试人员的任务很清楚,就是站在使用者的角度上,通过不断地使用和攻击刚开发出来的软件产品尽量多地找出产品存在的问题,也就是我们所称的 Bug。,软件工程导论 8.软件测试,2023/3/16,测试,软件配置,结果分析,测试结果,排错,改正的软件,预期结果,可靠性分析,预测的可靠性,错误,出错率数据,测试配置,测试工具,软件测试信息流,软件工程导论 8.软件测试,2023/3/16,软件测试并不等于程序测试。软件测试应贯穿于软件 定义与开发的整个期间。因此,需求分析、概要设计、详 细设计以及程序编码等所得到的文档资料,包括需求规格 说明、概要设计说明、详细设计规格说明以及源程序,都 应成为软件测试的对象。,软件测试的对象,软件工程导论 8.软件测试,2023/3/16,软件开发过程是一个自顶向下、逐步细化的过 程,而测试则是依相反的顺序安排的,自底向上、逐步集成的过程。低一级为上一级测试准备条件。,测试与软件开发阶段的关系,需求分析,设 计,编 码,单元测试,集成测试,确认测试,软件工程导论 8.软件测试,2023/3/16,8.2 软件测试设计的方法,软件的测试设计与软件产品的设计一样,是一项需要 花费许多人力和时间的工作,我们希望以最少量的时间和 人力,最大可能地发现最多的错误。,测试技术,软件工程导论 8.软件测试,2023/3/16,也叫玻璃盒测试(Glass Box Testing)。对软件的过程性细节做细致的检查。这一方法是把测试对象 看作一个打开的盒子,它允许测试人员利用程序内部的逻辑 结构及有关信息,来设计或选择测试用例,对程序所有逻辑 路径进行测试。,白盒测试(White Box Testing),软件工程导论 8.软件测试,2023/3/16,白盒测试的内容,软件工程导论 8.软件测试,2023/3/16,已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。,黑盒测试(Black Box Testing),软件工程导论 8.软件测试,黑盒测试的内容,

    注意事项

    本文(L2(软件工程概论).ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开