软件工程与测试.pptx

上传人:夺命阿水 文档编号:381518 上传时间:2023-05-08 格式:PPTX 页数:176 大小:620.61KB
返回 下载 相关 举报
软件工程与测试.pptx_第1页
第1页 / 共176页
软件工程与测试.pptx_第2页
第2页 / 共176页
软件工程与测试.pptx_第3页
第3页 / 共176页
软件工程与测试.pptx_第4页
第4页 / 共176页
软件工程与测试.pptx_第5页
第5页 / 共176页
点击查看更多>>
资源描述

《软件工程与测试.pptx》由会员分享,可在线阅读,更多相关《软件工程与测试.pptx(176页珍藏版)》请在课桌文档上搜索。

1、程序员培训,职业道德职业道德基本知识职业守则(1)遵纪守法,尊重知识产权,爱岗敬业,严守保密制度;(2)实事求是,工作认真,尽职尽责,一丝不苟,精益求精,团队精神。基础知识计算机系统的组成(1)计算机硬件的基本组成(2)计算机软件的基本组成软件开发基础知识(1)程序语言基础知识(2)数据结构基础知识(3)操作系统基础知识(4)数据库基础知识(5)网络编程基础知识(6)软件工程基础知识以及测试网络基础知识(1)网络基本结构(2)网络协议与标准(3)信息安全基础知识相关法律、法规知识(1)知识产权的相关知识(2)劳动法的相关知识,职业道德职业道德是指从事一定职业劳动的人们,在长期的职业活动中形成的

2、行为规范。职业道德是一种非强制性的约束机制。职业道德作为职业行为准则,有着与其他的执业行为准则不具备的特征。在市场经济条件下,职业道德具有促进人们的行为规范化的社会功能。计算机道德规范主要有有关知识产权、有关计算机安全和有关网络行为规范等几个方面。执业纪律是企业的行为规范,职业纪律具有明确的规定性的特点。,下列选项中属于职业道德范畴的是(D)。A.企业经营业绩B.企业发展战略C.员工的技术水平D.人们的内心信念下列不属于职业道德功能的有(D)。A.有利于调整职业利益关系 B.有利于提高人民的道德水平C.有利于完善人格 D.有利于人的职业生涯规划,在市场经济条件下,职业道德具有(C)的社会功能。

3、A.鼓励人们自由选择职业B.遏制牟利最大化C.促进人们的行为规范化D.最大限度地克服人们受利益驱动以下不属于职业道德修养内容的是(B)。A.端正职业态度 B.遵守职业规范 C.强化职业情感 D.历练职业意志,下列选项中属于职业道德作用的是(A)。A.增强企业的凝聚力B.增强企业的离心力C.决定企业的经济效益D.增强企业员工的独立性社会主义职业道德的核心是(C)。A.爱岗敬业 B.诚实守信 C.为人民服务D.忠于革命事业下列不属于职业道德修养的内容的是(A)。A.强化职业技能教育 B.端正职业态度C.强化职业情感 D.历练职业意志下列选项中属于职业道德作用的是(A)。A.增强企业的凝聚力B.增强

4、企业的离心力C.决定企业的经济效益D.增强企业员工的独立性,职业道德通过(D),起着增强企业凝聚力的作用。A.调节企业与社会的关系B.为员工创造发展空间C.增加职工福利D.协调员工之间的关系职业道德教育不包括(B)内容。A.养成职业道德习惯B.严格遵守规章制度C.培养职业道德情感D.树立对职业道德的认识,在市场经济条件下,(B)是职业道德社会功能的重要表现。A.增加决策科学化B.促进员工行为的规范化C.遏制牟利最大化D.克服利益导向,商标权的内容不包括不可转让权。商标侵权的法律责任不包括社会责任。关于秘密的基本要素不包括地域性。计算机程序设计员要根据自身分工的不同和形势发展的需要,掌握软件技术

