-
- 素材大小:
- 3.73 MB
- 素材授权:
- 免费下载
- 素材格式:
- .ppt
- 素材上传:
- ppt
- 上传时间:
- 2018-05-10
- 素材编号:
- 110134
- 素材类别:
- 学校PPT
-
素材预览
这是一个关于软件工程导论ppt模板,主要介绍软件工程学概述可行性研究需求分析形式化说明技术、总体设计。软件工程导论 Software Engineering 教师:寻杨济宁学院计算机科学系09级总 目 录第1章 软件工程学概述第2章 可行性研究第3章 需求分析第4章 形式化说明技术第5章 总体设计第6章 详细设计第7章 实现第8章 维护 第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结习题 软件的发展程序设计阶段 程序系统阶段 软件工程阶段 计算机软件发展的三个时期(见WORD文档)1.1.1 软件危机的介绍软件危机:指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。 软件危机包含两方面的问题:1、如何开发软件以满足对软件日益增长的需求;2、如何维护数量不断膨胀的已有软件。(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生,欢迎点击下载软件工程导论ppt模板哦。
软件工程导论ppt模板是由红软PPT免费下载网推荐的一款学校PPT类型的PowerPoint.
软件工程导论 Software Engineering 教师:寻杨济宁学院计算机科学系09级总 目 录第1章 软件工程学概述第2章 可行性研究第3章 需求分析第4章 形式化说明技术第5章 总体设计第6章 详细设计第7章 实现第8章 维护 第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结习题 软件的发展程序设计阶段 程序系统阶段 软件工程阶段 计算机软件发展的三个时期(见WORD文档) 1.1.1 软件危机的介绍软件危机:指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。 软件危机包含两方面的问题: 1、如何开发软件以满足对软件日益增长的需求; 2、如何维护数量不断膨胀的已有软件。 (1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。 1.1.2 产生软件危机的原因软件开发和维护过程中存在的严重问题, 1、与软件本身的特点有关; 2、和软件开发与维护的方法不正确有关。 软件的特点: 1、软件是逻辑的而不是物理的产品。 如、皇帝的新衣 2、软件是由开发或工程化而形成的,而不是传统意义上的制造产生的。意味着软件项目不能象硬件制造项目那样来管理。 软件的特点: 4、软件的成本相对昂贵。 5、软件本身是复杂的。 6、软件的开发尚未完全摆脱手工艺的方式。 1.1.3 消除软件危机的途径 解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。 1.2 软件工程 1.2.1 软件工程的介绍软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。 软件工程的两个典型定义: 1968年在第一届NATO会议上给出的定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。” 1993年IEEE给出的更全面的定义:“软件工程是: ①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。” 软件工程具有的本质特性: 1. 软件工程关注于大型程序的构造 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的人代替具有另一种文化背景的人 软件工程师的专家通常并不是他们开发的应用系统领域的专家。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。 1.2.2 软件工程的基本原理 著名的软件工程专家B.W.Boehm综合学者们的100多条意见并总结了TRW公司多年开发软件的经验,于1983年提出了软件工程的7条基本原理,它是确保软件产品质量和开发效率的原理的最小集合。 软件工程的7条基本原理:用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审第一、大部分错误是在编码之前造成的,根据Boehm等人的统计,设计错误占软件错误的63%,编码错误仅占37%;第二、错误发现与改正得越晚,所需付出的代价也越高。 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚地审查 6. 开发小组的人员应该少而精 当开发小组人员数为N时,可能的通信路径M有N(N-1)/2条,随着N的增大,通信开销急剧增加。 N=1,M=0 N=2,M=1 N=3,M=3 N=4,M=6 N=5,M=10 N=6,M=15… 注:2-8人左右为宜。 7. 承认不断改进软件工程实践的必要性 不仅要积极主动地采纳新的软件技术,而且要不断总结经验。 1.2.3 软件工程方法学 软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学 软件工程方法学3要素:方法、工具和过程。 方法:完成软件开发各项任务的技术方法,“怎样做?”;工具:提供的自动或半自动的软件工程支撑环境;过程:规定了完成各项任务的工作步骤。质量:基础。 目前使用得最广泛的软件工程方法学: 传统方法学 面向对象方法学 “软件工程”课程与其它软件专业课的区别: (1) 立足于系统的整体。 (2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践 软件开发全过程。 “软件工程”课程教学与实践的目标 转变对软件的认识: 上升 程序 系统 转变思维定式: 上升 程序员 系统工程师 工程化训练 1.3 软件生命周期 一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。(3页) [软件生命周期由软件定义、软件开发和运行维护3个时期组成。软件定义时期:划分成3个阶段,即问题定义、可行性研究和需求分析。开发时期:由4个阶段组成,总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。维护时期:主要任务是使软件持久地满足用户的需要。] 软件生命周期每个阶段的基本任务: 1. 问题定义 “要解决的问题是什么?” (why to do?) 2. 可行性研究 “对于上一个阶段所确定的问题 有行得通的解决办法吗?” 3. 需求分析(what to do?) “为了解决这个问题,目标系统必须做什么”。 4. 总体设计 “概括地说,应该怎样实现目标系统?” 5. 详细设计 “应该怎样具体地实现这个系统呢?” 6. 编码和单元测试写出正确的容易理解、容易维护的程序模块。 7. 综合测试通过各种类型的测试及调试使软件达到预定的要求。 8. 软件维护通过各种必要的维护活动使系统持久地满足用户的需要。 1.4 软件过程 软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 通常使用生命周期模型/生存期模型/过程模型/开发模型/工程范型简洁地描述软件过程。 边做边改模型(Build and Fix Model):许多产品都是用“边做边改”模型开发的。没有规格说明,没有经过设计。随着客户需要一次又一次不断地修改。开发费用高,维护困难。特点: 适用于小程序。 1.4.1 瀑布模型 (Waterfall Model) 1970年Winston Royce提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。开发成功的软件项目也有几十个。 图1.2 传统的瀑布模型 按照传统瀑布模型开发软件的特点: 1. 阶段间具有顺序性和依赖性 ①前一阶段的工作完成后,才能开始后一阶段的工作; ②前一阶段的输出文档是后一阶段的输入文档,前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。 2. 推迟实现的观点 对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。 3. 质量保证的观点(1) 每个阶段都必须完成规定的文档。(2) 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。 [传统的瀑布模型过于理想化了,实际的瀑布模型是带“反馈环”的,如图1.3(实线箭头表示开发过程,虚线箭头表示维护过程)。当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。] 图1.3 实际的瀑布模型 1.4.2原型模型(快速原型模型 Rapid Prototype Model)开发过程:首先听取用户意见和用户一起确定软件的目标,然后快速设计建造一个软件的模型或原型,以用户看得见的部分,如输入、输出、交互界面为主。建造后的软件原型交由用户测试并听取用户意见,明确先前不明确的东西,在原型的基础上,再次开发软件,然后再把它交给用户测试评估。如此反复,直到满足用户要求。 图1.4 快速原型模型 无反馈环的瀑布模型:前期已通过与用户交互得到验证, 无需后期的反馈 优点: 关注满足客户需求。缺点: 快速原型内部结构并不重要,重要的是迅速构建原型,并迅速修改,以反应客户需求。可能导致系统设计差,效率低,难于维护。一旦需求确定,往往快速原型将被抛弃。 1.4.3增量模型(递增模型) (Incremental Model) 思考:1、需求确定 2、象构造硬件那样组装一次完成 增量模型:先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。 系统的总体设计在初始子集设计阶段就应作出设想。 【图1.6 风险更大的增量模型】 优点: 开发早期反馈及时,易于维护。缺点: 需要非常好的体系结构,如果体系结构不够强壮可能导致设计差,效率低。 1.4.4 螺旋模型(Sprial Model) 思考:1、需求不确定 2、存在风险 特点: 优点: 由风险驱动,支持现有软件的重用。缺点: 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。适用范围: 只适用于大规模软件项目,特别是内部项目。 1.4.5 喷泉模型: 主要用于支持面向对象开发过程。系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。 1.4.5 喷泉模型: 主要用于支持面向对象开发过程。在整个开发过程中都使用统一的软件概念“对象”,很容易实现各个开发步骤的多次反复迭代。降低出错的可能性。 1.4.6 Rational统一过程(RUP):由Rational软件公司推出。 6条软件开发经验: 1、迭代式开发 2、管理需求 3、使用基于构件的体系结构 4、可视化建模 5、验证软件质量 6、控制软件变更 传统上,组织项目的方法是使其按顺序一次完成每个工作流程。 通常会导致在整个分析、设计和实施阶段隐藏下来的问题会在随后的实施阶段暴露出来,出现集成“堆积”;随着较长调试周期的开始,项目的进度会逐渐停顿下来。 迭代方法:多次执行各个开发工作流程,从而更好地理解需求、设计出强壮的构架、组建好开发组织并最终交付一系列渐趋完善的实施成果。类似小型的瀑布式项目。 迭代式方法的结果 :信息集随着各开发阶段逐步演进 适用范围:不同应用领域,或大或小的项目。 1.5 小结习题 程序是根据人的需求存在的。人的需求越来越多,程序随着人的需求一步一步地升级。故障并不是程序本身的问题,只能说明满足不了人们的需求,那它就要被淘汰,或者进行改进。如果程序早期设计的时候不合理,以后需要修改的时候会相当麻烦,甚至比重写一个程序更麻烦。 就像建一栋大楼,楼层越高,地基就要打得越深。 所以一定要及早发现并改正错误。 1-5 根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960) (字) 存储器的价格按下面公式描述的趋势逐年下降: P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,存储器价格下降的趋势为: P2=0.048×0.72Y-1974(美元/字) 上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 (3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。 1-7 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。 假设你被任命为一家软件公司的项目负责人,管理该公司被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并已对外公布。你打算采用哪种软件生命周期模型?为什么? 答: 首先从时间考虑,由于日期已经严格规定,所以应该着重考虑哪种模型有助于加快产品开发的进度,使用增量模型可以并行开发工作,能够加快开发进度。 由已知可以得出3点结论: 一、旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再建立一个原型系统; 二、该公司的软件工程师对该软件很熟悉,有丰富的经验,具有采用增量模型开发新版字处理软件所需要的技术水平; 三、该软件受到用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,利于今后的改进和扩充。 所以应该采用增量模型。 例:Windows2000开发人员结构: 变换模型:变换模型是一种基于形式化规格说明语言及程序变换的软件开发模型。 该模型只适合于软件的形式化开发方法;需要严格的数学理论和形式化技术支持;需要一整套开发环境(如程序变换工具、定理证明工具等)的支持。 基于第四代技术的模型:第四代语言 (4GL) 是在大型数据库管理系统的基础上发展起来的,是一种面向结果的非过程性语言。它独立于具体的处理机,有丰富的软件工具支持,能统一利用和管理各种数据资源并能适应不同水平用户的需要。 软件开发人员在定义软件需求,给出需求规格说明之后,4GT工具可将该需求规格说明自动转换为程序代码。大大减少了分析、设计、编码和测试的时间。
软件工程基础ppt:这是软件工程基础ppt,包括了软件需求分析与定义,可行性研究,可行性研究工作步骤,软件设计,软件测试,软件维护,软件维护的分类,软件过程管理,类图等内容,欢迎点击下载。
实用软件工程ppt:这是实用软件工程ppt,包括了软件工程概述,软件工程的概念,发展历程,软件工程的生命周期,建模的目的等内容,欢迎点击下载。
软件工程类答辩ppt:这是软件工程类答辩ppt,包括了系统介绍,研究背景,需求分析,系统设计,系统实现,总结,致谢等内容,欢迎点击下载。