《第1章 软件工程.ppt》由会员分享,可在线阅读,更多相关《第1章 软件工程.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1章章 软件工程软件工程内容软件危机软件危机1软件工程软件工程2湘潭大学信息工程学院湘潭大学信息工程学院2软件v对软件的偏见或误解对软件的偏见或误解软件就是程序,软件开发就是编写程序软件就是程序,软件开发就是编写程序编完了程序,就一切编完了程序,就一切OKOK了了掌握了最新的语言和工具,就能写程序了掌握了最新的语言和工具,就能写程序了软件是灵活的,软件的修改很容易软件是灵活的,软件的修改很容易v软件的定义:软件的定义:程序:在运行时,能提供所希望的功能和性能的指令集程序:在运行时,能提供所希望的功能和性能的指令集数据:使程序能够正确运行的数据结构数据:使程序能够正确运行的数据结构文档:描述
2、程序研制过程、方法及使用的文档文档:描述程序研制过程、方法及使用的文档湘潭大学信息工程学院湘潭大学信息工程学院3软件危机起源v6060年代中期以前,软件的特点表现为规模小,软件年代中期以前,软件的特点表现为规模小,软件开发人数少。因此,软件设计通常是在人们头脑中开发人数少。因此,软件设计通常是在人们头脑中进行的一个隐含过程,仅保存程序清单,其他文档进行的一个隐含过程,仅保存程序清单,其他文档没有保存下来。没有保存下来。v从从6060年代中期开始,软件规模和复杂度变大,软件年代中期开始,软件规模和复杂度变大,软件数量急剧增加,但开发方式仍然沿用早期的个体化数量急剧增加,但开发方式仍然沿用早期的个
3、体化软件开发方法。造成大量软件维护量巨大甚至是不软件开发方法。造成大量软件维护量巨大甚至是不可维护的。可维护的。错误无法修改错误无法修改不能适应用户需求的变化不能适应用户需求的变化可移植性和适应性差可移植性和适应性差软件危机软件危机湘潭大学信息工程学院湘潭大学信息工程学院4软件危机定义和表现v软件危机是指在计算机软件的开发和维护过程中所软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机表现在:遇到的一系列严重问题。软件危机表现在:对软件开发成本和进度的估计常常很不准确对软件开发成本和进度的估计常常很不准确用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生软件系
4、统不满意的现象经常发生软件产品的质量往往靠不住软件产品的质量往往靠不住软件常常是不可维护的软件常常是不可维护的软件通常没有适当的文档资料软件通常没有适当的文档资料软件开发生产率提高的速度,既跟不上硬件的发展速度,软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势也远远跟不上计算机应用迅速普及深入的趋势湘潭大学信息工程学院湘潭大学信息工程学院5软件危机表现v19951995年美国斯坦迪申咨询公司对美国年美国斯坦迪申咨询公司对美国365365位信息技术位信息技术高层经理人员管理的高层经理人员管理的83808380个项目进行调查研究,得个项目进行调查研究,得到
5、如下结论:到如下结论:信息技术项目正处于一个混沌的状态信息技术项目正处于一个混沌的状态平均成功率为平均成功率为16165050的项目需要补救的项目需要补救3434的项目彻底失败的项目彻底失败平均超出时间为平均超出时间为222%222%实际成本是估计成本的实际成本是估计成本的189%189%性能与功能只达到要求的性能与功能只达到要求的6161湘潭大学信息工程学院湘潭大学信息工程学院6产生软件危机的原因v软件是计算机系统中的逻辑部件,缺乏软件是计算机系统中的逻辑部件,缺乏“可见性可见性”v软件规模庞大,复杂性随着规模的增加而呈指数增软件规模庞大,复杂性随着规模的增加而呈指数增长,管理和控制软件开发
6、过程相当困难。长,管理和控制软件开发过程相当困难。v软件开发像织网,硬件开发像堆积木软件开发像织网,硬件开发像堆积木Windows2000Windows2000Exchange2000Exchange2000代码量(行)代码量(行)5050,000000,000000O O项目经理(人)项目经理(人)2502502525开发人员(人)开发人员(人)17001700140140测试人员(人)测试人员(人)32003200350350湘潭大学信息工程学院湘潭大学信息工程学院7产生软件危机的原因v与软件开发和维护有关的许多错误认识和作法的形与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在
7、计算机系统发展的早期阶段软件成,可以归因于在计算机系统发展的早期阶段软件开发的个体化特点。开发的个体化特点。忽视软件需求分析的重要性忽视软件需求分析的重要性软件开发缺乏正确的理论指导,过分依靠个人技巧和创软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性造性轻视软件维护,维护费用占总费用的轻视软件维护,维护费用占总费用的55%70%55%70%湘潭大学信息工程学院湘潭大学信息工程学院8消除软件危机v首先应该对计算机软件有一个正确的认识。首先应该对计算机软件有一个正确的认识。v应该推广使用在实践中总结出来的开发软件的成功应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好
8、更有效的技术和的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。一些错误概念和做法。v应该开发和使用更好的软件工具。应该开发和使用更好的软件工具。v总之,为了消除软件危机,既要有技术措施总之,为了消除软件危机,既要有技术措施(方法和方法和工具工具),又要有必要的组织管理措施。软件工程正是,又要有必要的组织管理措施。软件工程正是从从管理和技术管理和技术两方面研究如何更好地开发和维护计两方面研究如何更好地开发和维护计算机软件的一门新兴学科。算机软件的一门新兴学科。湘潭大学信息工程学院湘潭大学信息工
9、程学院9内容软件危机软件危机1软件工程软件工程2湘潭大学信息工程学院湘潭大学信息工程学院10软件工程定义v19681968年北大西洋公约组织在德国召开国际会议,在年北大西洋公约组织在德国召开国际会议,在这次会议上正式提出这次会议上正式提出“软件工程软件工程”v软件工程是指导计算机软件开发和维护的工程学科软件工程是指导计算机软件开发和维护的工程学科v软件工程就是采用工程的概念、原理、技术和方法软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起管理技术和当前能够得到的最好的
10、技术方法结合起来,以经济地开发出高质量的软件并有效地维护它来,以经济地开发出高质量的软件并有效地维护它目的:开发与维护软件目的:开发与维护软件目标:经济、高质量目标:经济、高质量方法:采用工程的概念、原理、技术和方法把管理技术方法:采用工程的概念、原理、技术和方法把管理技术 和技术方法结合起来和技术方法结合起来湘潭大学信息工程学院湘潭大学信息工程学院11软件工程知识体系涉及软件的方方面面都是软件工程研究的范围湘潭大学信息工程学院湘潭大学信息工程学院12软件工程基本原理v用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理应该把软件生命周期划分为若干阶段,并相应地制定出应该把软件生命周期
11、划分为若干阶段,并相应地制定出切实可行的计划,然后严格按计划对软件开发与维护工切实可行的计划,然后严格按计划对软件开发与维护工作进行管理作进行管理v坚持进行阶段评审坚持进行阶段评审软件质量保证不能等到编码阶段结束之后再进行。理由:软件质量保证不能等到编码阶段结束之后再进行。理由:第一,大部分错误是在编码之前造成的;第二,错误发第一,大部分错误是在编码之前造成的;第二,错误发现与改正得越晚,付出的代价越高。在每个阶段都进行现与改正得越晚,付出的代价越高。在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中的错误。严格的评审,以便尽早发现在软件开发过程中的错误。湘潭大学信息工程学院湘潭大学信息
12、工程学院13软件工程基本原理湘潭大学信息工程学院湘潭大学信息工程学院14软件工程基本原理v实行严格的产品控制实行严格的产品控制软件开发过程中改变需求是难免的,不能禁止客户提出软件开发过程中改变需求是难免的,不能禁止客户提出的需求变化,要依靠科学的产品控制技术来顺应客户要的需求变化,要依靠科学的产品控制技术来顺应客户要求。求。产品控制中主要是实行基准配置管理。基准配置又称为产品控制中主要是实行基准配置管理。基准配置又称为基线配置,是经过阶段评审后的软件配置成分,即各阶基线配置,是经过阶段评审后的软件配置成分,即各阶段产生的文档或程序代码。段产生的文档或程序代码。基准配置管理也称为变动控制;一切有
13、关修改软件的建基准配置管理也称为变动控制;一切有关修改软件的建议特别是涉及到对基准配置的修改建议,都必须按照严议特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准后才能实施修改。绝不能格的规程进行评审,获得批准后才能实施修改。绝不能随意修改。随意修改。湘潭大学信息工程学院湘潭大学信息工程学院15软件工程基本原理v采用现代程序设计技术采用现代程序设计技术v结果应能清楚地审查结果应能清楚地审查软件产品是逻辑产品,软件开发人员的工作进展情况可软件产品是逻辑产品,软件开发人员的工作进展情况可见性差,难以准确度量,从而开发过程难于评价和管理。见性差,难以准确度量,从而开发过程难于评
14、价和管理。应根据软件开发项目的总目标和完成期限,规定开发组应根据软件开发项目的总目标和完成期限,规定开发组织的责任和产品标准,使所得到的结果能够清楚地审查。织的责任和产品标准,使所得到的结果能够清楚地审查。v开发小组的人员应该少而精开发小组的人员应该少而精v承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性湘潭大学信息工程学院湘潭大学信息工程学院16软件工程方法学v通常把在软件生命周期全过程中使用的一整套技术通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学,也称为范型。的集合称为方法学,也称为范型。v软件工程方法学包括三个要素:方法、工具和过程。软件工程方法学包括三个
15、要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答方法是完成软件开发的各项任务的技术方法,回答“如如何做何做”的问题;的问题;工具是为方法的运用提供自动的或半自动的软件支撑环工具是为方法的运用提供自动的或半自动的软件支撑环境;境;过程是为了获得高质量的软件所需要完成的一系列任务过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。的框架,它规定了完成各项任务的工作步骤。湘潭大学信息工程学院湘潭大学信息工程学院17软件工程方法学活动1活动2活动3活动4活动5过程方法工具指导支持方法工具指导支持湘潭大学信息工程学院湘潭大学信息工程学院18软件工程
16、方法学v目前使用得最广泛的软件工程方法学,分别是传统目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。方法学和面向对象方法学。传统方法学(结构化范型)传统方法学(结构化范型)采用结构化技术来完成软件开发的各项任务,并使用适当采用结构化技术来完成软件开发的各项任务,并使用适当软件工具或软件工程环境来支持结构化技术的运用。软件工具或软件工程环境来支持结构化技术的运用。结构化技术起源于结构化技术起源于6060年代末期,强调自上而下的开发方法,年代末期,强调自上而下的开发方法,把大问题逐步分解成小的模块。把大问题逐步分解成小的模块。结构化范型技术要么面向行为(对数据的操作),要么面结
17、构化范型技术要么面向行为(对数据的操作),要么面向数据。数据和对数据的处理是密切相关的,人为分离成向数据。数据和对数据的处理是密切相关的,人为分离成两部分,自然会造成软件开发和维护的难度。两部分,自然会造成软件开发和维护的难度。湘潭大学信息工程学院湘潭大学信息工程学院19软件工程方法学v目前使用得最广泛的软件工程方法学,分别是传统目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。方法学和面向对象方法学。面向对象面向对象方法学方法学把数据和行为看成同等重要,是一种以数据为主线,把数把数据和行为看成同等重要,是一种以数据为主线,把数据和对数据的操作紧密结合起来的方法。据和对数据的操作紧密结合起来的方法。尽可能模拟人类习惯的思维方式,使开发软件的方法与过尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间使描述问题的问题空间(也称为问题域也称为问题域)与实现解法的解空与实现解法的解空间间(也称为求解域也称为求解域)在结构上尽可能一致。在结构上尽可能一致。湘潭大学信息工程学院湘潭大学信息工程学院20湘潭大学信息工程学院湘潭大学信息工程学院
限制150内