5、所需要的技能,如新的语言,新的环境,网络技能,组件开发等。,软件工程,软件是计算机系统中与硬件相互依存的另一部分,它是 程序+数据+文档 的完整集合。其中,程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。注意:程序并不是软件,程序只是软件的组成部分。,软件的分类,1.系统软件 应用软件 支撑软件 2.实时处理软件 分时软件 交互式软件 批处理软件,基于软件工作方式的划分,基于软件功能的划分,软件危机,20世纪60年代末70年代初,西方工业发达国家经历了一场“软件危机”。这场软件危机表现在:软件危机包含下述两方面的

6、问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。,软件需求的增长得不到满足 软件开发成本和进度无法控制 软件质量难以保证 软件不可维护或维护程度非常低,软件工程的定义,软件工程是指研究软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既可靠又能在实际机器上有效运行的软件。1983年美国IEEE软件工程标准术语对软件工程下的定义为:软件工程是开发、运行、维护和修复软件的系统方法,其中“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计事机上运行时所必需的数据。,软件工程研究的内容,软件工程的主要研究内容 软件开发技术:软件开发方法学 软件开发过

7、程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学,软件生命周期,如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生存期。一般说来,软件生命期由软件定义、软件开发和软件维护三个时期组成,每个时期又可进一步划分成若干个阶段。,软件定义,开发阶段,运行维护阶段,问题定义,可行性分析,需求分析,概要设计,详细设计,编 码,测 试,软件发布,软件运行,维护或退役,软件生存期,1软件定义时期 问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。可行性研究:任务是为前一阶段提出的问题寻求一种至数种在技术

8、上可行、且在经济上有较高效益的解决方案。需求分析:弄清用户对软件系统的全部需求,主要是确定目标系统必须具备哪些功能。,软件生存期,2软件开发时期 概要设计:设计软件的结构,即确定程序由哪些模块组成以及模块间的关系。确定各模块之间的接口。此阶段产生的文档:概要设计说明书。详细设计:针对单个模块的设计。确定各模块数据结构,算法。具体为:外部接口、内部接口、输入输出、局部数据。此阶段产生的文档:详细设计说明书。,软件生存期,2软件开发时期 编码:按照选定的语言,把模块的过程性描述翻译为源程序。测试:通过各种类型的测试(及相应的调试)使软件达到预定的要求。此阶段产生的文档:测试计划、测试报告,软件生存

9、期,3软件维护时期 是软件生存周期的最后一个时期。软件人员在这一时期的工作,主要是做好软件维护。维护的目的,是使软件在整个生存周期内保证满足用户的需求和延长软件的使用寿命。维护的种类有:改正性维护、适应性维护、完善性维护和预防性维护。,软件开发模型,1.瀑布模型:定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型实现特点:1 阶段间具有顺序性和依赖性 2.推迟实现的观点 3.质量保证的观点瀑布模型的成功在于它基本上是一种文档驱动的模型。,瀑布模型的优点是:约束软件开发人员采用规范的开发方法;严格规定每个阶段必须提交的文档;要求每个阶段的产品都要经过严格的质量审查。缺点:缺乏灵活性后一阶段

10、出现的问题需要通过前一阶段的重新确认来解决,主要是因为:开发初期必须明确需求、确定需求后需要相当长的时间才能得到软件最初版本,不利于修改。,2.快速原型模型 快速原型为软件开发人员与用户一起进行需求分析,进行快速设计,建造原型,原型由用户评估,进一步修改原型,再次进行设计。迭代这个过程,逐步使原型满足用户需要。,快速原型模型,原型模型的应用,快速原型模型的主要优点有:(1)快速原型模型法可以得到良好的需求定义,能够有效处理用户的模糊需求,开发者和用户得到充分的协作。(2)快速原型模型系统可作为培训环境,有利于用户培训和开发同步,用户参与开发的过程也是学习的过程。(3)软件产品的开发过程基本上是

