软件工程导论SoftwareEngineering.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:30 大小:258KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

软件工程导论SoftwareEngineering.ppt

软件工程导论SoftwareEngineering.ppt

预览

免费试读已结束,剩余 20 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

软件工程软件工程课程设计软件发展历史软件发展历史Chap01软件工程学概述1.1.1软件危机的介绍软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题.软件危机包含两个问题:如何开发、如何维护软件危机典型表现:(1)对软件开发成本和进度的估计常常很不准确(2)用户对“已完成的“软件系统不满意的现象经常发生(3)软件产品的质量往往靠不住(4)软件常常是不可维护的(5)没有文档资料(6)软件成本在计算机系统总成本中所占比例逐年上升(7)软件开发生产率1.1.2产生软件危机的原因软件本身的特点、软件开发和维护的方法错误软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。管理和控制软件开发过程相当困难。运行中发现错误,很可能是遇到了一个在开发时期引入的,在测试阶段没能检测出来的故障。因此,软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。软件规模大,程序的复杂性将随着程序规模的增加而呈指数上升如何保证每个人完成的工作合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂困难的问题,不仅涉及许多技术问题,诸如分析方法、设计方法、形式说明方法、版本控制等,更重要的是必须有严格而科学的管理。与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期软件开发的个体化特点。错误认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。软件的生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的周期。问题定义可行性研究需求分析软件设计(总体设计和详细设计)编写程序(软件开发全部工作量的10%-20%)测试(软件开发全部工作量的40%-50%)Boehm指出:"软件是程序以及开发、使用和维护程序需要的所有文挡。“软件维护严重的问题是,在软件开发的不同阶段进行修改需要付出的代价是很不相同的,根据美国一些软件公司的统计资料,在后期引入一个变动比在早期引入相同变动所需付出的代价高2~3个数量级。轻视维护是-个最大的错误。许多软件产品的使用寿命长达10年甚至20年,在这样漫长的时期中不仅a)必须改正使用过程中发现的每一个潜伏的错误。b)当环境变化时(例如硬件或系统软件更新换代)还必须相应地修改软件以适应新的环境。c)必须经常改进或扩充原来的软件以满足用户不断变化的需要。所有这些改动都属于维护工作,而且是在软件已经完成之后进行的,因此维护是极端艰巨复杂的工作,需要花费很大代价。统计数据表明,实际上用于软件维护的费用占软件总费用的55%~70%。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。1.1.3消除软件危机的途径⑴.组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。⑵.方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。⑶.工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。Chap01软件工程学概述1.2.2软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性1.2.3软件工程方法学3个要素:方法、工具和过程把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodolgy)/范型(paradign)软件工程方法学:传统方法学和面向对象方法学传统方法学-生命周期方法学/结构化范型从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。面向对象方法学面向对象方法是把数据和行为看成同等重要,是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件构件。用对象分解取代传统方法的功能分解。把所有对象划分为类(Class):每个类定义了一组数据和一组操作。按照父类(基类)和子类(派生类)的关系,把若干个相关类组成一个层次结构的系统。子类能够继承。对象彼此间仅能通过发送消