版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学导论第七章软件工程本章目标(1)了解为什么要学习软件工程;(2)了解软件工程的发展史;(3)了解软件开发模型;(4)掌握软件开发方法和开发过程;(5)了解软件质量和软件维护;(6)熟悉软件项目的管理,初步建立工程化意识;(7)理解软件开发规范与职业道德修养。第七章软件工程7.1软件与软件危机7.2软件工程概念及软件生命周期7.3软件开发过程7.4软件测试与维护7.5软件成本估算7.6软件开发规范与职业道德修养第7章软件工程软件工程”一词是由北大西洋公约组织(NorthAtlanticTreatyOrganization,NATO)的计算机科学家在1968年联邦德国召开的国际会议上首次提出来的。7.1软件及软件危机软件危机的定义软件危机是指落后的软件生产方式无法满足迅速增长的软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机主要包含两方面的问题一是如何开发软件以满足日益增长的软件需求;二是如何维护数量不断增长的已有软件。7.1软件及软件危机软件危机的典型表现(1)已完成的软件系统时常出现功能、性能无法满足需求或出现故障等现象。(2)软件产品的可靠性和质量安全等方面时常达不到标准。软件产品质量难以保证,甚至在开发过程中就出现问题。(3)软件开发管理能力差,对成本和进度的估计时常不准确。(4)软件系统时常出现无法维护、升级或更新等现象。(5)软件开发没有标准、完整、统一、规范的文档资料。计算机软件不应只有程序,还应有一整套规范的文档资料和售后服务。(6)软件开发效率低,无法满足计算机应用迅速发展与提高的实际需要。(7)软件研发成本在计算机系统总成本中所占的比例逐年上升。7.1软件及软件危机软件危机的主要原因(1)软件开发规模逐渐变大,软件复杂度和软件的需求量不断增加。(2)没有按照工程化方式运作,开发过程没有统一的标准和准则及规范的指导方法。(3)软件需求分析与设计考虑不周,软件开发、维护和管理不到位。(4)开发人员与用户或开发人员之间的交流沟通不够,文档资料不完备。(5)软件测试、调试不规范、不细致,提交的软件质量不达标。(6)忽视软件运行过程中的正常维护和管理工作。消除软件危机的主要措施(1)技术和方法。(2)开发工具。(3)组织管理。7.2软件工程概述及软件生命周期1.软件工程的定义软件工程是指导计算机软件开发和维护的一门工程学科,是计算机学科中一个重要分支,强调采用工程化的思想、原理、技术和方法来开发与维护软件,把相关的管理方法和先进的开发技术结合起来,解决软件生产中的问题。2.软件工程的主要目标(1)合理预算开发成本,减少开发费用。(2)实现预期的软件功能,达到较好的软件性能,满足用户的需求。(3)提高所开发软件的可维护性,降低维护费用。(4)提高软件开发生产率,及时交付使用。。3.软件工程的发展(1)程序设计阶段(1946—1956年)在这一时期,软件的生产主要是个体手工劳动的生产方式。(2)程序系统阶段(1956—1968年)这个时期,语言工具是高级语言。在程序设计中开始提出结构化方法,采用“生产作坊方式”开发软件。(3)软件工程阶段(1968年至今)这个阶段的主要任务是为了克服软件危机,适应软件发展的需要,而采用“工程化的生产”方式。软件的生命周期软件生存周期可划分成四个活动时期:软件分析时期、软件设计时期、编码与测试时期及软件运行与维护时期。7.3软件开发过程软件开发过程指按照项目的进度、成本和质量限制,开发和维护满足用户要求的软件所必需的一组有序的软件开发活动集合。主要包括可行性研究、需求分析、总体设计、详细设计、编码、测试和维护等过程。7.3软件开发过程1.可行性分析开发一个基于计算机的系统通常都受到资源(人力、财力、设备等)和时间上的限制,可行性分析主要从经济、技术、操作和法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。1.经济可行性2.技术可行性分析3.法律可行性分析7.3软件开发过程2.需求分析软件需求分析是软件开发期的第一个阶段,基本任务是准确地回答“系统必须做什么?”这个问题。在实际工作中,通常把软件需求细化为三个层次:功能需求性能需求领域需求7.3软件开发过程2.需求分析7.3软件开发过程需求分析的常用方法(1)功能分解方法(2)结构化分析(StructuredAnalysis,SA)方法(3)信息建模方法。(4)面向对象方法。7.3软件开发过程需求分析的描述工具结构化分析(StructuredAnalysis简称SA)是面向数据流的需求分析方法,是20世纪70年代后期由Yourdon,Constantine及DeMarco等人提出和发展,并得到广泛的应用。结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的称为结构化说明书的目标文档。7.3软件开发过程需求分析的描述工具(1)数据流图数据流图(DFD)是一种图形化技术,用于表示系统逻辑模型,它以直观的图形清晰地描述了系统数据的流动和处理过程。是分析员与用户之间极好的通信工具。7.3软件开发过程需求分析的描述工具(2)数据字典
数据字典(DataDictionary,DD)是软件需求分析阶段的另一个有力工具。数据流图描述了系统的分解过程,直观而且形象,但是没有对图中各个成分进行准确并且完整的定义:数据字典是为数据流图中的每一个数据流、文件、加工以及组成数据流或文件的数据项做出说明。7.3软件开发过程需求分析的描述工具数据字典包含四类条目:数据流、数据存储、数据项和数据加工。数据字典的使用符号:=:表示被定义为或等价于或由……组成。
+:表示“与”,用来连接两个数据元素;[…|…]:表示“或”。{…}:表示“重复”,对{…}中内容可以重复使用。m{…|…}n或者{…}或者{…}:表示{…}中内容至少出现m次,最多出现n次。(…):表示“可选”,对(…)中的内容可选、可不选;7.3软件开发过程需求分析的描述工具(3)结构化语言
结构化语言是一种介于自然语言和形式化语言之间的半形式化语言。它是在自然语言的基础上加入了一定的限制,通过使用有限的词汇和有限的语句来严格地描述加工逻辑。7.3软件开发过程需求分析的描述工具结构化语言中的三种基本结构的描述方法是:(1)顺序结构,由自然语言中的简单祈使语句序列构成。(2)选择结构,通常采用IF…THEN…EISE…ENDIF结构和CASE…OF…结构。(3)循环结构,通常采用DOWHILE…ENDD0结构和REPEAT…UNTIL结构。7.3软件开发过程总体设计总体设计又称为概要设计,经过需求分析阶段的工作,系统必须做什么已经清楚了,总体设计阶段就是决定怎么做的时候了。总体设计的基本目的就是回答“概括的话,系统该如何实现?”这个问题。这个阶段主要内容是设计系统的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系7.3软件开发过程总体设计的内容(1)设想供选择的方案(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)设计数据库(7)制定测试计划(8)书写文档(9)审查和复审7.3软件开发过程总体设计原理在进行总体设计的过程中,应该遵循守模块化、抽象化、逐步求精、信息隐藏和局部化和模块独门性这五方面的原理。7.3软件开发过程总体设计原理一般使用两个定性标准来衡量模块的独立程度:耦合和内聚。耦合用于衡量不同模块彼此间互相依赖的紧密程度;内聚用于衡量一个模块内部各个元素彼此结合的紧密程度。7.3软件开发过程总体设计原理耦合耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。在软件设计中应该追求实现尽可能松散耦合的系统。7.3软件开发过程总体设计原理内聚内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。内聚按紧密程度(强度)从低到高排列的次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。7.3软件开发过程4.详细设计总体设计是完成软件整体结构的设计,详细设计是对总体设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。详细设计工具用来描述每个模块执行的过程,可以分为图形、表格和语言三类。(1)图形工具:包括传统的程序流程图、盒图和问题分析图(PAD图)等。(2)表格工具:包括判定表、判定树等。
(3)语言工具:过程设计语言(PDL)等。7.3软件开发过程程序流程图程序流程图又称为程序框图,它是一种最古老、应用最广泛,且最有争议的描述详细设计的工具。它易学、表达算法直观。缺点是不够规范,特别是使用箭头使质量受到很大影响,因此必须加以限制,使其成为规范的详细设计工具。7.3软件开发过程程序流程图7.3软件开发过程程序流程图的缺点:(1)可以随心所欲地画控制流程线的方向,容易产生非结构化的程序结构。(2)程序流程图不能反映逐步求精的过程,往往反映的是最后的结果。(3)不易表示数据结构。7.3软件开发过程盒图(N-S图)为了克服流程图的缺陷,1973年,由Nassi和Shneiderman提出来,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这就是N-S图。它体现了结构化设计的精神。是目前过程设计中广泛使用的一种图形。7.3软件开发过程问题分析图(PAD图)PAD是问题分析图(problemanalysisdiagram)的英文缩写,由日立公司中央研究所在1973年研究开发的。它使用二维树形结构图来描述程序的逻辑,将这种图翻译成程序代码比较容易。是一种十分有前途的表达方法。PAD仅具有顺序、选择、循环三类基本成分,其中选择和循环又有几种形式。7.3软件开发过程问题分析图(PAD图)7.3软件开发过程过程设计语言(PDL)PDL是一种用于描述功能模块的算法设计和加工细节的语言。PDL是一种“混杂式语言”,语法规则分为“外语法”和“内语法”。其外层语法是确定的,而内层语法则故意不确定。外层语法描述控制结构和数据结构,所以是确定的,而内层语法可使用自然语言的词汇描述具体操作。7.3软件开发过程过程设计语言(PDL)例如,在PDL描述ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);7.3软件开发过程编码实现经过软件的总体设计和详细设计后,便得到了软件系统的结构和每个模块的详细过程描述,接着便进入了软件的制作阶段,或者称编码阶段,也就是通常人们惯称的程序设计阶段。7.3软件开发过程编码实现程序设计语言选择的理想标准主要有以下几点。(1)所选用的高级语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构。(2)语言特点应该使编译程序能够尽可能多地发现程序中的错误。(3)选用的高级语言应该有良好的独立编译机制。7.4软件测试与维护软件测试定义软件测试是指使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验软件是否满足规定的需求或弄清预期结果与实际结果之间的差别。7.4软件测试与维护软件测试的原则(1)测试用例既要有输入数据,又要有对应的输出结果。(2)测试用例不仅要选用合理的输入数据,还要选用不合理的输入数据。(3)除了要检查程序是否做了它应该做的工作,还要检查程序是否做了它不应该做的工作。(4)应该远在测试开始之前就制订测试计划。(5)测试计划、测试用例、测试报告必须作为文档长期保存。(6)Pareto原理说明,测试发现的错误中80%可能是由程序中20%的模块造成的,即错误出现“群集性”现象。(7)为了达到最佳的测试效果,应该避免让程序员测试自己的程序。7.4软件测试与维护软件测试的策略和方法软件测试的方法一般可分为动态测试和静态测试。动态测试根据测试用例的设计方法不同又可分为黑盒测试和白盒测试两类。(1)静态测试与动态测试。
①人工测试
②计算机辅助静态分析7.4软件测试与维护软件测试的策略和方法(1)黑盒测试和白盒测试。通过黑盒测试主要发现以下错误。①是否有不正确或遗漏了的功能。②在接口上,能否正确地接收输入数据,能否产生正确的输出信息。③访问外部信息是否有错。④性能上是否满足要求。⑤界面是否有错,是否美观、友好。7.4软件测试与维护软件测试的策略和方法(1)黑盒测试和白盒测试。白盒测试与黑盒测试不同,在进行白盒测试时,测试人员将程序视为一个透明的盒子,测试人员需要了解程序的内部结构和处理过程,以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对程序中的所有逻辑路径进行测试,并检验内部控制结构是否有错,确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京市浦口区2027届四年级数学第一学期期末综合测试模拟试题含解析
- 2026年株洲市石峰区街道办人员招聘笔试备考试题及答案详解
- 2026年安徽省亳州市中小学教师招聘考试模拟试题及答案详解
- 2026年浙江省丽水市街道办人员招聘考试参考题库及答案详解
- 2026年专用设备制造业专利布局分析
- 2026年泰州市高港区中小学教师招聘笔试备考试题及答案详解
- 2025年山东省临沂市街道办人员招聘考试试题及答案详解
- 2025年四川省成都市中小学教师招聘考试试题及答案详解
- 2026年焦作市中站区街道办人员招聘考试参考试题及答案详解
- 2025年湛江市坡头区中小学教师招聘考试试题及答案详解
- 2025-2026学年手绘珠宝设计线上教学
- 2026年北京市中考数学试卷真题(含官方答案)
- 项目部员工宿舍管理制度
- 建设工程监理员培训课件
- 《疥疮的防治及治疗》课件
- 护理人员中医技术使用手册
- 2024年宁夏中考语文真题
- 白内障护理查房模板
- 齿轮压缩机端面齿的参数设计及制造方法
- 发运工作总结
- 遵义市基础教育教学常规管理督导评估细则中学
评论
0/150
提交评论