11、线性顺序过程;(4)快速原型模型可以低风险开发变化较大的计算机系统。(5)快速原型模型使系统更易维护、对用户更友好。(6)快速原型使总的开发费用有所降低,开始时间缩短。,快速原型模型的主要缺点,容易主次颠倒,开发者往往不熟悉应用领域,常常将次要部分当做主要部分,作出不符合用户要求的原型。原型迭代不收敛于开发者的最初目标,增加了更改的次数。原型过快收敛于用户的最初需求集合,而忽略了其他方面的问题资源规划和管理较为困难,更新文档工作量繁重。,3.增量模型,瀑布模型是一种整体开发模型。在开发过程中,用户看不到软件是什么样子,只有开发完成后,整个软件才全部展现现在用户面前。这时如果用户发现有不满意的地

12、方,为时已晚。增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。,增量模型,(1)部分整体 需求分析、设计阶段按瀑布模型的整体方式开发;(2)部分增量 编码和测试阶段按增量方式开发;先开发出软件的一个部分 用户满意并确定后,再开发出软件的另一个部分 如此循序渐进、逐步增量,最终实现整个系统(3)明显特点 开发过程中用户可以及早看到部分软件功能、发现问题,以便在开发其它部分时及时解决问题。,模型的特点,

13、增量模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。软件开发采用增量模型时应具有以下条件:(1)软件开发过程中,需求可能发生变化,用户接受分析阶段交付;(2)分析设计人员对应用领域不熟悉,难以一步到位;(3)项目风险较高;(4)用户可以参与到整个软件开发过程中;(5)使用面向对象语言或第四代语言;(6)软件公司自己已经有较好的类库和构件库,增量模型适应范围,4.螺旋模型,为了克服瀑布模型的不足,在软件开发中引入了风险分析。风险是软件开发不可忽视的不利因素,它影响软件开发过程或软件产品的质量。软件风险分析的目标是在造成危害之前及时分析风险,制定对策,减少风险造成的危害。

14、,螺旋模型优点是:(1)有利于已有软件的重用;(2)有助于把软件质量作为软件开发的一个重要目标;(3)减少了过多测试或测试不足所带来的风险;螺旋模型缺点是要求许多客户接受和相信风险分析并做出相关反应是不容易的,往往适应于内部的大规模软件开发。需要软件开发人员具备风险分析和评估的经验,否则将会带来更大的风险。,5.喷泉模型,喷泉模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某些部分常常重复工作多次,相关功能在每镒迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。,基于面向对象的模型,6.智能模型,智能模

15、型把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段上都利用了相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求说明一级上进行。为此,建立了各阶段所需要的知识库,将模型、相应领域知识和软件工程知识分别存入数据库,以软件工程知识为基础的生成规则构成的专家系统与含有应用领域知识规则的其他专家系统相结合,构成了该应用领域的开发系统。,智能模型图,智能模型的特点,智能模型以瀑布模型与专爱系统的综合应用为基础。该模型通过应用系统的知识和规则帮助设计者认识一个特定的软件的需求和设计,这些专家系统已成为开发过程的伙伴,并指导开发过程。将软件工程知识从特定领域分离出来,这些知识随着过程范例收入知识

16、库,产生规则,在接受软件工程技术的基础上被编码成专家系统,用来辅助软件工程的开发。在使用过程中,软件工程专家系统与其他领域的应用知识的专家系统连接起来,形成了特定软件系统,为开发一个软件产品所应用。,智能模型的优点,(1)通过领域的专家系统,可使需求说明更完整、准确和无二义性(2)通过软件工程专爱系统,提供一个设计库支持,在开发过程中成为设计者的助手。(3)通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。,智能模型的缺点:,(1)建立适合于软件设计的专家系统是非常困难的,超出了目前的能力,是今后软件工程的发展方向,要经过相当长的时间才能取得进展。(2)建立一个既适合软件工程又

17、适合应用领域的知识库也是非常困难的。(3)目前的状况是在软件开发中正在应用AI技术,在CASE工具系统中使用专家系统,用专家系统来实现测试自动化,在软件开发的局部阶段有所进展。,7.基于构件的开发模型基于构件的开发模型优点:充分体现了软件复用的思想,降低了开发风险和成本。可以快速交付所开发的软件。基于构件的开发模型缺点:由于某些商业构件是不能进行修改的,系统的演化将受到一定程度的限制。,可行性研究,问题定义一、问题定义的内容包括:明确问题的背景、开发系统的现状、开发的理由和条件、开发系统的问题要求、总体要求、问题的性质、类型范围、要实现的目标、功能规模、实现目标的方案、开发的条件、环境要求等等

