软件工程导论(第五版)ppt课件.ppt
《软件工程导论(第五版)ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程导论(第五版)ppt课件.ppt(705页珍藏版)》请在三一办公上搜索。
1、软件工程,( Software Engineering ),信息学院 信息工程系 杨振刚,第1章:软件工程学概述,1.1 软件危机 60年代中期以前:通用硬件相当普遍,软件却是为某个具体的应用而编写的。 60年代中到70年代中:软件作坊。,软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题),1.1.1 软件危机的介绍,1)对软件开发成本和进度的估计常常很不准确;2)用户对完成的软件系统不满意的现象经常发生;3)软件产品的质量往往靠不住;,软件危机的典型表现:,4)软件常常是不可维护的;5)软件通常没有适当的文档资料;6)软件成本在计算机系统总成
2、本中所占的比例逐年上升;7)软件开发生产率提高的速度跟不上计算机应用的发展趋势。,1.1.2 产生软件危机的原因,1)软件本身特点造成;2)软件开发与维护的方法不正确。,主要表现: (a)忽视软件需求分析; (b)认为软件开发就是写程序并使之运行; (c)轻视软件维护;,在软件开发的不同阶段进行修改需要付出的代价很不相同:,1)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法;2)开发和使用更好的软件工具;3)良好的组织管理措施。,1.1.3 解决软件危机的途径,为了解决软件危机产生的问题,软件工程与方法学逐渐形成,然后出现了两个相互相承又各有侧重的学科: 1)
3、软件工程学:主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门交叉学科。 2)程序设计方法学:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的学科。,1.2 软件工程,1.2.1 软件工程的介绍,1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。,1993年IEEE:软件工程是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程;(2)研究(1)中提到的途径。,1. 软件工程关注于大型程序的构造; 2. 软件工程的中心课题是控制复杂性; 3. 软件经常变化; 4. 开发软件的效率非常重要
4、; 5. 和谐地合作是软件开发的关键; 6. 软件必须有效地支持它的用户; 7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。,软件工程的本质特性:,1.2.2 软件工程的基本原理,1. 用分阶段的生命周期计划严格管理;2. 坚持进行阶段评审;3. 实行严格的产品控制;4. 采用现代程序设计技术;5. 结果能清楚地审查;6. 开发小组的人员应该少而精;7. 承认不断改进软件工程实践的必要性。,1.2.3 软件工程方法学 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology),也称为范型(Paradigm)。 软件工程方法学的3要
5、素:方法、工具和过程,1. 传统方法学 也称为生命周期方法学或结构化范型。 结构化方法(Structure Method)有: 1)结构化设计方法(SD); 2)结构化分析方法(SA); 3)结构化分析与设计技术(SADT) 4)JACKSON方法 5)WARNIER方法,2. 面向对象方法学 把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。 面向对象的方法 =对象(属性与服务的封装) +分类 +继承 +通过消息的通讯,1)适用于实时事物处理系统的有限状态机方法(FSM);2)适用于并发软件系统的PETRI网方法;3)以数学概念和理论为基础的形式化方法,如 SDC
6、公司的形式化开发方法FDM: (Formal Development Methodology) IBM公司的维也纳开发方法VDM: (Vienna Development Method ),3. 其他开发方法,1.3 软件生命周期,软件生命周期:指软件从提出到最终被淘汰的这个存在期。,软件生命周期组成: 1)软件定义; A.问题定义 B.可行性研究 C.需求分析 2)软件开发; D.总体设计 E.详细设计 F.编码和单元测试 G.综合测试 3)运行维护。,1.问题定义; 2.可行性研究; 3.需求分析; 4.总体设计(概要设计); 5.详细设计; 6.编码与单元测试; 7.综合测试; 8.维护
7、。,软件生命周期各个阶段:,1.4 软件过程,软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程(ISO9000):使用资源将输入转化为输出的活动所构成的系统。输入:如软件需求输出:如软件产品,1.4.1 瀑布模型,1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点,优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证。,1.4.2 快速原型模型优点:不带反馈环,基本上是线性顺序进行。,1.4.3 增量模型,优点:能较短时间内提交可完成部分工作的产品;可以使用户有充裕的时间学习和适应新产品。,一
8、种风险更大的增量模型:,1.4.4 螺旋模型 可把它看作在每个阶段之前都增加风险分析的快速原型模型。,1.4.5 喷泉模型,典型的面向对象软件开发过程模型之一。,1.4.6 Rational 统一过程,1. RUP软件开发经验(1)迭代式开发(2)管理需求(3)使用基于构件的体系结构(4)可视化建模(5)贯穿于开发过程的软件质量验证(6)控制软件变更,1.4.7 敏捷过程与极限编程,1.敏捷过程 具有高效、快速响应变化的开发过程。(1)个体和交互胜过过程和工具;(2)可以工作的软件胜过面面俱到的文档;(3)客户合作胜过合同谈判;(4)响应变化胜过遵循计划。2.极限编程 敏捷过程中最著名的一种,
9、指把好的开发实践运用到极致,多应用于软件需求模糊的场合。,1.4.8 微软过程,1.微软过程准则2.微软软件生命周期(1)规划阶段(2)设计阶段(3)开发阶段(4)稳定阶段(5)发布阶段3.微软过程模型,问题定义就是要确定为用户建立什么样的软件系统,软件叫什么样的名称等等。“问题”是指软件最基本的问题,如: 软件的总体目标什么? 有什么用途? 为那些用户设计?,1.5 问题定义阶段,问题定义报告的内容包括: 1)软件项目标题; 2)软件目标; 3)软件用户对象; 4)软件规模。,问题定义是软件生命周期中时间最短的阶段,一般都比较简单,因此在实际开发中它是最容易被忽视的一个阶段。 这一阶段工作主
10、要由系统分析员来完成,系统分析员要尽可能从较高的角度概括软件所要做的工作,而不用写明问题的实现细节。,第2章:可行性研究,可行性研究就是要回答“所定义的问题有可行的解决办法吗?”。 可行性研究的目的是:用最小的代价在尽可能短的时间内确定问题是否有解,以及是否值得去解。,2.1 可行性研究的任务,可行性研究所需的时间取决于工程的规模,所需要的成本要占工程总成本的5%10%。,可行性研究的内容:1)技术可行性技术可行性要分析各种技术因素,例如: 使用现有的技术能否实现这个系统? 是否有胜任开发该项目的熟练技术人员? 能否按期得到开发该项目所需的软件、硬件资源?,2)经济可行性 对经济合理性进行评价
11、,所要考虑的问题是: 这个系统的经济效益能否超过它的开发成本? 这就需要对项目进行价格/利益分析,即“投入/产出”分析。 由于利益分析取决于软件系统的特点,因此在软件开发之前,很难对新系统产生的效益作出精确的定量描述,所以往往采用一些估算方法。,3)操作可行性 操作可行性评价系统运行后会引起的各方面变化,如:对组织机构管理模式、用户工作环境等产生的影响。,4)社会可行性 社会可行性主要讨论法律方面和使用方面的可行性。 例如,被开发软件的权利归属问题、软件所使用的技术是否会造成侵权等问题。,2.2 可行性研究的步骤,1)复查系统规模和目标;2)研究目前正在使用的系统;3)导出新系统的高层逻辑模型
12、(数据流图、数据字典);4)重新定义问题;,5)导出和评价供选择的解法(物理解决方案);6)推荐行动方案;7)草拟开发计划;8)书写文档提交审查。,2.2 可行性研究的步骤,2.3 系统流程图 (描绘物理系统的工具),2.3.1 符号,2.3.2 例子,2.4 数据流图(描绘数据在系统中流动的逻辑过程),2.4.1 符号,注意:“处理”可表示:单个程序、一系列程序、程序的一个模块、人工处理过程等等;“数据存储”可表示:一个文件、文件的一部分、数据库记录等等;数据流图忽略出错处理、打开文件、关闭文件。,2.4.2 绘制数据流图的例子,2.4.2 绘制数据流图的例子,仓库管理员,采购员,定货系统,
13、事务,定货报表,图2.5 定货系统的基本系统模型,2.4.2 绘制数据流图的例子,库存清单,仓库管理员,采购员,事务,定货报表,图2.6 定货系统的功能级数据流图,定货信息,定货信息,组成该例子的数据流图的元素,上述数据流图所描述的功能够详细了吗?,2.4.2 绘制数据流图的例子,1)为数据流(或数据存储)命名 A名字应该代表整个数据流(或数据存储)的内容; B不要使用空洞的、缺乏具体含义的名字(如“数据”、“输入”);,2.4.3 命名,C如果为某个数据流(或数据存储)起名字时遇到困难,则很可能是因为对数据流图的分解不恰当造成的,应该试试重新分解数据流图;,2)为处理命名 A通常先为数据流命
14、名,然后再为与之相关联的处理命名; B名字应该反映整个处理的功能; C应该尽量避免空洞笼统的动词做名字,如“处理”、“加工”;,D通常用一个动词命名,如果必须用两个动词才能描述整个处理的功能,则可能要把这个处理分解成两个处理更恰当; E如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的情况,应考虑重新分解。,通常,为“数据源点/终点”命名时,采用它们在问题域中习惯使用的名字(如“仓库管理员”、“采购员”)。,1)利用它作为交流信息的工具;2)作为软件分析和设计的工具。,2.4.4 数据流图的用途,2.4.4 数据流图的用途,图2.8 对应的物理实现硬件方案,2.4.4 数据流图的用途,
15、图2.9 对应的物理实现硬件方案,数据字典:对数据流图中包含的所有元素的定义的集合; 可行性研究阶段,数据流图与数据字典共同构成系统的逻辑模型。,2.5 数据字典,2.5.1 数据字典的内容数据字典应该对下列元素进行定义: 1)数据流; 2)数据元素(数据流分量); 3)数据存储; 4)处理。,1)数据元素字典定义其定义的基本内容有: A数据元素编号、名称及其含义; B数据类型和长度; C合理取值; D其他内容,如它与其它数据的逻辑关系等。,2.5.2 定义数据的方法,数据元素字典定义实例:,2)数据流字典定义其定义的基本内容有: A数据流编号及名称; B数据流来源; C数据流去处; D数据流
16、的组成; E流通量; F峰值。,数据流字典定义实例:,3)数据存储字典定义其定义的基本内容有: A数据存储编号及名称; B数据存储的组成; C其它要求。,4)数据处理字典定义其定义的基本内容有: A数据处理编号及名称; B简单描述; C输入/输出; D功能描述; E有关数据存储。,数据处理字典定义实例:,5)组成数据项的表示方法 = 表示“等价于”或“定义为” + 表示“与” 与 | 表示“或” 表示重复 ( ) 表示可选项 通讯录=通讯地址 通讯地址=姓名+邮编+省|直辖市|自治区+市|县+街道+门牌号+(电话),1. 作为分析阶段的重要工具;2. 数据元素的控制信息非常有用;3. 有助于开
17、发数据库。,2.5.3 数据字典的用途,实现数据字典: 1)程序处理; 2)卡片式人工书写;,2.5.4 数据字典的实现,2.6 成本/效益分析,1)代码行技术 软件成本 = 每行代码的平均成本估计的源代码总行数,2.6.1 成本估计,2)任务分解技术 软件开发项目分解为若干个相对独立的任务,分别估计每个单独任务的成本: 单独任务成本 = 任务所需人力估计值每人每月平均工资; 软件开发项目总成本估计 = 各个单独任务成本估计值之和。,常用的办法是按开发阶段划分任务,典型环境下各个开发阶段需要使用的人力百分比大致如下:,3)自动估计成本技术 采用自动估计成本的软件工具估计。,1)Putnam 模
18、型 1978年Putnam提出的,一种动态多变量模型:,软件开发成本估算的经验模型:,Ck为技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异,见下表:,2)COCOMO模型(constructive cost model) 这是由TRW公司开发,Boehm提出的结构化成本估算模型,是一种精确的、易于使用的成本估算方法。 基本COCOMO模型估算工作量和进度的公式如下: 工 作 量: MM = r(KDSI)c (人月) 开发时间: TDKV = a(MM)b (月) DSI:源指令条数,不包括注释,1KDSI = 1000DSI MM:开发工作量(以人月计),1MM = 19 人
19、日 = 152 人时 =1/12 人年 经验常数 r, c, a, b 取决于项目的总体类型,COCOMO模型中,考虑开发环境,软件开发项目的类型可以分为3种:1)组织型(organic) 相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(50000行),2)嵌入型(embedded) 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。 如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥
20、系统等。,3)半独立型(semidetached) 介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。,COCOMO模型按其详细程度可以分为三级:1)基本COCOMO模型 是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。,基本COCOMO模型通过统计63个历史项目的历史数据,得到如下计算公式:,2)中级COCOMO模型 在基本COCOMO模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。3)详细COCOMO模型 包括中级COCOMO模型的所有特性,但更进一步考虑了软件工程中每一步骤(如分析、设
21、计)的影响。,1)货币的时间价值 假设年利率为i,如果现在存入P元钱,则n年以后可以得到的钱数为: 反之,如果n年后能收入F元钱,那么这些钱现在的价值是:,2.6.2 成本/效益分析,例:修改一个已有的库存管理系统,估计需要5000元,系统修改后使用5年,每年可节省2500元。请进行成本/效益分析。,表1:将来的收入折算成现在值,2)投资回收期 第一、第二年回收:4225元 第三年用于回收投资要: ( 5000 - 4225 ) / 1779 = 0.44年 总的投资回收期 = 2.44年,3)纯收入 9011.94 - 5000 = 4011.94 (元),4)投资回收率 其中:P是现在的投
22、资额; Fi是第i年年底的效益(i=1,2,3,n); n是系统的使用寿命(一般假设n=5); j是投资回收率。上述修改系统的工程的投资回收率是41%-42%,第2章小结, 可行性分析报告 说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 项目开发计划 为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。,第3章:需求分析,3.1.1 确定对系统的综合要求 1功能需求 2性能需求 如:相应时间(速度)、主存容量、磁盘容量、安全性、等
23、。,3.1 需求分析的任务,3. 可靠性和可用性需求4. 出错处理需求 系统发现错误时采取的行动,主要在系统关键部分设置。5. 接口需求 用户接口、硬件接口、软件接口、通信接口、等。6. 约束 精度、工具和语言、设计约束、硬件约束、标准,等。7. 逆向需求 8. 将来可能提出的要求,3.1.3 导出系统的逻辑模型 包括完善的数据流图、实体联系图、状态转换图、数据字典、主要的处理算法(IPO图)等。,3.1.2 分析系统的数据要求 通过建立数据模型来分析,如数据字典、层次方框图、Warnier图,并将数据结构规范化。,3.1.4 修正系统开发计划 修订前期制定的开发进度计划、等。,3.2 与用户
24、沟通获取需求的方法,3.2.1 访谈,正式访谈:系统分析员提出事先准备好的问题。非正式访谈:提出一些用户可以自由回答的开放性问题,鼓励被访者说出自己的想法。需要访问大量人员时,利用调查表访问较佳。,3.2.2 面向数据流自顶向下求精,借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到各处理环节对应的功能。,例:,分析销售趋势,统计功能,3.2.3 简易的应用规格说明技术,面向团队的需求收集法: (用户与开发者配合)1)初步访谈;2)开发者和用户分别写出“产品需求”;3)开会讨论,各自展示需求列表;4)得出一致意见,为需求列表制定小型规格说明;5)根据会议成果,起草完整的软件需求
25、规格说明。,3.2.4 快速建立软件原型,快速建立能演示目标系统主要功能的程序。(1)第四代技术(2)可重用的软件构件(3)形式化规格说明和原型环境,3.3 分析建模与规格说明,3.3.1 分析建模 为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。1)实体联系图:建立数据模型,描述数据对象及数据对象之间的关系;2)数据流图:建立功能模型的基础;3)状态转换图:描绘系统的状态和状态间转换的方式。,3.3.2 软件需求规格说明,3.4 实体联系图,数据对象可以是外部实体、事物、行为、事件、角色、单位、地点、结构等。,3.4.1 数据对象,3.4.2 属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 第五 ppt 课件

链接地址:https://www.31ppt.com/p-1363722.html