第一章软件工程概述本章概要编程与软件开发编程与软件开发软件危机软件危机软件工程软件工程过程——软件开发的生命周期过程——软件开发的生命周期方法方法工具工具1.1编程=软件开发?1.1.1软件=程序?看起来看起来软件软件和和程序程序都以可执行文件都以可执行文件的形式存在,二者之间有无区别?的形式存在,二者之间有无区别?辨析定义辨析定义反证反证(1)辨析定义程序的定义:一组可在目标计算机上正确程序的定义:一组可在目标计算机上正确执行的指令集合。执行的指令集合。定义中“可执行”是对程序的唯一要求定义中“可执行”是对程序的唯一要求程序的好坏取决于它在执行过程中的表程序的好坏取决于它在执行过程中的表现现速度快(节省速度快(节省CUPCUP资源)资源)运行空间小(省内存)运行空间小(省内存)(1)辨析定义1.1.高级汉语大词典高级汉语大词典软件是与某种应用相关的程序、数据和有关软件是与某种应用相关的程序、数据和有关文件构成的完整集合。文件构成的完整集合。2.2.SoftwareisSoftwareis——IEEEinstructions(computerprograms)that(computerprograms)thatwhenexecutedprovidedesiredfunctionandperformancedatastructuresthatenabletheprogramstoadequatelymanipulateinformationdocumentsthatdescribetheoperationanduseoftheprograms定义(定义(11)和()和(22)指出了软件的组成)指出了软件的组成程序程序++数据数据++文档文档思考通过定义的比较,软件是由程序以及与通过定义的比较,软件是由程序以及与程序有关的其他配置构成的。程序有关的其他配置构成的。问题是:问题是:程序和软件的差别仅就在于有没有相程序和软件的差别仅就在于有没有相关配置这么简单么?关配置这么简单么?一个冒泡排序的程序,提供一组待排一个冒泡排序的程序,提供一组待排序的数据和一个说明算法的文档就是序的数据和一个说明算法的文档就是冒泡排序软件了么?冒泡排序软件了么?(2)反例——什么程序不是软件毫无作用的程序——毫无作用的程序——helloworldhelloworld不起好作用的程序——计算机病毒不起好作用的程序——计算机病毒通过列举反例,体现出软件相对于程序的本质特通过列举反例,体现出软件相对于程序的本质特性性软件能够向其使用者提供有价值、有意义的软件能够向其使用者提供有价值、有意义的服务(功能和行为)。服务(功能和行为)。鉴于上述观点,评判软件优劣的根本标准不鉴于上述观点,评判软件优劣的根本标准不是运行性能,而是——是运行性能,而是——用户满意度用户满意度(3)结论结论:软件≠程序结论:软件≠程序特性:特性:程序强调运行程序强调运行软件强调作用软件强调作用构成构成软件=程序软件=程序ss+(+(数据)+文档数据)+文档评价标准评价标准软件——用户是否满意软件——用户是否满意程序——运行性能程序——运行性能1.1.2编程与软件开发程序≠软件=程序≠软件=>>编程≠软件开发编程≠软件开发由程序和软件的关系可以确定,由程序和软件的关系可以确定,“编程”仅“编程”仅仅是“软件开发”的一个“局部任务”。软件仅是“软件开发”的一个“局部任务”。软件开发还必须通过完成其他任务来解决如下问题:开发还必须通过完成其他任务来解决如下问题:要向使用者提供什么服务?——为什么编程要向使用者提供什么服务?——为什么编程采用什么方式和策略产生服务结果?——程序如何采用什么方式和策略产生服务结果?——程序如何工作工作怎样保证编写的程序(集合)是正确的?——怎样怎样保证编写的程序(集合)是正确的?——怎样检验程序检验程序怎样保证程序能够在应用领域中有效地发挥作用?怎样保证程序能够在应用领域中有效地发挥作用?——怎样使用户能正确的使用程序——怎样使用户能正确的使用程序1.2软件发展史和软件危机软件的发展软件的发展处理方式:批处理处理方式:批处理智能、并行处理智能、并行处理运行平台:单机运行平台:单机分布式网络分布式网络应用规模:单用户应用...