18、,然后写出问题定义报告(或称系统定义报告),以供可行性分析阶段使用。,可行性研究,二、问题定义的步骤在问题定义阶段,系统分析员要深入现场,阅读用户写的书面报告、听取用户对开发系统的要求、调查开发系统的背景理由。还要与用户负责人反复讨论,以澄清模糊的地方、改正不正确的地方。最后写出双方都满意的问题定义报告,并确定双方是否可进行深入系统可行性研究的意向。,可行性研究的任务,回答是否可行最短时间最小代价四个方面的可行性技术可行性经济可行性社会可行性人的可行性,可行性研究,一般说来,研究可行性应该从下述几方面进行:(1)技术可行性:指使用现有的技术能否完成这个项目。考虑的问题:用什么技术保证完成预期功

19、能、软件质量和开发效率。(2)经济可行性:指通过对软件开发项目进行成本/效益估计,以确定软件系统可能带来的经济效益能否超过研制和维护此系统所需的费用。(3)社会因素的考虑:软件开发是否会侵犯他人、集体或国家的利益,是否违反国家的法律并可能由此而承担法律责任。,可行性研究,成本/效益分析成本/效益分析的目的,是从经济角度评价开发一个新项目是否可行、是否划算,从而帮助使用部门的负责人正确地作出是否投资于这项开发的决定。一、成本估计 1代码行技术:通常先根据经验和历史数据来估计实现一个功能所需要的源程序行数,然后用每行代码的平均成本乘以行数就可以确定软件的成本。,可行性研究,2任务分解技术:首先把软

20、件开发工程分解为若干个相对独立的任务,再分别估计每个单独的开发任务的成本,最后累加起来得出软件开发工程的总成本。估计每个任务的成本时,通常先估计完成该项任务所需要使用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。划分任务时最常用的办法是按开发阶段进行。3.自动成本估算:应用软件工具进行。,可行性研究,二、度量效益的方法 1货币的时间价值货币的时间价值通常用利率的形式表示。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:FP(1十i)n这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现在的价值是:PF(1十i)n,可行性研究,2投资回收

21、期所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,这项工程也就越值得投资。3纯收入纯收入就是在整个生命周期之内系统累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。,循环,可行性研究的步骤,复查系统规模和目标研究现有系统功能导出新系统模型重新定义问题导出和分析各种可选解决方案推荐行动方针草拟开发计划书写文档提交审查,1 复查系统规模和目标,问题定义阶段的成果系统规模和目标报告书复查任务改正含糊的、二义的描述改正不正确的描述核查系统限制和约束,2 研究现有系统功能,分析现有

22、系统高层系统流程图确定系统功能比较新旧系统新系统必须完成旧系统的基本功能新系统必须改正旧系统存在问题新系统必须比旧系统增收入、减支出,3 导出新系统模型,旧系统逻辑模型新系统目标和规模逻辑模型描述工具数据流图数据字典用例图,新系统逻辑模型,4 重新定义问题,复查问题定义、规模和目标根据新系统模型分析员误解用户遗漏重新定义问题循环(定义,分析,求解,重定义),5 导出和分析可选解决方案,从逻辑模型导出物理系统方案不同角度多个方案分析各种可选方案技术可行性操作可行性经济可行性为可行方案制定初步进度计划,6 推荐行动方针,得出可行性研究结果继续开发终止项目推荐解决方案成本/效益,7 草拟开发计划,为

23、推荐方案确定开发计划进度开发人员硬件设备软件工具各阶段成本估计,8 书写文档提交审查,可行性研究报告各步骤结果推荐方案开发计划等,可行性研究报告内容,系统概述:说明开发的系统名称。提出单位和开发单位;可行性研究的前提:系统目标,要求,约束和限制,可行性研究的准则;对现有系统的分析:处理流程、图示说明现有系统的处理流程和数据流程,以及现有系统存在的问题系统需求:主要功能,主要性能及其要求建议系统:系统目标,处理流程,系统结构,技术,投资效益可行性,法律可行性;其他方案:国内外同类型方案的比较;指定下一阶段的预算结论性意见,需求分析,需求分析的任务需求分析的任务就是准确地回答“系统必须做什么?”这

