您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 计算机软件基础二-5软件工程基础-辅助
第1章软件工程1.1软件工程概述1.2软件定义阶段1.3需求分析1.4系统设计1.5详细设计1.6编码1.7软件测试1.8软件维护1.1软件工程概述一、软件的特点1.存在形式:以程序或文档的形式存放于内存、磁盘、光盘等存储介质中。2.生产成本:主要耗费在软件开发过程中,生产过程复杂、耗费时间长,成本昂贵。3.使用特点:无变质、磨损问题。4.生产方法:主要依靠人工开发。1.1.1软件危机二、软件发展的三个阶段1.程序设计阶段(1946年~1956年)(1)生产方式:个体手工生产。(2)使用工具:机器语言、汇编语言。(3)开发特点:过多追求时间、空间效率和编程技巧,可读性差。2.程序系统阶段(1956年~1968年)(1)生产方式:小集团合作生产。(2)生产工具:高级语言。(3)开发特点:依靠个人技巧,开发人员素质较差、开发技术落后。软件发展的三个阶段3.软件工程阶段(1968年至今)(1)生产方式:工程化生产。(2)生产工具:面向对象语言、高级语言,各种开发环境及工具。(3)开发特点:网络化、分布式处理。一系列问题相继出现三、软件危机1.软件危机的产生来源:计算机软件的规模越来越大,结构越来越复杂。定义:指在软件开发和维护过程中所遇到的一系列严重问题,几乎所有的软件都不同程度地具有这些问题。(1968年,北大西洋公约组织计算机科学家在德国召开国际会议,正式提出“软件危机”这个名词)软件开发人员随心所欲地进行编程,缺乏系统的、科学的开发方法的指导。轻视软件维护工作,致使维护费用占软件总费用的55%到70%。许多软件错误在运行之前难以发现,且软件规模庞大需要多人合作完成。软件危机产生的主要原因软件危机的表现难以正确估计软件开发成本和进度;难以确保软件系统的功能和性能最终能满足用户的要求,常常开发出的软件不能满足用户的实际要求;难以确保软件的质量尤其是可靠性,软件质量往往存在问题;软件没有配置适当的文档、这常常使团队开发和软件维护很困难,因此软件可维护性差;软件发展的速度跟不上硬件的发展,软件在计算机系统中所占的成本逐年上升,生产效率却无法满足市场的需求。1.1.2软件工程产生意义指导软件开发和维护工作,尽量避免软件危机带来的严重后果。目标以尽量小的代价和尽量少的时间开发出较高性能的合格软件。内容采用工程的概念、原理、技术和方法开发和维护软件,将经过证明的正确的管理技术和当前最好的技术方法结合起来用于帮助提高软件的生产效率及质量,缩短软件的开发周期。(1)降低软件费用。(2)提高软件的质量。(3)提高软件的可维护性。(4)提高软件的生产效率。(5)提高软件的可重用性。软件工程中研究的主要问题概念:软件生命周期模型是指从提出软件开发要求开始直至软件报废的整个过程。该方法是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,它同时又为下一个阶段做准备,是下一个阶段开始的前提。这样可以将复杂的开发工作通过有限的确定步骤,逐步从抽象的逻辑概念转化为具体的物理实现。1.1.3软件生命周期法(瀑布模型)问题定义软件定义可行性研究需求分析软件开发概要设计软件设计软件生命详细设计编码与单元测试软件实现综合测试软件维护淘汰阶段关键问题结束标准问题定义问题是什么?关于规模和目标的报告书系统的高层逻辑模型:可行性研究有可行的解吗?数据流图成本效益分析系统的逻辑模型需求分析系统必须做什么数据流图数据字典算法描述可能的解法:概括地说,应该如系统流程图总体设计何解决这个问题?成本/效益分析推荐的系统结构层次图或结构图详细设计怎样具体地实现这编码规格说明:个系统HIPO图或PDL图编码和单元测试正确的程序模块源程序清单;单元测试方案和结果综合测试符合要求的软件综合测试方案的结果;完整一致的软件配置维护系统能长期满意地软件问题报告单运行软件修改报告单1.每个阶段都必须提供完整的文档,以作为该阶段工作结束的标志。2.每个阶段结束前都应对所完成的文档进行评审,以便尽早发现问题,改正错误。每个阶段的文档既是前一阶段的工作总结,又是下一阶段工作开始的依据。只有经过认真评审的文档,才能集思广益,保证该阶段工作的正确性。瀑布模型必须坚持以下原则1.2软件定义阶段主要任务:确定系统要解决的关键问题。实现方法:1.用户提出项目性质,工程目标和规模等初步要求。2.系统分析员对用户深入调查,对其进行补充完善。3.经过会议评审方式沟通双方对此项目的技术用语、性质、功能、性能、限制和约束等。需要交付的文档:项目任务书。1.2.1问题定义1.2.2可行性研究主要任务用最小的代价在尽可能短的时间内确定问题是否能够解决。实现方法:1.复查项目任务书,消除一切含混不清的问题。2.搞清楚现有系统的功能及缺陷。3.导出新系统的高层逻辑模型数据流图和数据字典是描述数据系统逻辑模型的有力工具。可行性研究4.重新定义问题5.导出和评价供选择的解法6.推荐行动方案,并说明理由。7.根据所选中的方案,分析员草拟开发计划需要书写的文档:软件可行性研究报告。1.3需求分析1.3.1需求分析的方法步骤1.进一步准确定义对系统包括功能要求、性能要求、运行要求及以后的修改、维护及扩充要求在内的综合要求;2.分析对系统的数据规范化,数据完整性约束等要求;3.修改和完善系统的逻辑模型;4.修改开发计划;需求分析的方法步骤实现方法:1.沿数据流图回溯看所有的输出能否从当前的输入及运算数据中得到。2.用户复审请用户复审前一步的工作结果,看是否准确、全面。3.细化数据流图反复进行前两步,把数据流图细化到最底层。4.修正开发计划随着工作的深入、分析员能制定出更详细、准确的开发计划。5.审查召开评审会议对需求分析阶段的工作成果进行正式的审查。1.4系统设计主要任务:把系统分析阶段确定的逻辑模型向物理模型(在计算机上的实现方法)转化。系统设计阶段分为:概要设计和详细设计两个阶段。概要设计的任务1.将系统划分成模块(最重要的任务);2.决定每个模块的功能;3.决定模块的调用关系;4.决定模块间的接口;5.进行数据库逻辑设计;模块的划分模块独立性的两个度量标准:耦合性和内聚性。耦合性:表示模块间相互关联的程度。模块间的耦合性的强弱取决于模块间接口的复杂性,接口越简单,耦合性越低,模块独立性越好。反之,模块独立性则差。常见的四种耦合:1.数据耦合2.控制耦合3.公共耦合4.内容耦合内聚性•内聚性:是指模块内部各成分之间联系的强弱。内聚性越好,模块内部各成分的联系强度越大,会增加可理解性、可维护性和可靠性。内聚可分为低、中、高三类:软件设计追求高内聚、低耦合内聚性•内聚性:是指模块内部各成分之间联系的强弱。内聚性越好,模块内部各成分的联系强度越大,会增加可理解性、可维护性和可靠性。内聚可分为低、中、高三类:软件设计追求高内聚、低耦合描述系统结构采用的图形工具工资档案管理数据修改数据查询数据统计打印工资表录入更新删除按姓名查询组合查询按性别统计按年龄统计层次图2.HIPO图结构图消扣扣款单费款单单合计消费单扣款计算获得消费单计算扣款合计个人扣款1.4.3模块设计的准则1.改进软件结构提高模块独立性。通过模块分解与合并,力求降低耦合提高内聚。2.模块规模应适中,一个利于理解的模块通常不要超过60行。3.深度、宽度、扇入和扇出都应适当。深度表示软件结构中控制的层数宽度是软件结构内同一个层次上的模块个数的最大值。扇出数是一个模块直接调用的模块数目。扇入数是一个模块被多少个模块调用。好的系统中模块的平均扇出数通常是3或4(扇出的上限通常是5—9)。好的软件结构中通常顶层扇出比较高,中层扇出较少,底层模块有较高的扇入。模块设计的准则4.模块的作用域应在控制域之内。模块的作用域为模块内一个受判定影响的所有模块的集合。模块控制域是这个模块本身以及所有直接或间接从属于他的模块的集合。5.力争降低模块接口的复杂度。6.设计单入口和单出口的模块。这是结构化程序设计的基本要求。7.模块的功能应能预测。既对给定的输入应产生相同的输出。1.5详细设计•主要任务确定每个模块的具体实现算法。•经常采用的方法:结构化程序设计方法(简称SP方法)结构化程序设计是一种程序设计的技术,它采用自顶向下逐步求精的设计方法和单入口、单出口的控制结构。结构化程序设计的优点:(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,可提高软件开发的成功率和生产率。(2)它是先全局后局部,先整体后细节,先抽象后具体的逐步求精过程。expexp(a)顺序结构(b)选择结构(c)循环结构优点:对控制流程的描述很直观,便于初学者学习掌握。缺点:①使程序员过早地考虑程序的控制流程,而忽略程序的全局结构;②程序流程图中的箭头代表控制流,使程序员不受约束地随意转移控制;③程序流程图难以表示数据结构;exp常用的工具------流程图(2)N—S图S1S2S3CFTS1S2CASEC值1值2……………值nWHILECSWHILECSA(a)顺序结构(b)if…then…else…(c)CASE型多分支(d)do…while(e)do…until(f)调用子程序ACASE1CASE2CASEnN—S图优点为:①程序结构都用方框表示,无论并列或嵌套,程序结构皆清晰可见,功能域明确;②不能作任意的功能控制;③易于确定局部或全局数据的作用域;④既可表示嵌套,也可表示模块的层次。PAD图只能描述结构化程序所允许的几种标准结构,它是用二维树形结构的图来表示程序控制流程的,克服了传统流程图不能清晰表示程序结构的缺点,也不像N—S图那样把全部程序约束在一个方框内。(3)PAD(ProblemAnalysisDiagram)图①用PAD符号设计的程序必定是结构化程序。②PAD图中最左的竖线是程序的主线,即第一层结构。随着程序层次的增加而向右延伸。③PAD图易读、易懂。④将PAD图转换成高级语言源程序十分容易。⑤PAD图支持自顶向下逐步求精的方法,它既可用于表示程序逻辑,也可用于描述数据结构。PAD图的优点能清晰地表示复杂的条件组合与应做的操作之间的对应关系。(4)判定表和判定表(6)伪代码和PDL(ProgramDesignLanguage)语言伪代码属于文字形式表达工具。伪代码形式上与代码相似,用于描述软件设计,但不能在计算机上执行。用伪代码描述,其工作量比画图小,且易于转换成真正的代码。例有下列算法:①令“最大数”=“数组的第一个元素”。②从第二个元素至最末一个元素做:若“新元素”“最大数”,则“最大数”=“新元素”。用PDL语言可写成:MAX=A[1]DOFORI=2TONIFMAXA[I]THENMAX=A[I]ENDIFENDDOPRINTMAX1.6编码任务:把设计阶段所产生的设计结果转换程序。注意:1.选择一种良好的开发工具根据问题的性质、规模、费用、喜好等选择一种较为合理的实现工具。2.程序员的编程风格对程序的可靠性及可维护性都有非常重要的影响。1.6.3程序风格1.内部文档(1)标识符:要尽量做到“见名知义”。(2)注释:加入适当的注释。一些正规的程序中注释行占整个程序的三分之一到一半、甚至更多。(3)书写格式:不同的程序单元应用空行隔开。不要在一行上书写多条语句。对于嵌套的循环或分支结构使用缩排格式。良好的程序设计风格应注意的问题2.数据说明应对程序中要使用的数据加以说明,并规定变量按类型说明的次序。3.语句程序中的语句应写得简明、直截了当。避免使用华而不实的程序设计技巧。4.效率效率主要依靠好的设计和优秀的算法来达到、而不能指望从语句的改进方面来获得很大提高。良好的程序设计风格应注意的问题5.输入/输出输入数据的格式力求简单、并应有完备的检错和恢复措施。输入格式要尽可能统一;不以计数的办法,而以文件结尾或其他特定标志来结束输入;输入/输出最好有提示;输出格式美观、清晰、易理解;良好的程序设计风格应注意的问题1.7软件测试一.软件测试的定义使用人工或自动手段来运行或测定
本文标题:计算机软件基础二-5软件工程基础-辅助
链接地址:https://www.777doc.com/doc-3610471 .html