《《软件工程概要》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程概要》PPT课件.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程概要软件工程概要数据库原理课程补充知识背景背景l软件危机软件开发周期大大超过规定日期软件开发成本严重超标软件质量难于保证l软件的发展大体上经历了三个阶段:程序设计阶段、软件阶段、软件工程阶段。程序设计时代程序设计时代名称名称程序程序生产方式生产方式个人个人质量质量取决于个人水平取决于个人水平设计对象设计对象以硬件为中心以硬件为中心开发工具开发工具无无维护维护无无设计方法设计方法无无以技巧为主以技巧为主软件时代软件时代软件软件项目组项目组取决于小集团水平取决于小集团水平硬件硬件/软件为中心软件为中心无系统工具,工具为个人无系统工具,工具为个人所有所有由开发者进行维护,在设由开发者进行维护
2、,在设计中不重视维护设计问题计中不重视维护设计问题自顶向下自顶向下有质量保证问题和持续性有质量保证问题和持续性问题问题软件工程时代软件工程时代软件产品软件产品软件组织软件组织软件生产管理软件生产管理以软件为中心以软件为中心软件生成器软件生成器设计与制作过程中均考虑维设计与制作过程中均考虑维护问题,维护成本占很大比护问题,维护成本占很大比重重结构化设计、原型设计结构化设计、原型设计 从程序设计到软件工程时代从程序设计到软件工程时代软件工程的定义软件工程的定义l IEEEIEEE【IEE93】定义:定义:“将系统化的、规将系统化的、规范的、可度量的方法应用于范的、可度量的方法应用于软件的开发、软件
3、的开发、运行和维护运行和维护的过程,即将工程化应用于软的过程,即将工程化应用于软件中。件中。”l软件工程是应用计算机科学、数学及管理软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统科学等原理开发软件的工程。它借鉴传统工程的原则、方法,工程的原则、方法,以提高质量,降低成以提高质量,降低成本本为目的。为目的。两种软件工程方法l l传统软件工程传统软件工程传统软件工程传统软件工程 软件分析软件分析软件分析软件分析 总体设计总体设计总体设计总体设计 详细设计详细设计详细设计详细设计 面向过程的编面向过程的编面向过程的编面向过程的编码码码码 测试测试测试测试 l l面向对象软件
4、工程面向对象软件工程面向对象软件工程面向对象软件工程 软件分析与对象抽取软件分析与对象抽取软件分析与对象抽取软件分析与对象抽取 对象详细设计对象详细设计对象详细设计对象详细设计 面向对象的面向对象的面向对象的面向对象的编码编码编码编码 测试测试测试测试 结构化分析模型的组成结构结构化分析模型的组成结构数据流图数据流图 (DFD)E-R图图状态状态变变迁图迁图(STD图图)加加工工说说明明控制说明控制说明数数据据对对象象说说 明明数据字典数据字典(DD)面向对象分面向对象分析模型的组成结构析模型的组成结构对象对象-关关系模型系模型类类/对对象象 模型模型对象对象-行为模型行为模型使用实例使用实例
5、(Use Case)(Use Case)操作、操作、属性、属性、协作者协作者q对象模型对象模型q动态模型动态模型q功能模型功能模型传统软件工程中的瀑布模型传统软件工程中的瀑布模型可行性研究与计划可行性研究与计划需求分析需求分析总体总体|详细设计详细设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段1.问题定义l关键问题:“要解决的问题是什么?”l主要结果:提出关于问题的性质、工程目标和规模的书面报告。l内容及步骤(一)系统任务的提出(二)初步调查(三)系统目标的确定2 可行性研究可行性研究l可行性、可行性研究的含义可行性的含义包括可能性、必要性。可行性分析的对
6、象是系统目标。评价总体方案(系统目标)的可能性、必要性。可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决,是否有必要去解决。可行性研究的内容可行性研究的内容1.技术上的可行性2.经济上的可行性3.操作可行性4.时间可行性5.组织与管理上可行性6.社会、政策允许的可行性3.需求分析的任务需求分析的任务l准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。l用 规范的形式准确地表达用户的需求。基本任务:准确地回答基本任务:准确地回答基本任务:准确地回答基本任务:准确地回答“系统必须做什么?系统必须做什么?系统必须做什么?系统必须做什么?”需求分析的具体任务需求分析的具
7、体任务1.1.确定对系统的综合需求确定对系统的综合需求确定对系统的综合需求确定对系统的综合需求:(1)系统功能要求(2)系统性能要求(3)运行要求(4)将来可能提出的要求2.2.分析系统的数据要求分析系统的数据要求分析系统的数据要求分析系统的数据要求:采用建立“概念模型”的方法,并辅助图形工具,如:层次方框图、Warnier图等。3.3.导出系统的逻辑模型导出系统的逻辑模型导出系统的逻辑模型导出系统的逻辑模型:数据流程图、数据字典、主要算法4.4.修正系统开发计划修正系统开发计划修正系统开发计划修正系统开发计划5.5.开发原型系统开发原型系统开发原型系统开发原型系统4.总体设计的过程总体设计的
8、过程设想供选择的方案 选取合理的方案 推荐最佳方案 功能分解 设计软件结构 数据库设计数据库设计 制定测试计划 书写文档 审查和复审5.详细设计的基本任务详细设计的基本任务l回答的关键问题:“怎样具体地实现这个系统”l主要任务是设计出程序的“蓝图”,供程序员日后根据这个蓝图编写出实际的程序代码。注意:设计程序的蓝图,不是具体地编写程序。设计程序主要采用结构化的程序设计方法。详细设计详细设计主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。详细设计具体
9、任务详细设计具体任务确定模块如何实现编写详细设计说明书制定单元测试计划详细设计评审6.编码编码l程序写作风格l程序设计方法论自顶向下的程序设计方法自底向上的程序设计方法l程序设计自动化l程序设计工具7.测试测试软件测试是软件测试是为了发现错误而执行程序为了发现错误而执行程序的过程。的过程。软件测试是根据软件开发阶段的规格说明软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计一批测试用和程序的内部结构而精心设计一批测试用例(即输入的数据及其预期的输出结果),例(即输入的数据及其预期的输出结果),并利用这些用例去运行程序,以发现程序并利用这些用例去运行程序,以发现程序错误的过程。错误的
10、过程。软件测试的目的l测试是程序的执行过程,目的在于发现错误;l一个好的测试用例在于能发现至今未发现的错误;l一个成功的测试是发现了至今未发现的错误的测试。测试设计中需要考虑的测试设计中需要考虑的22种测试类型种测试类型黑盒黑盒测试测试白盒测试白盒测试单元测试单元测试累计综合测试累计综合测试集成测试集成测试功能测试功能测试系统测试系统测试端到端测试端到端测试健全测试健全测试衰竭测试衰竭测试接受测试接受测试负载测试负载测试强迫测试强迫测试性能测试性能测试可用性测试可用性测试安装安装/卸载测试卸载测试恢复测试恢复测试兼容测试兼容测试安全测试安全测试比较测试比较测试Alpha测试测试Beta测试测试
11、8.运行维护运行维护l本质上是修改和压缩了的软件定义和开发过程本质上是修改和压缩了的软件定义和开发过程分析分析设计设计编码编码测试测试验收验收配置配置复审复审可靠性可靠性可移植性可移植性可用性可用性可理解性可理解性可修改性可修改性可测试性可测试性可理解性可理解性可修改性可修改性可移植性可移植性效率效率可靠性可靠性效率效率完整性完整性一致性一致性可理解性可理解性 几种典型的开发方法:几种典型的开发方法:模块化方法(模块化方法(modular method)结构化方法结构化方法面向数据结构方法面向数据结构方法面向对象方法面向对象方法软件开发方法结构程序设计结构程序设计l结构程序设计是一种设计程序的
12、技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。逐步求精的含义逐步求精的含义l总体设计阶段逐步求精的含义把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。l详细设计阶段逐步求精的含义把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。结构程序设计优越性结构程序设计优越性l自顶向下逐步求精的方法符合人类解决复杂问题自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。成功率和生产率。l用先全局后局部、先整体后细节、先抽象后具体用先全局后局部、先整体后细
13、节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。因此容易阅读和理解。l不使用不使用GO TO语句,仅使用单入口单出口的控语句,仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。况比较一致,易于阅读和理解。传统方法学的缺点传统方法学的缺点瀑布模型的缺点:僵化l瀑布模型要求:生命周期各阶段间遵守严格的瀑布模型要求:生命周期各阶段间遵守严格的顺序。顺序。l实际情况是:软件开发往往在反复实践中完成。实际情况是:软件开发往往在反复实践中完成。l瀑
14、布模型要求:预先定义并瀑布模型要求:预先定义并“冻结冻结”软件需求。软件需求。l实际情况是:某些系统的需求的一个逐渐明确实际情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能的过程,且预先定义的需求到软件完成时可能已经过时。已经过时。结构化技术的缺点(SA-SD-SP)l本质上是功能分解,以实现功能的过程为中心。本质上是功能分解,以实现功能的过程为中心。而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。l系统有明确的边界定义系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。l数据
15、与操作分开处理数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差.软件工程的新途径之一:快速原型法适用于用户驱动的系统(即需求模糊或随时间变化的系统)适用于用户驱动的系统(即需求模糊或随时间变化的系统)建造建造/修改修改 原型原型用户测试用户测试运行原型运行原型 听取用听取用 户意见户意见传统方法和面向对象方法的比较传统方法和面向对象方法的比较传统方法传统方法传统方法传统方法系统是过程的集合系统是过程的集合系统是过程的集合系统是过程的集合过程与数据实体交互过程与数据实体交互过程与数据实体交互过程与数据实体交互过程接受输入并产生输出过程接受输入并产生输
16、出过程接受输入并产生输出过程接受输入并产生输出面向对象方法面向对象方法面向对象方法面向对象方法系统是交互对象的集合系统是交互对象的集合系统是交互对象的集合系统是交互对象的集合对象与人或其它对象交互对象与人或其它对象交互对象与人或其它对象交互对象与人或其它对象交互对象发送与响应消息对象发送与响应消息对象发送与响应消息对象发送与响应消息传统方法数据与过程是分离的传统方法数据与过程是分离的过程过程1 1输入输入输出输出过程过程2 2过程过程3 3数据实体数据实体属于该对象属于该对象的数据的数据对象对象处理数据的方法处理数据的方法消息消息消息消息对象把数据和处理数据的方法封状成一个单元对象把数据和处理
17、数据的方法封状成一个单元为什么对面向对象方法感兴趣为什么对面向对象方法感兴趣?面向对象方法的主要优点:面向对象方法的主要优点:面向对象方法的主要优点:面向对象方法的主要优点:自然性:自然性:自然性:自然性:追求软件系统对现实系统的直接模拟,尽量追求软件系统对现实系统的直接模拟,尽量追求软件系统对现实系统的直接模拟,尽量追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空实现将现实世界中的事物直接映射到软件系统的解空实现将现实世界中的事物直接映射到软件系统的解空实现将现实世界中的事物直接映射到软件系统的解空间中。间中。间中。间中。软件复用软件复用软件复用软件复用
18、:可复用性(可重用性)可复用性(可重用性)可扩展性可扩展性可扩展性可扩展性可管理可管理可管理可管理性性性性面向对象分析面向对象分析l面向对象分析的关键:面向对象分析的关键:识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。l面向对象方法最基本的原则:面向对象方法最基本的原则:按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。面向对象建模面向对象建模l用面向对象方法开发软件,通常需要建立三种形式的模型:对象模型:描述系统数据结构动态模型:描述系统控制结构功能模型:描述系统功能一些具体工具介绍一些具体工具介绍A
19、 Room hierarchy based on an interior designers perspectiveRoomRoom with lightsRoom with windowsGarageBasementKitchenBathroomRoom withFurnitureLivingRoomFamilyRoomBedRoomDiningRoom层次方框图数据流程图数据流程图DFDl是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能l数据流程图的特性(1)抽象性:具体的组织机构、工作场所、物质流等等都去掉,仅剩下信息和数据存储、流动、使用以及加工的情
20、况。(2)概括性:它把系统对各种业务的处理过程联系起来考虑,形成一个总体,具有概括性。(3)数据流程图描述的主体是抽象出来的数据。(4)数据流程图具有层次性,一个系统将有许多层次的流程图。数据流程图的用途数据流程图的用途系统分析员用这种工具可以自顶向下分析系统信息流程可在图上画出需要计算机处理的部分根据数据存贮,进一步作数据分析,向数据库设计过渡根据数据流向,定出存取方式对应一个处理过程,用相应的语言、判定表等工具表达处理方法程序流程图、伪码、盒图、问题分析图程序流程图、伪码、盒图、问题分析图程序流程图、伪码、盒图、问题分析图程序流程图、伪码、盒图、问题分析图开始开始PGQ and P停止停止
21、FFdefkx2de123 While x3cx21cDo-While x323dek:PROCEDURE spell_check IS BEGIN Split document into single words Look up words in dictionary Display words which are not in dictionary Create a new dictionary END spell_check几种表示工具比较几种表示工具比较流程图伪码PDL盒图N-S问题分析图PAD结构化差中优优逻辑表达中良良良易转换代码良优良优直观性中中良良使用频率优优中中判定表判定表判
22、定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系,而其它的工具不易表示。一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。例子:例子:航空行李托运费的算法航空行李托运费的算法航空行李托运费的算法航空行李托运费的算法按规定:重量不超过按规定:重量不超过30公斤的行李可免费公斤的行李可免费托运。重量超过托运。重量超过30公斤时,对超运公斤时,对超运部分,头等舱国内乘客收部分,头等舱国内乘客收4元元/公斤;公斤;其它舱位国内乘客收其
23、它舱位国内乘客收6元元/公斤;外公斤;外国乘客收费为国内乘客的国乘客收费为国内乘客的2倍;残倍;残疾乘客的收费为正常乘客的疾乘客的收费为正常乘客的1/2。RulesRule numbers Condition rowsAction rows行李费行李费算法算法行李重量行李重量W 30行李重量行李重量W 30免费免费国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30)2(W-30)4残疾乘客残疾乘客正常乘客正常乘客(W-30)3(W-30)6头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30)4(W-30)8残疾乘客残疾乘客正常乘客正常乘客(W-30)6(W-30)12用判定树表示计算行李费的算法用判定树表示计算行李费的算法注:判定表与判定树并注:判定表与判定树并不适用于作为一种通用不适用于作为一种通用的设计工具,通常将之的设计工具,通常将之用于辅助测试用于辅助测试判定树表示法判定树表示法参考书籍参考书籍l张海藩,软件工程导论第三版,清华大学出版社l第七学期课程