24、个问题,是通过系统分析员与用户一起商定,清晰、准确、具体地描述软件产品必须具有的功能、性能、运行规格等要求。软件需求分析阶段的目的是澄清用户的要求,并把双方共同的理解明确地表达成一份书面文档软件需求规格说明书。,需求分析的具体任务,(1)确定软件系统的综合需求 功能需求性能需求:处理速度、存储容量、响应时间、安全限制等。环境需求:软硬件、网络、外设如机型、操作系统等;可靠性需求:不发生故障的概率;安全保密需求,用户界面需求,资源使用需求。可能的要求:扩展,需求分析的具体任务,(2)分析系统的数据需求需要哪些数据、数据间的关系、数据本身的性质和结构等。建立数据模型(如实体关系模型)。(3)导出软

25、件系统的逻辑模型:数据流图、数据字典。(4)修正系统开发计划(5)开发原型系统验证软件需求分析的正确性(6)编写软件需求规格说明书,需求分析的过程,需求分析阶段可分为四个过程:调查研究、分析与综合、书写需求分析的文档和评审。(1)调查研究系统分析员协同程序员向用户做需求调查,阅软件计划中的可行性报告和项目开发计划报告,访问系统现场,并由此确定当前系统必须做什么,并获得当前系统的具体模型,用数据流图或IPO图表示出来。,需求分析的过程,(2)分析与综合分析员需从数据流和数据结构出发,逐步细化所有的软件功能,找出系统中各元素之间的联系、接口特征和设计上的限制,分析它们能否满足功能要求,是否合理。依

26、据功能需求、性能需求、运行环境需求等,剔除其中不合理的部分,增加其需要的部分。最终综合成系统的解决方案后,给出目标系统的详细逻辑模型。常用的分析方法:面向数据流的结构化分析方法、面向数据结构的jackson方法和结构化数据系统开发方法、面向对象的分析方法。,需求分析的过程,(3)书写需求分析的文档 把分析的结果用正式的文档记录下来,作为最终软件配置的一个组成成分。应该完成下述四份文档资料:系统规格说明、数据需求、用户系统描述、修正的开发计划。(4)需求分析评审作为需求分析阶段的复查手段,在需求分析的最后一步,应该对功能的正确性、完整性和清晰性,以及其他需求给予评价。,需求分析的原则,(1)能够

27、表达和理解问题的信息域和功能域。(2)能够对问题进行分解和不断细化,建立问题的层次结构。(3)能够给出系统的逻辑视图和物理视图。,结构化分析方法,结构化分析方法(Structured Analysis,简称SA方法)是70年代中期提出的一种面向数据流按照软件内部数据传递、变换的关系采用自顶向下、逐步求精进行需求分析的方法。结构化分析方法适用于分析大型的数据处理系统,特别适用于企事业管理系统。结构化分析方法通常与设计阶段的结构化设计方法(Structured Designed,简称SD方法)衔接起来使用。,结构化分析方法,结构化分析方法中使用的工具主要包括:数据流图 数据词典 结构化语言 IPO

28、处理描述 判定表与判定树其中数据流图用以表达系统内数据的运动情况;数据词典用以定义系统中的数据;结构化语言、判定表和判定树都是用以描述数据流的加工的工具。,数据流图DFD,数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。1、数据流图的基本图形元素(1)数据流:是一组数据。在数据流图中数据流用带箭头的线表示,在其线旁标注数据流名。(2)加工:是对数据流执行的某种操作或变换。在数据流图中加工用圆圈表示,在圆圈内写上加工名。(3)文件:是按照某种规则组织起来的、长度不限的数据。在数据流图中文件用一直线表示,在线段旁注上文件名。(4)数据流的源点和终点:在数据流图中用

