2004IBMSoftwareInstituteIBMSoftwareInstitute软件开发生命周期2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述章节目标了解什么是软件了解什么是软件工程理解软件工程为什么很重要学习软件工程的意义Unit标题2004IBMSoftwareInstituteIBMSoftwareInstitute什么是软件?软件是程序和所有使程序正确运行所需要的相关文档和配置信息。软件产品有以下两类:通用软件产品如:操作系统、多媒体、word、PowerPoint等。定制软件产品如:模拟训练、数据管理、辅助决策、人工智能等各个领域。第一章软件工程概述第一章软件工程概述2004IBMSoftwareInstituteIBMSoftwareInstitute什么是软件工程?软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。软件工程还包括上述方法的研究。1962年,第一个金星探测器水手1号偏离航线失败。原因:导航程序一个语句语义错误Apollo8存储器信息丢失;11号运行10天18个软件错误。规模相对较小;崇尚个人技巧技艺缺乏有效方法与软件工具支持不重视开发过程的管理维护困难(编写1条汇编语句=研制2个硬件逻辑门;维护1汇编语句条=修理4个硬件逻辑门)1968年NATO(北大西洋公约组织)会议:softwarecrisis,softwareengineering.第一章软件工程概述第一章软件工程概述2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述二、什么是软件工程?二、什么是软件工程?软件工程中的分层2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述二、什么是软件工程?二、什么是软件工程?如果不考虑应用领域、项目规模和复杂性,与软件工程相关的工作可分为三个一般的阶段:.定义阶段——集中于“做什么”.开发阶段——集中于“如何做”.维护阶段——集中于“改变”软件工程的一般视图2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述二、什么是软件工程?二、什么是软件工程?.软件项目追踪和控制.正式的技术评审.软件质量保证.软件配置管理.文档的准备和产生.可复用管理.度量.风险管理典型的保护性活动2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述•为什么需要那么长时间才能结束开发?•为什么成本如此之高?•为什么我们不能在把软件交给客户之前就发现所有的错误?•为什么在软件开发过程中我们难以度量其进展?理解软件工程为什么很重要2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述二、什么是软件工程?二、什么是软件工程?•逻辑产品而不是实物•其功能依赖于人的操作和相关硬件而体现•对软件产品的要求比一般有形产品来的复杂•100万汇编语句,1万子功能,每功能2个实现,则210000=103000组合!•Hetgel负责软件研制工程时候:•几个人)时候,认为关键是方法学问题:•50人时候,文档越来越重要•200人:关键是管理问题。•复杂性:功能多样性,实现多样性,能见度低,结构合理性差•其“资金密集程度”中包含更多的人的成分(即“智力密集”)软件工程与一般工程的差异2004IBMSoftwareInstituteIBMSoftwareInstitute第一章软件工程概述第一章软件工程概述软件销售收入比较图三、理解软件工程为什么很重要三、理解软件工程为什么很重要0100200300400500600700800微软公司第三季度中国全年2004IBMSoftwareInstituteIBMSoftwareInstitute学习软件工程是大势所趋第一章软件工程概述第一章软件工程概述世界上唯一不变的东西就是变化。拒绝改变的人将永远也找不回他的奶酪!人对不了解的东西会产生抵触。他因为害怕而拒绝改变!——《谁动了我的奶酪?》2004IBMSoftwareInstituteIBMSoftwareInstitute习题和答案1.什么是软件危机?为什么会产生软件危机?怎样克服软件危机?解:研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。产生软件危机的...