《软件工程课件1.ppt》由会员分享,可在线阅读,更多相关《软件工程课件1.ppt(119页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 软件工程2第一篇面向过程的软件工程 第1章 软件工程概述内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3 3 页页本章学习目标本章学习目标 熟练掌握软件工程概念、原理和方法熟练掌握软件工程概念、原理和方法 熟练掌握软件生命周期和软件过程模熟练掌握软件生命周期和软件过程模型型 掌握软件危机产生的原因、解决的办法掌握软件危机产生的原因、解决的办法 掌握软件及其特点掌握软件及其特点 了解软件工程的发展历程了解软件工程的发展历程 了解软件工程相关规范了解软件工程相关规范内蒙古工业大学内蒙古工业大学软件工程软件工
2、程(Software EngineeringSoftware Engineering)第第 4 4 页页4 41.1 1.1 软件工程的发展历程软件工程的发展历程 随着软件技术的发展,软件工程的研究范围和内容也在不随着软件技术的发展,软件工程的研究范围和内容也在不断变化和发展。断变化和发展。 第一阶段,第一阶段,传统软件工程传统软件工程阶段阶段 20 20世纪世纪7070年代,为了解决年代,为了解决 软件项目错误率高软件项目错误率高 以及以及软软件维护任务重件维护任务重 等问题,人们提出软件开发工程化的思想,等问题,人们提出软件开发工程化的思想,希望使软件开发走上一条规范化的道路,并努力克服希
3、望使软件开发走上一条规范化的道路,并努力克服软件危机软件危机。形成了软件工程的概念、框架、方法和手段。形成了软件工程的概念、框架、方法和手段。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 5 5 页页5 51.1 1.1 软件工程的发展历程软件工程的发展历程 第二阶段,第二阶段,过程软件工程过程软件工程阶段阶段 20 20世纪世纪8080年代末逐步发展起来的面向对象方法,形成了完年代末逐步发展起来的面向对象方法,形成了完整的面向对象技术体系,适应更大规模、更广泛的应用。进一整的面向对象技术体系,适应更大规模
4、、更广泛的应用。进一步提高步提高软件生产率、保证软件质量软件生产率、保证软件质量成为软件工程追求的更高目成为软件工程追求的更高目标。标。 在重视发展软件开发技术的同时,提出了在重视发展软件开发技术的同时,提出了软件能力成熟度模软件能力成熟度模型型、个体软件过程和群组软件过程等概念。软件开发过程从、个体软件过程和群组软件过程等概念。软件开发过程从目目标管理标管理 转向转向 过程管理过程管理。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 6 6 页页61.1 1.1 软件工程的发展历程软件工程的发展历程 第三阶
5、段,第三阶段,构件软件工程构件软件工程 阶段阶段 20 20世纪世纪9090年代以后,软件开发技术的主要处理对象为网年代以后,软件开发技术的主要处理对象为网络计算和支持多媒体信息的络计算和支持多媒体信息的WWWWWW。软件重用和软件构件技软件重用和软件构件技术术正逐步成为主流软件技术。迭代、敏捷、持续集成的理念,正逐步成为主流软件技术。迭代、敏捷、持续集成的理念,正成为业界的共识。正成为业界的共识。 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 7 7 页页7 71.2 1.2 软件危机软件危机 软件危机软
6、件危机是在计算机软件开发、维护过程中所遇到的是在计算机软件开发、维护过程中所遇到的一系列严重问题,一系列严重问题, 这是由于软件自身的特点,以及在软件开发和维护过这是由于软件自身的特点,以及在软件开发和维护过程中,采用了错误的方法和技术。程中,采用了错误的方法和技术。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 8 8 页页8 81.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类1 1软件的概念软件的概念 关于软件争论不休的问题:关于软件争论不休的问题: 为什么需要那么长时间才能结束开发?为什
7、么需要那么长时间才能结束开发? 为什么成本如此之高?为什么成本如此之高? 为什么我们不能在把软件交给客户之前就发现所有的错误?为什么我们不能在把软件交给客户之前就发现所有的错误? 为什么在软件开发过程中我们难以度量其进展?为什么在软件开发过程中我们难以度量其进展? 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 9 9 页页9 91.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类1 1软件的概念软件的概念 软件是计算机系统中与硬件相互依存的另一部分,它是软件是计算机系统中与硬件相互依存的另一部分
8、,它是包括程序,数据及其相关文档的完整集合。包括程序,数据及其相关文档的完整集合。 IEEEIEEE定义定义(19831983年):计算机程序、方法、规则、年):计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。相关的文档资料以及在计算机上运行程序时所必需的数据。 软件程序数据文档软件程序数据文档Institute of Electrical and Electronics Engineers内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 10 10 页页10101.2.1 1.2.
9、1 软件的概念特点及分类软件的概念特点及分类1 1软件的概念软件的概念 程序程序 是按事先设计的功能和性能要求执行的指令序列。是按事先设计的功能和性能要求执行的指令序列。 数据数据 是使程序能正常操纵信息的数据结构。是使程序能正常操纵信息的数据结构。 文档文档 是与程序开发,维护和使用有关的图文材料。是与程序开发,维护和使用有关的图文材料。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 11 11 页页11111.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类2 2软件的特点软件的特点(1 1)
10、软件形态的逻辑性)软件形态的逻辑性 软件是一种逻辑实体,而不是具体的物理实体。因而软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性、不可见性。它具有抽象性、不可见性。 开发过程的进度难以衡量,质量难以评价,管理和控开发过程的进度难以衡量,质量难以评价,管理和控制相当困难。制相当困难。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 12 12 页页1 12 21.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(2 2)生产过程的非制造性)生产过程的非制造性 软件的生产与硬件不同,在它的开
11、发过程中没有明显软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。的制造过程。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 13 13 页页13131.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(3 3)使用方式的无磨损性)使用方式的无磨损性 在软件的运行和使用期间,没有硬件那样的机械磨损,在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。老化问题。软件不会被软件不会被“用坏用坏”,但是较难维护,维护意味着改,但是较难维护,维护意味着改正或修改原来的设计。正或修改原来的设计
12、。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 14 14 页页14141.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(4 4)开发和运行对环境的依赖性)开发和运行对环境的依赖性 软件软件的开发和运行常受到计算机系统的限制,软件软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。对计算机系统有着不同程度的依赖性。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 15 15 页页1515
13、1.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(5 5)开发方式的手工化)开发方式的手工化 软件的开发至今尚未完全摆脱手工艺的开发方式。大软件的开发至今尚未完全摆脱手工艺的开发方式。大多数软件是定制的,而不是通过已有的构件组装而来的。多数软件是定制的,而不是通过已有的构件组装而来的。 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 16 16 页页16161.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(6 6)软件的复杂性)软件的复杂性 软件本身是复杂的,软件是人类能够创造
14、的最复杂的产软件本身是复杂的,软件是人类能够创造的最复杂的产物。物。 体现在体现在 实际问题实际问题 的复杂性。的复杂性。程序逻辑结构程序逻辑结构 的的复杂性。复杂性。其他领域的专门知识其他领域的专门知识 复杂性。复杂性。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 17 17 页页171.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类 软件的复杂性:软件的复杂性: 例:例: 1. Windows95有1000万行,花费上千人。 2. Windows2000有5000万行,花费五千多人。 3.
15、 Lotus 1-2-3 V3.0近40万行,花费263人年,成本22百万美元。 4. WWMCCS(全球军事指挥与控制系统)花费3500多人拖了几年,交付后发现100个错误。最后失败。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 18 18 页页18181.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(7 7)成本的昂贵性)成本的昂贵性 软件成本相当昂贵。在软件开发过程中,会投入大量的、软件成本相当昂贵。在软件开发过程中,会投入大量的、复杂的、高强度的脑力劳动,投入的研发成本相对比较高。复
16、杂的、高强度的脑力劳动,投入的研发成本相对比较高。 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 19 19 页页19191.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类(8 8)社会因素)社会因素 相当多的软件工作涉及到社会因素。软件大大提高了相当多的软件工作涉及到社会因素。软件大大提高了工作的效率,必然释放劳动力,促进机构的重组,由此带工作的效率,必然释放劳动力,促进机构的重组,由此带来一系列的社会问题。来一系列的社会问题。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software
17、EngineeringSoftware Engineering)第第 2020 页页20201.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类3 3软件的分类软件的分类 软件的分类有多种方法,可按软件的软件的分类有多种方法,可按软件的功能功能划分,也可按划分,也可按软件的软件的规模规模划分,或者按软件划分,或者按软件工作方式与服务对象工作方式与服务对象的划分。的划分。 (1 1)按软件的)按软件的分类,软件可以分为如下三类:分类,软件可以分为如下三类: 系统软件、支撑软件和应用软件系统软件、支撑软件和应用软件。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software Eng
18、ineeringSoftware Engineering)第第 21 21 页页21211.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类1 1)系统软件)系统软件 系统软件是负责计算机系统中各种独立的硬件部件、系统软件是负责计算机系统中各种独立的硬件部件、相关软件和数据,使得它们可以协调高效地开展工作的软相关软件和数据,使得它们可以协调高效地开展工作的软件。件。 例如例如: : 操作系统、数据库管理系统、设备驱动程序、操作系统、数据库管理系统、设备驱动程序、通信处理程序等软件均属于系统软件。通信处理程序等软件均属于系统软件。内蒙古工业大学内蒙古工业大学软件工程软件工程(Soft
19、ware EngineeringSoftware Engineering)第第 2222 页页22221.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类2 2)支撑软件)支撑软件支撑软件是为方便用户使用而开发的支撑软件是为方便用户使用而开发的各种工具软件各种工具软件,是,是一种通用性较强的软件。一种通用性较强的软件。例如例如: : 支持需求分析、设计、实现、测试和支持管理的工支持需求分析、设计、实现、测试和支持管理的工具软件,微软公司的支持各种图表制作的具软件,微软公司的支持各种图表制作的VisioVisio软件,软件,SYBASESYBASE公司的数据库设计建模工具公司的数据库
20、设计建模工具PowerDesignerPowerDesigner软件软件等。等。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2323 页页23231.2.1 1.2.1 软件的概念特点及分类软件的概念特点及分类3 3)应用软件)应用软件各行各业都需要软件,但解决的问题不同。为解决特定各行各业都需要软件,但解决的问题不同。为解决特定应用领域问题而开发的软件,称为应用软件。应用领域问题而开发的软件,称为应用软件。例如例如: : 商业数据处理软件、工程与科学计算软件、计算商业数据处理软件、工程与科学计算软件、计
21、算机辅助设计机辅助设计/ /制造软件、系统仿真软件、智能产品嵌入软件、制造软件、系统仿真软件、智能产品嵌入软件、医疗制药软件、办公自动化软件、计算机辅助教学软件等医疗制药软件、办公自动化软件、计算机辅助教学软件等。2424类类 别别参加人数参加人数研制期限研制期限产品规模(源代码行)产品规模(源代码行)微微 型型11 4 周周0.5K小小 型型11 6 月月1K 2K中中 型型2 - 51 2 年年5 50 K大大 型型5 - 202 3 年年50 500 K甚大型甚大型100 - 10004 5 年年1M极大型极大型2000 -50005 10 年年1M 10 M实时处理软件实时处理软件交互
22、式软件交互式软件批处理软件批处理软件 项目软件项目软件 由客户委托开发的软件。由客户委托开发的软件。 产品软件产品软件 由软件开发机构开发,提供给市场的。由软件开发机构开发,提供给市场的。 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2525 页页25251.2.2 1.2.2 软件危机软件危机 软件危机:在计算机软件开发、维护过程中所遇到的一软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。系列严重问题。 在程序运行时发现的错误,必须设法改正;在程序运行时发现的错误,必须设法改正; 用户有新
23、的需求,必须相应地修改程序;用户有新的需求,必须相应地修改程序; 硬件或硬件或OSOS的更新,通常需要相应地修改程序;的更新,通常需要相应地修改程序; 上述的软件维护工作,以令人吃惊的比例消耗资源;有上述的软件维护工作,以令人吃惊的比例消耗资源;有些软件是不可维护的。些软件是不可维护的。软件危机开始出现软件危机开始出现!内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2626 页页26261.2.2 1.2.2 软件危机软件危机 例例: : 美国美国IBMIBM公司在公司在19631963年至年至196619
24、66年开发的年开发的IBM360IBM360机机的操作系统。这一项目花了的操作系统。这一项目花了50005000人年的工作量,最多时有人年的工作量,最多时有10001000人投入开发工作,写出了近人投入开发工作,写出了近100100万行源程序。万行源程序。.据统据统计,这个操作系统每次发行的新版本都是从前一版本中找出计,这个操作系统每次发行的新版本都是从前一版本中找出10001000个程序错误而修正的结果。个程序错误而修正的结果。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2727 页页2 27 71.2
25、.2 1.2.2 软件危机软件危机软件危机软件危机包含下述两方面的问题:包含下述两方面的问题:(1 1)如何开发软件,以满足对软件日益增长的需求。)如何开发软件,以满足对软件日益增长的需求。(2 2)如何维护数量不断膨胀的已有软件。)如何维护数量不断膨胀的已有软件。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2828 页页28281.2.3 1.2.3 软件危机产生的原因软件危机产生的原因1 1软件自身的特点软件自身的特点 软件作为逻辑产品,具有与硬件不同的特性(见上软件作为逻辑产品,具有与硬件不同的特性
26、(见上节)。这些特性决定了软件开发与维护的复杂性,导致软节)。这些特性决定了软件开发与维护的复杂性,导致软件的开发和维护比硬件更难。件的开发和维护比硬件更难。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2929 页页29291.2.3 1.2.3 软件危机产生的原因软件危机产生的原因2 2在开发和维护过程中,采用了错误的方法和技术在开发和维护过程中,采用了错误的方法和技术(1 1)软件管理相对落后)软件管理相对落后 由于缺乏软件开发的经验和相关数据的积累,使得开发工由于缺乏软件开发的经验和相关数据的积累,
27、使得开发工作的计划很难制定:作的计划很难制定: 实际实际 成本成本 比估计成本有可能高出一个数量级;比估计成本有可能高出一个数量级; 实际实际 进度进度 比预期进度拖延几个月的现象并不罕见。这种比预期进度拖延几个月的现象并不罕见。这种现象降低了软件企业的信誉。现象降低了软件企业的信誉。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3030 页页30301.2.3 1.2.3 软件危机产生的原因软件危机产生的原因(2 2)软件需求不够清晰)软件需求不够清晰 软件开发人员常常在对用户要求只有模糊的了解,甚至对软
28、件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就匆忙着手编写程所要解决的问题还没有确切认识的情况下,就匆忙着手编写程序,急于求成。序,急于求成。 开发工作开始后,软件人员和用户之间的沟通不够及时充开发工作开始后,软件人员和用户之间的沟通不够及时充分,造成矛盾在开发后期集中暴露。分,造成矛盾在开发后期集中暴露。“闭门造车闭门造车”。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 31 31 页页31311.2.3 1.2.3 软件危机产生的原因软件危机产生的原因(3 3)
29、软件测试不够充分)软件测试不够充分 未能在测试阶段充分做好检测工作,提交给用户的软件质未能在测试阶段充分做好检测工作,提交给用户的软件质量差,在运行中暴露出大量的问题,轻者影响系统的正常工量差,在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。软件质作,重者发生事故,甚至造成生命财产的重大损失。软件质量保证技术还没有坚持不懈地应用到软件开发的全过程中,量保证技术还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。这些都导致软件产品发生质量问题。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringS
30、oftware Engineering)第第 3232 页页32321.2.3 1.2.3 软件危机产生的原因软件危机产生的原因(4 4)软件开发方法相对陈旧)软件开发方法相对陈旧 早期的个体化开发特点,开发过程没有统一的、公认早期的个体化开发特点,开发过程没有统一的、公认的方法论和规范指导,加上不重视文字资料工作,资料很的方法论和规范指导,加上不重视文字资料工作,资料很不完整。忽视每个人与其他人的接口部分,发现了问题修不完整。忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。很多程序中的错误是非常修补补,这样的软件很难维护。很多程序中的错误是非常难改正的。难改正的。内蒙古
31、工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3333 页页33331.2.3 1.2.3 软件危机产生的原因软件危机产生的原因(5 5)没有软件生命周期概念)没有软件生命周期概念 认为软件就是编程、运行,轻视软件维护这个重要环节。认为软件就是编程、运行,轻视软件维护这个重要环节。其实其实编程工作量只占总工作量的编程工作量只占总工作量的20%20%左右,左右,软件维护的工软件维护的工作量占到作量占到50%50%以上以上。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoft
32、ware Engineering)第第 3434 页页34341.2.3 1.2.3 软件危机产生的原因软件危机产生的原因(6 6)忽视开发代价与时间的关系)忽视开发代价与时间的关系 软件开发过程中,在不同的时间段引入同一变动付出的软件开发过程中,在不同的时间段引入同一变动付出的代价具有明显的不同,引入变动的时间越晚付出的代价越高。代价具有明显的不同,引入变动的时间越晚付出的代价越高。高高中中低低早早中中后后代价代价变化出现的时期变化出现的时期内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3535 页页35
33、351.2.4 1.2.4 解决软件危机的方法解决软件危机的方法1 1首先应该正确的认识计算机软件首先应该正确的认识计算机软件 “软件软件”不等于单一的不等于单一的“程序程序”, 软件软件 = = 程序程序 + + 数据数据 + + 相关文档相关文档,是程序、数据和文,是程序、数据和文档的完整集合。档的完整集合。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3636 页页36361.2.4 1.2.4 解决软件危机的方法解决软件危机的方法2 2按工程化的原则和方法组织项目开发是软件开发按工程化的原则和方法组
34、织项目开发是软件开发的一个主要出路。的一个主要出路。 5050年代到年代到6060年代时,程序设计曾经被看做是一种任人发挥创年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序写出的程序通篇充满了程序技巧,这些程序很难被别人看懂很难被别人看懂。随着计算机技术的发展和广泛使用,逐渐抛弃。随着计算机技术的发展和广泛使用,逐渐抛弃了这种观点。人们要求这些程序容易看懂、容易使用,并且容易了这种观点。人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成。只有在项目的修改和扩充。多个软件人员分工合作、共同完成
35、。只有在项目的总体要求和技术规范的约束下充分发挥和施展自己的才能。总体要求和技术规范的约束下充分发挥和施展自己的才能。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3737 页页37371.2.4 1.2.4 解决软件危机的方法解决软件危机的方法3 3通过技术和管理的方法手段提升软件的质量通过技术和管理的方法手段提升软件的质量 软件具有自己的生命周期。大型软件系统的开发与其他工程软件具有自己的生命周期。大型软件系统的开发与其他工程项目如建造桥梁、制造飞机等的开发是同理的。必须采用工程项目如建造桥梁、制造飞机
36、等的开发是同理的。必须采用工程化思想,运用先进的技术方法和管理手段,来提升软件的开发化思想,运用先进的技术方法和管理手段,来提升软件的开发质量和效率。质量和效率。 19681968年北大西洋公约组织年北大西洋公约组织(NATONATO)在联邦德国召开国际在联邦德国召开国际会议会议,讨论软件危机问题,第一次提出了,讨论软件危机问题,第一次提出了“软件工程软件工程”这个概这个概念。念。 北大西洋公约组织(英语:北大西洋公约组织(英语:North Atlantic Treaty OrganizationNorth Atlantic Treaty Organization,缩,缩写:写:NATONAT
37、O)内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3838 页页3 38 81.3 1.3 软件工程软件工程1 1软件工程的概念软件工程的概念软件工程软件工程 是指导计算机软件开发和维护的一门学科。是指导计算机软件开发和维护的一门学科。采用工程的概念、原理、技术和方法来开发与维护软件,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有好的技术方法结合起来
38、,以经济地开发出高质量的软件并有效地维护它,这就是效地维护它,这就是 软件工程软件工程。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3939 页页39391.3.1 1.3.1 软件工程的概念软件工程的概念 为了经济地获得可靠的且能在实际机器上运行的软件,为了经济地获得可靠的且能在实际机器上运行的软件,而建立和使用完善的工程原理。而建立和使用完善的工程原理。 1 1)把系统的、规范的、可度量的途径应用于软件开发、)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,即把工程应用于软件;运行和维护
39、过程,即把工程应用于软件; 2 2)研究)研究1 1)中的途径。)中的途径。 软件工程是开发、运行、维护和修复软件的系统方法。软件工程是开发、运行、维护和修复软件的系统方法。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4040 页页40401.3.1 1.3.1 软件工程的概念软件工程的概念2 2软件工程的本质特性软件工程的本质特性(1 1) 软件工程关注于大中型程序的构造软件工程关注于大中型程序的构造 大中型程序相对比较复杂,因此有必要采用系统的工大中型程序相对比较复杂,因此有必要采用系统的工程理论与方
40、法,规范软件的开发和维护过程,以保障软件程理论与方法,规范软件的开发和维护过程,以保障软件的质量。的质量。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 41 41 页页41411.3.1 1.3.1 软件工程的概念软件工程的概念(2 2) 软件工程的软件工程的 中心课题是控制复杂性中心课题是控制复杂性 软件所解决的问题十分复杂,以致于不能把问题作为软件所解决的问题十分复杂,以致于不能把问题作为一个整体通盘考虑,只能采用模块化分解的方法解决。模一个整体通盘考虑,只能采用模块化分解的方法解决。模块化方法并不能降
41、低问题的整体复杂性,但是却使它变成块化方法并不能降低问题的整体复杂性,但是却使它变成可以管理的。可以管理的。 许多软件的复杂性主要不是由问题的内在复杂性造成的,许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节造成的。而是由必须处理的大量细节造成的。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4242 页页42421.3.1 1.3.1 软件工程的概念软件工程的概念(3 3) 开发软件的效率非常重要开发软件的效率非常重要 现实世界在不断的变化,软件为了不被很快的淘汰,现实世界在不断
42、的变化,软件为了不被很快的淘汰,必须随着所模拟的现实世界一起变化。目前,社会对新应必须随着所模拟的现实世界一起变化。目前,社会对新应用系统的需求超过了人力资源所能提供的限度,软件供不用系统的需求超过了人力资源所能提供的限度,软件供不应求的现象日益严重。应求的现象日益严重。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4343 页页43431.3.1 1.3.1 软件工程的概念软件工程的概念(4 4)和谐地合作是开发软件的关键)和谐地合作是开发软件的关键 软件处理的问题十分庞大,必须许多人协同工作才能解软件处
43、理的问题十分庞大,必须许多人协同工作才能解决这类问题。纪律是成功地完成软件开发项目的一个关键,决这类问题。纪律是成功地完成软件开发项目的一个关键,良好的团队合作有利于项目的成功。良好的团队合作有利于项目的成功。 软件开发人员必须学会合作与沟通,才能保证软件的质软件开发人员必须学会合作与沟通,才能保证软件的质量和开发效率。量和开发效率。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4444 页页44441.3.1 1.3.1 软件工程的概念软件工程的概念(5 5)软件必须有效地支持它的用户)软件必须有效地支持
44、它的用户 在软件工程领域中是由具有一种文化背景的人为另一在软件工程领域中是由具有一种文化背景的人为另一种文化背景的人创造产品。缺乏应用领域的相关知识,是种文化背景的人创造产品。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。软件工程师不仅缺乏软件开发项目出现问题的常见原因。软件工程师不仅缺乏应用领域的实际专业知识,还缺乏该领域的文化知识。因应用领域的实际专业知识,还缺乏该领域的文化知识。因此有必要通过访谈、阅读书面文件等方法了解用户组织的此有必要通过访谈、阅读书面文件等方法了解用户组织的工作流程,然后用软件实现。工作流程,然后用软件实现。内蒙古工业大学内蒙古工业大学软件工程软件工程(
45、Software EngineeringSoftware Engineering)第第 4545 页页4 45 51.3.1 1.3.1 软件工程的概念软件工程的概念3 3软件工程项目的基本目标软件工程项目的基本目标 (1 1)成本低,付出比较低的开发成本;)成本低,付出比较低的开发成本;(2 2)功能全,达到用户要求的软件功能;)功能全,达到用户要求的软件功能;(3 3)性能好,取得较好的软件性能;)性能好,取得较好的软件性能;(4 4)易移植,开发的软件易于移植;)易移植,开发的软件易于移植;(5 5)费用少,需要较低的维护费用;)费用少,需要较低的维护费用;(6 6)能按时完成开发工作,
46、及时交付使用。)能按时完成开发工作,及时交付使用。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4646 页页461.3.1 1.3.1 软件工程的概念软件工程的概念 软件开发项目力图在以上目标的冲突中取得一定程软件开发项目力图在以上目标的冲突中取得一定程度的平衡。度的平衡。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4747 页页47471.3.2 1.3.2 软件工程原理软件工程原理内蒙古工业大学内蒙古工业大学软件
47、工程软件工程(Software EngineeringSoftware Engineering)第第 4848 页页48481.3.2 1.3.2 软件工程原理软件工程原理1. 1. 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 把软件生命生命周期划分为若干个阶段,并相应的制把软件生命生命周期划分为若干个阶段,并相应的制定计划,然后按计划对软件的开发与维护工作进行管理。定计划,然后按计划对软件的开发与维护工作进行管理。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4949 页页4949 1.
48、3.2 1.3.2 软件工程原理软件工程原理2. 2. 坚持进行阶段评审坚持进行阶段评审 在每个阶段,都要进行严格的评审,以便尽早发现在在每个阶段,都要进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。各个阶段之间存在着必然的软件开发过程中所犯的错误。各个阶段之间存在着必然的联系,尽早地发现前一阶段错误有助于后续阶段工作的继联系,尽早地发现前一阶段错误有助于后续阶段工作的继续,保证每个阶段的工作质量。续,保证每个阶段的工作质量。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 5050 页页50501.3
49、.2 1.3.2 软件工程原理软件工程原理3. 3. 实行严格的产品控制基准和配置管理实行严格的产品控制基准和配置管理 在软件开发过程中,改变需求往往会付出较大的代在软件开发过程中,改变需求往往会付出较大的代价。为了能使需求改变的代价降到最低,必须实行严格价。为了能使需求改变的代价降到最低,必须实行严格的产品控制,其中主要是实行基准配置(各个阶段产生的产品控制,其中主要是实行基准配置(各个阶段产生的文档或程序代码)管理。的文档或程序代码)管理。 当对基准配置修改时,要按照严格的规程进行评审,当对基准配置修改时,要按照严格的规程进行评审,只有获得批准后才能实施修改。只有获得批准后才能实施修改。内
50、蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 51 51 页页51511.3.2 1.3.2 软件工程原理软件工程原理4. 4. 采用现代程序设计技术采用现代程序设计技术 采用先进的程序设计技术,不仅可以提高软件的开采用先进的程序设计技术,不仅可以提高软件的开发效率,而且可以提高软件的维护效率。发效率,而且可以提高软件的维护效率。 比如采用面向对象的程序设计技术,就可以有效提比如采用面向对象的程序设计技术,就可以有效提高软件的重用性和可扩展性,进而提高软件的开发效率高软件的重用性和可扩展性,进而提高软件的开发