29、方框表示,在框内写上相应的名称。,数据流图,2、由外向里画数据流图的步骤(1)确定系统的输入输出:由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。,数据流图,(2)由外向里画系统的顶层数据流图首先,将系统的输人数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。(3)自顶向下逐层分解,绘出分层数据流图对于大型的系统,为了控制复杂性,便于

30、理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。,检查和修改数据流图的原则,数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流,在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的父图与子图的对应关系任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡图上每个元素都必须有名字,数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要

31、数据流,数据字典,数据字典的任务就是对于数据流图中所出现的所有被命名的图形元素在数据字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。数据字典的内容包括:图形元素的名字、别名或编号、分类、描述、定义、位置等。数据字典中所有的定义都应是严密的、精确的,不可有半点含混,不可有二义性。,处理逻辑 外部实体 数据存储,数据流 数据项 数据结构,(1)数据流,数据流名称及其编号数据流的来源:来自何方数据流的取向:去向何处数据流的组成:数据结构数据量的流通量:单位时间的传输次数高峰时期的流通量:业务的频繁程度和时间有关,(2)数据项(数据元素),数据项名称及编号:别名:取值的范围和取

32、值的含义数据项的长度:数据项所包含的字符或数字的位数,(3)数据结构,数据结构的名称及编号数据结构的组成:如果是一个简单的数据结构,只要列出它所包含的数据项即可。如果是一个嵌套的数据结构,只要列出它所包含的数据结构名称,因为这些数据结构同样在数据字典中有定义。,(4)数据存储,数据存储的名称及其编号:流入的数据流:指出其来源流出的数据流:指出其去向数据存储的组成:指它所包含的数据项或数据结构,(5)处理逻辑,处理逻辑的编号及名称简述处理逻辑的输入和输出处理逻辑的主要功能处理逻辑的小说明(文档之一),外部实体的编号及名称与外部实体有关的数据流,(6)外部实体,数据结构的描述,加工逻辑说明,结构化

33、语言判定表判定树,对数据流图中每个基本加工都必须有一个加工小说明,给出这个加工的精确描述。小说明中应精确地描述加工的激发条件、加工逻辑、优先级、执行频率和出错处理等。对基本加工说明有三种描述方式:,总体设计,总体设计又称为概要设计或初步设计,它的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。在总体设计阶段,应划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等,并确定系统中每个程序由哪些模块组成以及这些模块相互间的关系。总体设计的过程总体设计通常由系统设计(确定方案)和结构设计(确定软件结构)两个阶段组成。系统设计阶段确定系统的具体实现方案,结构设计阶段确定软件的结构。,总

34、体设计,实施总体设计的过程如下:1设想供选择的方案 2选取合理的方案 3推荐最佳方案 4功能分解 5设计软件结构6数据库设计7制定测试计划 8书写文档 9审查和复审,总体设计,总体设计的图形工具一、层次图 层次图(也称H图)是在总体设计阶段最常使用的图形工具之一,它常用于描绘软件的层次结构。层次图中的每个方框代表一个模块,方框间的连线表示模块间的调用关系。,总体设计,二、HIPO图 HIPO图实际上由H图和IPO图两部分组成。H图即层次图,为了能使HIPO图具有可跟踪性,在H图里除了最顶层的方框之外,每个方框都加了编号;和H图中的每个方框相对应,有一张IPO图描述这个方框代表的模块的处理过程。

35、IPO图能够方便地描述数据输入、数据处理和数据输出之间的关系。它的基本形式是:在左边的框中列出有关的输入数据,在中间的框中列出主要的处理处理框中列出的处理次序暗示了执行的次序,在右边的框中列出产生的输出数据。另外,还用类似向量符号的粗大箭头清楚地指出数据通信的情况。,第4章 总体设计,三、结构图 结构图中的每个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块间的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中模块之间传递的信息。可以利用注释箭头尾部的不同形状来区分:尾部是空心圆表示传递的是数据,尾部是实心圆则表示传递的是控制信息。,总体设计,软件设计的

