1、 软件工程的概述o 本讲主要内容:本讲主要内容:n 软件危机现象软件危机现象n 软件的特点软件的特点n 软件工程定义软件工程定义要求1、掌握掌握软件的特点,软件工程定义。2、理解理解软件危机的现象第第1节节 软件危机软件危机-软件行业怎么了?软件行业怎么了?1、对软件的要求:、对软件的要求:o 用户的需求更高、涉及的领域更广用户的需求更高、涉及的领域更广o 软件运行环境更加庞大软件运行环境更加庞大o 软件更新换代更加频繁软件更新换代更加频繁第第1节节 软件危机软件危机2、软件生产的现状:、软件生产的现状:o“已完成”的软件不满足用户的需求o 软件产品的质量没有保证。o 开发进度不能保障,交付时
2、间一再拖延。o 开发成本超出预算。定义:计算机软件开发和维护过程中所遇到的一系列严重问题。需求不满足哈药哈药“城门失火城门失火”2000年,哈尔滨医药集团决定上ERP项目,参与软件软件争夺的两个主要对手是Oracle与利玛。一开始,两家在ERP软件软件上打得难解难分,一年之后,Oracle击败利玛,哈药决定选择标致巨额投入搁浅标致巨额投入搁浅MRPII项目的设备,目标是实现全公司订单、生产、库存、销售、人事、财务等的统一管理,以提高公司运行效益,增进企业经济效益。许继项目被许继项目被迫暂停迫暂停1998年初,河南许继集团采用Symix公司(现更返回软件质量案例o 美国阿波罗8号太空飞船的一个软
3、件错误,造成了存储器部分信息丢失;o 而阿波罗14号在飞行的10天中,出现了18个软件错误。返回第第1节节 软件危机软件危机3.产生软件危机的原因:产生软件危机的原因:o 与软件的特点有关o 与软件开发和维护的方法有关第第1节节 软件危机软件危机4.软件的特点:软件的特点:o 软件是一种逻辑部件,不是物理部件。o 软件对硬件和环境有着不同程度的依赖性,这导致了软件升级和移植的问题。o 软件生产过程的不可见性。o 软件涉及人类社会的各行各业,涉及到领域专门知识,这对软件工程师提出了很高的要求。o 软件一旦研究开发成功,其生产过程就变成复制过程。第第1节节 软件危机软件危机5.软件开发和维护的方法
4、:软件开发和维护的方法:o 软件生产至今尚未摆脱手工生产方式。o 忽视需求分析和设计工作。o 没有规范的维护要求和记录。第第1节节 软件危机软件危机6.再一次强调软件的定义?再一次强调软件的定义?o 软件是计算机系统中与硬件相互依存的另一软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档部分,它包括程序、相关数据及其说明文档 IEEE1983第第2节节 软件工程软件工程-软件行业的出路?软件行业的出路?1.问题的引出问题的引出先看几个图例先看几个图例简陋的小屋不用设计新农村别墅造型图别墅的平面图、切面图图书馆信息管理系统需求表图书馆信息管理系统功能设计图书馆信息管理系
5、统物理模型设计图书馆信息管理系统逻辑模型设计(部分)图书馆信息管理系统数据设计过程设计图书馆信息管理系统界面设计结论:o 软件生产同建筑行业一样需要工程化、规模化、自动化、标准化。o 软件生产过程中也有中间环节(设计物理模型、逻辑模型、界面、数据、过程等等),也可以随时进行质量检查。o 软件生产中也需要有高效的工具。o 软件生产人员也可以细分为:分析员、设计员、程序员、测试员、操作员、维护人员等等。o 软件生产低水平的手工作坊不能适应当今的大规模软件开发需求第第2节节 软件工程软件工程2.软件工程定义1993IEEE:软件工程是将系统化的、规范的、可度量软件工程是将系统化的、规范的、可度量的方
6、法应用于软件的开发、运行和维护过程,的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,即将工程化应用于软件开发和管理之中,对中所选方法的研究。对中所选方法的研究。o注意:注意:软件工程研究所依据的基础理论:数学、计算机科学、经济学、工程学、管理学和心理学等学科。其中数学和计算机科学用于构造模型、分析算法;工程学用于评估成本、制定规范和标准;管理学和心理学用于进度、资源、环境、质量、成本等的分析和管理。第第2节节 软件工程软件工程3.软件工程研究的主要内容o 技术方面:研究软件开发方法、软件开发过程、软件开发工具和环境等等。o 管理方面:主要研究软件管理学、软件经济学、
7、软件心理学等等。第第2节节 软件工程软件工程质量保证层工具层方法层过程层4.软件工程的层次化第第2节节 软件工程软件工程5软件工程强调-规范化和文档化o 规范化:使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式关注国标、行标。o 文档化:n把软件的设计思想、设计过程和实现过程完整地记录下来,便于各类相关人员交流和沟通;n使软件开发过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理;n是验收、质量检测的标准和依据。第第2节节 软件工程软件工程6.软件工程的目标o 实现预期的软件功能,满足用户的需求。o 提高软件的可维护性,保障软件的质量。o 合
8、理预算开发成本,控制软件开发费用。o 提高软件开发生产率,及时交付使用。第第3节节 软件工程软件工程7条基本原理条基本原理原理原理1、用分阶段的生命周期计划严格管理、用分阶段的生命周期计划严格管理n 项目概要计划n 里程碑计划n 项目控制计划n 产品控制计划n 测试验收计划n 运行维护计划 原理原理2、坚持进行阶段评审、坚持进行阶段评审。o 软件质量保证工作不能到编码阶段结束之后开始。o 大量统计表明:大部分错误是在编码之前造成,设计错误约占软件错误的63%编码错误占37%。o 前期改正错误需要的可能只是橡皮和铅笔,而在交付后改正错误需要的工作就太多了:查找出错的代码、重新组织程序结构和数据结
9、构、测试、修改文档。o 结论:错误发现与改正的越晚,付出代价越高。第第3节节 软件工程软件工程7条基本原理条基本原理原理原理3、实行严格的产品控制、实行严格的产品控制 o 基准配置又称基线配置,它们是经过阶段评审后的软件配置成份。o 基准配置管理的思想是:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审和控制,获得批准以后才能实施修改。o 目的是当需求变动时,其它各阶段的文档或代码随之相应变动,以保证软件的一致性。第第3节节 软件工程软件工程7条基本原理条基本原理原理原理4、采用现代程序设计技术、采用现代程序设计技术 自从提出软件工程概念后,人们一直把主要
10、精力用于研究各种新的程序设计技术。60年代末提出了结构化程序设计技术,以后又进一步发展出结构化分析与设计技术、面向对象的分析和设计技术。实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件质量。第第3节节 软件工程软件工程7条基本原理条基本原理原理原理5、结果应能清楚地审查、结果应能清楚地审查 软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,明确地规定开发小组的责任和产品标准,从而使所得到的产品有明确的标准能清楚地审查。第第3节节 软件工程核心软件工程核心-7条基本原理条基本原理原理原理6、开发小组的人员应该少而精、开发小组的人员应该少而精 软件开发小组成员的素质应该好,人数不宜过多。素质高的人员开发效率高、质量好、错误少。开发小组人员过多,信息交流造成的通信开销会急剧增加。第第3节节 软件工程软件工程7条基本原理条基本原理原理原理7、承认不断改进软件工程实践的必要性、承认不断改进软件工程实践的必要性 遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,因此,应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。第第3节节 软件工程软件工程7条基本原理条基本原理