36、概念和原理一、设计原理 模块化、抽象、逐步求精、模块独立性(耦合和内聚)模块:是由边界元素限定的相邻程序元素(如数据说明,可执行的语句)的序列,而且有一个总体标识符代表它,按模块的定义,过程、函数、子程序和宏等都可作为模块。面向对象中的对象就是模块,对象内的方法也是模块。模块是构成程序的基本构件。,总体设计,1、耦合耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。低 高非直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合 尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合,总

37、体设计,2、内聚 内聚标志着一个模块内部各个元素间彼此结合的紧密程度。简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多。但是,坚决不要使用低内聚。高 低 功能内聚 信息内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 偶然内聚,总体设计,二、自顶向下逐步细化 1、自顶向下设计与由底向上自顶向下设计的特点:a易于修改和扩展b整体测试较易通过c需要进行详细的可行性论证由底向上设计的特点:a可能导致较大的重新设计b整体测试中可能在模块接口间发现不一致等问题c如果在可行性上出现问题,可以较早发现 2逐步细化,详细设计,详细设计以总体

38、设计阶段的工作为基础的,但又不同于总体设计,主要表现为以下两个方面:(1)在总体设计阶段,数据项和数据结构以比较抽象的方式描述,而详细设计阶段则应在此基础上给出足够详细描述。(2)详细设计要提供关于算法的更多的细节,例如:总体设计可以声明一个模块的作用是对一个表进行排序,详细设计则要确定使用哪种排序算法。在详细设计阶段为每个模块增加了足够的细节后,程序员才能够以相当直接的方式进行下一阶段的编码工作。,详细设计,详细设计的任务和原则一、详细设计的任务(1)确定每个模块的算法。(2)确定每一个模块的数据组织。(3)为每个模块设计一组测试用例。(4)编写详细设计说明书。,详细设计,二、详细设计的原则

39、(1)模块的逻辑描述正确可靠、清晰易读。(2)采用结构化程序设计方法,改善控制结构,降低程序复杂度,提高程序的可读性、可测试性和可维护性。,详细设计,结构程序设计结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。三种基本的控制结构 顺序、选择、循环,详细设计,使用结构程序设计技术的好处:(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,可以显著提高软件开发的成功率和生产率。(2)先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构。(3)使用单入口单出口的控制结构而不使用GO TO语句,使得程序的静态结构和它的动

40、态执行情况比较一致。(4)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。,详细设计,详细设计的工具一、程序流程图 二、N-S图 三、PAD图 四、PDL语言 五、详细设计工具的选择,在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:图形工具 表格工具 语言工具,程序流程图,程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:,示例,程序流程图的标准符号,循环的标准符号

41、 注解的使用,多出口判断,N-S图,N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。,N-S盒图特点:功能域明确;不可能任意转移控制很容易确定局部和全程数据的作用域;很容易表现嵌套,也可以表示模块的层次结构,示例,N-S图的嵌套定义形式,PAD也设置了五种基本控制结构的图式,并允许递归使用。,问题分析图(PAD),PAD图的主要优点:使用表示结构化控制结构的PAS符号所收集出来的程序必然是结构化程序;PAD图所描述的程序结构十分清晰,图最左边的竖线是程序的主线,随着层次的增加依次往右延伸,每增加一个层次往右扩展一个竖线PAD图表现程序逻辑易读易懂易记,运行从左往右,自上而下执行;易转换

42、为高级语言源程序,,PAD描述的示例,对应于增量型循环结构for i:=n1 to n2 step n3 do在PAD中有相应的循环控制结构,PAD的扩充控制结构,判定表,判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理有四部分组成:左上列出所有条件,左下是所有可能动作,右上是各条件矩阵,右下是和每个条件组合对应的动作。,无多分支判断结构,判定树,判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系,优点:形式简单。,PDL(Program Design Language),PDL是一种用于描述功能模块的算法设计和加工细

43、节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。,面向对象软件工程,Coad和Yourdon:面向对象=对象+类+继承+通信 面向对象技术的基本观点:客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。具有相同数据和操作的对象可归纳成类,对象是类的一个实例。类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性。对象之间的联系通过消息传递来维系。,面向对象的核心元素:对象:封装了数据结构以及可以试驾在这些结构上的操作

44、的封装体,这个封装体有可以惟一地标识它的名字,而且对外提供一组服务;封装:将数据和实现操作的代码集中起来放在对象的内部。消息:要求某个对象执行在定义它的那个类中所定义的某个操作的说明类:具有相同属性和行为的一个或多个对象的集合。继承:子类自动滴共享基类中定义的数据和方法的机制多态性:对于同一个消息,执行的不同;方法:对象所能执行的操作。即类中所定义的服务。重载:函数重载-同一作用域内的若干个参数特征不同的函数可以使用同一函数名。运算符重载同一个运算符可以施加于不同类型的操作数上面。,类图类之间的关系:关联、泛化、依赖和细化等。聚合是关联的特例,表示类与类之间的关系为整体和部分可以分为:共享聚合

45、和组合聚合。共享聚合-处于部分方的对象可以同时参与多个整体对象的构成;组合聚合-部分完全隶属于整体,部分与整体同存。,泛化泛化也就是继承,可以分为普通泛化和受限泛化依赖和细化依赖描述两个模型元素之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。使用带箭头的虚线表示。箭头指向独立的类。细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;,面向对象的三种模型:对象模型(类图);动态模型(状态图);功能模型(DFD图),软件项目管理,估算软件规模的方法:估算软件规模的方法有两种:代码行技

46、术、功能点技术。制定工作计划工具:Gantt图 工程网络软件配置管理:程序、文档和数据CMM(软件过程能力成熟度模型)可分为五个等级:初始级,可重复级、已定义级、已管理级和优化级。,软件工程标准化,软件工程标准的类型是多方面的。一般包括:过程标准(如方法、技术、度量等)产品标准(如需求、设计、部件、描述、计划、报告等)专业标准(如职别、道德标准、认证、特许、课程等)记法标准(如术语、表示法、语言等),软件工程标准一共分为5个层次,它们是:国际标准:有国际联合机构制定和公布,提供各国参考的标准;国家标准:有政府或国家级的机构制定或批准,适用于全国范围的标准;行业标准:有行业结构机构、学术团体或国

47、防机构制定,并适用于某个业务范围的标准;企业规范:一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范;项目规范:有某一科研生产项目组织制定,且为该任务专用的软件工程规范。,国际标准国际标准化组织ISO(International Standards Organization)具有代表性和权威性;1947年2月成立编号格式:ISO+标准号+斜杠+分标准号+冒号+发布年份国家标准GB行业标准 IEEE(Institute of Electrical and ElectronicsEngineers)-美国电气电子工程师学会。,工程质量,软件质量的定义与所确定的功能和性能需求的一致性

48、;与所成文的开发标准的一致性;与所有专业开发的软件所期望的隐含特性的一致性。1976年 Boehm质量模型1979年 McCall质量模型1985年 ISO质量模型,软件测试,软件测试是软件工程过程中的一个重要阶段,在软件投入运行前,对软件需求分析、设计和编码各阶段产品的最终检查是为了保证软件开发产品的正确性、完全性和一致性,从而进行检测错误以及修正错误的过程。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。,130,My

49、ers软件测试目的,(1)测试是程序的执行过程,目的在于发现错误;(2)一个好的测试用例在于能发现至今未发现的错误;(3)一个成功的测试是发现了至今未发现的错误的测试。,131,132,静态分析与动态测试,软件测试的方法和技术有多种,对于测试技术,可以从不同的角度进行分类:静态分析和动态测试。,静态分析,代码检查,静态结构分析,代码走查,桌前检查,代码审查,函数调用关系图,函数内部控制流图,133,动态测试,功能确认与接口测试,覆盖率分析,性能分析,单元接口,局部数据结构,重要执行路径,错误处理路径,边界条件,语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,组合覆盖,路径覆盖,134,软件测试的

50、基本方法,所谓测试用来执行被测代码的系统的一个输入集合或一个场景。两种常用的测试方法 黑盒测试 白盒测试,135,黑盒测试,这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。,136,黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?,137,白盒测试,此方法把测试对象看

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号